/** * Event system for x402-cfo agent. * * Typed event emitter that fires on every financial decision. * This is what makes the SDK worth integrating — developers * can react to events, wire up Slack alerts, trigger circuit * breakers, or log to external systems. */ import type { LedgerEntry } from './ledger.js'; import type { BudgetStatus } from './budget.js'; export type AnomalyMode = 'enforce' | 'review' | 'off'; export type AgentEventMap = { /** Fired when a payment is made successfully. */ 'payment:success': { entry: LedgerEntry; }; /** Fired when a payment is denied by policy or budget. */ 'payment:denied': { entry: LedgerEntry; }; /** Fired when a wallet payment fails. */ 'payment:failed': { entry: LedgerEntry; }; /** Fired when budget usage crosses a warning threshold (default 80%). */ 'budget:warning': { status: BudgetStatus; window: string; percentUsed: number; }; /** Fired when a budget limit is fully exhausted. */ 'budget:exhausted': { status: BudgetStatus; window: string; }; /** Fired when anomaly detection blocks a payment (enforce mode). */ 'anomaly:blocked': { url: string; amount: number; baseline: number; zScore: number; multiplier: number; mode: 'enforce'; }; /** Fired when anomaly is detected but payment proceeds (review mode). */ 'anomaly:flagged': { url: string; amount: number; baseline: number; zScore: number; multiplier: number; mode: 'review'; }; }; type EventHandler = (data: T) => void; export declare class AgentEvents { private handlers; /** Subscribe to an event. Returns an unsubscribe function. */ on(event: K, handler: EventHandler): () => void; /** Subscribe to an event, but only fire once. */ once(event: K, handler: EventHandler): () => void; /** Emit an event to all subscribers. */ emit(event: K, data: AgentEventMap[K]): void; /** Remove all handlers. */ clear(): void; } export {}; //# sourceMappingURL=events.d.ts.map