import { Receipt, TrackChangeInfo, TrackChangesListQuery, TrackChangesListResult } from '../types/index.js';
import { StoryLocator } from '../types/story.types.js';
import { RevisionGuardOptions } from '../write/write.js';
export type TrackChangesListInput = TrackChangesListQuery;
export interface TrackChangesGetInput {
    id: string;
    /** Story containing the tracked change. Omit for body (backward compatible). */
    story?: StoryLocator;
}
export interface TrackChangesAcceptInput {
    id: string;
    /** Story containing the tracked change. Omit for body (backward compatible). */
    story?: StoryLocator;
}
export interface TrackChangesRejectInput {
    id: string;
    /** Story containing the tracked change. Omit for body (backward compatible). */
    story?: StoryLocator;
}
export type TrackChangesAcceptAllInput = Record<string, never>;
export type TrackChangesRejectAllInput = Record<string, never>;
export type ReviewDecideInput = {
    decision: 'accept';
    target: {
        id: string;
        story?: StoryLocator;
    };
} | {
    decision: 'reject';
    target: {
        id: string;
        story?: StoryLocator;
    };
} | {
    decision: 'accept';
    target: {
        scope: 'all';
    };
} | {
    decision: 'reject';
    target: {
        scope: 'all';
    };
};
export interface TrackChangesAdapter {
    /** List tracked changes matching the given query. */
    list(input?: TrackChangesListInput): TrackChangesListResult;
    /** Retrieve full information for a single tracked change. */
    get(input: TrackChangesGetInput): TrackChangeInfo;
    /** Accept a tracked change, applying it to the document. */
    accept(input: TrackChangesAcceptInput, options?: RevisionGuardOptions): Receipt;
    /** Reject a tracked change, reverting it from the document. */
    reject(input: TrackChangesRejectInput, options?: RevisionGuardOptions): Receipt;
    /** Accept all tracked changes in the document. */
    acceptAll(input: TrackChangesAcceptAllInput, options?: RevisionGuardOptions): Receipt;
    /** Reject all tracked changes in the document. */
    rejectAll(input: TrackChangesRejectAllInput, options?: RevisionGuardOptions): Receipt;
}
/** Public surface for trackChanges on DocumentApi. */
export interface TrackChangesApi {
    list(input?: TrackChangesListInput): TrackChangesListResult;
    get(input: TrackChangesGetInput): TrackChangeInfo;
    decide(input: ReviewDecideInput, options?: RevisionGuardOptions): Receipt;
}
/**
 * Execute wrappers below are the canonical interception point for input
 * normalization and validation before delegating to the adapter.
 */
export declare function executeTrackChangesList(adapter: TrackChangesAdapter, input?: TrackChangesListInput): TrackChangesListResult;
export declare function executeTrackChangesGet(adapter: TrackChangesAdapter, input: TrackChangesGetInput): TrackChangeInfo;
/**
 * Executes the consolidated `trackChanges.decide` operation by routing to the
 * appropriate adapter method based on the discriminated input.
 *
 * Accepting/rejecting changes is a resolution action, not a content mutation -
 * changeMode and dryRun are not applicable, so this accepts
 * {@link RevisionGuardOptions} rather than `MutationOptions`.
 */
export declare function executeTrackChangesDecide(adapter: TrackChangesAdapter, rawInput: ReviewDecideInput, options?: RevisionGuardOptions): Receipt;
//# sourceMappingURL=track-changes.d.ts.map