import type { SessionId, TurnId } from '../ids/index.js' import type { ProbeEventKind, VetoableEventKind } from './event-kind.js' import type { ProbeEventOf } from './event-of.js' export type Unsubscribe = () => void export interface ProbeContext { readonly sessionId?: SessionId readonly turnId?: TurnId readonly isReplay: boolean } export type ProbeHandler = ( event: ProbeEventOf, ctx: ProbeContext, ) => void export type VetoDecision = 'allow' | 'deny' | { readonly action: 'deny'; readonly reason: string } export type VetoHandler = ( event: ProbeEventOf, ctx: ProbeContext, ) => VetoDecision export interface VetoOutcome { readonly action: 'allow' | 'deny' readonly probeName?: string readonly reason?: string } export interface ProbeOptions { readonly where?: (event: ProbeEventOf) => boolean readonly priority?: number readonly name?: string /** * **Not implemented.** Setting it changes nothing; no probe emits * telemetry because of it. * * @deprecated Unimplemented. Removed in the next major. */ readonly otel?: boolean readonly override?: boolean }