// Copyright Contributors to the Open Cluster Management project
// Code generated by lister-gen. DO NOT EDIT.

package v1beta2

import (
	labels "k8s.io/apimachinery/pkg/labels"
	listers "k8s.io/client-go/listers"
	cache "k8s.io/client-go/tools/cache"
	clusterv1beta2 "open-cluster-management.io/api/cluster/v1beta2"
)

// ManagedClusterSetBindingLister helps list ManagedClusterSetBindings.
// All objects returned here must be treated as read-only.
type ManagedClusterSetBindingLister interface {
	// List lists all ManagedClusterSetBindings in the indexer.
	// Objects returned here must be treated as read-only.
	List(selector labels.Selector) (ret []*clusterv1beta2.ManagedClusterSetBinding, err error)
	// ManagedClusterSetBindings returns an object that can list and get ManagedClusterSetBindings.
	ManagedClusterSetBindings(namespace string) ManagedClusterSetBindingNamespaceLister
	ManagedClusterSetBindingListerExpansion
}

// managedClusterSetBindingLister implements the ManagedClusterSetBindingLister interface.
type managedClusterSetBindingLister struct {
	listers.ResourceIndexer[*clusterv1beta2.ManagedClusterSetBinding]
}

// NewManagedClusterSetBindingLister returns a new ManagedClusterSetBindingLister.
func NewManagedClusterSetBindingLister(indexer cache.Indexer) ManagedClusterSetBindingLister {
	return &managedClusterSetBindingLister{listers.New[*clusterv1beta2.ManagedClusterSetBinding](indexer, clusterv1beta2.Resource("managedclustersetbinding"))}
}

// ManagedClusterSetBindings returns an object that can list and get ManagedClusterSetBindings.
func (s *managedClusterSetBindingLister) ManagedClusterSetBindings(namespace string) ManagedClusterSetBindingNamespaceLister {
	return managedClusterSetBindingNamespaceLister{listers.NewNamespaced[*clusterv1beta2.ManagedClusterSetBinding](s.ResourceIndexer, namespace)}
}

// ManagedClusterSetBindingNamespaceLister helps list and get ManagedClusterSetBindings.
// All objects returned here must be treated as read-only.
type ManagedClusterSetBindingNamespaceLister interface {
	// List lists all ManagedClusterSetBindings in the indexer for a given namespace.
	// Objects returned here must be treated as read-only.
	List(selector labels.Selector) (ret []*clusterv1beta2.ManagedClusterSetBinding, err error)
	// Get retrieves the ManagedClusterSetBinding from the indexer for a given namespace and name.
	// Objects returned here must be treated as read-only.
	Get(name string) (*clusterv1beta2.ManagedClusterSetBinding, error)
	ManagedClusterSetBindingNamespaceListerExpansion
}

// managedClusterSetBindingNamespaceLister implements the ManagedClusterSetBindingNamespaceLister
// interface.
type managedClusterSetBindingNamespaceLister struct {
	listers.ResourceIndexer[*clusterv1beta2.ManagedClusterSetBinding]
}
