func WithManifestController(mc ManifestController) reconcilerOption {
	return func(p reconcilerParams) reconcilerParams {
		p.manifestController = mc
		return p
	}
}
WithManifestController overrides the default source for loading manifests
package declarative
import (
	"context"
	"k8s.io/apimachinery/pkg/runtime"
	"sigs.k8s.io/controller-runtime/pkg/metrics"
	"sigs.k8s.io/kubebuilder-declarative-pattern/pkg/patterns/declarative/pkg/manifest"
)
type ManifestLoaderFunc func() (ManifestController, error)
var DefaultManifestLoader ManifestLoaderFunc
var Options struct {
	Begin []reconcilerOption
	End []reconcilerOption
}
type reconcilerParams struct {
	rawManifestOperations []ManifestOperation
	objectTransformations []ObjectTransform
	manifestController    ManifestController
	prune             bool
	preserveNamespace bool
	kustomize         bool
	validate          bool
	metrics           bool
	sink       Sink
	ownerFn    OwnerSelector
	labelMaker LabelMaker
	status     Status
}
type ManifestController interface {
	ResolveManifest(ctx context.Context, object runtime.Object) (map[string]string, error)
}
type Sink interface {
	Notify(ctx context.Context, dest DeclarativeObject, objs *manifest.Objects) error
}
type ManifestOperation = func(context.Context, DeclarativeObject, string) (string, error)
type ObjectTransform = func(context.Context, DeclarativeObject, *manifest.Objects) error
type OwnerSelector = func(context.Context, DeclarativeObject, manifest.Object, manifest.Objects) (DeclarativeObject, error)
type LabelMaker = func(context.Context, DeclarativeObject) map[string]string
func WithRawManifestOperation(operations ...ManifestOperation) reconcilerOption {
	return func(p reconcilerParams) reconcilerParams {
		p.rawManifestOperations = append(p.rawManifestOperations, operations...)
		return p
	}
}
func WithObjectTransform(operations ...ObjectTransform) reconcilerOption {
	return func(p reconcilerParams) reconcilerParams {
		p.objectTransformations = append(p.objectTransformations, operations...)
		return p
	}
}