import { ProtectedRecordStore, type LocalRecordSnapshot } from "./protected-records.js"; declare const steps: readonly ["private-home", "environment", "seed", "unit", "reload", "enable", "receipt"]; type Step = typeof steps[number]; type Position = "planned" | "submitted" | "acknowledged" | "unknown"; export interface ServiceInstallIntent { schemaVersion: 1; attemptId: string; space: string; definition: string; definitionRevision: string; instanceId: string; machine: string; uid: number; unit: string; unitPath: string; unitSha256: string; environmentSha256: string; privateHome: string; environmentFile: string; generation: string; step: Step; position: Position; createdAt: string; updatedAt: string; } export declare function serviceInstallIntentProjection(value: ServiceInstallIntent): { attemptId: string; unit: string; unitPath: string; privateHome: string; environmentFile: string; generation: string; step: "seed" | "unit" | "environment" | "private-home" | "reload" | "enable" | "receipt"; position: Position; lastAcknowledgedStep: "seed" | "unit" | "environment" | "private-home" | "reload" | "enable" | "receipt" | null; updatedAt: string; }; export declare const serviceInstallIntentStore: (space: string) => ProtectedRecordStore; export declare function serviceInstallIntentFor(space: string, id: string): LocalRecordSnapshot | undefined; export declare function serviceInstallIntents(space: string): LocalRecordSnapshot[]; /** Create once before any unit/private-store effect. An uncertain local publication is retained * as unknown, so the caller inspects the named intent rather than creating another attempt. */ export declare function beginServiceInstallIntent(value: ServiceInstallIntent): LocalRecordSnapshot; /** Persist intent before each non-idempotent native step and its result after it returns. * Unknown is terminal until explicit reconciliation; no caller automatically replays it. */ export declare function advanceServiceInstallIntent(expected: LocalRecordSnapshot, step: Step, position: Position): LocalRecordSnapshot; export {}; //# sourceMappingURL=service-install-intent.d.ts.map