use std::time::Duration;
use nostr::nips::nip47::{Nip47Ciphers, 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,
pub cipher: Option<Nip47Ciphers>,
}
impl NostrWalletConnectBuilder {
pub fn new(uri: NostrWalletConnectUri) -> Self {
Self {
uri,
timeout: DEFAULT_TIMEOUT,
monitor: None,
relay: RelayOptions::default(),
cipher: None,
}
}
#[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 force_nip04(mut self) -> Self {
self.cipher = Some(Nip47Ciphers::NIP04);
self
}
#[inline]
pub fn force_nip44_v2(mut self) -> Self {
self.cipher = Some(Nip47Ciphers::NIP44V2);
self
}
#[inline]
pub fn build(self) -> NostrWalletConnect {
NostrWalletConnect::from_builder(self)
}
}