// Copyright 2020-2026 the Pinniped contributors. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0

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

package internalinterfaces

import (
	time "time"

	versioned "go.pinniped.dev/generated/1.36/client/concierge/clientset/versioned"
	v1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	runtime "k8s.io/apimachinery/pkg/runtime"
	cache "k8s.io/client-go/tools/cache"
)

// NewInformerFunc takes versioned.Interface and time.Duration to return a SharedIndexInformer.
type NewInformerFunc func(versioned.Interface, time.Duration) cache.SharedIndexInformer

// SharedInformerFactory a small interface to allow for adding an informer without an import cycle
type SharedInformerFactory interface {
	Start(stopCh <-chan struct{})
	InformerFor(obj runtime.Object, newFunc NewInformerFunc) cache.SharedIndexInformer
	InformerName() *cache.InformerName
}

// TweakListOptionsFunc is a function that transforms a v1.ListOptions.
type TweakListOptionsFunc func(*v1.ListOptions)

// InformerOptions holds the options for creating an informer.
type InformerOptions struct {
	// ResyncPeriod is the resync period for this informer.
	// If not set, defaults to 0 (no resync).
	ResyncPeriod time.Duration

	// Indexers are the indexers for this informer.
	Indexers cache.Indexers

	// InformerName is used to uniquely identify this informer for metrics.
	// If not set, metrics will not be published for this informer.
	// Use cache.NewInformerName() to create an InformerName at startup.
	InformerName *cache.InformerName

	// TweakListOptions is an optional function to modify the list options.
	TweakListOptions TweakListOptionsFunc
}
