import type { AppInstallJob as ProtoAppInstallJob, AppInstallJobEvent as ProtoAppInstallJobEvent, AppOpenProjection as ProtoAppOpenProjection, AppUninstallResult as ProtoAppUninstallResult } from './generated/runtime/v1/app.js';
import type { RuntimeAppInstallJob, RuntimeAppInstallJobEvent, RuntimeAppOpenProjection, RuntimeAppUninstallResult } from './runtime-app-lifecycle-types.js';
/**
 * Decode a proto `AppInstallJob` into the typed projection. A missing job
 * fail-closes — the consumer never receives a synthesized placeholder.
 */
export declare function decodeAppInstallJob(job: ProtoAppInstallJob | undefined): RuntimeAppInstallJob;
export declare function decodeUninstallResult(result: ProtoAppUninstallResult | undefined, jobProjection: ProtoAppInstallJob | undefined): RuntimeAppUninstallResult;
/**
 * Decode a proto `AppOpenProjection` into the typed projection. A `blocked`
 * open must always carry a typed reason code so the consumer never has to
 * invent one — fail-close if the runtime omits it.
 */
export declare function decodeOpenProjection(projection: ProtoAppOpenProjection | undefined): RuntimeAppOpenProjection;
export declare function decodeJobEvent(event: ProtoAppInstallJobEvent): RuntimeAppInstallJobEvent;
//# sourceMappingURL=runtime-app-lifecycle-decode.d.ts.map