/** * Shape of `bundle.drop.config.js` after it is loaded through Metro. */ export type RuntimeDeliveryConfig = { manifestBaseUrl: string; manifestAccessId: string; publicKeys: Record; }; /** Returns true only for a complete package-managed trust configuration. */ export declare function isRuntimeDeliveryConfigured(value: unknown): value is RuntimeDeliveryConfig; export type BundleDropProjectConfig = { /** Persisted project shape used to keep Expo and bare runtime behavior distinct. */ projectType?: 'expo' | 'bare'; /** BundleDrop backend base URL. */ serverUrl: string; /** Organization identity used for public API calls. */ org: { /** Organization slug. */ slug: string; }; /** Project identity and public access configuration. */ project: { /** Human-readable project name. */ name: string; /** Project slug used by public API calls. */ slug: string; /** Optional public API key used by CLI/runtime integrations. */ apiKey?: string; }; /** * Runtime compatibility source. Concrete platform values are the default for * both bare and Expo projects. Expo projects may explicitly delegate runtime * resolution to the Expo app config; the Expo Metro wrapper then replaces that * declaration with the concrete values embedded in the build. */ runtimeVersion?: { /** iOS runtime version. */ ios?: string | { source: 'appVersion' | 'nativeVersion'; }; /** Android runtime version. */ android?: string | { source: 'appVersion' | 'nativeVersion'; }; } | { /** Explicitly resolve concrete values from the evaluated Expo app config. */ source: 'expo'; }; /** Default OTA channel used before runtime code sets another channel. */ defaultChannel?: string; /** Rollback/crash recovery tuning. */ rollback?: { /** Crash count required before rollback. */ maxCrashCount?: number; /** How Bundle Drop marks a newly launched OTA bundle healthy. */ healthCheckMode?: 'auto' | 'manual'; /** Seconds to wait before automatically marking a candidate healthy in auto mode. */ healthyAfterSec?: number; }; }; /** Internal Metro-resolved config. Generated trust data is deliberately absent from the public type. */ export type ResolvedBundleDropProjectConfig = BundleDropProjectConfig & { runtimeDelivery?: RuntimeDeliveryConfig; }; export declare function loadConfig(): ResolvedBundleDropProjectConfig;