//! Policy types deserialised from Nickel-exported JSON.
//!
//! Nickel files under `provisioning/schemas/lib/` define the canonical schema
//! (BackupPolicy, BackupGroup, SystemBackupDef, ServiceConcerns, etc.).
//! The manager invokes `nickel export` on workspace declarations and parses
//! the resulting JSON into these structs. The JSON tag conventions mirror the
//! Nickel discriminated unions: `kind` field plus payload variants.
//!
//! Only the shape needed at runtime is materialised here; the full Nickel
//! schema includes optional fields (e.g. extended `dns_records.extra`) that
//! we treat as `serde_json::Value` to avoid coupling the binary to every
//! schema evolution.

pub mod component;
pub mod group;
pub mod scope;
pub mod system;

pub use component::{
    BackupPolicy, BackupProviderRef, ConcernState, Destination, DestinationKind,
    DestinationRole, RetentionPolicy, ScheduleSpec, ServiceConcerns,
};
pub use group::{BackupGroup, CoordinationKind, CoordinationStrategy, GroupMember};
pub use scope::{BackupScope, DumpStrategy, DumpStrategyKind, ScopeKind};
pub use system::{HostSelector, HostSelectorKind, SystemBackupDef, SystemBackupTarget,
                 SystemBackupTargetKind};
