/**
 * guardManifest — the STATIC DECLARED MANIFEST of every guard this codebase
 * ships (GUARD-POSTURE-ENDPOINT-SPEC §2.1).
 *
 * The authoritative discovery boundary for the /guards inventory: the shared
 * extractor (guardPosture.ts) covers config-shaped guards generically; this
 * manifest declares the rest — guards with no config key at all (default-ON
 * in code), guards living outside `monitoring.*`, sub-guards that must not
 * hide inside an on-confirmed parent, and out-of-process (lifeline) guards —
 * plus per-guard metadata the honest-state derivation needs (expected tick
 * cadence for staleness, liveConfig divergence suppression, dry-run paths).
 *
 * The companion `NOT_A_GUARD` list classifies every other boot-constructed
 * component that LOOKS guard-shaped but deliberately is not in the inventory,
 * with a reason. scripts/lint-guard-manifest.js enforces that every candidate
 * component appears in exactly one of the two lists — a future guard cannot
 * be forgotten (Structure > Willpower; the lint follows the
 * lint-dev-agent-dark-gate.js + exclusions-list precedent).
 */
export type GuardKind = 'config' | 'code-default';
export type GuardProcess = 'server' | 'lifeline';
export interface GuardManifestEntry {
    /** Canonical inventory key (matches the shared extractor's key where both cover a guard). */
    key: string;
    kind: GuardKind;
    /** kind 'config': dotted path to the enabled boolean in the agent config. */
    configPath?: string;
    /** kind 'code-default': the shipped in-code value. Also the fallback default
     *  for kind 'config' guards whose default is deliberately OMITTED from
     *  ConfigDefaults (runtime-fallback pattern, e.g. contextWedge autoRecovery). */
    defaultEnabled: boolean;
    /** Dotted path to a dry-run flag, when the guard has one. */
    dryRunConfigPath?: string;
    /** Self-declared tick cadence; staleness threshold = 5 × this (spec §2.2). */
    expectedTickMs?: number;
    /** Component re-reads config per use → `diverged-pending-restart` is
     *  SUPPRESSED (the change is already live; the state would lie). */
    liveConfig?: boolean;
    process: GuardProcess;
    /** True only where the component ACTUALLY self-registers a runtime getter
     *  into the GuardRegistry at boot. An enabled guard with expectRuntime that
     *  registered nothing reports `missing` (reconciliation, spec §2.1). Keep
     *  this exactly in sync with the registration callsites — an aspirational
     *  `true` here manufactures phantom `missing` rows. */
    expectRuntime: boolean;
    /** Implementing component (class/module name) — the lint's join key. */
    component?: string;
    description: string;
}
export declare const GUARD_MANIFEST: readonly GuardManifestEntry[];
/**
 * Boot-constructed components that match the guard shape (enabled-style
 * switch or tick loop in src/monitoring, src/messaging, src/lifeline,
 * src/core) but are DELIBERATELY not inventory guards. The lint requires
 * every candidate to appear here or in GUARD_MANIFEST — with a real reason
 * (≥12 non-whitespace chars, same bar as DARK_GATE_EXCLUSIONS).
 */
export interface NotAGuardEntry {
    component: string;
    reason: string;
}
export declare const NOT_A_GUARD: readonly NotAGuardEntry[];
/** Lookup helpers (used by the lint's unit test and the registry reconciliation). */
export declare function manifestByKey(): Map<string, GuardManifestEntry>;
export declare function manifestComponents(): Set<string>;
export declare function notAGuardComponents(): Set<string>;
//# sourceMappingURL=guardManifest.d.ts.map