import type { AgentManager } from '../teams/agents.js';
import { type BreachInfo } from './enforce.js';
/** Public surface of the team-scoped budget watcher. */
export interface TeamBudgetWatcher {
    /** Feed any new usage events from every running teammate's stdout.log. */
    poll(): Promise<void>;
    /** True once any cap has been crossed (mirrors LiveSpendWatcher). */
    breached(): boolean;
    /** The first breach seen, or null if none yet. */
    breach(): BreachInfo | null;
    /** Release references and stop tapping streams. Idempotent. */
    dispose(): void;
}
/**
 * Build a team-scoped budget watcher for the given team. Returns null when the
 * effective budget config has no caps — matching the local watcher's dormant
 * contract so callers pay nothing when the feature is off.
 *
 * The watcher is seeded with prior-day and prior-project spend from the ledger
 * so a partway-through day counts today's earlier runs against `per_day`.
 * Each `poll()` reads new bytes from every running teammate's stdout.log and
 * feeds parsed usage events into the shared watcher — `onBreach` fires exactly
 * once, mirroring `makeLiveSpendWatcher`.
 */
export declare function createTeamBudgetWatcher(args: {
    manager: AgentManager;
    team: string;
    /** Project/cwd used to (a) resolve budget config and (b) seed project spend. */
    cwd: string;
    onBreach: (breach: BreachInfo) => void;
}): TeamBudgetWatcher | null;
