import { RewindTokenStore } from './tokens.js'; import type { RewindAnchor, RewindApplyResult, RewindConversationPort, RewindEventSink, RewindPlan, RewindScope, RewindWorkspacePort } from './types.js'; /** Thrown when rewind.apply is handed an invalid/expired/mismatched confirm token. */ export declare class RewindTokenError extends Error { constructor(message: string); } /** The two ways to authorize an apply: a confirm token from plan, or `confirm: true`. */ export declare const REWIND_CONFIRM_OPTIONS: readonly ["confirm", "confirmToken"]; export interface UnifiedRewindServiceDeps { /** The workspace-checkpoint store port. Absent → files rewind is honestly unavailable. */ readonly workspace?: RewindWorkspacePort | null; /** The conversation store port. Absent → conversation rewind is honestly unavailable. */ readonly conversation?: RewindConversationPort | null; /** Receipt event sink. Absent → no events emitted (a graceful degrade). */ readonly emit?: RewindEventSink | null; readonly now?: () => number; readonly tokens?: RewindTokenStore; } export interface RewindApplyOptions { readonly confirm?: boolean | undefined; readonly confirmToken?: string | undefined; } export declare class UnifiedRewindService { private readonly workspace; private readonly conversation; private readonly emitSink; private readonly now; private readonly tokens; constructor(deps?: UnifiedRewindServiceDeps); /** Dry-run preview of a rewind + a single-use confirm token authorizing it. */ plan(anchor: RewindAnchor, scope: RewindScope): Promise; /** Confirm-gated apply. Unconfirmed → a non-error refusal; bad token → RewindTokenError. */ apply(anchor: RewindAnchor, scope: RewindScope, opts?: RewindApplyOptions): Promise; private resolveCheckpoint; private planFiles; private planConversation; private applyFiles; private applyConversation; private emitEvent; } //# sourceMappingURL=service.d.ts.map