import { type LoadedPlugin, type OnHook } from "@wolpertingerlabs/openrouter-agent-harness";
import type { OrAdapterLogger } from "./pluginAdapter.js";
interface HookContext {
    signal?: AbortSignal;
    getSessionId: () => string;
    cwd: string;
    logger?: OrAdapterLogger;
    /**
     * Shared mutable cell claude.ts threads through the options blob (same
     * object instance buildCanUseTool closes over). A PreToolUse hook that
     * decides `ask` writes its reason here; the forwarded canUseTool sees a
     * non-empty reason, skips auto-approval, prompts the user, and resets it.
     */
    hookAskOverride?: {
        reason: string;
    };
}
/**
 * Build an OR `onHook` that dispatches plugin hook commands. Returns `undefined`
 * when no plugin contributes any command hooks (so the caller can skip wiring
 * and leave any caller-supplied `onHook` untouched).
 */
export declare function buildOpenRouterHookDispatcher(loadedPlugins: readonly LoadedPlugin[], ctx: HookContext): OnHook | undefined;
/** Compose a plugin dispatcher with any caller-supplied `onHook` (dispatcher first). */
export declare function composeOnHook(dispatcher: OnHook | undefined, passthrough: OnHook | undefined): OnHook | undefined;
export {};
//# sourceMappingURL=hookAdapter.d.ts.map