@getomnichain/omnichain 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (296) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +66 -0
  3. package/dist/abstract_gas_pricing.d.ts +31 -0
  4. package/dist/abstract_gas_pricing.d.ts.map +1 -0
  5. package/dist/abstract_gas_pricing.js +22 -0
  6. package/dist/abstract_gas_pricing.js.map +1 -0
  7. package/dist/address.d.ts +10 -0
  8. package/dist/address.d.ts.map +1 -0
  9. package/dist/address.factory.d.ts +26 -0
  10. package/dist/address.factory.d.ts.map +1 -0
  11. package/dist/address.factory.js +75 -0
  12. package/dist/address.factory.js.map +1 -0
  13. package/dist/address.js +13 -0
  14. package/dist/address.js.map +1 -0
  15. package/dist/address_field.decorator.d.ts +17 -0
  16. package/dist/address_field.decorator.d.ts.map +1 -0
  17. package/dist/address_field.decorator.js +34 -0
  18. package/dist/address_field.decorator.js.map +1 -0
  19. package/dist/chain.base.d.ts +79 -0
  20. package/dist/chain.base.d.ts.map +1 -0
  21. package/dist/chain.base.js +113 -0
  22. package/dist/chain.base.js.map +1 -0
  23. package/dist/chain_ids.d.ts +122 -0
  24. package/dist/chain_ids.d.ts.map +1 -0
  25. package/dist/chain_ids.js +193 -0
  26. package/dist/chain_ids.js.map +1 -0
  27. package/dist/errors.d.ts +42 -0
  28. package/dist/errors.d.ts.map +1 -0
  29. package/dist/errors.js +62 -0
  30. package/dist/errors.js.map +1 -0
  31. package/dist/evm/evm_address.d.ts +11 -0
  32. package/dist/evm/evm_address.d.ts.map +1 -0
  33. package/dist/evm/evm_address.js +56 -0
  34. package/dist/evm/evm_address.js.map +1 -0
  35. package/dist/evm/evm_chain.d.ts +123 -0
  36. package/dist/evm/evm_chain.d.ts.map +1 -0
  37. package/dist/evm/evm_chain.js +685 -0
  38. package/dist/evm/evm_chain.js.map +1 -0
  39. package/dist/evm/evm_chains.d.ts +83 -0
  40. package/dist/evm/evm_chains.d.ts.map +1 -0
  41. package/dist/evm/evm_chains.js +493 -0
  42. package/dist/evm/evm_chains.js.map +1 -0
  43. package/dist/evm/evm_gas_estimate.d.ts +45 -0
  44. package/dist/evm/evm_gas_estimate.d.ts.map +1 -0
  45. package/dist/evm/evm_gas_estimate.js +70 -0
  46. package/dist/evm/evm_gas_estimate.js.map +1 -0
  47. package/dist/evm/evm_gas_pricing.d.ts +40 -0
  48. package/dist/evm/evm_gas_pricing.d.ts.map +1 -0
  49. package/dist/evm/evm_gas_pricing.js +56 -0
  50. package/dist/evm/evm_gas_pricing.js.map +1 -0
  51. package/dist/evm/evm_token.d.ts +7 -0
  52. package/dist/evm/evm_token.d.ts.map +1 -0
  53. package/dist/evm/evm_token.js +22 -0
  54. package/dist/evm/evm_token.js.map +1 -0
  55. package/dist/evm/evm_tokens.d.ts +81 -0
  56. package/dist/evm/evm_tokens.d.ts.map +1 -0
  57. package/dist/evm/evm_tokens.js +104 -0
  58. package/dist/evm/evm_tokens.js.map +1 -0
  59. package/dist/evm/evm_transaction_status.d.ts +108 -0
  60. package/dist/evm/evm_transaction_status.d.ts.map +1 -0
  61. package/dist/evm/evm_transaction_status.js +177 -0
  62. package/dist/evm/evm_transaction_status.js.map +1 -0
  63. package/dist/evm/index.d.ts +10 -0
  64. package/dist/evm/index.d.ts.map +1 -0
  65. package/dist/evm/index.js +10 -0
  66. package/dist/evm/index.js.map +1 -0
  67. package/dist/evm/unsigned_evm_transaction.d.ts +19 -0
  68. package/dist/evm/unsigned_evm_transaction.d.ts.map +1 -0
  69. package/dist/evm/unsigned_evm_transaction.js +18 -0
  70. package/dist/evm/unsigned_evm_transaction.js.map +1 -0
  71. package/dist/index.d.ts +18 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +18 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/is_address.decorator.d.ts +3 -0
  76. package/dist/is_address.decorator.d.ts.map +1 -0
  77. package/dist/is_address.decorator.js +51 -0
  78. package/dist/is_address.decorator.js.map +1 -0
  79. package/dist/network_type.d.ts +73 -0
  80. package/dist/network_type.d.ts.map +1 -0
  81. package/dist/network_type.js +144 -0
  82. package/dist/network_type.js.map +1 -0
  83. package/dist/priority.d.ts +23 -0
  84. package/dist/priority.d.ts.map +1 -0
  85. package/dist/priority.js +23 -0
  86. package/dist/priority.js.map +1 -0
  87. package/dist/solana/index.d.ts +9 -0
  88. package/dist/solana/index.d.ts.map +1 -0
  89. package/dist/solana/index.js +9 -0
  90. package/dist/solana/index.js.map +1 -0
  91. package/dist/solana/solana_address.d.ts +20 -0
  92. package/dist/solana/solana_address.d.ts.map +1 -0
  93. package/dist/solana/solana_address.js +45 -0
  94. package/dist/solana/solana_address.js.map +1 -0
  95. package/dist/solana/solana_chain.d.ts +213 -0
  96. package/dist/solana/solana_chain.d.ts.map +1 -0
  97. package/dist/solana/solana_chain.js +704 -0
  98. package/dist/solana/solana_chain.js.map +1 -0
  99. package/dist/solana/solana_chains.d.ts +24 -0
  100. package/dist/solana/solana_chains.d.ts.map +1 -0
  101. package/dist/solana/solana_chains.js +84 -0
  102. package/dist/solana/solana_chains.js.map +1 -0
  103. package/dist/solana/solana_gas_pricing.d.ts +30 -0
  104. package/dist/solana/solana_gas_pricing.d.ts.map +1 -0
  105. package/dist/solana/solana_gas_pricing.js +26 -0
  106. package/dist/solana/solana_gas_pricing.js.map +1 -0
  107. package/dist/solana/solana_token.d.ts +19 -0
  108. package/dist/solana/solana_token.d.ts.map +1 -0
  109. package/dist/solana/solana_token.js +34 -0
  110. package/dist/solana/solana_token.js.map +1 -0
  111. package/dist/solana/solana_tokens.d.ts +22 -0
  112. package/dist/solana/solana_tokens.d.ts.map +1 -0
  113. package/dist/solana/solana_tokens.js +26 -0
  114. package/dist/solana/solana_tokens.js.map +1 -0
  115. package/dist/solana/solana_transaction_status.d.ts +59 -0
  116. package/dist/solana/solana_transaction_status.d.ts.map +1 -0
  117. package/dist/solana/solana_transaction_status.js +144 -0
  118. package/dist/solana/solana_transaction_status.js.map +1 -0
  119. package/dist/solana/unsigned_solana_transaction.d.ts +31 -0
  120. package/dist/solana/unsigned_solana_transaction.d.ts.map +1 -0
  121. package/dist/solana/unsigned_solana_transaction.js +26 -0
  122. package/dist/solana/unsigned_solana_transaction.js.map +1 -0
  123. package/dist/token.d.ts +35 -0
  124. package/dist/token.d.ts.map +1 -0
  125. package/dist/token.js +62 -0
  126. package/dist/token.js.map +1 -0
  127. package/dist/ton/index.d.ts +2 -0
  128. package/dist/ton/index.d.ts.map +1 -0
  129. package/dist/ton/index.js +2 -0
  130. package/dist/ton/index.js.map +1 -0
  131. package/dist/ton/ton_address.d.ts +10 -0
  132. package/dist/ton/ton_address.d.ts.map +1 -0
  133. package/dist/ton/ton_address.js +53 -0
  134. package/dist/ton/ton_address.js.map +1 -0
  135. package/dist/transaction_status.d.ts +140 -0
  136. package/dist/transaction_status.d.ts.map +1 -0
  137. package/dist/transaction_status.js +271 -0
  138. package/dist/transaction_status.js.map +1 -0
  139. package/dist/unsigned_transaction.d.ts +7 -0
  140. package/dist/unsigned_transaction.d.ts.map +1 -0
  141. package/dist/unsigned_transaction.js +9 -0
  142. package/dist/unsigned_transaction.js.map +1 -0
  143. package/dist/utxo/btc/btc_address.d.ts +15 -0
  144. package/dist/utxo/btc/btc_address.d.ts.map +1 -0
  145. package/dist/utxo/btc/btc_address.js +39 -0
  146. package/dist/utxo/btc/btc_address.js.map +1 -0
  147. package/dist/utxo/btc/btc_chain.d.ts +34 -0
  148. package/dist/utxo/btc/btc_chain.d.ts.map +1 -0
  149. package/dist/utxo/btc/btc_chain.js +62 -0
  150. package/dist/utxo/btc/btc_chain.js.map +1 -0
  151. package/dist/utxo/btc/btc_chains.d.ts +25 -0
  152. package/dist/utxo/btc/btc_chains.d.ts.map +1 -0
  153. package/dist/utxo/btc/btc_chains.js +43 -0
  154. package/dist/utxo/btc/btc_chains.js.map +1 -0
  155. package/dist/utxo/btc/btc_token.d.ts +6 -0
  156. package/dist/utxo/btc/btc_token.d.ts.map +1 -0
  157. package/dist/utxo/btc/btc_token.js +11 -0
  158. package/dist/utxo/btc/btc_token.js.map +1 -0
  159. package/dist/utxo/btc/index.d.ts +14 -0
  160. package/dist/utxo/btc/index.d.ts.map +1 -0
  161. package/dist/utxo/btc/index.js +14 -0
  162. package/dist/utxo/btc/index.js.map +1 -0
  163. package/dist/utxo/btc/network_params.d.ts +50 -0
  164. package/dist/utxo/btc/network_params.d.ts.map +1 -0
  165. package/dist/utxo/btc/network_params.js +188 -0
  166. package/dist/utxo/btc/network_params.js.map +1 -0
  167. package/dist/utxo/btc/tools/asset_outpoint.d.ts +7 -0
  168. package/dist/utxo/btc/tools/asset_outpoint.d.ts.map +1 -0
  169. package/dist/utxo/btc/tools/asset_outpoint.js +12 -0
  170. package/dist/utxo/btc/tools/asset_outpoint.js.map +1 -0
  171. package/dist/utxo/btc/tools/bitcoin_core.tool.d.ts +41 -0
  172. package/dist/utxo/btc/tools/bitcoin_core.tool.d.ts.map +1 -0
  173. package/dist/utxo/btc/tools/bitcoin_core.tool.js +172 -0
  174. package/dist/utxo/btc/tools/bitcoin_core.tool.js.map +1 -0
  175. package/dist/utxo/btc/tools/esplora.tool.d.ts +27 -0
  176. package/dist/utxo/btc/tools/esplora.tool.d.ts.map +1 -0
  177. package/dist/utxo/btc/tools/esplora.tool.js +113 -0
  178. package/dist/utxo/btc/tools/esplora.tool.js.map +1 -0
  179. package/dist/utxo/btc/tools/inscription_index.d.ts +6 -0
  180. package/dist/utxo/btc/tools/inscription_index.d.ts.map +1 -0
  181. package/dist/utxo/btc/tools/inscription_index.js +2 -0
  182. package/dist/utxo/btc/tools/inscription_index.js.map +1 -0
  183. package/dist/utxo/btc/tools/ordiscan.tool.d.ts +19 -0
  184. package/dist/utxo/btc/tools/ordiscan.tool.d.ts.map +1 -0
  185. package/dist/utxo/btc/tools/ordiscan.tool.js +53 -0
  186. package/dist/utxo/btc/tools/ordiscan.tool.js.map +1 -0
  187. package/dist/utxo/btc/tools/rare_sat_index.d.ts +6 -0
  188. package/dist/utxo/btc/tools/rare_sat_index.d.ts.map +1 -0
  189. package/dist/utxo/btc/tools/rare_sat_index.js +2 -0
  190. package/dist/utxo/btc/tools/rare_sat_index.js.map +1 -0
  191. package/dist/utxo/btc/tools/rune_index.d.ts +6 -0
  192. package/dist/utxo/btc/tools/rune_index.d.ts.map +1 -0
  193. package/dist/utxo/btc/tools/rune_index.js +2 -0
  194. package/dist/utxo/btc/tools/rune_index.js.map +1 -0
  195. package/dist/utxo/btc/tools/unisat.tool.d.ts +18 -0
  196. package/dist/utxo/btc/tools/unisat.tool.d.ts.map +1 -0
  197. package/dist/utxo/btc/tools/unisat.tool.js +49 -0
  198. package/dist/utxo/btc/tools/unisat.tool.js.map +1 -0
  199. package/dist/utxo/coin_selection.d.ts +29 -0
  200. package/dist/utxo/coin_selection.d.ts.map +1 -0
  201. package/dist/utxo/coin_selection.js +156 -0
  202. package/dist/utxo/coin_selection.js.map +1 -0
  203. package/dist/utxo/doge/doge_chains.d.ts +17 -0
  204. package/dist/utxo/doge/doge_chains.d.ts.map +1 -0
  205. package/dist/utxo/doge/doge_chains.js +28 -0
  206. package/dist/utxo/doge/doge_chains.js.map +1 -0
  207. package/dist/utxo/doge/index.d.ts +3 -0
  208. package/dist/utxo/doge/index.d.ts.map +1 -0
  209. package/dist/utxo/doge/index.js +3 -0
  210. package/dist/utxo/doge/index.js.map +1 -0
  211. package/dist/utxo/doge/network_params.d.ts +4 -0
  212. package/dist/utxo/doge/network_params.d.ts.map +1 -0
  213. package/dist/utxo/doge/network_params.js +24 -0
  214. package/dist/utxo/doge/network_params.js.map +1 -0
  215. package/dist/utxo/ecc.d.ts +2 -0
  216. package/dist/utxo/ecc.d.ts.map +1 -0
  217. package/dist/utxo/ecc.js +11 -0
  218. package/dist/utxo/ecc.js.map +1 -0
  219. package/dist/utxo/fee.d.ts +12 -0
  220. package/dist/utxo/fee.d.ts.map +1 -0
  221. package/dist/utxo/fee.js +51 -0
  222. package/dist/utxo/fee.js.map +1 -0
  223. package/dist/utxo/index.d.ts +20 -0
  224. package/dist/utxo/index.d.ts.map +1 -0
  225. package/dist/utxo/index.js +20 -0
  226. package/dist/utxo/index.js.map +1 -0
  227. package/dist/utxo/ltc/index.d.ts +3 -0
  228. package/dist/utxo/ltc/index.d.ts.map +1 -0
  229. package/dist/utxo/ltc/index.js +3 -0
  230. package/dist/utxo/ltc/index.js.map +1 -0
  231. package/dist/utxo/ltc/ltc_chains.d.ts +17 -0
  232. package/dist/utxo/ltc/ltc_chains.d.ts.map +1 -0
  233. package/dist/utxo/ltc/ltc_chains.js +28 -0
  234. package/dist/utxo/ltc/ltc_chains.js.map +1 -0
  235. package/dist/utxo/ltc/network_params.d.ts +4 -0
  236. package/dist/utxo/ltc/network_params.d.ts.map +1 -0
  237. package/dist/utxo/ltc/network_params.js +27 -0
  238. package/dist/utxo/ltc/network_params.js.map +1 -0
  239. package/dist/utxo/script.d.ts +16 -0
  240. package/dist/utxo/script.d.ts.map +1 -0
  241. package/dist/utxo/script.js +52 -0
  242. package/dist/utxo/script.js.map +1 -0
  243. package/dist/utxo/tools/broadcaster.d.ts +6 -0
  244. package/dist/utxo/tools/broadcaster.d.ts.map +1 -0
  245. package/dist/utxo/tools/broadcaster.js +2 -0
  246. package/dist/utxo/tools/broadcaster.js.map +1 -0
  247. package/dist/utxo/tools/chain_tip_provider.d.ts +5 -0
  248. package/dist/utxo/tools/chain_tip_provider.d.ts.map +1 -0
  249. package/dist/utxo/tools/chain_tip_provider.js +2 -0
  250. package/dist/utxo/tools/chain_tip_provider.js.map +1 -0
  251. package/dist/utxo/tools/fee_estimator.d.ts +6 -0
  252. package/dist/utxo/tools/fee_estimator.d.ts.map +1 -0
  253. package/dist/utxo/tools/fee_estimator.js +2 -0
  254. package/dist/utxo/tools/fee_estimator.js.map +1 -0
  255. package/dist/utxo/tools/raw_transaction_provider.d.ts +8 -0
  256. package/dist/utxo/tools/raw_transaction_provider.d.ts.map +1 -0
  257. package/dist/utxo/tools/raw_transaction_provider.js +2 -0
  258. package/dist/utxo/tools/raw_transaction_provider.js.map +1 -0
  259. package/dist/utxo/tools/utxo_provider.d.ts +7 -0
  260. package/dist/utxo/tools/utxo_provider.d.ts.map +1 -0
  261. package/dist/utxo/tools/utxo_provider.js +2 -0
  262. package/dist/utxo/tools/utxo_provider.js.map +1 -0
  263. package/dist/utxo/unsigned_utxo_transaction.d.ts +32 -0
  264. package/dist/utxo/unsigned_utxo_transaction.d.ts.map +1 -0
  265. package/dist/utxo/unsigned_utxo_transaction.js +32 -0
  266. package/dist/utxo/unsigned_utxo_transaction.js.map +1 -0
  267. package/dist/utxo/utxo.d.ts +43 -0
  268. package/dist/utxo/utxo.d.ts.map +1 -0
  269. package/dist/utxo/utxo.js +2 -0
  270. package/dist/utxo/utxo.js.map +1 -0
  271. package/dist/utxo/utxo_chain.d.ts +102 -0
  272. package/dist/utxo/utxo_chain.d.ts.map +1 -0
  273. package/dist/utxo/utxo_chain.js +524 -0
  274. package/dist/utxo/utxo_chain.js.map +1 -0
  275. package/dist/utxo/utxo_chains.d.ts +29 -0
  276. package/dist/utxo/utxo_chains.d.ts.map +1 -0
  277. package/dist/utxo/utxo_chains.js +63 -0
  278. package/dist/utxo/utxo_chains.js.map +1 -0
  279. package/dist/utxo/utxo_gas_pricing.d.ts +22 -0
  280. package/dist/utxo/utxo_gas_pricing.d.ts.map +1 -0
  281. package/dist/utxo/utxo_gas_pricing.js +20 -0
  282. package/dist/utxo/utxo_gas_pricing.js.map +1 -0
  283. package/dist/utxo/utxo_network_params.d.ts +25 -0
  284. package/dist/utxo/utxo_network_params.d.ts.map +1 -0
  285. package/dist/utxo/utxo_network_params.js +15 -0
  286. package/dist/utxo/utxo_network_params.js.map +1 -0
  287. package/dist/utxo/utxo_transaction_status.d.ts +73 -0
  288. package/dist/utxo/utxo_transaction_status.d.ts.map +1 -0
  289. package/dist/utxo/utxo_transaction_status.js +89 -0
  290. package/dist/utxo/utxo_transaction_status.js.map +1 -0
  291. package/docs/PUBLISHING.md +119 -0
  292. package/docs/README.md +273 -0
  293. package/docs/evm.md +205 -0
  294. package/docs/solana.md +220 -0
  295. package/docs/utxo.md +364 -0
  296. package/package.json +94 -0
@@ -0,0 +1,524 @@
1
+ import { Psbt, Transaction } from 'bitcoinjs-lib';
2
+ import { CHAIN_ID_BITCOIN_MAINNET, CHAIN_ID_BITCOIN_SIGNET, CHAIN_ID_BITCOIN_TESTNET, } from "../chain_ids.js";
3
+ import { btcParamsForChainId, btcParamsShapeMatches, } from "./btc/network_params.js";
4
+ import { Chain } from "../chain.base.js";
5
+ import { ChainError, ChainErrorKinds } from "../errors.js";
6
+ import { NetworkType, registerNonEvmChain } from "../network_type.js";
7
+ import { Priority } from "../priority.js";
8
+ import { Token } from "../token.js";
9
+ import { AssetBalanceChange, TransactionStatusTypes, } from "../transaction_status.js";
10
+ import { UtxoTransactionFees, UtxoTransactionOutput, UtxoTransactionStatus, } from "./utxo_transaction_status.js";
11
+ import "./ecc.js";
12
+ import { CoinSelectionOutcomes, selectCoins, } from "./coin_selection.js";
13
+ import { costOfChangeSats, estimateTxVBytes, outputVBytes } from "./fee.js";
14
+ import { UtxoScriptTypes, buildOpReturnScript, detectScriptType, scriptTypeForAddress, } from "./script.js";
15
+ import { FINAL_SEQUENCE, OP_RETURN_MAX_BYTES, RBF_SEQUENCE, } from "./utxo_network_params.js";
16
+ import { UnsignedUtxoTransaction } from "./unsigned_utxo_transaction.js";
17
+ const RESERVED_BTC_CHAIN_IDS = [
18
+ CHAIN_ID_BITCOIN_MAINNET,
19
+ CHAIN_ID_BITCOIN_TESTNET,
20
+ CHAIN_ID_BITCOIN_SIGNET,
21
+ ];
22
+ const DEFAULT_BLOCK_TIME_SECONDS = 600;
23
+ const DEFAULT_FEE_TARGET_BLOCKS = 3;
24
+ const DEFAULT_LONG_TERM_FEE_RATE = 5;
25
+ const DEFAULT_NATIVE_DECIMALS = 8;
26
+ class UtxoNativeToken extends Token {
27
+ constructor(chainId, symbol, decimals) {
28
+ super(chainId, symbol, undefined, decimals);
29
+ }
30
+ }
31
+ export class UtxoChain extends Chain {
32
+ params;
33
+ utxoProvider;
34
+ rawTxProvider;
35
+ feeEstimator;
36
+ broadcaster;
37
+ chainTipProvider;
38
+ walletExplorerTemplate;
39
+ tokenExplorerTemplate;
40
+ transactionExplorerTemplate;
41
+ _nativeToken;
42
+ defaultFeeTargetBlocks;
43
+ longTermFeeRateSatsPerVByte;
44
+ rbfEnabled;
45
+ constructor(init) {
46
+ // Reject a non-BTC UTXO chain (LTC/DOGE/DASH/ZEC/BCH — mainnet AND
47
+ // testnet) constructed with a reserved BTC chainId. The prior slip44
48
+ // heuristic let `litecoinTestnetChain({chainId: -2})` through because
49
+ // LTC testnet's slip44 is `Slip44.Testnet` (same as BTC testnet). Gate
50
+ // on the seeded BTC params directly: at reserved ids the constructor
51
+ // must present params shape-identical to what's already seeded, else
52
+ // it's a chain claiming a BTC id with foreign address rules.
53
+ if (RESERVED_BTC_CHAIN_IDS.includes(init.chainId)) {
54
+ const seeded = btcParamsForChainId(BigInt(init.chainId));
55
+ const paramsAsBtc = init.params;
56
+ // Use the strict comparator exported from btc/network_params.ts so
57
+ // both this guard and registerBtcChainParams share ONE invariant.
58
+ // A non-BtcNetworkParams (missing `name`, `hrp`, etc.) fails the
59
+ // comparator on the first field mismatch.
60
+ if (init.params !== seeded && !btcParamsShapeMatches(seeded, paramsAsBtc)) {
61
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `chainId ${init.chainId} is reserved for BTC; UtxoChain construction with foreign params (slip44=${init.params.slip44CoinId}) is not permitted. Choose a distinct chainId for this network.`, { chainId: init.chainId });
62
+ }
63
+ }
64
+ super(init.chainId, init.name, NetworkType.BTC, init.blockTimeSeconds ?? DEFAULT_BLOCK_TIME_SECONDS, init.nativeSymbol, init.walletExplorerUrlTemplate);
65
+ this.params = init.params;
66
+ this.utxoProvider = init.utxoProvider;
67
+ this.rawTxProvider = init.rawTxProvider;
68
+ this.feeEstimator = init.feeEstimator;
69
+ this.broadcaster = init.broadcaster;
70
+ this.chainTipProvider = init.chainTipProvider;
71
+ this.walletExplorerTemplate = init.walletExplorerUrlTemplate;
72
+ this.tokenExplorerTemplate = init.tokenExplorerUrlTemplate ?? init.walletExplorerUrlTemplate;
73
+ this.transactionExplorerTemplate = init.transactionExplorerUrlTemplate;
74
+ this._nativeToken = new UtxoNativeToken(init.chainId, init.nativeSymbol, init.nativeDecimals ?? DEFAULT_NATIVE_DECIMALS);
75
+ this.defaultFeeTargetBlocks = init.defaultFeeTargetBlocks ?? DEFAULT_FEE_TARGET_BLOCKS;
76
+ this.longTermFeeRateSatsPerVByte = init.longTermFeeRateSatsPerVByte ?? DEFAULT_LONG_TERM_FEE_RATE;
77
+ this.rbfEnabled = init.rbfEnabled ?? true;
78
+ registerNonEvmChain(init.chainId, NetworkType.BTC);
79
+ }
80
+ get nativeToken() {
81
+ return this._nativeToken;
82
+ }
83
+ get slip44CoinId() {
84
+ return this.params.slip44CoinId;
85
+ }
86
+ get supportedDerivationPurposes() {
87
+ return this.params.supportedDerivationPurposes;
88
+ }
89
+ get dustValueSats() {
90
+ return this.params.dustValueSats;
91
+ }
92
+ getWalletExplorerUrl(address) {
93
+ return this.walletExplorerTemplate.replace('{wallet_address}', address);
94
+ }
95
+ getTokenExplorerUrl(_tokenIdentifier) {
96
+ return this.tokenExplorerTemplate.replace('{wallet_address}', '');
97
+ }
98
+ getTransactionExplorerUrl(txHash) {
99
+ return this.transactionExplorerTemplate.replace('{tx_hash}', txHash);
100
+ }
101
+ validateAddress(raw) {
102
+ if (typeof raw !== 'string' || raw.length === 0)
103
+ return false;
104
+ return this.params.walletAddressRegex.test(raw);
105
+ }
106
+ validateTokenIdentifier(raw) {
107
+ return raw === undefined;
108
+ }
109
+ async getUtxos(addresses, _options) {
110
+ if (addresses.length === 0)
111
+ return [];
112
+ const lists = await Promise.all(addresses.map((address) => this.utxoProvider.getUtxos(address)));
113
+ return lists.flat();
114
+ }
115
+ async getBalance(owner, tokenIdentifier) {
116
+ if (!this.validateTokenIdentifier(tokenIdentifier)) {
117
+ throw new ChainError(ChainErrorKinds.InvalidTokenIdentifier, `${this.name}: only the native token is supported (got ${tokenIdentifier})`, { chainId: this.chainId, identifier: tokenIdentifier });
118
+ }
119
+ if (!this.validateAddress(owner)) {
120
+ throw new ChainError(ChainErrorKinds.InvalidAddress, `${this.name}: invalid wallet address ${owner}`, { chainId: this.chainId, address: owner });
121
+ }
122
+ const balance = await this.utxoProvider.getAddressBalance(owner);
123
+ return BigInt(balance.confirmedSats);
124
+ }
125
+ async getChainTipHeight() {
126
+ return this.chainTipProvider.getChainTipHeight();
127
+ }
128
+ async getTransactionStatus(txHash) {
129
+ // Narrow the try to the provider call only. Constructor asserts and
130
+ // upsert failures must NOT be silently coerced into NotFound.
131
+ // Classify: (a) provider signalled "no such tx" (Esplora HTTP 404,
132
+ // Bitcoin Core RPC code -5) → NotFound; (b) any other throw →
133
+ // RpcError so consumers can retry rather than treating a 429/timeout
134
+ // as a definitive miss.
135
+ let tx;
136
+ try {
137
+ tx = await this.rawTxProvider.getTransaction(txHash);
138
+ }
139
+ catch (err) {
140
+ if (err instanceof ChainError)
141
+ throw err;
142
+ if (isProviderNotFoundError(err)) {
143
+ return new UtxoTransactionStatus({
144
+ chainId: this.chainId,
145
+ status: TransactionStatusTypes.NotFound,
146
+ confirmationAt: null,
147
+ balanceChanges: null,
148
+ });
149
+ }
150
+ const rawMsg = err instanceof Error ? err.message : String(err);
151
+ const sanitizedMsg = sanitizeUtxoErrMessage(rawMsg);
152
+ // Build a scrubbed cause: sanitizeCause strips axios `.config`/
153
+ // `.request`/`.response` object trees (which carry Authorization
154
+ // headers + query-string keys) by rebuilding a plain Error with
155
+ // only sanitized message+stack. Consumers walking `.cause` in a
156
+ // structured logger no longer leak API keys.
157
+ const safeCause = err instanceof Error
158
+ ? sanitizedCauseForUtxo(err, sanitizedMsg)
159
+ : undefined;
160
+ throw new ChainError(ChainErrorKinds.RpcError, `Failed to read UTXO tx ${txHash}: ${sanitizedMsg}`, { chainId: this.chainId, txHash }, safeCause);
161
+ }
162
+ // Bitcoin Core reports `confirmations: -1` for a conflicted/RBF-
163
+ // replaced tx (a reorged-out deposit). Do not run the shape asserts
164
+ // that would throw InvalidArgument on the way out — surface as
165
+ // NotFound so the status poll doesn't crash.
166
+ if (tx.confirmations < 0) {
167
+ return new UtxoTransactionStatus({
168
+ chainId: this.chainId,
169
+ status: TransactionStatusTypes.NotFound,
170
+ confirmationAt: null,
171
+ balanceChanges: null,
172
+ error: {
173
+ code: 'CONFLICTED',
174
+ reason: `Provider reports confirmations=${tx.confirmations} (RBF-replaced / reorged)`,
175
+ },
176
+ });
177
+ }
178
+ // Wrap the decode block so a non-integer valueSats/absoluteSats from a
179
+ // consumer's provider tool (BTC-float→sats overflow) or a
180
+ // Transaction.fromHex failure surfaces as a typed
181
+ // ChainError(TransactionDecodeFailed) rather than a raw RangeError.
182
+ // Mirrors evm_chain.ts:decodeBalanceChanges catch.
183
+ try {
184
+ // Populate outputs on both pending AND confirmed paths — a 0-conf
185
+ // mempool tx still has visible outputs, and BTC/LTC/DOGE deposit
186
+ // detectors need them. balanceChanges stays null on Pending per the
187
+ // TransactionStatus base invariant.
188
+ const outputs = tx.vout.map((o) => new UtxoTransactionOutput({
189
+ scriptPubkeyHex: o.scriptPubKeyHex,
190
+ address: o.address,
191
+ valueSats: BigInt(o.valueSats),
192
+ }));
193
+ // Derive vsize from the raw hex — bitcoinjs-lib is already a dep
194
+ // and both Esplora + Bitcoin Core populate tx.hex. Falls back to
195
+ // null on malformed hex so the status still returns.
196
+ let vsize = null;
197
+ try {
198
+ if (tx.hex && tx.hex.length > 0) {
199
+ vsize = Transaction.fromHex(tx.hex).virtualSize();
200
+ }
201
+ }
202
+ catch {
203
+ vsize = null;
204
+ }
205
+ const fees = tx.fees !== null
206
+ ? new UtxoTransactionFees({ absoluteSats: BigInt(tx.fees.absoluteSats), vsize })
207
+ : null;
208
+ const isPending = tx.confirmations === 0;
209
+ if (isPending) {
210
+ return new UtxoTransactionStatus({
211
+ chainId: this.chainId,
212
+ status: TransactionStatusTypes.Pending,
213
+ confirmationAt: null,
214
+ balanceChanges: null,
215
+ confirmations: 0,
216
+ outputs,
217
+ vsize,
218
+ fees,
219
+ });
220
+ }
221
+ // Outputs-only per-address native deltas. Full input-side accounting
222
+ // to compute net native change (Python's `_native_balance_changes`
223
+ // parity) is deferred — the raw-tx provider currently returns only
224
+ // vin.txid+vout, no address/value/scriptPubKeyHex. Noted in
225
+ // SINAN_OPEN_QUESTIONS.md.
226
+ const balanceChanges = new Map();
227
+ const perAddressSats = new Map();
228
+ for (const out of tx.vout) {
229
+ if (!out.address)
230
+ continue;
231
+ perAddressSats.set(out.address, (perAddressSats.get(out.address) ?? 0n) + BigInt(out.valueSats));
232
+ }
233
+ for (const [address, sats] of perAddressSats) {
234
+ AssetBalanceChange.upsert(balanceChanges, address, this._nativeToken, AssetBalanceChange.fromMr(sats, this._nativeToken.decimals));
235
+ }
236
+ return new UtxoTransactionStatus({
237
+ chainId: this.chainId,
238
+ status: TransactionStatusTypes.Success,
239
+ confirmationAt: tx.blockTime,
240
+ balanceChanges,
241
+ confirmations: tx.confirmations,
242
+ outputs,
243
+ vsize,
244
+ fees,
245
+ });
246
+ }
247
+ catch (err) {
248
+ if (err instanceof ChainError)
249
+ throw err;
250
+ throw new ChainError(ChainErrorKinds.TransactionDecodeFailed, `Failed to decode UTXO tx ${txHash}: ${err instanceof Error ? err.message : String(err)}`, { chainId: this.chainId, txHash }, err instanceof Error ? err : undefined);
251
+ }
252
+ }
253
+ async createTransferUnsignedTransaction(req) {
254
+ return this.buildTransfer(req, undefined);
255
+ }
256
+ async buildTransfer(req, getUtxosOptions) {
257
+ // UTXO builder does not yet consume the CreateTransferRequest fields
258
+ // introduced in Wave 2B (Python-parity amountHr / isFullBalance /
259
+ // gasPricing). Rejecting them at entry — silently letting an
260
+ // amountHr-only request through would produce `amount === undefined`
261
+ // downstream and end in a NaN cointoss after several RPC round-trips.
262
+ if (req.amountHr !== undefined) {
263
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: CreateTransferRequest.amountHr is not yet supported — pass \`amount\` (bigint sats) or \`outputs\` (multi-recipient) instead.`, { chainId: this.chainId });
264
+ }
265
+ if (req.isFullBalance === true) {
266
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: CreateTransferRequest.isFullBalance is not yet supported — pass \`amount\` explicitly and reserve fees yourself.`, { chainId: this.chainId });
267
+ }
268
+ if (req.gasPricing !== undefined) {
269
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: CreateTransferRequest.gasPricing is not yet consumed by UtxoChain (Phase 2 follow-up). Use \`feeRateSatsPerVByte\` / \`feeTargetBlocks\` on CreateUtxoTransferOptions for now.`, { chainId: this.chainId });
270
+ }
271
+ if (!this.validateTokenIdentifier(req.tokenIdentifier)) {
272
+ throw new ChainError(ChainErrorKinds.InvalidTokenIdentifier, `${this.name}: only the native token is supported`, { chainId: this.chainId, identifier: req.tokenIdentifier });
273
+ }
274
+ if (req.from === undefined || !this.validateAddress(req.from)) {
275
+ throw new ChainError(ChainErrorKinds.InvalidAddress, `${this.name}: invalid sender address ${req.from ?? '<missing>'}`, { chainId: this.chainId, address: req.from });
276
+ }
277
+ const fromAddress = req.from;
278
+ const opts = req;
279
+ // Normalize: single-output form (to/amount) OR multi-output form (outputs[]).
280
+ // Exactly one must be provided; the multi-output form is preferred going forward.
281
+ const hasSingle = req.to !== undefined || req.amount !== undefined;
282
+ const hasMulti = Array.isArray(opts.outputs) && opts.outputs.length > 0;
283
+ if (hasSingle && hasMulti) {
284
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: cannot specify both single-output (to/amount) and multi-output (outputs[]) forms`, { chainId: this.chainId });
285
+ }
286
+ if (!hasSingle && !hasMulti) {
287
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: must specify either (to, amount) or a non-empty outputs[] array`, { chainId: this.chainId });
288
+ }
289
+ // Wave 2B made `amount` optional on the base CreateTransferRequest so
290
+ // `amountHr` could coexist. UTXO's single-output form still needs
291
+ // `amount: bigint` — reject `{to, memo}`-without-amount up front
292
+ // rather than let it propagate through as NaN downstream.
293
+ if (hasSingle && !hasMulti && req.amount === undefined) {
294
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: single-output form requires \`amount: bigint\` (bitcoin satoshis) — omitting amount would produce NaN downstream`, { chainId: this.chainId });
295
+ }
296
+ const normalizedOutputs = hasMulti
297
+ ? opts.outputs.slice()
298
+ : [{ to: req.to, amount: req.amount }];
299
+ for (let i = 0; i < normalizedOutputs.length; i++) {
300
+ const o = normalizedOutputs[i];
301
+ if (!this.validateAddress(o.to)) {
302
+ throw new ChainError(ChainErrorKinds.InvalidAddress, `${this.name}: invalid recipient address at outputs[${i}]: ${o.to}`, { chainId: this.chainId, address: o.to });
303
+ }
304
+ if (typeof o.amount !== 'bigint') {
305
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: outputs[${i}].amount must be a bigint (got ${typeof o.amount})`, { chainId: this.chainId });
306
+ }
307
+ if (o.amount <= 0n) {
308
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: outputs[${i}] amount must be > 0`, { chainId: this.chainId });
309
+ }
310
+ const sats = bigintToNumber(o.amount);
311
+ if (sats < this.params.dustValueSats) {
312
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: outputs[${i}] amount ${sats} below dust ${this.params.dustValueSats}`, { chainId: this.chainId });
313
+ }
314
+ }
315
+ const totalTargetSats = normalizedOutputs.reduce((acc, o) => acc + bigintToNumber(o.amount), 0);
316
+ const recipientTypes = normalizedOutputs.map((o) => scriptTypeForAddress(o.to, this.params.networkInfo));
317
+ const memoBytes = encodeMemo(req.memo);
318
+ const feeRateSatsPerVByte = await this.resolveFeeRate(opts.feeRateSatsPerVByte, opts.feeTargetBlocks);
319
+ const utxos = await this.getUtxos([fromAddress], getUtxosOptions);
320
+ if (utxos.length === 0) {
321
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: no spendable UTXOs available for ${fromAddress}`, { chainId: this.chainId, address: fromAddress });
322
+ }
323
+ const changeAddress = opts.changeAddress ?? fromAddress;
324
+ const changeType = scriptTypeForAddress(changeAddress, this.params.networkInfo);
325
+ const outputsFixedVBytes = recipientTypes.reduce((acc, t) => acc + outputVBytes(t), 0) +
326
+ (memoBytes ? memoBytes.length + 11 : 0);
327
+ const selection = this.runCoinSelection({
328
+ utxos,
329
+ targetSats: totalTargetSats,
330
+ feeRateSatsPerVByte,
331
+ changeOutputType: changeType,
332
+ outputsFixedVBytes,
333
+ costOfChangeSats: costOfChangeSats(changeType, feeRateSatsPerVByte, this.longTermFeeRateSatsPerVByte),
334
+ });
335
+ if (selection.outcome !== CoinSelectionOutcomes.Success) {
336
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: coin selection failed (${selection.outcome}) for target ${totalTargetSats} sats`, { chainId: this.chainId });
337
+ }
338
+ const rbfEnabled = opts.rbfEnabled ?? this.rbfEnabled;
339
+ const sequence = rbfEnabled ? RBF_SEQUENCE : FINAL_SEQUENCE;
340
+ const psbt = new Psbt({ network: this.params.networkInfo });
341
+ const rawTxByTxid = await this.fetchParentTransactions(selection.selected);
342
+ const inputsToSign = {};
343
+ selection.selected.forEach((utxo, index) => {
344
+ this.addInputToPsbt({
345
+ psbt,
346
+ utxo,
347
+ sequence,
348
+ parentTxHex: rawTxByTxid.get(utxo.txid),
349
+ });
350
+ const list = inputsToSign[utxo.ownerAddress] ?? [];
351
+ list.push(index);
352
+ inputsToSign[utxo.ownerAddress] = list;
353
+ });
354
+ for (const o of normalizedOutputs) {
355
+ psbt.addOutput({ address: o.to, value: BigInt(bigintToNumber(o.amount)) });
356
+ }
357
+ if (selection.hasChange) {
358
+ psbt.addOutput({ address: changeAddress, value: BigInt(selection.changeSats) });
359
+ }
360
+ if (memoBytes) {
361
+ psbt.addOutput({ script: buildOpReturnScript(memoBytes), value: 0n });
362
+ }
363
+ const estimatedVBytes = estimateTxVBytes(selection.selected.map((u) => u.scriptType), selection.hasChange ? [...recipientTypes, changeType] : recipientTypes, memoBytes ? [memoBytes.length] : []);
364
+ return new UnsignedUtxoTransaction({
365
+ chainId: this.chainId,
366
+ params: this.params,
367
+ psbtBase64: psbt.toBase64(),
368
+ selectedInputs: selection.selected,
369
+ feeSats: selection.feeSats,
370
+ feeRateSatsPerVByte,
371
+ estimatedVBytes,
372
+ totalInputSats: selection.totalValueSats,
373
+ totalOutputSats: totalTargetSats + (selection.hasChange ? selection.changeSats : 0),
374
+ changeAddress: selection.hasChange ? changeAddress : null,
375
+ inputsToSign,
376
+ });
377
+ }
378
+ addInputToPsbt(args) {
379
+ const { psbt, utxo, sequence, parentTxHex } = args;
380
+ const scriptPubKey = Buffer.from(utxo.scriptPubKeyHex, 'hex');
381
+ const scriptType = detectScriptType(scriptPubKey);
382
+ const parentTxBytes = Buffer.from(parentTxHex, 'hex');
383
+ const input = {
384
+ hash: utxo.txid,
385
+ index: utxo.vout,
386
+ sequence,
387
+ nonWitnessUtxo: parentTxBytes,
388
+ };
389
+ if (scriptType === UtxoScriptTypes.P2WPKH ||
390
+ scriptType === UtxoScriptTypes.P2WSH ||
391
+ scriptType === UtxoScriptTypes.P2TR ||
392
+ scriptType === UtxoScriptTypes.P2SH) {
393
+ input.witnessUtxo = { script: scriptPubKey, value: BigInt(utxo.valueSats) };
394
+ }
395
+ psbt.addInput(input);
396
+ }
397
+ async resolveFeeRate(overrideRate, targetBlocks) {
398
+ if (overrideRate !== undefined) {
399
+ if (overrideRate < 1) {
400
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `${this.name}: feeRateSatsPerVByte must be >= 1 (got ${overrideRate})`, { chainId: this.chainId });
401
+ }
402
+ return Math.ceil(overrideRate);
403
+ }
404
+ const estimate = await this.feeEstimator.getFeeEstimate(targetBlocks ?? this.defaultFeeTargetBlocks);
405
+ return estimate.satsPerVByte;
406
+ }
407
+ static targetBlocksForPriority(priority) {
408
+ switch (priority) {
409
+ case Priority.FAST: return 1;
410
+ case Priority.NORMAL: return 3;
411
+ case Priority.SLOW: return 6;
412
+ default: {
413
+ const unreachable = priority;
414
+ throw new Error(`Unhandled Priority value: ${unreachable}`);
415
+ }
416
+ }
417
+ }
418
+ async suggestFeeRate(priority) {
419
+ return this.resolveFeeRate(undefined, UtxoChain.targetBlocksForPriority(priority));
420
+ }
421
+ async fetchParentTransactions(utxos) {
422
+ const uniqueTxids = Array.from(new Set(utxos.map((u) => u.txid)));
423
+ const hexes = await this.rawTxProvider.getRawTransactionHexBatch(uniqueTxids);
424
+ if (hexes.length !== uniqueTxids.length) {
425
+ throw new ChainError(ChainErrorKinds.RpcError, `${this.name}: provider returned ${hexes.length} parent txs for ${uniqueTxids.length} requested`, { chainId: this.chainId });
426
+ }
427
+ return new Map(uniqueTxids.map((txid, i) => [txid, hexes[i]]));
428
+ }
429
+ runCoinSelection(params) {
430
+ return selectCoins(params);
431
+ }
432
+ }
433
+ function bigintToNumber(value) {
434
+ if (value > BigInt(Number.MAX_SAFE_INTEGER)) {
435
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `UTXO amount ${value} exceeds Number.MAX_SAFE_INTEGER`);
436
+ }
437
+ return Number(value);
438
+ }
439
+ /**
440
+ * Detect whether the underlying provider signalled "no such tx" (as opposed
441
+ * to a transport failure). Two canonical shapes are recognised:
442
+ *
443
+ * - Esplora / any axios-based HTTP provider → `response.status === 404`
444
+ * - Bitcoin Core `getrawtransaction` on an unknown txid → RPC error code
445
+ * `-5` (surfaces via `bitcoin-core.tool.ts` as
446
+ * `Error("bitcoin-core getrawtransaction: -5 <msg>")`).
447
+ *
448
+ * Everything else is treated as a transport failure and wrapped in
449
+ * `ChainError(RpcError)` so consumers can retry.
450
+ */
451
+ function isProviderNotFoundError(err) {
452
+ if (!err || typeof err !== 'object')
453
+ return false;
454
+ const anyErr = err;
455
+ const status = anyErr.response?.status;
456
+ if (typeof status === 'number' && status === 404)
457
+ return true;
458
+ const message = typeof anyErr.message === 'string' ? anyErr.message : '';
459
+ if (/getrawtransaction:\s*-5\b/.test(message)) {
460
+ // Bitcoin Core RPC code -5 has TWO meanings:
461
+ // - "No such mempool or blockchain transaction" → genuinely unknown
462
+ // (node has -txindex enabled, or the tx is unknown even in mempool)
463
+ // - "No such mempool transaction. Use -txindex or provide a block hash…"
464
+ // → the tx MIGHT exist on-chain but the node can't look it up
465
+ // without a block hash. Reporting NotFound here would silently
466
+ // misreport every confirmed deposit as missing on a non-txindex
467
+ // node — a real-money fail-open. Route it as RpcError so the
468
+ // consumer sees a node-misconfiguration signal.
469
+ if (/mempool or blockchain/i.test(message))
470
+ return true;
471
+ return false;
472
+ }
473
+ return false;
474
+ }
475
+ /**
476
+ * Best-effort scrub for provider error messages so API keys and auth
477
+ * tokens don't leak into `TransactionErrorInfo.reason`. The UTXO
478
+ * providers (Esplora, Unisat, Ordiscan) carry keys in URL query strings,
479
+ * Authorization headers, AND URL paths (`/v1/<key>/tx/…`); a raw axios
480
+ * error stringifies the full request URL. Matches EVM's
481
+ * `sanitizeMessage` intent (errors.ts).
482
+ */
483
+ function sanitizeUtxoErrMessage(msg) {
484
+ return msg
485
+ // Basic-auth credentials in a URL: http://user:pass@host — the
486
+ // canonical Bitcoin Core RPC form, which the -5 branch above
487
+ // specifically expects and could otherwise expose.
488
+ .replace(/(:\/\/)[^:@\s/]+:[^@\s/]+@/g, '$1***:***@')
489
+ // Query-string API key params.
490
+ .replace(/([?&][A-Za-z_-]*(?:key|token|apikey|api_key|auth)=)[^&\s]+/gi, '$1***')
491
+ // Bearer / Authorization headers.
492
+ .replace(/(Authorization|Bearer)\s+[A-Za-z0-9._~+/=-]+/gi, '$1 ***')
493
+ // Hex/base58-ish 32+-char tokens embedded in URL paths (hosted
494
+ // Esplora often uses `/v1/<key>/…`).
495
+ .replace(/\/[A-Fa-f0-9]{32,}\b/g, '/***')
496
+ // Provider-prefixed key markers (Blockstream/Unisat/Ordiscan style).
497
+ .replace(/\b(?:pk|sk|ghp|gho)_[A-Za-z0-9]{20,}\b/g, '***');
498
+ }
499
+ /**
500
+ * Rebuild a fresh Error from `cause` with the sanitized message + a
501
+ * sanitized stack. Drops axios `.config` / `.response` / `.request`
502
+ * object trees that carry Authorization headers and full request URLs.
503
+ * Symmetric with `sanitizeCause` (errors.ts) but with the UTXO-specific
504
+ * regex sweeps applied instead of a per-chain rpcUrl scrub.
505
+ */
506
+ function sanitizedCauseForUtxo(cause, sanitizedMsg) {
507
+ const safe = new Error(sanitizedMsg);
508
+ safe.name = cause.name;
509
+ if (cause.stack)
510
+ safe.stack = sanitizeUtxoErrMessage(cause.stack);
511
+ return safe;
512
+ }
513
+ function encodeMemo(memo) {
514
+ if (memo === undefined || memo === null)
515
+ return null;
516
+ const buf = Buffer.from(memo, 'utf8');
517
+ if (buf.length === 0)
518
+ return null;
519
+ if (buf.length > OP_RETURN_MAX_BYTES) {
520
+ throw new ChainError(ChainErrorKinds.InvalidArgument, `memo length ${buf.length} bytes exceeds OP_RETURN max ${OP_RETURN_MAX_BYTES}`);
521
+ }
522
+ return buf;
523
+ }
524
+ //# sourceMappingURL=utxo_chain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo_chain.js","sourceRoot":"","sources":["../../utxo/utxo_chain.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAElD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,wBAAwB,GACzB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAEL,mBAAmB,EACnB,qBAAqB,GACtB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,KAAK,EAAyB,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EACL,kBAAkB,EAElB,sBAAsB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,qBAAqB,GACtB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,UAAU,CAAC;AAClB,OAAO,EACL,qBAAqB,EAGrB,WAAW,GACZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAEL,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAOrB,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,YAAY,GAEb,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAEzE,MAAM,sBAAsB,GAAsB;IAChD,wBAAwB;IACxB,wBAAwB;IACxB,uBAAuB;CACxB,CAAC;AAiDF,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,yBAAyB,GAAG,CAAC,CAAC;AACpC,MAAM,0BAA0B,GAAG,CAAC,CAAC;AACrC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,MAAM,eAAgB,SAAQ,KAAK;IACjC,YAAY,OAAe,EAAE,MAAc,EAAE,QAAgB;QAC3D,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC9C,CAAC;CACF;AAED,MAAM,OAAO,SAAU,SAAQ,KAAK;IACzB,MAAM,CAAoB;IAC1B,YAAY,CAAe;IAC3B,aAAa,CAA6B;IAC1C,YAAY,CAAmB;IAC/B,WAAW,CAAkB;IAC7B,gBAAgB,CAAuB;IAC7B,sBAAsB,CAAS;IAC/B,qBAAqB,CAAS;IAC9B,2BAA2B,CAAS;IACpC,YAAY,CAAQ;IACpB,sBAAsB,CAAS;IAC/B,2BAA2B,CAAS;IACpC,UAAU,CAAU;IAEvC,YAAY,IAAmB;QAC7B,mEAAmE;QACnE,qEAAqE;QACrE,sEAAsE;QACtE,uEAAuE;QACvE,qEAAqE;QACrE,qEAAqE;QACrE,6DAA6D;QAC7D,IAAI,sBAAsB,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;YAClD,MAAM,MAAM,GAAG,mBAAmB,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;YACzD,MAAM,WAAW,GAAG,IAAI,CAAC,MAA0B,CAAC;YACpD,mEAAmE;YACnE,kEAAkE;YAClE,iEAAiE;YACjE,0CAA0C;YAC1C,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC;gBAC1E,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,WAAW,IAAI,CAAC,OAAO,4EAA4E,IAAI,CAAC,MAAM,CAAC,YAAY,iEAAiE,EAC5L,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QACD,KAAK,CACH,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,EACT,WAAW,CAAC,GAAG,EACf,IAAI,CAAC,gBAAgB,IAAI,0BAA0B,EACnD,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,yBAAyB,CAC/B,CAAC;QACF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC9C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,yBAAyB,CAAC;QAC7D,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,wBAAwB,IAAI,IAAI,CAAC,yBAAyB,CAAC;QAC7F,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,8BAA8B,CAAC;QACvE,IAAI,CAAC,YAAY,GAAG,IAAI,eAAe,CACrC,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,IAAI,CAAC,cAAc,IAAI,uBAAuB,CAC/C,CAAC;QACF,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC,sBAAsB,IAAI,yBAAyB,CAAC;QACvF,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,2BAA2B,IAAI,0BAA0B,CAAC;QAClG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC;QAC1C,mBAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;IAClC,CAAC;IAED,IAAI,2BAA2B;QAC7B,OAAO,IAAI,CAAC,MAAM,CAAC,2BAA2B,CAAC;IACjD,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;IACnC,CAAC;IAED,oBAAoB,CAAC,OAAe;QAClC,OAAO,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,kBAAkB,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,mBAAmB,CAAC,gBAAyB;QAC3C,OAAO,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,yBAAyB,CAAC,MAAc;QACtC,OAAO,IAAI,CAAC,2BAA2B,CAAC,OAAO,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACvE,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IAED,uBAAuB,CAAC,GAAuB;QAC7C,OAAO,GAAG,KAAK,SAAS,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,SAA4B,EAC5B,QAA0B;QAE1B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,GAAG,CAC7B,SAAS,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAChE,CAAC;QACF,OAAO,KAAK,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAa,EAAE,eAAwB;QACtD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,sBAAsB,EACtC,GAAG,IAAI,CAAC,IAAI,6CAA6C,eAAe,GAAG,EAC3E,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,CACvD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,cAAc,EAC9B,GAAG,IAAI,CAAC,IAAI,4BAA4B,KAAK,EAAE,EAC/C,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAC1C,CAAC;QACJ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;QACjE,OAAO,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,CAAC;IAED,KAAK,CAAC,iBAAiB;QACrB,OAAO,IAAI,CAAC,gBAAgB,CAAC,iBAAiB,EAAE,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,oBAAoB,CAAC,MAAc;QACvC,oEAAoE;QACpE,8DAA8D;QAC9D,mEAAmE;QACnE,8DAA8D;QAC9D,qEAAqE;QACrE,wBAAwB;QACxB,IAAI,EAAE,CAAC;QACP,IAAI,CAAC;YACH,EAAE,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QACvD,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU;gBAAE,MAAM,GAAG,CAAC;YACzC,IAAI,uBAAuB,CAAC,GAAG,CAAC,EAAE,CAAC;gBACjC,OAAO,IAAI,qBAAqB,CAAC;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,sBAAsB,CAAC,QAAQ;oBACvC,cAAc,EAAE,IAAI;oBACpB,cAAc,EAAE,IAAI;iBACrB,CAAC,CAAC;YACL,CAAC;YACD,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,MAAM,YAAY,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;YACpD,gEAAgE;YAChE,iEAAiE;YACjE,gEAAgE;YAChE,gEAAgE;YAChE,6CAA6C;YAC7C,MAAM,SAAS,GAAG,GAAG,YAAY,KAAK;gBACpC,CAAC,CAAC,qBAAqB,CAAC,GAAG,EAAE,YAAY,CAAC;gBAC1C,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,QAAQ,EACxB,0BAA0B,MAAM,KAAK,YAAY,EAAE,EACnD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EACjC,SAAS,CACV,CAAC;QACJ,CAAC;QAED,iEAAiE;QACjE,oEAAoE;QACpE,+DAA+D;QAC/D,6CAA6C;QAC7C,IAAI,EAAE,CAAC,aAAa,GAAG,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,qBAAqB,CAAC;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,sBAAsB,CAAC,QAAQ;gBACvC,cAAc,EAAE,IAAI;gBACpB,cAAc,EAAE,IAAI;gBACpB,KAAK,EAAE;oBACL,IAAI,EAAE,YAAY;oBAClB,MAAM,EAAE,kCAAkC,EAAE,CAAC,aAAa,2BAA2B;iBACtF;aACF,CAAC,CAAC;QACL,CAAC;QAED,uEAAuE;QACvE,0DAA0D;QAC1D,kDAAkD;QAClD,oEAAoE;QACpE,mDAAmD;QACnD,IAAI,CAAC;YACH,kEAAkE;YAClE,iEAAiE;YACjE,oEAAoE;YACpE,oCAAoC;YACpC,MAAM,OAAO,GAA4B,EAAE,CAAC,IAAI,CAAC,GAAG,CAClD,CAAC,CAAC,EAAE,EAAE,CACJ,IAAI,qBAAqB,CAAC;gBACxB,eAAe,EAAE,CAAC,CAAC,eAAe;gBAClC,OAAO,EAAE,CAAC,CAAC,OAAO;gBAClB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;aAC/B,CAAC,CACL,CAAC;YACF,iEAAiE;YACjE,iEAAiE;YACjE,qDAAqD;YACrD,IAAI,KAAK,GAAkB,IAAI,CAAC;YAChC,IAAI,CAAC;gBACH,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAChC,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;gBACpD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,KAAK,GAAG,IAAI,CAAC;YACf,CAAC;YACD,MAAM,IAAI,GACR,EAAE,CAAC,IAAI,KAAK,IAAI;gBACd,CAAC,CAAC,IAAI,mBAAmB,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC;gBAChF,CAAC,CAAC,IAAI,CAAC;YAEX,MAAM,SAAS,GAAG,EAAE,CAAC,aAAa,KAAK,CAAC,CAAC;YACzC,IAAI,SAAS,EAAE,CAAC;gBACd,OAAO,IAAI,qBAAqB,CAAC;oBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,MAAM,EAAE,sBAAsB,CAAC,OAAO;oBACtC,cAAc,EAAE,IAAI;oBACpB,cAAc,EAAE,IAAI;oBACpB,aAAa,EAAE,CAAC;oBAChB,OAAO;oBACP,KAAK;oBACL,IAAI;iBACL,CAAC,CAAC;YACL,CAAC;YAED,qEAAqE;YACrE,mEAAmE;YACnE,mEAAmE;YACnE,4DAA4D;YAC5D,2BAA2B;YAC3B,MAAM,cAAc,GAAyB,IAAI,GAAG,EAAE,CAAC;YACvD,MAAM,cAAc,GAAG,IAAI,GAAG,EAAkB,CAAC;YACjD,KAAK,MAAM,GAAG,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,OAAO;oBAAE,SAAS;gBAC3B,cAAc,CAAC,GAAG,CAChB,GAAG,CAAC,OAAO,EACX,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAChE,CAAC;YACJ,CAAC;YACD,KAAK,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,cAAc,EAAE,CAAC;gBAC7C,kBAAkB,CAAC,MAAM,CACvB,cAAc,EACd,OAAO,EACP,IAAI,CAAC,YAAY,EACjB,kBAAkB,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAC5D,CAAC;YACJ,CAAC;YAED,OAAO,IAAI,qBAAqB,CAAC;gBAC/B,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,sBAAsB,CAAC,OAAO;gBACtC,cAAc,EAAE,EAAE,CAAC,SAAS;gBAC5B,cAAc;gBACd,aAAa,EAAE,EAAE,CAAC,aAAa;gBAC/B,OAAO;gBACP,KAAK;gBACL,IAAI;aACL,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,UAAU;gBAAE,MAAM,GAAG,CAAC;YACzC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,uBAAuB,EACvC,4BAA4B,MAAM,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,EACzF,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EACjC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CACvC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,KAAK,CAAC,iCAAiC,CACrC,GAAsD;QAEtD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAgC,EAAE,SAAS,CAAC,CAAC;IACzE,CAAC;IAES,KAAK,CAAC,aAAa,CAC3B,GAA8B,EAC9B,eAA4C;QAE5C,qEAAqE;QACrE,kEAAkE;QAClE,6DAA6D;QAC7D,qEAAqE;QACrE,sEAAsE;QACtE,IAAI,GAAG,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,iIAAiI,EAC7I,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAC/B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,oHAAoH,EAChI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,kLAAkL,EAC9L,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,sBAAsB,EACtC,GAAG,IAAI,CAAC,IAAI,sCAAsC,EAClD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,CAAC,eAAe,EAAE,CAC3D,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,cAAc,EAC9B,GAAG,IAAI,CAAC,IAAI,4BAA4B,GAAG,CAAC,IAAI,IAAI,WAAW,EAAE,EACjE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,EAAE,CAC7C,CAAC;QACJ,CAAC;QACD,MAAM,WAAW,GAAW,GAAG,CAAC,IAAI,CAAC;QACrC,MAAM,IAAI,GAAG,GAAgC,CAAC;QAE9C,8EAA8E;QAC9E,kFAAkF;QAClF,MAAM,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC;QACnE,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;QACxE,IAAI,SAAS,IAAI,QAAQ,EAAE,CAAC;YAC1B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,oFAAoF,EAChG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,SAAS,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC5B,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,mEAAmE,EAC/E,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,sEAAsE;QACtE,kEAAkE;QAClE,iEAAiE;QACjE,0DAA0D;QAC1D,IAAI,SAAS,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YACvD,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,oHAAoH,EAChI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,MAAM,iBAAiB,GAAyB,QAAQ;YACtD,CAAC,CAAC,IAAI,CAAC,OAAQ,CAAC,KAAK,EAAE;YACvB,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,GAAG,CAAC,EAAY,EAAE,MAAM,EAAE,GAAG,CAAC,MAAgB,EAAE,CAAC,CAAC;QAE7D,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAClD,MAAM,CAAC,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;gBAChC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,cAAc,EAC9B,GAAG,IAAI,CAAC,IAAI,0CAA0C,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,EACnE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CACzC,CAAC;YACJ,CAAC;YACD,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;gBACjC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,aAAa,CAAC,kCAAkC,OAAO,CAAC,CAAC,MAAM,GAAG,EAC9E,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACJ,CAAC;YACD,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;gBACnB,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,aAAa,CAAC,sBAAsB,EAChD,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACJ,CAAC;YACD,MAAM,IAAI,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;gBACrC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,aAAa,CAAC,YAAY,IAAI,eAAe,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,EACpF,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACJ,CAAC;QACH,CAAC;QAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAC9C,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,EAC1C,CAAC,CACF,CAAC;QACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACjD,oBAAoB,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CACpD,CAAC;QAEF,MAAM,SAAS,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,mBAAmB,GAAG,MAAM,IAAI,CAAC,cAAc,CACnD,IAAI,CAAC,mBAAmB,EACxB,IAAI,CAAC,eAAe,CACrB,CAAC;QAEF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,CAAC,EAAE,eAAe,CAAC,CAAC;QAClE,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,sCAAsC,WAAW,EAAE,EAC/D,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,CAChD,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAW,IAAI,CAAC,aAAa,IAAI,WAAW,CAAC;QAChE,MAAM,UAAU,GAAG,oBAAoB,CAAC,aAAa,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QAChF,MAAM,kBAAkB,GACtB,cAAc,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAC3D,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAE1C,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;YACtC,KAAK;YACL,UAAU,EAAE,eAAe;YAC3B,mBAAmB;YACnB,gBAAgB,EAAE,UAAU;YAC5B,kBAAkB;YAClB,gBAAgB,EAAE,gBAAgB,CAChC,UAAU,EACV,mBAAmB,EACnB,IAAI,CAAC,2BAA2B,CACjC;SACF,CAAC,CAAC;QACH,IAAI,SAAS,CAAC,OAAO,KAAK,qBAAqB,CAAC,OAAO,EAAE,CAAC;YACxD,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,4BAA4B,SAAS,CAAC,OAAO,gBAAgB,eAAe,OAAO,EAC/F,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC;QACtD,MAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,cAAc,CAAC;QAC5D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE3E,MAAM,YAAY,GAA6B,EAAE,CAAC;QAClD,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACzC,IAAI,CAAC,cAAc,CAAC;gBAClB,IAAI;gBACJ,IAAI;gBACJ,QAAQ;gBACR,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE;aACzC,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACjB,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7E,CAAC;QACD,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;YACxB,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,mBAAmB,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,MAAM,eAAe,GAAG,gBAAgB,CACtC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAC3C,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,cAAc,EACtE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CACpC,CAAC;QAEF,OAAO,IAAI,uBAAuB,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,QAAQ,EAAE;YAC3B,cAAc,EAAE,SAAS,CAAC,QAAQ;YAClC,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,mBAAmB;YACnB,eAAe;YACf,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,eAAe,EAAE,eAAe,GAAG,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;YACnF,aAAa,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;YACzD,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAES,cAAc,CAAC,IAKxB;QACC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,GAAG,IAAI,CAAC;QACnD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;QAC9D,MAAM,UAAU,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;QAEtD,MAAM,KAAK,GAAoC;YAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,QAAQ;YACR,cAAc,EAAE,aAAa;SAC9B,CAAC;QACF,IACE,UAAU,KAAK,eAAe,CAAC,MAAM;YACrC,UAAU,KAAK,eAAe,CAAC,KAAK;YACpC,UAAU,KAAK,eAAe,CAAC,IAAI;YACnC,UAAU,KAAK,eAAe,CAAC,IAAI,EACnC,CAAC;YACD,KAAK,CAAC,WAAW,GAAG,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9E,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAES,KAAK,CAAC,cAAc,CAC5B,YAAgC,EAChC,YAAgC;QAEhC,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,YAAY,GAAG,CAAC,EAAE,CAAC;gBACrB,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,GAAG,IAAI,CAAC,IAAI,2CAA2C,YAAY,GAAG,EACtE,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjC,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CACrD,YAAY,IAAI,IAAI,CAAC,sBAAsB,CAC5C,CAAC;QACF,OAAO,QAAQ,CAAC,YAAY,CAAC;IAC/B,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,QAAkB;QAC/C,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7B,KAAK,QAAQ,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,CAAC;YAC/B,KAAK,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;YAC7B,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,WAAW,GAAU,QAAQ,CAAC;gBACpC,MAAM,IAAI,KAAK,CAAC,6BAA6B,WAAqB,EAAE,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,QAAkB;QACrC,OAAO,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,uBAAuB,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrF,CAAC;IAES,KAAK,CAAC,uBAAuB,CACrC,KAA0C;QAE1C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,yBAAyB,CAAC,WAAW,CAAC,CAAC;QAC9E,IAAI,KAAK,CAAC,MAAM,KAAK,WAAW,CAAC,MAAM,EAAE,CAAC;YACxC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,QAAQ,EACxB,GAAG,IAAI,CAAC,IAAI,uBAAuB,KAAK,CAAC,MAAM,mBAAmB,WAAW,CAAC,MAAM,YAAY,EAChG,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAC1B,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAES,gBAAgB,CAAC,MAA2B;QACpD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;CACF;AAED,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,eAAe,KAAK,kCAAkC,CACvD,CAAC;IACJ,CAAC;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;AACvB,CAAC;AAED;;;;;;;;;;;GAWG;AACH,SAAS,uBAAuB,CAAC,GAAY;IAC3C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,MAAM,GAAG,GAA6D,CAAC;IAC7E,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,GAAG;QAAE,OAAO,IAAI,CAAC;IAC9D,MAAM,OAAO,GAAG,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;IACzE,IAAI,2BAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC9C,6CAA6C;QAC7C,sEAAsE;QACtE,wEAAwE;QACxE,2EAA2E;QAC3E,kEAAkE;QAClE,mEAAmE;QACnE,oEAAoE;QACpE,iEAAiE;QACjE,oDAAoD;QACpD,IAAI,wBAAwB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,IAAI,CAAC;QACxD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,sBAAsB,CAAC,GAAW;IACzC,OAAO,GAAG;QACR,+DAA+D;QAC/D,6DAA6D;QAC7D,mDAAmD;SAClD,OAAO,CAAC,6BAA6B,EAAE,YAAY,CAAC;QACrD,+BAA+B;SAC9B,OAAO,CAAC,8DAA8D,EAAE,OAAO,CAAC;QACjF,kCAAkC;SACjC,OAAO,CAAC,gDAAgD,EAAE,QAAQ,CAAC;QACpE,+DAA+D;QAC/D,qCAAqC;SACpC,OAAO,CAAC,uBAAuB,EAAE,MAAM,CAAC;QACzC,qEAAqE;SACpE,OAAO,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;;GAMG;AACH,SAAS,qBAAqB,CAAC,KAAY,EAAE,YAAoB;IAC/D,MAAM,IAAI,GAAG,IAAI,KAAK,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IACvB,IAAI,KAAK,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,sBAAsB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAClE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB;IAC1C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACrD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAClC,IAAI,GAAG,CAAC,MAAM,GAAG,mBAAmB,EAAE,CAAC;QACrC,MAAM,IAAI,UAAU,CAClB,eAAe,CAAC,eAAe,EAC/B,eAAe,GAAG,CAAC,MAAM,gCAAgC,mBAAmB,EAAE,CAC/E,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { BtcChain } from './btc/btc_chain.ts';
2
+ import { BitcoinChainFactoryOptions } from './btc/btc_chains.ts';
3
+ import { DogecoinChainFactoryOptions } from './doge/doge_chains.ts';
4
+ import { LitecoinChainFactoryOptions } from './ltc/ltc_chains.ts';
5
+ import { UtxoChain } from './utxo_chain.ts';
6
+ export declare const UtxoCoin: {
7
+ readonly Bitcoin: "bitcoin";
8
+ readonly BitcoinTestnet: "bitcoin-testnet";
9
+ readonly BitcoinSignet: "bitcoin-signet";
10
+ readonly BitcoinRegtest: "bitcoin-regtest";
11
+ readonly Litecoin: "litecoin";
12
+ readonly LitecoinTestnet: "litecoin-testnet";
13
+ readonly Dogecoin: "dogecoin";
14
+ readonly DogecoinTestnet: "dogecoin-testnet";
15
+ };
16
+ export type UtxoCoinName = (typeof UtxoCoin)[keyof typeof UtxoCoin];
17
+ export type UtxoChainFactoryOptions = (BitcoinChainFactoryOptions & {
18
+ coin: 'bitcoin' | 'bitcoin-testnet' | 'bitcoin-signet' | 'bitcoin-regtest';
19
+ }) | (LitecoinChainFactoryOptions & {
20
+ coin: 'litecoin' | 'litecoin-testnet';
21
+ }) | (DogecoinChainFactoryOptions & {
22
+ coin: 'dogecoin' | 'dogecoin-testnet';
23
+ });
24
+ export declare function utxoChainFromCoin(options: UtxoChainFactoryOptions): UtxoChain;
25
+ export declare function utxoChainFromSlip44(slip44CoinId: number, isMainnet: boolean, options: (BitcoinChainFactoryOptions & {
26
+ variant?: 'mainnet' | 'testnet' | 'signet' | 'regtest';
27
+ }) | LitecoinChainFactoryOptions | DogecoinChainFactoryOptions): UtxoChain;
28
+ export type { BtcChain };
29
+ //# sourceMappingURL=utxo_chains.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utxo_chains.d.ts","sourceRoot":"","sources":["../../utxo/utxo_chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EACL,0BAA0B,EAK3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,2BAA2B,EAG5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,2BAA2B,EAG5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG5C,eAAO,MAAM,QAAQ;;;;;;;;;CASX,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,MAAM,OAAO,QAAQ,CAAC,CAAC;AAEpE,MAAM,MAAM,uBAAuB,GAC/B,CAAC,0BAA0B,GAAG;IAAE,IAAI,EAAE,SAAS,GAAG,iBAAiB,GAAG,gBAAgB,GAAG,iBAAiB,CAAA;CAAE,CAAC,GAC7G,CAAC,2BAA2B,GAAG;IAAE,IAAI,EAAE,UAAU,GAAG,kBAAkB,CAAA;CAAE,CAAC,GACzE,CAAC,2BAA2B,GAAG;IAAE,IAAI,EAAE,UAAU,GAAG,kBAAkB,CAAA;CAAE,CAAC,CAAC;AAE9E,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,uBAAuB,GAAG,SAAS,CAuB7E;AAED,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,OAAO,EAClB,OAAO,EACH,CAAC,0BAA0B,GAAG;IAAE,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAA;CAAE,CAAC,GACzF,2BAA2B,GAC3B,2BAA2B,GAC9B,SAAS,CAgBX;AAED,YAAY,EAAE,QAAQ,EAAE,CAAC"}