/** * @packageDocumentation * Structured error handling for best-effort typed AST operations. */ /** * Counter contract used by test-time debug instrumentation. */ export type SafeTypeOperationCounter = Readonly<{ getSnapshot: () => ReadonlyMap; onFailure: (failure: Readonly<{ error: unknown; reason: Reason; }>) => void; }>; /** * Failure payload emitted when a safe typed operation throws. */ export type SafeTypeOperationFailure = Readonly<{ error: unknown; reason: Reason; }>; /** * Optional observer called whenever an operation fails. */ export type SafeTypeOperationFailureObserver = (failure: Readonly>) => void; /** * Failure payload emitted when an observer itself throws. */ export type SafeTypeOperationObserverFailure = Readonly<{ failure: Readonly>; observerError: unknown; observerKind: "global" | "local"; }>; /** * Optional observer called when an operation failure observer throws. */ export type SafeTypeOperationObserverFailureObserver = (failure: Readonly>) => void; /** * Register a process-local observer for observer failures. * * @param observer - Callback invoked when a local/global failure observer * throws. * * @returns Unsubscribe callback to remove the observer. */ export declare const registerSafeTypeOperationObserverFailureObserver: (observer: SafeTypeOperationObserverFailureObserver) => (() => void); /** * Register a process-local failure observer for typed operations. * * @param observer - Callback invoked for each operation failure. * * @returns Unsubscribe callback to remove the observer. */ export declare const registerSafeTypeOperationFailureObserver: (observer: SafeTypeOperationFailureObserver) => (() => void); /** * Run one operation with a scoped failure observer that is always cleaned up. * * @param observer - Observer registered for the operation scope. * @param operation - Synchronous operation to execute while observing failures. * * @returns Return value produced by `operation`. */ export declare const withSafeTypeOperationFailureObserver: (observer: SafeTypeOperationFailureObserver, operation: () => Result) => Result; /** * Result shape for safe typed operations. */ export type SafeTypeOperationResult = Readonly<{ failure: SafeTypeOperationFailure; ok: false; }> | Readonly<{ ok: true; value: Result; }>; /** * Execute a typed operation with structured failure output instead of throws. */ export declare const safeTypeOperation: ({ onFailure, operation, reason, }: Readonly<{ onFailure?: SafeTypeOperationFailureObserver; operation: () => Result; reason: Reason; }>) => SafeTypeOperationResult; /** * Build a lightweight reason counter for debugging operation failures in tests. * * @param reasonsForTypeInference - Optional typed reason literals used to infer * the `Reason` generic without requiring explicit type parameters. */ export declare const createSafeTypeOperationCounter: (reasonsForTypeInference?: readonly Reason[]) => SafeTypeOperationCounter; //# sourceMappingURL=safe-type-operation.d.ts.map