// Code generated by lister-gen. DO NOT EDIT.

package v1

import (
	routev1 "github.com/openshift/api/route/v1"
	labels "k8s.io/apimachinery/pkg/labels"
	listers "k8s.io/client-go/listers"
	cache "k8s.io/client-go/tools/cache"
)

// RouteLister helps list Routes.
// All objects returned here must be treated as read-only.
type RouteLister interface {
	// List lists all Routes in the indexer.
	// Objects returned here must be treated as read-only.
	List(selector labels.Selector) (ret []*routev1.Route, err error)
	// Routes returns an object that can list and get Routes.
	Routes(namespace string) RouteNamespaceLister
	RouteListerExpansion
}

// routeLister implements the RouteLister interface.
type routeLister struct {
	listers.ResourceIndexer[*routev1.Route]
}

// NewRouteLister returns a new RouteLister.
func NewRouteLister(indexer cache.Indexer) RouteLister {
	return &routeLister{listers.New[*routev1.Route](indexer, routev1.Resource("route"))}
}

// Routes returns an object that can list and get Routes.
func (s *routeLister) Routes(namespace string) RouteNamespaceLister {
	return routeNamespaceLister{listers.NewNamespaced[*routev1.Route](s.ResourceIndexer, namespace)}
}

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

// routeNamespaceLister implements the RouteNamespaceLister
// interface.
type routeNamespaceLister struct {
	listers.ResourceIndexer[*routev1.Route]
}
