/**
 * MissionGovernor — the single authorization chokepoint every autonomous
 * mission traverses before execution.
 *
 * Phase 3 (Governance on Every Mission) of the autonomous-agent milestone.
 *
 * Before Phase 3, GovernanceLayer.evaluate() ran on Telegram text and
 * advisorily inside OrchestrationLoop, but missions enqueued by the
 * GoalTicker / CLI / HTTP could reach the orchestration loop and start
 * spending tokens before any hard gate. MissionGovernor closes that hole:
 * it is called as the FIRST thing in MissionExecutor.execute(), blocks
 * disallowed missions before any LLM spend, layers the VortexAuthorityGuard
 * on top (push/PR/publish need an explicit token), and records every
 * decision in the SHA-chained GovernanceScopeLedger.
 *
 * Defense in depth: OrchestrationLoop still runs its own internal governance
 * — this chokepoint is the outer gate, not a replacement.
 */
import { GovernanceLayer, GovernanceDecision } from './GovernanceLayer';
import { GovernanceScopeLedger } from './GovernanceScopeLedger';
import { VortexAuthorityGuard } from './VortexAuthorityGuard';
import type { MissionSpec } from './QueueScheduler';
export interface MissionAuthorization {
    allowed: boolean;
    decision: GovernanceDecision;
    /** snake_case code when blocked; undefined when allowed. */
    reason?: string;
    /** True when blocked specifically by the vortex-authority guard. */
    vortexBlocked?: boolean;
    matchedVortexOps?: string[];
}
export interface MissionGovernorOptions {
    governance?: GovernanceLayer;
    ledger?: GovernanceScopeLedger;
    vortexGuard?: VortexAuthorityGuard;
}
export declare class MissionGovernor {
    private readonly governance;
    private readonly ledger;
    private readonly vortexGuard;
    constructor(opts?: MissionGovernorOptions);
    /**
     * Authorize a mission. Never throws. Always appends to the ledger so the
     * audit trail records denials as well as approvals.
     */
    authorize(mission: MissionSpec): MissionAuthorization;
}
