/** * Per-repo sandbox profile: which prebuilt sandbox image the server launches a * task in. Mirrors hula-server's `SandboxProfile` (services/queue/sandbox-profile.ts). * Clients send only the `type` enum (plus optional `jdk`); the server maps it to * an image, so an unknown type is a 400 there. * * - `base`: Node, Python 3.12, PHP 8.3 (the default; omitted from requests). * - `android`: adds JDK 17 & 21, the Android SDK, Ruby 3.3 + fastlane. */ export type SandboxProfileType = 'base' | 'android'; export interface SandboxProfile { type: SandboxProfileType; /** JDK major version — android only. The sandbox defaults to 17 when absent. */ jdk?: 17 | 21; } export declare const SANDBOX_PROFILE_TYPES: readonly SandboxProfileType[]; export declare const SANDBOX_PROFILE_JDKS: readonly [17, 21]; /** * Parse the `--sandbox-profile` flag value: `base`, `android`, `android:17`, or * `android:21`. Throws with a user-facing message on anything else. */ export declare function parseSandboxProfileFlag(value: string): SandboxProfile; /** * Resolve the effective profile: the `--sandbox-profile` flag wins, then the * repo config's `sandboxProfile`, then `base`. Returns an `error` (never throws) * so callers can apply their own exit/group-mode failure handling. */ export declare function resolveSandboxProfile(flag: string | undefined, configProfile: SandboxProfile | undefined): { profile: SandboxProfile; error?: undefined; } | { profile?: undefined; error: string; }; /** * The `sandboxProfile` value to put on a request body, or `undefined` for * `base` — the server default — so base launches keep byte-identical bodies and * older servers never see the field. */ export declare function sandboxProfileForRequest(profile: SandboxProfile | undefined): SandboxProfile | undefined; /** Human-readable label, e.g. `android (JDK 21)`. */ export declare function describeSandboxProfile(profile: SandboxProfile): string; export declare function detectAndroidProject(repoRoot: string): boolean; //# sourceMappingURL=sandbox-profile.d.ts.map