import type { ProbeContext, ProbeEvent, ProbeEventKind, ProbeEventOf, ProbeHandler, ProbeOptions, Unsubscribe, VetoHandler, VetoOutcome, VetoableEventKind } from '../types/probe/index.js';
import type { Logger } from '../utils/logger.js';
export declare class ProbeRegistry {
    private readonly typedByKind;
    private readonly vetoByKind;
    private readonly catchAll;
    private readonly byName;
    private nextId;
    private log?;
    setLogger(log: Logger): void;
    on<K extends ProbeEventKind>(kind: K | readonly K[], handler: ProbeHandler<K>, opts?: ProbeOptions<K>): Unsubscribe;
    onAny(handler: (event: ProbeEvent, ctx: ProbeContext) => void, opts?: ProbeOptions): Unsubscribe;
    dispatch(event: ProbeEvent, ctx: ProbeContext, betweenTier?: () => void): void;
    veto<K extends VetoableEventKind>(kind: K, handler: VetoHandler<K>, opts?: ProbeOptions<K>): Unsubscribe;
    queryVeto<K extends VetoableEventKind>(event: ProbeEventOf<K>, ctx: ProbeContext): VetoOutcome;
    clear(): void;
    private runTier;
    private makeEntry;
    private removeAnywhere;
    private logThrow;
}
export declare const probe: ProbeRegistry;
export declare function createProbeRegistry(): ProbeRegistry;
//# sourceMappingURL=registry.d.ts.map