import type { Settings } from "@opengeni/config"; import { type Database, type LeaseSnapshot } from "@opengeni/db"; import { type EstablishedSandboxSession } from "@opengeni/runtime/sandbox"; import { type ObjectStorage } from "@opengeni/storage"; /** The sole API-direct cold->warming owner path used by Channel A and viewer * attach. It never publishes warm until archive identity, hydrated tree, command * routing, provider identity, and the selected rematerialization attempt all * agree under one lease epoch. */ export declare function establishApiSandboxSpawner(input: { db: Database; settings: Settings; accountId: string; workspaceId: string; sandboxGroupId: string; sessionId: string; backend: string; environment: Record; expectedEpoch: number; acquiredLease: LeaseSnapshot; fallbackEnvelope: Record | null; dataPlaneUrl: string | null; objectStorage?: ObjectStorage | null; }): Promise<{ established: EstablishedSandboxSession; lease: LeaseSnapshot; }>;