use std::sync::Arc;
use crate::credentials::DeveloperCert;
use crate::Network;
#[derive(uniffi::Object, Clone)]
pub struct Config {
pub(crate) network: gl_client::bitcoin::Network,
pub(crate) developer_cert: Option<gl_client::credentials::Nobody>,
}
impl Config {
pub(crate) fn nobody(&self) -> gl_client::credentials::Nobody {
self.developer_cert
.clone()
.unwrap_or_else(gl_client::credentials::Nobody::new)
}
}
#[uniffi::export]
impl Config {
#[uniffi::constructor()]
pub fn new() -> Self {
Self {
network: gl_client::bitcoin::Network::Bitcoin,
developer_cert: None,
}
}
pub fn with_developer_cert(&self, cert: &DeveloperCert) -> Arc<Config> {
Arc::new(Config {
developer_cert: Some(cert.inner.clone()),
..self.clone()
})
}
pub fn with_network(&self, network: Network) -> Arc<Config> {
Arc::new(Config {
network: network.into(),
..self.clone()
})
}
}