import type { V1Job } from "@kubernetes/client-node";
/**
 * Minimal Kubernetes surface used by the dumps feature. Defined as an
 * interface so the resolvers + watcher can be unit-tested with a stub
 * and so the production implementation can be lazy-loaded (avoids
 * paying the @kubernetes/client-node import cost in tests).
 */
export interface DumpsK8sClient {
    /** Creates a Job in the given namespace. Returns the assigned name. */
    createJob(namespace: string, job: V1Job): Promise<string>;
    /**
     * Deletes a Job (and its child Pods, via propagationPolicy=Foreground).
     * Idempotent: a missing Job resolves successfully so the caller can use
     * this to cancel both running and orphaned dumps.
     */
    deleteJob(namespace: string, name: string): Promise<void>;
    /** Reads `.status` of a single Job. Returns null on error / 404. */
    readJobStatus(namespace: string, name: string): Promise<{
        active?: number;
        succeeded?: number;
        failed?: number;
        conditions?: Array<{
            type?: string;
            status?: string;
            reason?: string;
        }>;
    } | null>;
    /** Returns the phase of the (single) pod owned by the Job, or null. */
    readPodPhaseForJob(namespace: string, jobName: string): Promise<string | null>;
    /** Returns the pod's full log output. Empty string on error. */
    readPodLogsForJob(namespace: string, jobName: string): Promise<string>;
    /** Lists all dumps Jobs across the cluster (label-selected). */
    listManagedJobs(): Promise<Array<{
        namespace: string;
        name: string;
        dumpId: string;
    }>>;
}
/**
 * Production implementation. Uses the in-cluster ServiceAccount via
 * `loadFromCluster()` (the subgraph runs in-cluster).
 */
export declare function createDefaultDumpsK8sClient(): Promise<DumpsK8sClient>;
//# sourceMappingURL=k8s-client.d.ts.map