import { type BypassEnvelope, type HookConfig } from './types.js'; /** * CI / non-interactive contexts must never block. We mirror the husky * pre-push pattern already used elsewhere: any of these wins. */ export declare function isNonInteractive(env?: NodeJS.ProcessEnv): boolean; /** * Parse the bypass envelope. Refuses any malformed combination — we'd rather * fail-open silently than honour a typoed escape hatch indefinitely. * * Required when active: * MNEMONIK_BYPASS_HOOKS=1 * MNEMONIK_BYPASS_TYPE= * MNEMONIK_BYPASS_DETAIL=<50–200 chars> (only when type=other) */ export declare function parseBypass(env?: NodeJS.ProcessEnv): BypassEnvelope; /** * Resolve hook config from layered sources, in priority order: * * 1. Installed --server argument (server only). * 2. Env vars (MNEMONIK_API_KEY, MNEMONIK_SERVER) — let users override per-shell. * 3. ~/.mnemonik/scanner.json — already the source of truth for the scanner * daemon, so reusing it means users with the scanner working are wired * for hooks for free. * * `.mnemonik.json` is intentionally NOT read here. Gate enforcement modes * are package-level constants in lib/behavior.ts — see that file for the * rationale. Customers should not configure hook behavior via JSON files; * the package version they install IS the contract. * * Missing API key returns `apiKey: null` rather than throwing — the dispatcher * fail-opens with a stderr warning so a misconfigured machine never breaks * the user's workflow. */ export declare function resolveConfig(_cwd: string, env?: NodeJS.ProcessEnv, argv?: string[]): Promise; export declare const fetchWithHookCredential: typeof import('@mnemonik/credentials').fetchWithHookCredential;