import { KubernetesObject } from "@kubernetes/client-node";
import { GenericClass } from "../types.js";
import { K8sInit } from "./types.js";
import { Filters } from "./shared-types.js";
type FinalizeOperation = "add" | "remove";
/**
 * Kubernetes fluent API inspired by Kubectl. Pass in a model, then call filters and actions on it.
 *
 * @param model - the model to use for the API
 * @param filters - (optional) filter overrides, can also be chained
 * @returns a fluent API for the model
 */
export declare function K8s<T extends GenericClass, K extends KubernetesObject = InstanceType<T>>(model: T, filters?: Filters): K8sInit<T, K>;
/**
 *
 * Remove controller fields from the Kubernetes object.
 * This is necessary for ensuring that the object can be applied without conflicts.
 *
 * @param object - the Kubernetes object to remove controller fields from
 */
export declare function removeControllerFields(object: KubernetesObject): void;
/**
 * Mutates the finalizers list based on the operation.
 * Throws or returns early if no update is necessary.
 *
 * @param operation - "add" or "remove"
 * @param finalizer - The finalizer to add/remove
 * @param object - The Kubernetes resource object
 * @returns The updated finalizers list or `null` if no update is needed
 */
export declare function updateFinalizersOrSkip(operation: FinalizeOperation, finalizer: string, object: KubernetesObject): string[] | null;
export {};
//# sourceMappingURL=index.d.ts.map