import { Context, Effect, Layer } from 'effect'; import type { HookType, HookEvent, HookResult, HookHandler } from './types'; declare const HookExecutionError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & { readonly _tag: "HookExecutionError"; } & Readonly; /** * Error thrown when hook execution encounters catastrophic failure */ export declare class HookExecutionError extends HookExecutionError_base<{ readonly hookType: HookType; readonly message: string; readonly cause?: unknown; }> { } /** * HookManagerService interface for Effect-based hook management */ export interface HookManagerService { /** * Register a hook handler for a specific hook type */ registerHook(type: HookType, handler: HookHandler): Effect.Effect; /** * Unregister a hook handler */ unregisterHook(type: HookType, handler: HookHandler): Effect.Effect; /** * Execute all hooks of a given type * Returns results from all handlers, continues even if one fails */ executeHooks(type: HookType, event: HookEvent): Effect.Effect; /** * Execute hooks and merge results into single context/data object */ executeHooksAndMerge(type: HookType, event: HookEvent): Effect.Effect<{ context?: Record; data?: unknown; skip?: boolean; metadata?: Record; }, HookExecutionError>; /** * Clear all hooks of a specific type */ clearHooks(type: HookType): Effect.Effect; /** * Clear all hooks */ clearAllHooks(): Effect.Effect; /** * Get all registered hook types */ getRegisteredHookTypes(): Effect.Effect; /** * Get count of handlers for a hook type */ getHookCount(type: HookType): Effect.Effect; } export declare const HookManagerService: Context.Tag; /** * Live layer providing HookManagerService */ export declare const HookManagerServiceLive: Layer.Layer; export {}; //# sourceMappingURL=service.d.ts.map