/**
 * Get the per-thread PlanMode flag.
 *
 * Returns:
 *   - true  → thread is explicitly in PlanMode
 *   - false → thread is explicitly out of PlanMode (overrides env=on)
 *   - null  → no per-thread setting; caller should check env
 *
 * Three-state return matters because `setPlanMode(key, false)` is a
 * meaningful explicit "no, don't apply env default here" not a clear.
 * `clearPlanMode` is the way to wipe a row entirely.
 */
export declare function getPlanModeForThread(threadKey: string): boolean | null;
/** Upsert the per-thread PlanMode flag. */
export declare function setPlanModeForThread(threadKey: string, enabled: boolean): boolean;
/** Remove the per-thread row entirely so the env default applies again. */
export declare function clearPlanModeForThread(threadKey: string): boolean;
/** List all threads currently with PlanMode explicitly enabled. Useful
 *  for the web admin view + audit. Returns ordered most-recent-first. */
export declare function listPlanModeEnabledThreads(): Array<{
    threadKey: string;
    updatedAt: string;
}>;
/** Test-only: close the underlying handle so a temp DB can be unlinked. */
export declare function closePlanModeStateDb(): void;
export declare function readEnvPlanModeDefault(): boolean;
/**
 * Resolve effective PlanMode for a thread, layering per-thread → env.
 *
 *   per-thread = true   → on  (regardless of env)
 *   per-thread = false  → off (regardless of env — useful to opt one
 *                              thread out when env=on for the rest)
 *   per-thread = null   → env (whatever IMHUB_NATIVE_PLAN_MODE says)
 *
 * When `threadKey` is omitted or empty (no thread context, e.g. CLI
 * boot banner), we return the env default — matches v1.2.119 behaviour.
 */
export declare function effectivePlanModeOn(threadKey?: string): boolean;
//# sourceMappingURL=plan-mode-state.d.ts.map