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

package v1alpha1

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

// AddOnDeploymentConfigLister helps list AddOnDeploymentConfigs.
// All objects returned here must be treated as read-only.
type AddOnDeploymentConfigLister interface {
	// List lists all AddOnDeploymentConfigs in the indexer.
	// Objects returned here must be treated as read-only.
	List(selector labels.Selector) (ret []*addonv1alpha1.AddOnDeploymentConfig, err error)
	// AddOnDeploymentConfigs returns an object that can list and get AddOnDeploymentConfigs.
	AddOnDeploymentConfigs(namespace string) AddOnDeploymentConfigNamespaceLister
	AddOnDeploymentConfigListerExpansion
}

// addOnDeploymentConfigLister implements the AddOnDeploymentConfigLister interface.
type addOnDeploymentConfigLister struct {
	listers.ResourceIndexer[*addonv1alpha1.AddOnDeploymentConfig]
}

// NewAddOnDeploymentConfigLister returns a new AddOnDeploymentConfigLister.
func NewAddOnDeploymentConfigLister(indexer cache.Indexer) AddOnDeploymentConfigLister {
	return &addOnDeploymentConfigLister{listers.New[*addonv1alpha1.AddOnDeploymentConfig](indexer, addonv1alpha1.Resource("addondeploymentconfig"))}
}

// AddOnDeploymentConfigs returns an object that can list and get AddOnDeploymentConfigs.
func (s *addOnDeploymentConfigLister) AddOnDeploymentConfigs(namespace string) AddOnDeploymentConfigNamespaceLister {
	return addOnDeploymentConfigNamespaceLister{listers.NewNamespaced[*addonv1alpha1.AddOnDeploymentConfig](s.ResourceIndexer, namespace)}
}

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

// addOnDeploymentConfigNamespaceLister implements the AddOnDeploymentConfigNamespaceLister
// interface.
type addOnDeploymentConfigNamespaceLister struct {
	listers.ResourceIndexer[*addonv1alpha1.AddOnDeploymentConfig]
}
