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