#![allow(clippy::result_large_err)]
pub mod contract;
#[cfg(feature = "manager")]
pub mod builder;
#[cfg(feature = "manager")]
pub mod chain;
#[cfg(feature = "manager")]
mod ddk;
#[cfg(feature = "manager")]
pub mod error;
#[cfg(feature = "manager")]
pub mod json;
#[cfg(feature = "manager")]
pub mod logger;
#[cfg(feature = "nostr")]
pub mod nostr;
#[cfg(feature = "manager")]
pub mod oracle;
#[cfg(feature = "manager")]
pub mod storage;
#[cfg(feature = "manager")]
pub mod transport;
#[cfg(feature = "manager")]
pub mod util;
#[cfg(feature = "manager")]
pub mod wallet;
pub use ddk_manager;
#[cfg(feature = "manager")]
pub use ddk::DlcDevKit;
#[cfg(feature = "manager")]
pub use ddk::DlcManagerMessage;
#[cfg(feature = "manager")]
use async_trait::async_trait;
#[cfg(feature = "manager")]
use bdk_wallet::ChangeSet;
#[cfg(feature = "manager")]
use bitcoin::secp256k1::{PublicKey, SecretKey};
#[cfg(feature = "manager")]
use bitcoin::Amount;
#[cfg(feature = "manager")]
use ddk::DlcDevKitDlcManager;
#[cfg(feature = "manager")]
use ddk_messages::Message;
#[cfg(feature = "manager")]
use error::TransportError;
#[cfg(feature = "manager")]
use error::WalletError;
#[cfg(feature = "manager")]
use std::sync::Arc;
#[cfg(feature = "manager")]
use tokio::sync::watch;
#[async_trait]
#[cfg(feature = "manager")]
pub trait Transport: Send + Sync + 'static {
fn name(&self) -> String;
fn public_key(&self) -> PublicKey;
async fn start<S: Storage, O: Oracle>(
&self,
mut stop_signal: watch::Receiver<bool>,
manager: Arc<DlcDevKitDlcManager<S, O>>,
) -> Result<(), TransportError>;
async fn send_message(&self, counterparty: PublicKey, message: Message);
async fn connect_outbound(&self, pubkey: PublicKey, host: &str);
}
#[async_trait]
#[cfg(feature = "manager")]
pub trait Storage: ddk_manager::Storage + Send + Sync + std::fmt::Debug + 'static {
async fn initialize_bdk(&self) -> Result<ChangeSet, WalletError>;
async fn persist_bdk(&self, changeset: &ChangeSet) -> Result<(), WalletError>;
}
#[cfg(feature = "manager")]
pub trait KeyStorage {
fn get_secret_key(&self, key_id: [u8; 32]) -> Result<SecretKey, WalletError>;
fn store_secret_key(&self, key_id: [u8; 32], secret_key: SecretKey) -> Result<(), WalletError>;
}
#[cfg(feature = "manager")]
pub trait Oracle: ddk_manager::Oracle + Send + Sync + 'static {
fn name(&self) -> String;
}
#[cfg(feature = "manager")]
#[derive(Debug, Clone, Copy, serde::Serialize, serde::Deserialize)]
pub struct Balance {
pub confirmed: Amount,
pub change_unconfirmed: Amount,
pub foreign_unconfirmed: Amount,
pub contract: Amount,
pub contract_pnl: i64,
}