export declare const RESOURCE_MANIFEST_SCHEMA_VERSION = 2;
export declare const RUNTIME_ASSET_IDS: {
    readonly gatewayImage: "gateway.image.desktop-slim";
    readonly whisperModelTiny: "speech.whisper.model.tiny";
    readonly ffmpegWin32X64: "runtime.ffmpeg.win32-x64";
    readonly nodeWin32X64: "runtime.node.win32-x64";
    readonly dockerDesktopWin32X64: "runtime.docker-desktop.win32-x64";
    readonly dockerDesktopDarwinX64: "runtime.docker-desktop.darwin-x64";
    readonly dockerDesktopDarwinArm64: "runtime.docker-desktop.darwin-arm64";
};
export declare const RUNTIME_PROFILE_IDS: {
    readonly desktopDockerBridge: "desktop.docker-bridge";
    readonly desktopEmbeddedWin32X64: "desktop.embedded.win32-x64";
};
export type RuntimeResourcePlatform = 'any' | 'win32-x64' | 'win32-arm64' | 'darwin-x64' | 'darwin-arm64' | 'linux-x64' | 'linux-arm64';
export type RuntimeResourceAssetKind = 'container-image' | 'model' | 'runtime' | 'installer';
export type RuntimeResourceAssetDelivery = 'remote' | 'bundled';
export interface RuntimeResourceArtifact {
    label?: string;
    fileName: string;
    size?: number;
    sha256?: string;
    url?: string;
    relativePath?: string;
}
export interface RuntimeResourceAsset {
    id: string;
    version: string;
    title: string;
    kind: RuntimeResourceAssetKind;
    delivery: RuntimeResourceAssetDelivery;
    platform: RuntimeResourcePlatform;
    description?: string;
    artifacts: RuntimeResourceArtifact[];
}
export interface RuntimeResourceProfile {
    id: string;
    title: string;
    platform: RuntimeResourcePlatform;
    assetIds: string[];
    description?: string;
}
export type RuntimeResourceAssetMap = Record<string, RuntimeResourceAsset>;
export type RuntimeResourceProfileMap = Record<string, RuntimeResourceProfile>;
export interface RuntimeManifestShortcutEntry {
    version: string;
    sha256: string;
    size: number;
    url: string;
}
export interface RuntimeResourceManifest {
    schemaVersion: number;
    channel?: string;
    publishedAt?: string;
    minElectronVersion?: string;
    releaseNotes?: string;
    assets: RuntimeResourceAssetMap;
    profiles: RuntimeResourceProfileMap;
    gateway?: RuntimeManifestShortcutEntry;
    whisperModel?: RuntimeManifestShortcutEntry;
}
export declare function createDefaultRuntimeResourceProfiles(): RuntimeResourceProfileMap;
export declare function getRuntimeResourceAsset(manifest: Pick<RuntimeResourceManifest, 'assets'>, assetId: string): RuntimeResourceAsset | undefined;
export declare function getRuntimeResourceProfile(manifest: Pick<RuntimeResourceManifest, 'profiles'>, profileId: string): RuntimeResourceProfile | undefined;
export declare function getRuntimeResourceProfileAssets(manifest: Pick<RuntimeResourceManifest, 'assets' | 'profiles'>, profileId: string): RuntimeResourceAsset[];
export declare function upsertRuntimeResourceAsset(manifest: RuntimeResourceManifest, asset: RuntimeResourceAsset): RuntimeResourceManifest;
export declare function getManifestShortcutEntry(asset?: RuntimeResourceAsset): RuntimeManifestShortcutEntry | undefined;
export declare function normalizeRuntimeResourceManifest(raw: unknown): RuntimeResourceManifest;
