import type { StaffManager } from "./staff-manager.js";
import type { InboxManager } from "./inbox-manager.js";
import type { PersistedGoal } from "./goal-store.js";
/**
 * Push-based dispatcher for goal lifecycle staff triggers.
 *
 * Unlike `TriggerEngine` which polls every 60 s for `schedule` / `git`
 * triggers, this dispatcher is invoked synchronously from `GoalStore.put`
 * (new-id detection) and `GoalStore.archive` (false \u2192 true transition).
 *
 * Per-event semantics:
 *  - Iterates every staff record across every project via
 *    `staffManager.listStaff()` (fire-all; project/workflow filtering is a
 *    deferred follow-up).
 *  - Skips staff whose `state !== "active"` (paused / retired).
 *  - For each enabled trigger whose `type` matches the event, enqueues a
 *    single inbox entry and bumps `lastFired`.
 *  - **No break-after-first** \u2014 multiple matching triggers on one staff
 *    all fire (each is a distinct user-defined prompt).
 *  - Enqueue failures are caught per-trigger so one bad staff doesn't
 *    poison the dispatch for the rest.
 *
 * `trigger.prompt` is required at the API/store boundary for goal-* triggers
 * (see `StaffManager.validateTriggers`), so by the time the dispatcher runs
 * `trigger.prompt!` is guaranteed non-empty.
 */
export declare class GoalTriggerDispatcher {
    private staffManager;
    private inboxManager;
    constructor(staffManager: StaffManager, inboxManager: InboxManager);
    onGoalCreated(goal: PersistedGoal): void;
    onGoalArchived(goal: PersistedGoal): void;
    private dispatch;
}
//# sourceMappingURL=goal-trigger-dispatcher.d.ts.map