import type { Matcher } from '../Matchers'; export declare enum BreakpointEvent { ThreadStart = "thread-start", ThreadStop = "thread-stop", ThreadError = "thread-error", RegistryGet = "registry-get", RegistrySet = "registry-set", EffectInstall = "effect-install", Error = "error" } export type BreakpointEventValue = BreakpointEvent | `${BreakpointEvent}`; export declare enum BreakpointAction { Debugger = "debugger", Soft = "soft", Both = "both", Log = "log" } export type BreakpointActionValue = BreakpointAction | `${BreakpointAction}`; export type SyncBreakpointAction = BreakpointAction.Debugger | BreakpointAction.Log; export type SyncBreakpointActionValue = SyncBreakpointAction | `${SyncBreakpointAction}`; export declare enum HaltScope { Subtree = "subtree", Global = "global" } export type HaltScopeValue = HaltScope | `${HaltScope}`; type On = E | `${E}`; interface BreakpointControls { action?: BreakpointActionValue; scope?: HaltScopeValue; } export interface ThreadLifecycleBreakpoint extends BreakpointControls { on: On; name?: Matcher; } export interface ThreadErrorBreakpoint extends BreakpointControls { on: On; name?: Matcher; message?: Matcher; } export interface RegistryBreakpoint extends BreakpointControls { on: On; name?: Matcher; action?: SyncBreakpointActionValue; } export interface EffectBreakpoint extends BreakpointControls { on: On; effect?: Matcher; contextFilter?: (ctx: unknown) => boolean; } export interface ErrorBreakpoint extends BreakpointControls { on: On; name?: Matcher; message?: Matcher; } export type Breakpoint = ThreadLifecycleBreakpoint | ThreadErrorBreakpoint | RegistryBreakpoint | EffectBreakpoint | ErrorBreakpoint; export type RegisteredBreakpoint = Breakpoint & { id: number; enabled: boolean; }; export interface BreakpointHit { haltId: number; breakpointId: number; event: BreakpointEventValue; threadId?: string; reason: string; scope: HaltScopeValue; } export interface BreakpointsApi { add(breakpoint: Breakpoint): number; list(): RegisteredBreakpoint[]; remove(id: number): void; removeAll(): void; setEnabled(id: number, enabled: boolean): void; getHitBreakpoints(): BreakpointHit[]; readonly active: boolean; setActive(active: boolean): void; pause(): void; readonly paused: boolean; resume(): void; resume(haltId: number): void; } export {};