import type { NetworkId } from "./chains/index.js"; import type { Alert, Receipt, SessionActiveEvent, SessionBudgetSnapshot, SessionExpiredEvent, SessionInvalidReason } from "./types/index.js"; export interface BudgetEvent { userAddress: string | null; network: NetworkId | null; snapshot: SessionBudgetSnapshot; requestId: string | null; } export interface SessionInvalidEvent { userAddress: string | null; network: NetworkId | null; reason: SessionInvalidReason; requestId: string | null; } export interface ReceiptEvent { userAddress: string | null; network: NetworkId | null; receipt: Receipt; requestId: string | null; source: "response-header" | "stream" | "body"; } export interface EventMap { budget: BudgetEvent; sessionInvalid: SessionInvalidEvent; sessionActive: SessionActiveEvent; sessionExpired: SessionExpiredEvent; receipt: ReceiptEvent; alert: Alert; } export type EventName = keyof EventMap; export type EventListener = (event: EventMap[E]) => void | Promise; export interface EventBus { on(event: E, listener: EventListener): () => void; once(event: E, listener: EventListener): () => void; off(event: E, listener: EventListener): void; emit(event: E, payload: EventMap[E]): void; } interface InternalBusOptions { logger?: { warn?: (msg: string, meta?: Record) => void; error?: (msg: string, meta?: Record) => void; }; } export declare function createEventBus(options?: InternalBusOptions): EventBus; export {}; //# sourceMappingURL=events.d.ts.map