import * as Effect from "effect/Effect";
import { type ClusterTransport } from "../ClusterAdapter.ts";
import type { Connection } from "../Connection.ts";
import { type KubernetesObjectDefinition, type KubernetesObjectKindSpec, type KubernetesObjectRef } from "./objects.ts";
declare const KubernetesApiError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "KubernetesApiError";
} & Readonly;
export declare class KubernetesApiError extends KubernetesApiError_base<{
method: string;
path: string;
statusCode: number;
body: string;
}> {
get message(): string;
}
/**
* Resolve the {@link ClusterTransport} for a connection through its
* registered adapter.
*/
export declare const connectCluster: (connection: Connection) => Effect.Effect;
/**
* Resolve the REST mapping (plural + scope) for an arbitrary kind: static
* table fast path, then the Kubernetes discovery API (`/apis/{g}/{v}` or
* `/api/v1`). This is what lets `Kubernetes.Manifest` apply any CRD.
*/
export declare const resolveKindSpec: (args_0: {
transport: ClusterTransport;
input: Pick;
}) => Effect.Effect;
export declare const readObject: (args_0: {
transport: ClusterTransport;
object: KubernetesObjectRef;
}) => Effect.Effect;
export declare const applyObject: (args_0: {
transport: ClusterTransport;
object: KubernetesObjectDefinition;
}) => Effect.Effect;
export declare const deleteObject: (args_0: {
transport: ClusterTransport;
object: KubernetesObjectRef;
}) => Effect.Effect;
export declare const reconcileObjects: (args_0: {
transport: ClusterTransport;
previousObjects: ReadonlyArray;
desiredObjects: ReadonlyArray;
}) => Effect.Effect;
export declare const deleteObjects: (args_0: {
transport: ClusterTransport;
objects: ReadonlyArray;
}) => Effect.Effect;
export {};
//# sourceMappingURL=client.d.ts.map