import type { RankerConfig } from '../memory/types.js';
export interface CloudConfig {
    cloudApiKey: string | null;
    cloudBaseUrl: string;
    cloudEnabled: boolean;
}
export interface CloudSyncControls {
    projectMode: 'all' | 'include' | 'exclude';
    projects: string[];
    contentMode: 'full' | 'metadata';
    excludeSensitive: boolean;
}
export interface ReviewCopilotConfig {
    enabled: boolean;
    modelId: string;
    modelCacheDir: string;
    telemetryPath: string;
    inferenceTimeoutMs: number;
    workerHeapMB: number;
}
/** Returns true if config file tampering was detected. */
export declare function isConfigTampered(): boolean;
export declare function getCloudConfig(): CloudConfig;
export declare function setCloudConfig(updates: Partial<CloudConfig>): void;
/** Reset the in-memory cache (useful for testing) */
export declare function clearCloudConfigCache(): void;
export declare function getCloudSyncControls(): CloudSyncControls;
export declare function setCloudSyncControls(updates: Partial<CloudSyncControls>): void;
export declare function shouldSyncProject(project: string | null | undefined, controls?: CloudSyncControls): boolean;
export declare function isSensitiveLevel(level: string | null | undefined): boolean;
export declare function readRawConfig(): Record<string, unknown>;
export declare function getTrustedSkills(): string[];
export declare function addTrustedSkill(path: string): void;
export declare function removeTrustedSkill(path: string): void;
/**
 * Persist cloud Iron Dome data (patterns + policy) to config.json with HMAC integrity.
 */
export declare function setCloudIronDomeCache(data: Record<string, unknown>): void;
/**
 * Read cached cloud Iron Dome data from config.json.
 */
export declare function getCloudIronDomeCache(): Record<string, unknown> | null;
/**
 * Record a successful cloud sync. Always updates the in-memory timestamp;
 * persists to config.json at most once per 60s (time-debounced). Callers
 * (sync.ts / sync-queue.ts / memory-sync.ts) are unchanged — the debounce is
 * internal.
 */
export declare function updateLastSyncAt(): void;
/**
 * Force-persist the latest in-memory lastSyncAt regardless of the debounce
 * window, so the final sync timestamp isn't lost if the process exits inside
 * the debounce window. Safe no-op if nothing is pending.
 *
 * Available for a shutdown path (not currently wired): the existing
 * SIGINT/SIGTERM/exit handlers (src/index.ts, src/api/visualization-server.ts)
 * are MCP-server / dashboard lifecycle concerns and don't obviously own the
 * cloud-sync clock, so wiring is left to whichever shutdown owner adopts it
 * rather than bolted onto an unrelated handler. Losing at most one debounced
 * timestamp on abrupt exit is non-critical (the next sync re-stamps it).
 */
export declare function flushLastSyncAt(): void;
/**
 * Returns the most recent sync timestamp, preferring the in-memory value (which
 * may be ahead of disk inside the debounce window) and falling back to the
 * persisted config value.
 */
export declare function getLastSyncAt(): string | null;
export type DefenceMode = 'strict' | 'balanced' | 'permissive';
/**
 * Returns the persisted defence mode, defaulting to 'balanced'.
 */
export declare function getDefenceMode(): DefenceMode;
/**
 * Persists the defence mode to ~/.shieldcortex/config.json.
 */
export declare function setDefenceMode(mode: DefenceMode): void;
export interface VerifyConfig {
    verifyEnabled: boolean;
    verifyMode: 'advisory' | 'enforce';
    verifyTriggers: Array<'ALLOW' | 'BLOCK' | 'QUARANTINE'>;
    verifyTimeoutMs: number;
}
/**
 * Returns the persisted LLM verification config.
 * Verify requires cloud to be configured (cloudEnabled + cloudApiKey).
 */
export declare function getVerifyConfig(): VerifyConfig;
/**
 * Persists LLM verification config to ~/.shieldcortex/config.json.
 */
export declare function setVerifyConfig(updates: Partial<VerifyConfig>): void;
/**
 * Returns local Review Copilot config.
 * Disabled by default regardless of cloud key presence; users must opt in.
 */
export declare function getReviewCopilotConfig(): ReviewCopilotConfig;
/**
 * Persists local Review Copilot config.
 */
export declare function setReviewCopilotConfig(updates: Partial<ReviewCopilotConfig>): void;
/**
 * Resolved ranker configuration.
 *
 * Resolution order (env wins so it can be flipped per-process without
 * editing config.json):
 *   1. `SHIELDCORTEX_RANKER` env var (`rrf` | `legacy`)
 *   2. `ranker.engine` in `~/.shieldcortex/config.json`
 *   3. Default (`rrf`)
 *
 * `rrfK` and `weights` only come from config.json (no env override) —
 * tuning these is a deliberate config change, not a per-process knob.
 */
export declare function getRankerConfig(): RankerConfig;
/**
 * Persists ranker config to `~/.shieldcortex/config.json`. Only the
 * fields supplied in `updates` are written; other fields are preserved.
 */
export declare function setRankerConfig(updates: Partial<RankerConfig>): void;
export interface OpenClawMemoryConfig {
    autoMemory: boolean;
    dedupe: boolean;
    noveltyThreshold: number;
    maxRecent: number;
}
/**
 * Returns persisted OpenClaw memory integration config with safe defaults.
 */
export declare function getOpenClawMemoryConfig(): OpenClawMemoryConfig;
/**
 * Persists OpenClaw memory integration config.
 */
export declare function setOpenClawMemoryConfig(updates: Partial<OpenClawMemoryConfig>): void;
/**
 * Returns whether OpenClaw auto-memory extraction is enabled.
 * Default is true (on by default, opt-out with --openclaw-auto-memory false).
 */
export declare function getOpenClawAutoMemory(): boolean;
/**
 * Persists OpenClaw auto-memory extraction preference.
 */
export declare function setOpenClawAutoMemory(enabled: boolean): void;
/**
 * Returns whether proactive memory recall is enabled on prompt submit.
 * Default is false since v4.11.0 — opt-in with --proactive-recall true.
 * Per-turn recall was found to be net-negative for fast agent loops; kept
 * available for interactive sessions that want it.
 */
export declare function isProactiveRecallEnabled(): boolean;
/**
 * Persists proactive recall preference to ~/.shieldcortex/config.json.
 */
export declare function setProactiveRecall(enabled: boolean): void;
/**
 * Restores the v4.10.x defaults for users who preferred the old behaviour.
 * Writes explicit overrides for every default the v4.11.0 release flipped,
 * so the flip is a one-command undo.
 */
export declare function restore410Defaults(): void;
export interface AutoMemoryEnableConfig {
    enableStop: boolean;
    enableSessionEnd: boolean;
}
/**
 * Returns the resolved on/off state of the opt-in auto-memory hooks.
 *
 * Default is false for both — preserves the OpenClaw-safe default that
 * shipped in v4.13.0. The install flags (`--with-stop-hook` /
 * `--with-session-end`) flip these to true so that wiring the hook in
 * settings.json and enabling the runtime gate are a single user action.
 */
export declare function getAutoMemoryEnableConfig(): AutoMemoryEnableConfig;
/**
 * Persists the on/off state of the opt-in auto-memory hooks.
 *
 * Lives in `autoMemory.enableStop` / `autoMemory.enableSessionEnd` under
 * `~/.shieldcortex/config.json` — the same namespace `auto-memory-config.mjs`
 * reads from at hook fire time. Single source of truth: install flag +
 * runtime gate cannot disagree.
 */
export declare function setAutoMemoryEnableConfig(updates: Partial<AutoMemoryEnableConfig>): void;
export interface ToolResponseScanConfig {
    scanToolResponses: boolean;
    toolResponseMode: 'advisory' | 'enforce';
}
/**
 * Returns tool response scanning config with safe defaults.
 */
export declare function getToolResponseScanConfig(): ToolResponseScanConfig;
/**
 * Persists tool response scanning config.
 */
export declare function setToolResponseScanConfig(updates: Partial<ToolResponseScanConfig>): void;
/**
 * Returns a stable UUID for this machine.
 * Generates and persists on first call; reads from config thereafter.
 */
export declare function getDeviceId(): string;
/**
 * Returns the OS hostname for this machine.
 * Stores in config on first call; reads from config thereafter.
 */
export declare function getDeviceName(): string;
