import type { RuntimeConfig } from '../config.ts';
import type { MountType } from '../types.ts';
/**
 * How to reach the sandbox: the fields every provider has.
 *
 * This base carries only what all providers support; each provider
 * extends it with its own fields (DockerConfig, DaytonaConfig,
 * E2BConfig) and its own key list, so an option a provider cannot
 * honor fails loud at construction. In yaml this is the runtime
 * entry's `config` block, mirroring a mount's.
 */
export interface SandboxConfig extends RuntimeConfig {
    /** Environment set in the sandbox. */
    env?: Record<string, string>;
    /**
     * How the sandbox sees the workspace: `ssh` serves every prefix the
     * session sees from the host over SFTP (the image needs sshfs), `fuse`
     * leaves them to a mirage in the sandbox, `both` serves from the host
     * what the sandbox does not mount itself. Unset serves nothing.
     */
    mountType?: MountType;
}
/** A provider config with the shared collection fields always present. */
export type NormalizedSandboxConfig<C extends SandboxConfig = SandboxConfig> = C & Required<Pick<SandboxConfig, 'env'>>;
export declare const BASE_CONFIG_KEYS: readonly string[];
/** Fail loud on a `mountType` other than ssh, fuse or both; unset serves nothing. */
export declare function checkMountType(runtime: string, mountType: unknown): MountType | null;
/** Whether a configured id is a string with something in it. Mirrors Python's `nonblank`. */
export declare function nonblank(value: unknown): boolean;
/**
 * Fail loud on a required id that is unset or blank, which would otherwise
 * reach the provider as an empty name. Mirrors Python's `require_id`.
 */
export declare function requireId(runtime: string, name: string, value: unknown): void;
//# sourceMappingURL=config.d.ts.map