// Copyright (c) 2022-2024 Niko Bonnieure, Par le Peuple, NextGraph.org developers
// All rights reserved.
// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE2 or http://www.apache.org/licenses/LICENSE-2.0>
// or the MIT license <LICENSE-MIT or http://opensource.org/licenses/MIT>,
// at your option. All files in the project carrying such
// notice may not be copied, modified, or distributed except
// according to those terms.

use serde::{Deserialize, Serialize};

use ng_repo::types::PubKey;

use ng_net::types::{BrokerOverlayConfigV0, ListenerV0, RegistrationConfig};

/// DaemonConfig Version 0
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct DaemonConfigV0 {
    /// List of listeners for TCP (HTTP) incoming connections
    pub listeners: Vec<ListenerV0>,

    pub overlays_configs: Vec<BrokerOverlayConfigV0>,

    pub registration: RegistrationConfig,

    pub admin_user: Option<PubKey>,

    pub registration_url: Option<String>,
}

/// Daemon config
#[derive(Clone, Debug, Serialize, Deserialize)]
pub enum DaemonConfig {
    V0(DaemonConfigV0),
}