import type { KitLifecycleHookBus } from "../../core/kit-lifecycle-hooks.js";
import type { TransitionEvidence, TransitionGuard } from "./types.js";
import { TransitionValidator } from "./transitions.js";
import { TaskStore } from "./persistence/store.js";
export type TransitionRequest = {
    taskId: string;
    action: string;
    actor?: string;
    /** When set, SQLite planning row must match this generation or persist fails (`planning-generation-mismatch`). */
    expectedPlanningGeneration?: number;
    clientMutationId?: string;
    /** Original run-transition argv (human gate fields, etc.). */
    transitionArgs?: Record<string, unknown>;
    /**
     * Optional hook: runs inside the SQLite transaction immediately before task rows / blobs are written
     * (sqlite dual store only). Used for atomic phase journal attachments on `run-transition`.
     */
    beforePersistInSqliteTransaction?: () => void;
    /**
     * When false, validate and mutate the in-memory store only (no `save`). Used when git-event-log
     * authority publishes canonical events before refreshing the SQLite projection cache.
     */
    persist?: boolean;
};
export type TransitionResult = {
    evidence: TransitionEvidence;
    autoUnblocked: TransitionEvidence[];
    replayed?: boolean;
};
export declare class TransitionService {
    private readonly store;
    private readonly validator;
    private readonly hookBus?;
    constructor(store: TaskStore, customGuards?: TransitionGuard[], hookBus?: KitLifecycleHookBus);
    runTransition(request: TransitionRequest): Promise<TransitionResult>;
    private autoUnblock;
    getStore(): TaskStore;
    getValidator(): TransitionValidator;
}
