import type { Spec, SpecStatus } from '../../types/index.js';
/**
 * Why this transition is happening — surfaces in audit-trail and transition_log.
 */
export type TransitionTrigger = 'user' | 'auto-advance' | 'git-merge' | 'fs-hook' | 'sync-spec-state' | 'multi-teammate-review' | 'http' | 'dashboard' | 'reopen';
export interface TransitionContext {
    /** Why this transition is happening. */
    trigger: TransitionTrigger;
    /** sessionId or 'system'. */
    actor: string;
    /** True when the caller is `sync_spec_state`. */
    viaSync?: boolean;
    /** Optional reason supplied by the LLM (forceStatus / reverse transition). */
    reason?: string;
}
export interface TransitionRecord {
    spec: Spec;
    fromStatus: SpecStatus;
    toStatus: SpecStatus;
    trigger: TransitionTrigger;
    actor: string;
    viaSync: boolean;
    timestamp: string;
}
/**
 * Performs the bare store write for a spec status transition.
 *
 * IMPORTANT: This function only writes the status. The CALLER (handleUpdateStatus)
 * is responsible for running all gates (DoD, validate, QA, security, etc.) BEFORE
 * invoking transitionSpec. transitionSpec never runs gates itself.
 *
 * Callable ONLY from `src/tools/update-status/index.ts`.
 */
export declare function transitionSpec(projectId: string, specId: string, newStatus: SpecStatus, ctx: TransitionContext): Promise<TransitionRecord>;
//# sourceMappingURL=transition-spec.d.ts.map