kaccy_bitcoin/
lib.rs

1//! Bitcoin integration for Kaccy Protocol
2//!
3//! This crate provides Bitcoin Core RPC client, address generation,
4//! HD wallet support (BIP84), transaction monitoring, Lightning Network,
5//! and RBF handling.
6
7pub mod activity_monitor;
8pub mod adaptive_fees;
9pub mod address_utils;
10pub mod advanced_rbf;
11pub mod atomic_swap;
12pub mod audit;
13pub mod batch_optimizer;
14pub mod bip21;
15pub mod bip324;
16pub mod bip329;
17pub mod bip47;
18pub mod btc_utils;
19pub mod cache;
20pub mod chain_privacy;
21pub mod client;
22pub mod coin_control;
23pub mod coin_selection_advanced;
24pub mod coin_selection_privacy;
25pub mod coinjoin;
26pub mod compact_filters;
27pub mod confirmation;
28pub mod connection_pool;
29pub mod descriptor;
30pub mod dlc;
31pub mod error;
32pub mod fee_bumping;
33pub mod frost;
34pub mod gap_limit;
35pub mod hd_wallet;
36pub mod health;
37pub mod hwi;
38pub mod key_management;
39pub mod lightning;
40pub mod lightning_v2;
41pub mod matcher;
42pub mod mempool;
43pub mod mempool_analytics;
44pub mod mempool_space;
45pub mod metrics;
46pub mod miniscript_support;
47pub mod monitor;
48pub mod multisig;
49pub mod musig2;
50pub mod network_privacy;
51pub mod notifications;
52pub mod p2p;
53pub mod package_relay;
54pub mod payjoin;
55pub mod privacy_metrics;
56pub mod psbt;
57pub mod psbt_analysis;
58pub mod psbt_workflows;
59pub mod rbf;
60pub mod regtest_utils;
61pub mod rsk;
62pub mod script_analyzer;
63pub mod script_optimizer;
64pub mod seed_recovery;
65pub mod signet;
66pub mod silent_payments;
67pub mod slip39;
68pub mod stacks;
69pub mod structured_logging;
70pub mod submarine_swaps;
71pub mod taproot;
72pub mod tapscript_utils;
73#[cfg(test)]
74pub mod testing;
75pub mod testnet4;
76pub mod timelock;
77pub mod transaction_history;
78pub mod transaction_manager;
79pub mod tx_limits;
80pub mod tx_parser;
81pub mod utxo;
82pub mod utxo_optimizer;
83pub mod utxo_privacy;
84pub mod wallet;
85pub mod wallet_recovery;
86pub mod zmq;
87
88pub use activity_monitor::{
89    ActivityMonitor, ActivityMonitorConfig, ActivityType, SuspiciousActivity, TransactionRecord,
90};
91pub use adaptive_fees::{
92    AdaptiveFeeManager, BudgetStrategy, MultiTxFeeStrategy, PlannedTransaction, TimeBasedStrategy,
93    TransactionUrgency, TxFeeAllocation,
94};
95pub use address_utils::{
96    AddressBatchAnalyzer, AddressBatchStatistics, AddressComparator, AddressInfo, AddressType,
97};
98pub use advanced_rbf::{
99    AdvancedRbfManager, BatchRbfOperation, BatchRbfResult, ConsolidatedPayment,
100    ConsolidationSavings, RbfRecommendation, RecommendationReason, RecommendationUrgency,
101};
102pub use atomic_swap::{
103    AtomicSwap, AtomicSwapConfig, AtomicSwapManager, SwapRole, SwapStatus, SwapStep,
104};
105pub use audit::{
106    AuditEvent, AuditEventBuilder, AuditEventType, AuditLogger, AuditQueryCriteria, AuditSeverity,
107    AuditStorage, FileAuditStorage, InMemoryAuditStorage,
108};
109pub use batch_optimizer::{
110    BatchEfficiency, BatchOptimizer, BatchStrategy, BatchWithdrawal, OptimizedBatch,
111};
112pub use bip21::{BitcoinUri, BitcoinUriBuilder, QrCodeHelper};
113pub use bip47::{
114    NotificationTransaction, PaymentChannel, PaymentCode, PaymentCodeManager, PaymentCodeVersion,
115};
116pub use bip324::{ConnectionState, SessionKeys, V2Transport, V2TransportConfig, V2TransportStats};
117pub use bip329::{LabelManager, LabelRecord, LabelType};
118pub use btc_utils::{
119    DUST_THRESHOLD, P2PKH_INPUT_VSIZE, P2PKH_OUTPUT_VSIZE, P2SH_OUTPUT_VSIZE,
120    P2SH_P2WPKH_INPUT_VSIZE, P2TR_INPUT_VSIZE, P2TR_OUTPUT_VSIZE, P2WPKH_INPUT_VSIZE,
121    P2WPKH_OUTPUT_VSIZE, TX_OVERHEAD_VSIZE, amount_to_satoshis, btc_to_satoshis,
122    calculate_batch_fee, calculate_batch_savings, calculate_change, calculate_effective_value,
123    calculate_fee_from_rate, calculate_fee_percentage, calculate_fee_rate,
124    estimate_p2tr_keypath_witness_size, estimate_p2wpkh_witness_size,
125    estimate_simple_transaction_vsize, estimate_transaction_vsize, is_dust, is_op_return,
126    is_valid_amount, mbtc_to_satoshis, round_for_privacy, satoshis_to_btc, satoshis_to_mbtc,
127    script_size, vsize_to_weight, weight_to_vsize,
128};
129pub use cache::{
130    BlockHeader, BlockHeaderCache, CacheConfig, CacheManager, CacheStats, OverallCacheStats,
131    TransactionCache, UtxoCache,
132};
133pub use chain_privacy::{
134    AmountObfuscation, BroadcastPriority, ChangeOutputGenerator, ChangeStrategy,
135    FingerprintingAnalyzer, FingerprintingIssue, PendingBroadcast, StructureRandomization,
136    TimingCoordinator, TimingObfuscation, TransactionPrivacyEnhancer,
137};
138pub use client::{BitcoinClient, BitcoinNetwork, ReconnectConfig};
139pub use coin_control::{
140    CoinControl, ManualSelection, PrivacyPreferences, PrivacySelection, UtxoLabel,
141};
142pub use coin_selection_advanced::{
143    KnapsackSelector, SelectionConfig, SelectionResult, SimulatedAnnealingSelector,
144};
145pub use coin_selection_privacy::{
146    PrivacyCoinSelector, PrivacyConcerns, PrivacyScore, PrivateSelection,
147};
148pub use coinjoin::{
149    CoinJoinClient, CoinJoinCoordinator, CoinJoinSession, Participant, ParticipantInput,
150    SessionConfig, SessionState,
151};
152pub use compact_filters::{
153    CompactFilter, CompactFilterConfig, CompactFilterManager, FilterHeader, FilterStatistics,
154    FilterType, FilterVerifier,
155};
156pub use confirmation::{
157    ConfirmationEvent, ConfirmationLevel, ConfirmationStats, ConfirmationTracker, NotificationType,
158    TrackedOrder,
159};
160pub use connection_pool::{ConnectionPool, PoolConfig, PoolStats, PooledConnectionGuard};
161pub use descriptor::{
162    DescriptorConfig, DescriptorRange, DescriptorType, DescriptorWallet, OutputDescriptor,
163};
164pub use dlc::{
165    CetBuilder, ContractOutcome, DlcContract, DlcManager, DlcStatus, Oracle, OracleAnnouncement,
166    OracleAttestation,
167};
168pub use error::BitcoinError;
169pub use fee_bumping::{
170    AutoFeeBumper, BumpPriority, BumpStrategy, CpfpBuilder, FeeBudgetManager, FeeBumpResult,
171    FeeBumpingPolicy, TrackedTransaction,
172};
173pub use frost::{
174    FrostConfig, FrostCoordinator, FrostSigner, KeyGenOutput, NonceCommitment, SecretShare,
175    SignatureShare, lagrange_coefficient,
176};
177pub use gap_limit::{
178    AddressDiscovery, AddressUsage, DiscoveryResult, GapLimitConfig, GapLimitStats, GapLimitTracker,
179};
180pub use hd_wallet::{
181    AddressBook, AddressInfo as HdAddressInfo, CachedAddress, HdWallet, HdWalletConfig, derivation,
182};
183pub use health::{
184    ComponentHealth, DependencyHealth, HealthCheckConfig, HealthCheckManager, HealthReport,
185    HealthStatus, ResourceUtilization,
186};
187pub use hwi::{
188    AirGappedSigner, HardwareDevice, HardwareWalletManager, HardwareWalletType, HwiConfig,
189};
190pub use key_management::{
191    Guardian, KeyRotationConfig, KeyRotationManager, RecoveryKey, RecoveryProgress, RecoveryShare,
192    RotatedKey, SocialRecoveryConfig, SocialRecoveryManager, TimeDelayedRecoveryConfig,
193    TimeDelayedRecoveryManager,
194};
195pub use lightning::{
196    Channel, ChannelBalance, ChannelPoint, Invoice, InvoiceRequest, InvoiceStatus,
197    InvoiceSubscription, InvoiceUpdate, LightningHealth, LightningPaymentManager,
198    LightningProvider, LndClient, NodeInfo, OpenChannelRequest, OrderPaymentStatus, Payment,
199    PaymentStatus as LightningPaymentStatus, RouteHop,
200};
201pub use matcher::{MatchGroups, MatchResult, MatchStatus, OrderMatch, TransactionMatcher};
202pub use mempool::{
203    AddressWatcher, MempoolEvent, MempoolMonitor, MempoolMonitorConfig, MempoolStats,
204    MempoolTransaction, RemovalReason, ReorgInfo, ReorgTracker, UnconfirmedPayment,
205};
206pub use mempool_space::{
207    FeeMarketAnalysis, FeeMarketCondition, FeeRecommendation, HistoricalFeeData,
208    MempoolSpaceClient, MempoolSpaceConfig, MempoolSpaceStats,
209};
210pub use metrics::{
211    BitcoinMetrics, InMemoryMetricsBackend, MetricType, MetricsBackend, MetricsStats, MetricsTimer,
212    NoOpMetricsBackend,
213};
214pub use miniscript_support::{
215    HashType, MiniscriptCompiler, MiniscriptDescriptor, MiniscriptPolicy, MiniscriptScriptType,
216    PolicyAnalysis, PolicyTemplateBuilder, TimelockType,
217};
218pub use monitor::{
219    MonitorConfig, PaymentDetails, PaymentEvent, PaymentMonitor, PaymentMonitorTask, PaymentStatus,
220    PendingOrder, create_shutdown_signal,
221};
222pub use multisig::{
223    ColdWalletInfo, CustodyManager, MultisigAddress, MultisigConfig, MultisigInput, MultisigOutput,
224    MultisigSignature, MultisigTransaction, MultisigTxBuilder, MultisigTxStatus, MultisigWallet,
225    SignatureCoordinator,
226};
227pub use musig2::{
228    AdaptorSignature, AdaptorSignatureManager, AggregatedNonce, MuSig2Coordinator,
229    MuSig2KeyAggregator, MuSig2Nonce, MuSig2Signer, PartialSignature,
230};
231pub use network_privacy::{
232    BroadcastResult, DandelionBroadcaster, DandelionStats, NetworkPrivacyConfig,
233    NetworkPrivacyManager, PeerConnection, PrivatePeerManager, TorConnectionStats, TorProxyManager,
234};
235pub use notifications::{
236    AdminNotification, AdminNotificationService, NotificationCategory, NotificationMetadata,
237    NotificationPriority, NotificationStats,
238};
239pub use p2p::{P2pClient, P2pConfig, P2pEvent, P2pStats, PeerInfo, PeerManager};
240pub use package_relay::{CpfpHelper, PackageRelayManager, PackageStats, TransactionPackage};
241pub use payjoin::{
242    PayJoinCoordinator, PayJoinParams, PayJoinProposal, PayJoinReceiver, PayJoinResponse,
243    PayJoinRole, PayJoinSender, PayJoinUriBuilder, PayJoinVersion, ReceiverContribution,
244    ReceiverUtxo,
245};
246pub use privacy_metrics::{
247    AddressClusterAnalyzer, ClusterAnalysis, HealthStatus as WalletHealthStatus, PrivacyAnalyzer,
248    PrivacyHeuristic, PrivacyIssue as TransactionPrivacyIssue,
249    PrivacyScore as TransactionPrivacyScore, TransactionInput as PrivacyTransactionInput,
250    TransactionOutput as PrivacyTransactionOutput, TransactionPrivacyAnalysis,
251    WalletPrivacyAnalyzer, WalletPrivacyHealth,
252};
253pub use psbt::{
254    FeeEstimation, PsbtBuilder, PsbtManager, PsbtResult, SignedTransaction, TxOutput, UtxoInput,
255    WithdrawalRequest, WithdrawalResult, WithdrawalStatus,
256};
257pub use psbt_analysis::{
258    FeeVerification, InputAnalysis, OutputAnalysis, PsbtAnalysis, PsbtAnalyzer, SecurityIssue,
259    ValidationWarning, verify_psbt_fees,
260};
261pub use psbt_workflows::{
262    PsbtTemplate, PsbtVersion, PsbtWorkflow, PsbtWorkflowManager, SignatureRecord, SignerRole,
263    SigningStatus, WorkflowState,
264};
265pub use rbf::{
266    RbfConfig, RbfEvent, RbfReplacement, RbfStatus, RbfTracker, RbfTransactionBuilder,
267    TrackedRbfTransaction,
268};
269pub use regtest_utils::{RegtestConfig, RegtestHelper, ReorgInfo as RegtestReorgInfo};
270pub use rsk::{
271    DeploymentStatus as RskDeploymentStatus, PegConfig, PegInTransaction, PegManager, PegOperation,
272    PegOutTransaction, PegStatus, RskAddress, RskClient, RskContractDeployment,
273    RskDeploymentResult, RskNetwork, RskTransactionReceipt,
274};
275pub use script_analyzer::{
276    ScriptAnalysis, ScriptAnalyzer, ScriptDisassembler, ScriptTemplateBuilder,
277    ScriptType as AnalyzerScriptType,
278};
279pub use script_optimizer::{
280    OptimizationConfig, OptimizationEstimate, OptimizationResult, OptimizationType, ScriptOptimizer,
281};
282pub use seed_recovery::{
283    Mnemonic, MnemonicGenerator, MnemonicLanguage, MnemonicStats, MnemonicValidator, SeedXor,
284    WordCount,
285};
286pub use signet::{ChallengeParser, SignetClient, SignetConfig, SignetFaucet, SignetFaucets};
287pub use silent_payments::{
288    DetectedOutput, SilentPaymentAddress, SilentPaymentScanner, SilentPaymentSender,
289    SilentPaymentWallet,
290};
291pub use stacks::{
292    BridgeConfig as StacksBridgeConfig, BridgeOperation as StacksBridgeOperation,
293    BridgeStatus as StacksBridgeStatus, BridgeTransaction as StacksBridgeTransaction,
294    ClarityContract, ContractDeploymentManager, ContractId, DeploymentRequest, DeploymentResult,
295    DeploymentStatus as StacksDeploymentStatus, StacksAddress, StacksClient, StacksNetwork,
296    StacksTransaction, TokenBridge as StacksTokenBridge,
297};
298pub use structured_logging::{
299    CorrelationId, PerformanceSpan, RequestResponseLogger, RpcLogContext,
300};
301pub use submarine_swaps::{
302    SubmarineSwap, SubmarineSwapConfig, SubmarineSwapService, SubmarineSwapStatistics,
303    SubmarineSwapStatus, SwapDirection,
304};
305pub use taproot::{
306    TaprootAddress, TaprootConfig, TaprootKeyPair, TaprootManager, TaprootScriptLeaf,
307    TaprootScriptTree, TaprootSpendPath, TaprootTxBuilder,
308};
309pub use tapscript_utils::{
310    MerkleProof, ScriptPathOptimizer, TapscriptLeaf, TapscriptNode, TapscriptTreeBuilder,
311};
312pub use testnet4::{FaucetInfo, Testnet4Client, Testnet4Config, Testnet4Params};
313pub use timelock::{
314    HtlcConfig, HtlcContract, HtlcManager, HtlcScriptBuilder, HtlcStatus, TimeLockType,
315    TimelockTxBuilder,
316};
317pub use transaction_history::{
318    AddressReuseReport, HistoricalTransaction, PaginatedResult, PaginationOptions, SortField,
319    SortOrder, TransactionFilter, TransactionHistory, TransactionSummary, TransactionType,
320};
321pub use transaction_manager::{
322    TransactionManager, TransactionManagerConfig, TransactionStats, TransactionValidation,
323};
324pub use tx_limits::{
325    LimitConfig, LimitEnforcer, LimitPeriod, LimitViolation, TransactionLimit, UsageRecord,
326};
327pub use tx_parser::{
328    ConfirmationStatus, ParsedInput, ParsedOutput, ParsedTransaction, ScriptType, SenderConfidence,
329    SenderInfo, TransactionAnalysis, TransactionParser,
330};
331pub use utxo::{
332    ConsolidationConfig, ConsolidationPlan, SelectionStrategy, Utxo, UtxoManager, UtxoSelection,
333};
334pub use utxo_privacy::{
335    ConsolidationPrivacyAnalyzer, ConsolidationPrivacyReport, PrivacyIssue, PrivacyRecommendation,
336    ToxicChangeDetector, UtxoCluster, UtxoPrivacyAnalysis,
337};
338pub use wallet::WalletManager;
339pub use wallet_recovery::{
340    DerivationStandard, DiscoveredAddress, RecoveryConfig, RecoveryResult, RecoveryStats,
341    WalletRecovery,
342};