cdk_mint_rpc/
wallet_info.rs1use std::sync::Arc;
4
5use async_trait::async_trait;
6use thiserror::Error;
7
8use crate::wallet::{GetBalanceResponse, WalletAddress, WalletTransaction};
9
10#[derive(Debug, Error)]
12#[error("{message}")]
13pub struct WalletInfoError {
14 message: String,
15}
16
17impl WalletInfoError {
18 pub fn new(message: impl Into<String>) -> Self {
20 Self {
21 message: message.into(),
22 }
23 }
24}
25
26#[derive(Debug, Clone, PartialEq, Eq)]
28pub struct WalletTransactionPage {
29 pub transactions: Vec<WalletTransaction>,
31 pub total: u64,
33}
34
35#[derive(Debug, Clone, PartialEq, Eq)]
37pub struct WalletAddressPage {
38 pub addresses: Vec<WalletAddress>,
40 pub total: u64,
42}
43
44#[async_trait]
46pub trait WalletInfoProvider {
47 async fn get_balance(&self) -> Result<GetBalanceResponse, WalletInfoError>;
49
50 async fn list_transactions(
52 &self,
53 offset: usize,
54 limit: usize,
55 ) -> Result<WalletTransactionPage, WalletInfoError>;
56
57 async fn list_addresses(
59 &self,
60 offset: usize,
61 limit: usize,
62 ) -> Result<WalletAddressPage, WalletInfoError>;
63}
64
65pub type DynWalletInfoProvider = Arc<dyn WalletInfoProvider + Send + Sync>;