import type { SessionAuth, SessionParent, SessionTurn } from "#context/keys.js"; import type { SandboxProviderRuntime } from "#shared/sandbox-provider.js"; import type { RuntimeSandboxSession, RuntimeSandboxSessionFor, SandboxSession } from "#shared/sandbox-session.js"; declare const ENVIRONMENT: unique symbol; declare const PROVIDER_RUNTIME: unique symbol; declare const CONFIGURATION_HASH: unique symbol; export interface SandboxSelectorContext { readonly session: { readonly auth: SessionAuth; readonly id: string; readonly parent?: SessionParent; readonly turn: SessionTurn; }; } export type SandboxSelector = (context: SandboxSelectorContext) => Promise | RuntimeSandboxSession; export type SandboxOpenArguments = Options extends undefined ? [] : Record extends Options ? [options?: Options] : [options: Options]; export interface SandboxEnvironmentIdentity { readonly [CONFIGURATION_HASH]: string; readonly [ENVIRONMENT]: true; readonly [PROVIDER_RUNTIME]: SandboxProviderRuntime; readonly provider: string; } export interface SandboxEnvironment extends SandboxEnvironmentIdentity { open(...args: SandboxOpenArguments): Promise>; } interface ConstructorRuntime { open(input: { readonly configurationHash: string; readonly environment: object; readonly environmentConfigurationHash: string; readonly options: object | undefined; readonly provider: SandboxProviderRuntime; }): Promise; } export declare function createSandboxEnvironment(input: { readonly configuration?: unknown; readonly runtime: SandboxProviderRuntime; }): SandboxEnvironment; export declare function getSandboxEnvironmentRuntime(environment: SandboxEnvironmentIdentity): SandboxProviderRuntime; export declare function bindSandboxEnvironment(selector: SandboxSelector, environment: SandboxEnvironmentIdentity): SandboxSelector; export declare function getBoundSandboxEnvironment(value: unknown): SandboxEnvironmentIdentity | undefined; export declare function isSandboxEnvironment(value: unknown): value is SandboxEnvironmentIdentity; export declare function runWithSandboxConstructorRuntime(runtime: ConstructorRuntime, callback: () => Promise | T): Promise; export {};