import type { SandboxDockerConfig } from "./types.docker.js";
export type { SandboxDockerConfig } from "./types.docker.js";
export type SandboxToolPolicy = {
    allow?: string[];
    deny?: string[];
};
export type SandboxToolPolicySource = {
    source: "koi" | "global" | "default";
    /**
     * Config key path hint for humans.
     * (Arrays use `kois.list[].…` form.)
     */
    key: string;
};
export type SandboxToolPolicyResolved = {
    allow: string[];
    deny: string[];
    sources: {
        allow: SandboxToolPolicySource;
        deny: SandboxToolPolicySource;
    };
};
export type SandboxWorkspaceAccess = "none" | "ro" | "rw";
export type SandboxBrowserConfig = {
    enabled: boolean;
    image: string;
    containerPrefix: string;
    cdpPort: number;
    vncPort: number;
    noVncPort: number;
    headless: boolean;
    enableNoVnc: boolean;
    allowHostControl: boolean;
    autoStart: boolean;
    autoStartTimeoutMs: number;
};
export type SandboxPruneConfig = {
    idleHours: number;
    maxAgeDays: number;
};
export type SandboxScope = "session" | "koi" | "shared";
export type SandboxConfig = {
    mode: "off" | "non-main" | "all";
    scope: SandboxScope;
    workspaceAccess: SandboxWorkspaceAccess;
    workspaceRoot: string;
    docker: SandboxDockerConfig;
    browser: SandboxBrowserConfig;
    tools: SandboxToolPolicy;
    prune: SandboxPruneConfig;
};
export type SandboxBrowserContext = {
    bridgeUrl: string;
    noVncUrl?: string;
    containerName: string;
};
export type SandboxContext = {
    enabled: boolean;
    sessionKey: string;
    workspaceDir: string;
    koiWorkspaceDir: string;
    workspaceAccess: SandboxWorkspaceAccess;
    containerName: string;
    containerWorkdir: string;
    docker: SandboxDockerConfig;
    tools: SandboxToolPolicy;
    browserAllowHostControl: boolean;
    browser?: SandboxBrowserContext;
};
export type SandboxWorkspaceInfo = {
    workspaceDir: string;
    containerWorkdir: string;
};
