import { type RuntimeSandboxSession, type SandboxSelectorContext } from "#public/definitions/sandbox.js";
import { MicrosandboxSandbox } from "#sandbox/providers/microsandbox.js";
import { type DefaultSandboxProbes } from "#sandbox/providers/default.js";
import { VercelSandbox } from "#sandbox/providers/vercel.js";
import { type SelfModificationConfig } from "./config.js";
export interface SelfModificationSandboxOptions {
    readonly config?: SelfModificationConfig;
}
export interface SelfModificationSandbox {
    (context: SandboxSelectorContext): Promise<RuntimeSandboxSession> | RuntimeSandboxSession;
}
type Probes = Pick<DefaultSandboxProbes, "isDeployedOnVercel" | "isMicrosandboxSupported">;
type DeployedSelfModificationEnvironment = ReturnType<typeof MicrosandboxSandbox.environment> | ReturnType<typeof VercelSandbox.environment>;
export declare function defineSelfModificationSandbox(options?: SelfModificationSandboxOptions): SelfModificationSandbox;
export declare function selectDeployedSelfModificationEnvironment(probes: Probes): DeployedSelfModificationEnvironment;
declare const _default: SelfModificationSandbox;
export default _default;
