import { type ProfileClient } from "./profile-client.js"; import { type SelectionCacheOptions } from "./selection-cache.js"; export interface SessionReconciliationInput { sessionId: string; fromProfile: string; fromRevision: string; receiptSha256: string; selectionProfile: string; profileRevision: string; apply?: boolean; planDigest?: string; planIssuedAt?: string; planExpiresAt?: string; } export interface SessionReconciliationOptions extends SelectionCacheOptions { client?: ProfileClient; } export declare const SESSION_RECONCILIATION_PLAN_TTL_MS: number; /** Metadata only: inspection never displays skill payloads or resolves credentials. */ export declare function inspectSkillSession(sessionId: string, options?: SelectionCacheOptions): { sessionId: string; path: string; receiptSha256: string; generation: number; verifiedAt: string; authority: string; workspaceId: string; profileId: string; profileRevision: string; selectionCount: number; loadedCount: number; }; /** * Managed hooks may move an expired pin only when every skill already loaded * by this session is still selected with exactly the same behavior and bytes. * The old receipt is archived and replaced under its exact snapshot lock. */ export declare function reconcileSkillSessionIfSafe(sessionId: string, profileId: string, options?: SessionReconciliationOptions): Promise; /** Explicit review for changed loaded selections or intentional profile migration. */ export declare function reconcileSkillSession(input: SessionReconciliationInput, options?: SessionReconciliationOptions): Promise<{ applied: false; plan: { schemaVersion: number; issuedAt: string; expiresAt: string; sessionId: string; sessionPath: string; before: { receiptSha256: string; generation: number; profileId: string; profileRevision: string; selectionCount: number; }; target: { authority: string; workspaceId: string; profileId: string; profileRevision: string; profileSha256: string; selectionCount: number; }; replacementGeneration: number; retainedLoadedCount: number; retiredLoadedCount: number; scope: string; }; planDigest: string; archivePath: undefined; receiptPath: undefined; beforeSha256: string; afterSha256: undefined; } | { archivePath: string; receiptPath: string; beforeSha256: string; afterSha256: string; applied: true; plan: { schemaVersion: number; issuedAt: string; expiresAt: string; sessionId: string; sessionPath: string; before: { receiptSha256: string; generation: number; profileId: string; profileRevision: string; selectionCount: number; }; target: { authority: string; workspaceId: string; profileId: string; profileRevision: string; profileSha256: string; selectionCount: number; }; replacementGeneration: number; retainedLoadedCount: number; retiredLoadedCount: number; scope: string; }; planDigest: string; }>;