/**
 * Zod schema for `notifications.yaml` — the pack's severity → channel routing.
 *
 * Authoritative source: `docs/opensquid-real-design.md` §"Notification routing"
 * + memory `project_opensquid_notification_routing`.
 *
 * Routing is deterministic code (NOT LLM-judged): given a notification's
 * severity + project, look up which abstract channels receive it. Severity
 * has four tiers (`critical | error | warning | info`); each tier maps to a
 * list of abstract channel names; per-project overrides win when present.
 *
 * Channel names in this file are ABSTRACT — they reference the pack-declared
 * names from `channels.yaml`. Concrete URI resolution happens at the channel
 * adapter layer (user-config-driven). This split keeps packs portable across
 * users with different channel layouts.
 *
 * `.strict()` is applied — only `severity_tiers` + `per_project_override` are
 * valid top-level keys. Typos like `severity_tier` would silently noop without
 * `.strict()`, which is dangerous for a routing file where misconfiguration
 * means silent message loss.
 *
 * Defaults match design doc §"Routing schema" example: critical + error go to
 * `alerts`; warning + info go to `chat`. The `alerts` abstract name must be
 * mapped by user config; if unmapped, the channel adapter falls back per the
 * design doc §"Fallback chain".
 *
 * Imports from: zod only (self-contained per audit constraint).
 * Imported by: src/packs/schemas/index.ts.
 */
import { z } from 'zod';
export declare const Severity: z.ZodEnum<["critical", "error", "warning", "info"]>;
export type Severity = z.infer<typeof Severity>;
export declare const NotificationsConfig: z.ZodObject<{
    severity_tiers: z.ZodDefault<z.ZodRecord<z.ZodEnum<["critical", "error", "warning", "info"]>, z.ZodArray<z.ZodString, "many">>>;
    per_project_override: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodEnum<["critical", "error", "warning", "info"]>, z.ZodArray<z.ZodString, "many">>>>;
}, "strict", z.ZodTypeAny, {
    severity_tiers: Partial<Record<"critical" | "error" | "warning" | "info", string[]>>;
    per_project_override: Record<string, Partial<Record<"critical" | "error" | "warning" | "info", string[]>>>;
}, {
    severity_tiers?: Partial<Record<"critical" | "error" | "warning" | "info", string[]>> | undefined;
    per_project_override?: Record<string, Partial<Record<"critical" | "error" | "warning" | "info", string[]>>> | undefined;
}>;
export type NotificationsConfig = z.infer<typeof NotificationsConfig>;
//# sourceMappingURL=notifications.d.ts.map