use std::time::Duration;
use nostr::nips::nip47::NostrWalletConnectUri;
use nostr_sdk::monitor::Monitor;
use nostr_sdk::relay::RelayOptions;
use crate::NostrWalletConnect;
const DEFAULT_TIMEOUT: Duration = Duration::from_secs(10);
#[derive(Debug, Clone)]
pub struct NostrWalletConnectBuilder {
pub uri: NostrWalletConnectUri,
pub timeout: Duration,
pub monitor: Option<Monitor>,
pub relay: RelayOptions,
}
impl NostrWalletConnectBuilder {
pub fn new(uri: NostrWalletConnectUri) -> Self {
Self {
uri,
timeout: DEFAULT_TIMEOUT,
monitor: None,
relay: RelayOptions::default(),
}
}
#[inline]
pub fn timeout(mut self, timeout: Duration) -> Self {
self.timeout = timeout;
self
}
#[inline]
pub fn monitor(mut self, monitor: Monitor) -> Self {
self.monitor = Some(monitor);
self
}
#[inline]
pub fn relay(mut self, opts: RelayOptions) -> Self {
self.relay = opts;
self
}
#[inline]
pub fn build(self) -> NostrWalletConnect {
NostrWalletConnect::from_builder(self)
}
}