import type { Kysely } from "kysely";
import type { V1Job } from "@kubernetes/client-node";
import type { DumpsRepo } from "./repo.js";
type Caller = {
    user?: {
        address: string;
    };
};
export type DumpResolverDeps = {
    repo: DumpsRepo;
    envDb: Kysely<any>;
    /** Creates the k8s Job. Returns the assigned name. */
    createJob: (namespace: string, body: V1Job) => Promise<string>;
    /** Deletes a Job. Used by cancelEnvironmentDump; idempotent on 404. */
    deleteJob: (namespace: string, name: string) => Promise<void>;
    /** Mints a presigned download URL for the given s3 key. */
    presign: (s3Key: string) => Promise<string>;
    image: string;
    bucket: string;
    s3Endpoint: string;
    /** Inlined into the Job's pod env. See buildDumpJob's note on threat model. */
    s3AccessKey: string;
    s3SecretKey: string;
};
export declare function createDumpResolvers(deps: DumpResolverDeps): {
    Query: {
        environmentDumps: (_p: unknown, args: {
            tenantId: string;
        }, ctx: Caller) => Promise<{
            id: string;
            status: string;
            requestedAt: string;
            startedAt: string | null;
            completedAt: string | null;
            expiresAt: string;
            sizeBytes: number | null;
            errorMessage: string | null;
            downloadUrl: string | null;
        }[]>;
    };
    Mutation: {
        requestEnvironmentDump: (_p: unknown, args: {
            tenantId: string;
        }, ctx: Caller) => Promise<{
            id: string;
            status: string;
            requestedAt: string;
            startedAt: string | null;
            completedAt: string | null;
            expiresAt: string;
            sizeBytes: number | null;
            errorMessage: string | null;
            downloadUrl: string | null;
        }>;
        cancelEnvironmentDump: (_p: unknown, args: {
            dumpId: string;
        }, ctx: Caller) => Promise<{
            id: string;
            status: string;
            requestedAt: string;
            startedAt: string | null;
            completedAt: string | null;
            expiresAt: string;
            sizeBytes: number | null;
            errorMessage: string | null;
            downloadUrl: string | null;
        }>;
    };
};
export {};
//# sourceMappingURL=resolvers.d.ts.map