import type { RDAPResponse } from '../../shared/types/responses'; export interface QueryContext { queryType: 'domain' | 'ip' | 'asn' | 'nameserver' | 'entity'; query: string; normalized: string; startTime: number; cached?: boolean; serverUrl?: string; attempt?: number; abort?: () => void; } export interface QueryResultContext extends QueryContext { duration: number; result?: RDAPResponse; error?: Error; fromCache: boolean; } export interface HookFn { (context: T): Promise | void; } export interface MiddlewareOptions { beforeQuery?: HookFn; afterQuery?: HookFn; onError?: HookFn; onCacheHit?: HookFn; onCacheMiss?: HookFn; onRetry?: HookFn; } export declare class MiddlewareManager { private hooks; private priorityEntries; constructor(hooks?: MiddlewareOptions); private safeRun; runBeforeQuery(ctx: QueryContext): Promise; runAfterQuery(ctx: QueryResultContext): Promise; runOnError(ctx: QueryResultContext): Promise; runOnCacheHit(ctx: QueryContext): Promise; runOnCacheMiss(ctx: QueryContext): Promise; runOnRetry(ctx: QueryContext & { attempt: number; delay: number; }): Promise; use(hooks: Partial, priority?: number): void; clear(): void; getRegisteredHooks(): string[]; } //# sourceMappingURL=MiddlewareHooks.d.ts.map