import type { MutableNetworkSandboxSession } from "#shared/sandbox-session.js";
import type { SandboxSession } from "#shared/sandbox-session.js";
import { type SandboxProviderImplementation } from "#shared/sandbox-provider.js";
import type { VercelSandboxRuntimeOptions } from "#public/sandbox/vercel-sandbox.js";
import { type CreateVercelSandbox } from "#execution/sandbox/bindings/vercel-create-sdk.js";
import type { VercelCreateOptions, VercelModule } from "#execution/sandbox/bindings/vercel-sdk-types.js";
export type VercelSandboxPreparedArtifact = {
    readonly snapshotId?: string;
};
export type VercelSandboxSessionState = {
    readonly sandboxName: string;
    readonly version: 3;
};
type VercelEnvironmentOptions = VercelCreateOptions & {
    readonly prepare?: (sandbox: SandboxSession) => Promise<void> | void;
};
export declare function createVercelSandboxProvider(environmentOptions: Readonly<VercelEnvironmentOptions> | undefined): SandboxProviderImplementation<VercelSandboxRuntimeOptions, VercelSandboxPreparedArtifact, VercelSandboxSessionState, MutableNetworkSandboxSession>;
export interface CreateVercelSandboxInput {
    readonly createSandbox?: CreateVercelSandbox;
    readonly createOptions?: VercelCreateOptions;
    readonly loadDeleteSandboxModule?: () => Promise<VercelModule>;
    readonly loadSandboxModule?: () => Promise<VercelModule>;
    readonly prepare?: (sandbox: SandboxSession) => Promise<void> | void;
    readonly skipEmptyPreparation?: boolean;
}
export declare function createVercelSandbox(input?: CreateVercelSandboxInput): SandboxProviderImplementation<VercelSandboxRuntimeOptions, VercelSandboxPreparedArtifact, VercelSandboxSessionState, MutableNetworkSandboxSession>;
export {};
