@btc-vision/transaction 1.8.0-beta.0 → 1.8.0-beta.10

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 (796) hide show
  1. package/browser/_version.d.ts +2 -1
  2. package/browser/_version.d.ts.map +1 -0
  3. package/browser/abi/ABICoder.d.ts +15 -36
  4. package/browser/abi/ABICoder.d.ts.map +1 -0
  5. package/browser/abi/ABIDataTypes.d.ts +35 -0
  6. package/browser/abi/ABIDataTypes.d.ts.map +1 -0
  7. package/browser/abi/AbiTypes.d.ts +50 -0
  8. package/browser/abi/AbiTypes.d.ts.map +1 -0
  9. package/browser/abi/TupleUtils.d.ts +25 -0
  10. package/browser/abi/TupleUtils.d.ts.map +1 -0
  11. package/browser/branded/Branded.d.ts +4 -0
  12. package/browser/branded/Branded.d.ts.map +1 -0
  13. package/browser/btc-vision-bitcoin.js +12388 -3684
  14. package/browser/buffer/BinaryReader.d.ts +120 -1
  15. package/browser/buffer/BinaryReader.d.ts.map +1 -0
  16. package/browser/buffer/BinaryWriter.d.ts +51 -1
  17. package/browser/buffer/BinaryWriter.d.ts.map +1 -0
  18. package/browser/bytecode/Compressor.d.ts +12 -0
  19. package/browser/bytecode/Compressor.d.ts.map +1 -0
  20. package/browser/chain/ChainData.d.ts +2 -2
  21. package/browser/chain/ChainData.d.ts.map +1 -0
  22. package/browser/consensus/Consensus.d.ts +11 -3
  23. package/browser/consensus/Consensus.d.ts.map +1 -0
  24. package/browser/consensus/ConsensusConfig.d.ts +1 -0
  25. package/browser/consensus/ConsensusConfig.d.ts.map +1 -0
  26. package/browser/consensus/IConsensusConfig.d.ts +1 -0
  27. package/browser/consensus/IConsensusConfig.d.ts.map +1 -0
  28. package/browser/consensus/metadata/RoswellConsensus.d.ts +1 -0
  29. package/browser/consensus/metadata/RoswellConsensus.d.ts.map +1 -0
  30. package/browser/crypto/crypto.d.ts +1 -0
  31. package/browser/crypto/crypto.d.ts.map +1 -0
  32. package/browser/deterministic/AddressMap.d.ts +6 -1
  33. package/browser/deterministic/AddressMap.d.ts.map +1 -0
  34. package/browser/deterministic/AddressSet.d.ts +3 -1
  35. package/browser/deterministic/AddressSet.d.ts.map +1 -0
  36. package/browser/deterministic/CustomMap.d.ts +3 -1
  37. package/browser/deterministic/CustomMap.d.ts.map +1 -0
  38. package/browser/deterministic/DeterministicMap.d.ts +3 -1
  39. package/browser/deterministic/DeterministicMap.d.ts.map +1 -0
  40. package/browser/deterministic/DeterministicSet.d.ts +3 -1
  41. package/browser/deterministic/DeterministicSet.d.ts.map +1 -0
  42. package/browser/deterministic/ExtendedAddressMap.d.ts +7 -1
  43. package/browser/deterministic/ExtendedAddressMap.d.ts.map +1 -0
  44. package/browser/deterministic/FastMap.d.ts +7 -1
  45. package/browser/deterministic/FastMap.d.ts.map +1 -0
  46. package/browser/ecc/backend.d.ts +13 -0
  47. package/browser/ecc/backend.d.ts.map +1 -0
  48. package/browser/epoch/ChallengeSolution.d.ts +33 -1
  49. package/browser/epoch/ChallengeSolution.d.ts.map +1 -0
  50. package/browser/epoch/interfaces/IChallengeSolution.d.ts +14 -13
  51. package/browser/epoch/interfaces/IChallengeSolution.d.ts.map +1 -0
  52. package/browser/epoch/validator/EpochValidator.d.ts +37 -7
  53. package/browser/epoch/validator/EpochValidator.d.ts.map +1 -0
  54. package/browser/event/NetEvent.d.ts +1 -0
  55. package/browser/event/NetEvent.d.ts.map +1 -0
  56. package/browser/generators/AddressGenerator.d.ts +4 -3
  57. package/browser/generators/AddressGenerator.d.ts.map +1 -0
  58. package/browser/generators/Features.d.ts +1 -0
  59. package/browser/generators/Features.d.ts.map +1 -0
  60. package/browser/generators/Generator.d.ts +46 -10
  61. package/browser/generators/Generator.d.ts.map +1 -0
  62. package/browser/generators/MLDSAData.d.ts +1 -0
  63. package/browser/generators/MLDSAData.d.ts.map +1 -0
  64. package/browser/generators/builders/CalldataGenerator.d.ts +25 -4
  65. package/browser/generators/builders/CalldataGenerator.d.ts.map +1 -0
  66. package/browser/generators/builders/CustomGenerator.d.ts +13 -3
  67. package/browser/generators/builders/CustomGenerator.d.ts.map +1 -0
  68. package/browser/generators/builders/DeploymentGenerator.d.ts +15 -4
  69. package/browser/generators/builders/DeploymentGenerator.d.ts.map +1 -0
  70. package/browser/generators/builders/HashCommitmentGenerator.d.ts +164 -12
  71. package/browser/generators/builders/HashCommitmentGenerator.d.ts.map +1 -0
  72. package/browser/generators/builders/LegacyCalldataGenerator.d.ts +26 -4
  73. package/browser/generators/builders/LegacyCalldataGenerator.d.ts.map +1 -0
  74. package/browser/generators/builders/MultiSignGenerator.d.ts +6 -1
  75. package/browser/generators/builders/MultiSignGenerator.d.ts.map +1 -0
  76. package/browser/generators/builders/P2WDAGenerator.d.ts +42 -4
  77. package/browser/generators/builders/P2WDAGenerator.d.ts.map +1 -0
  78. package/browser/index.d.ts +1 -0
  79. package/browser/index.d.ts.map +1 -0
  80. package/browser/index.js +3921 -3450
  81. package/browser/keypair/Address.d.ts +283 -13
  82. package/browser/keypair/Address.d.ts.map +1 -0
  83. package/browser/keypair/AddressVerificator.d.ts +7 -6
  84. package/browser/keypair/AddressVerificator.d.ts.map +1 -0
  85. package/browser/keypair/EcKeyPair.d.ts +183 -20
  86. package/browser/keypair/EcKeyPair.d.ts.map +1 -0
  87. package/browser/keypair/MessageSigner.d.ts +17 -16
  88. package/browser/keypair/MessageSigner.d.ts.map +1 -0
  89. package/browser/keypair/Secp256k1PointDeriver.d.ts +55 -0
  90. package/browser/keypair/Secp256k1PointDeriver.d.ts.map +1 -0
  91. package/browser/keypair/Wallet.d.ts +27 -13
  92. package/browser/keypair/Wallet.d.ts.map +1 -0
  93. package/browser/keypair/interfaces/IWallet.d.ts +19 -0
  94. package/browser/keypair/interfaces/IWallet.d.ts.map +1 -0
  95. package/browser/metadata/ContractBaseMetadata.d.ts +10 -2
  96. package/browser/metadata/ContractBaseMetadata.d.ts.map +1 -0
  97. package/browser/mnemonic/BIPStandard.d.ts +59 -0
  98. package/browser/mnemonic/BIPStandard.d.ts.map +1 -0
  99. package/browser/mnemonic/Mnemonic.d.ts +15 -3
  100. package/browser/mnemonic/Mnemonic.d.ts.map +1 -0
  101. package/browser/mnemonic/MnemonicStrength.d.ts +6 -0
  102. package/browser/mnemonic/MnemonicStrength.d.ts.map +1 -0
  103. package/browser/network/ChainId.d.ts +1 -0
  104. package/browser/network/ChainId.d.ts.map +1 -0
  105. package/browser/noble-curves.js +920 -2966
  106. package/browser/noble-hashes.js +2067 -1038
  107. package/browser/opnet.d.ts +25 -1
  108. package/browser/opnet.d.ts.map +1 -0
  109. package/browser/p2wda/P2WDADetector.d.ts +36 -9
  110. package/browser/p2wda/P2WDADetector.d.ts.map +1 -0
  111. package/browser/polyfill/disposable.d.ts +16 -0
  112. package/browser/polyfill/disposable.d.ts.map +1 -0
  113. package/browser/signer/AddressRotation.d.ts +36 -0
  114. package/browser/signer/AddressRotation.d.ts.map +1 -0
  115. package/browser/signer/IRotationSigner.d.ts +27 -3
  116. package/browser/signer/IRotationSigner.d.ts.map +1 -0
  117. package/browser/signer/ParallelSignerAdapter.d.ts +14 -0
  118. package/browser/signer/ParallelSignerAdapter.d.ts.map +1 -0
  119. package/browser/signer/SignerUtils.d.ts +11 -4
  120. package/browser/signer/SignerUtils.d.ts.map +1 -0
  121. package/browser/signer/TweakedSigner.d.ts +28 -4
  122. package/browser/signer/TweakedSigner.d.ts.map +1 -0
  123. package/browser/transaction/ContractAddress.d.ts +2 -2
  124. package/browser/transaction/ContractAddress.d.ts.map +1 -0
  125. package/browser/transaction/TransactionFactory.d.ts +140 -2
  126. package/browser/transaction/TransactionFactory.d.ts.map +1 -0
  127. package/browser/transaction/browser/BrowserSignerBase.d.ts +12 -6
  128. package/browser/transaction/browser/BrowserSignerBase.d.ts.map +1 -0
  129. package/browser/transaction/browser/WalletNetworks.d.ts +1 -0
  130. package/browser/transaction/browser/WalletNetworks.d.ts.map +1 -0
  131. package/browser/transaction/browser/Web3Provider.d.ts +27 -0
  132. package/browser/transaction/browser/Web3Provider.d.ts.map +1 -0
  133. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +9 -7
  134. package/browser/transaction/browser/extensions/UnisatSigner.d.ts.map +1 -0
  135. package/browser/transaction/browser/extensions/XverseSigner.d.ts +9 -7
  136. package/browser/transaction/browser/extensions/XverseSigner.d.ts.map +1 -0
  137. package/browser/transaction/browser/types/OPWallet.d.ts +10 -0
  138. package/browser/transaction/browser/types/OPWallet.d.ts.map +1 -0
  139. package/browser/transaction/browser/types/Unisat.d.ts +1 -0
  140. package/browser/transaction/browser/types/Unisat.d.ts.map +1 -0
  141. package/browser/transaction/browser/types/Xverse.d.ts +1 -0
  142. package/browser/transaction/browser/types/Xverse.d.ts.map +1 -0
  143. package/browser/transaction/builders/CancelTransaction.d.ts +29 -4
  144. package/browser/transaction/builders/CancelTransaction.d.ts.map +1 -0
  145. package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts +1 -0
  146. package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts.map +1 -0
  147. package/browser/transaction/builders/ConsolidatedInteractionTransaction.d.ts +137 -10
  148. package/browser/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +1 -0
  149. package/browser/transaction/builders/CustomScriptTransaction.d.ts +106 -6
  150. package/browser/transaction/builders/CustomScriptTransaction.d.ts.map +1 -0
  151. package/browser/transaction/builders/DeploymentTransaction.d.ts +116 -5
  152. package/browser/transaction/builders/DeploymentTransaction.d.ts.map +1 -0
  153. package/browser/transaction/builders/FundingTransaction.d.ts +5 -3
  154. package/browser/transaction/builders/FundingTransaction.d.ts.map +1 -0
  155. package/browser/transaction/builders/InteractionTransaction.d.ts +12 -3
  156. package/browser/transaction/builders/InteractionTransaction.d.ts.map +1 -0
  157. package/browser/transaction/builders/InteractionTransactionP2WDA.d.ts +56 -5
  158. package/browser/transaction/builders/InteractionTransactionP2WDA.d.ts.map +1 -0
  159. package/browser/transaction/builders/MultiSignTransaction.d.ts +125 -16
  160. package/browser/transaction/builders/MultiSignTransaction.d.ts.map +1 -0
  161. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +103 -15
  162. package/browser/transaction/builders/SharedInteractionTransaction.d.ts.map +1 -0
  163. package/browser/transaction/builders/TransactionBuilder.d.ts +238 -15
  164. package/browser/transaction/builders/TransactionBuilder.d.ts.map +1 -0
  165. package/browser/transaction/enums/TransactionType.d.ts +1 -0
  166. package/browser/transaction/enums/TransactionType.d.ts.map +1 -0
  167. package/browser/transaction/interfaces/ICancelTransactionParameters.d.ts +2 -1
  168. package/browser/transaction/interfaces/ICancelTransactionParameters.d.ts.map +1 -0
  169. package/browser/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +46 -3
  170. package/browser/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +1 -0
  171. package/browser/transaction/interfaces/ICustomTransactionParameters.d.ts +6 -4
  172. package/browser/transaction/interfaces/ICustomTransactionParameters.d.ts.map +1 -0
  173. package/browser/transaction/interfaces/ITransactionParameters.d.ts +33 -10
  174. package/browser/transaction/interfaces/ITransactionParameters.d.ts.map +1 -0
  175. package/browser/transaction/interfaces/ITransactionResponses.d.ts +1 -0
  176. package/browser/transaction/interfaces/ITransactionResponses.d.ts.map +1 -0
  177. package/browser/transaction/interfaces/ITweakedTransactionData.d.ts +17 -5
  178. package/browser/transaction/interfaces/ITweakedTransactionData.d.ts.map +1 -0
  179. package/browser/transaction/interfaces/IWeb3ProviderTypes.d.ts +26 -0
  180. package/browser/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +1 -0
  181. package/browser/transaction/interfaces/Tap.d.ts +4 -3
  182. package/browser/transaction/interfaces/Tap.d.ts.map +1 -0
  183. package/browser/transaction/mineable/IP2WSHAddress.d.ts +2 -1
  184. package/browser/transaction/mineable/IP2WSHAddress.d.ts.map +1 -0
  185. package/browser/transaction/mineable/TimelockGenerator.d.ts +12 -3
  186. package/browser/transaction/mineable/TimelockGenerator.d.ts.map +1 -0
  187. package/browser/transaction/offline/OfflineTransactionManager.d.ts +190 -9
  188. package/browser/transaction/offline/OfflineTransactionManager.d.ts.map +1 -0
  189. package/browser/transaction/offline/TransactionReconstructor.d.ts +53 -3
  190. package/browser/transaction/offline/TransactionReconstructor.d.ts.map +1 -0
  191. package/browser/transaction/offline/TransactionSerializer.d.ts +53 -2
  192. package/browser/transaction/offline/TransactionSerializer.d.ts.map +1 -0
  193. package/browser/transaction/offline/TransactionStateCapture.d.ts +64 -5
  194. package/browser/transaction/offline/TransactionStateCapture.d.ts.map +1 -0
  195. package/browser/transaction/offline/interfaces/ISerializableState.d.ts +71 -0
  196. package/browser/transaction/offline/interfaces/ISerializableState.d.ts.map +1 -0
  197. package/browser/transaction/offline/interfaces/ITypeSpecificData.d.ts +76 -0
  198. package/browser/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +1 -0
  199. package/browser/transaction/psbt/PSBTTypes.d.ts +1 -0
  200. package/browser/transaction/psbt/PSBTTypes.d.ts.map +1 -0
  201. package/browser/transaction/shared/P2TR_MS.d.ts +11 -2
  202. package/browser/transaction/shared/P2TR_MS.d.ts.map +1 -0
  203. package/browser/transaction/shared/TweakedTransaction.d.ts +274 -33
  204. package/browser/transaction/shared/TweakedTransaction.d.ts.map +1 -0
  205. package/browser/transaction/utils/WitnessUtils.d.ts +7 -1
  206. package/browser/transaction/utils/WitnessUtils.d.ts.map +1 -0
  207. package/browser/utils/BitcoinUtils.d.ts +19 -0
  208. package/browser/utils/BitcoinUtils.d.ts.map +1 -0
  209. package/browser/utils/BufferHelper.d.ts +1 -0
  210. package/browser/utils/BufferHelper.d.ts.map +1 -0
  211. package/browser/utils/StringToBuffer.d.ts +1 -0
  212. package/browser/utils/StringToBuffer.d.ts.map +1 -0
  213. package/browser/utils/lengths.d.ts +1 -0
  214. package/browser/utils/lengths.d.ts.map +1 -0
  215. package/browser/utils/types.d.ts +1 -0
  216. package/browser/utils/types.d.ts.map +1 -0
  217. package/browser/utxo/OPNetLimitedProvider.d.ts +37 -1
  218. package/browser/utxo/OPNetLimitedProvider.d.ts.map +1 -0
  219. package/browser/utxo/interfaces/BroadcastResponse.d.ts +1 -0
  220. package/browser/utxo/interfaces/BroadcastResponse.d.ts.map +1 -0
  221. package/browser/utxo/interfaces/IUTXO.d.ts +11 -5
  222. package/browser/utxo/interfaces/IUTXO.d.ts.map +1 -0
  223. package/browser/vendors.js +13940 -9389
  224. package/browser/verification/TapscriptVerificator.d.ts +10 -8
  225. package/browser/verification/TapscriptVerificator.d.ts.map +1 -0
  226. package/build/_version.d.ts +2 -1
  227. package/build/_version.d.ts.map +1 -0
  228. package/build/_version.js +2 -1
  229. package/build/_version.js.map +1 -0
  230. package/build/abi/ABICoder.d.ts +15 -36
  231. package/build/abi/ABICoder.d.ts.map +1 -0
  232. package/build/abi/ABICoder.js +120 -143
  233. package/build/abi/ABICoder.js.map +1 -0
  234. package/build/abi/ABIDataTypes.d.ts +35 -0
  235. package/build/abi/ABIDataTypes.d.ts.map +1 -0
  236. package/build/abi/ABIDataTypes.js +42 -0
  237. package/build/abi/ABIDataTypes.js.map +1 -0
  238. package/build/abi/AbiTypes.d.ts +50 -0
  239. package/build/abi/AbiTypes.d.ts.map +1 -0
  240. package/build/abi/AbiTypes.js +78 -0
  241. package/build/abi/AbiTypes.js.map +1 -0
  242. package/build/abi/TupleUtils.d.ts +25 -0
  243. package/build/abi/TupleUtils.d.ts.map +1 -0
  244. package/build/abi/TupleUtils.js +50 -0
  245. package/build/abi/TupleUtils.js.map +1 -0
  246. package/build/branded/Branded.d.ts +4 -0
  247. package/build/branded/Branded.d.ts.map +1 -0
  248. package/build/branded/Branded.js +2 -0
  249. package/build/branded/Branded.js.map +1 -0
  250. package/build/buffer/BinaryReader.d.ts +121 -2
  251. package/build/buffer/BinaryReader.d.ts.map +1 -0
  252. package/build/buffer/BinaryReader.js +129 -5
  253. package/build/buffer/BinaryReader.js.map +1 -0
  254. package/build/buffer/BinaryWriter.d.ts +52 -2
  255. package/build/buffer/BinaryWriter.d.ts.map +1 -0
  256. package/build/buffer/BinaryWriter.js +62 -2
  257. package/build/buffer/BinaryWriter.js.map +1 -0
  258. package/build/bytecode/Compressor.d.ts +12 -0
  259. package/build/bytecode/Compressor.d.ts.map +1 -0
  260. package/build/bytecode/Compressor.js +17 -5
  261. package/build/bytecode/Compressor.js.map +1 -0
  262. package/build/chain/ChainData.d.ts +2 -2
  263. package/build/chain/ChainData.d.ts.map +1 -0
  264. package/build/chain/ChainData.js +37 -16
  265. package/build/chain/ChainData.js.map +1 -0
  266. package/build/consensus/Consensus.d.ts +11 -3
  267. package/build/consensus/Consensus.d.ts.map +1 -0
  268. package/build/consensus/Consensus.js +8 -0
  269. package/build/consensus/Consensus.js.map +1 -0
  270. package/build/consensus/ConsensusConfig.d.ts +2 -1
  271. package/build/consensus/ConsensusConfig.d.ts.map +1 -0
  272. package/build/consensus/ConsensusConfig.js +1 -0
  273. package/build/consensus/ConsensusConfig.js.map +1 -0
  274. package/build/consensus/IConsensusConfig.d.ts +1 -0
  275. package/build/consensus/IConsensusConfig.d.ts.map +1 -0
  276. package/build/consensus/IConsensusConfig.js +2 -1
  277. package/build/consensus/IConsensusConfig.js.map +1 -0
  278. package/build/consensus/metadata/RoswellConsensus.d.ts +2 -1
  279. package/build/consensus/metadata/RoswellConsensus.d.ts.map +1 -0
  280. package/build/consensus/metadata/RoswellConsensus.js +2 -0
  281. package/build/consensus/metadata/RoswellConsensus.js.map +1 -0
  282. package/build/crypto/crypto.d.ts +1 -0
  283. package/build/crypto/crypto.d.ts.map +1 -0
  284. package/build/crypto/crypto.js +1 -0
  285. package/build/crypto/crypto.js.map +1 -0
  286. package/build/deterministic/AddressMap.d.ts +6 -1
  287. package/build/deterministic/AddressMap.d.ts.map +1 -0
  288. package/build/deterministic/AddressMap.js +8 -0
  289. package/build/deterministic/AddressMap.js.map +1 -0
  290. package/build/deterministic/AddressSet.d.ts +3 -1
  291. package/build/deterministic/AddressSet.d.ts.map +1 -0
  292. package/build/deterministic/AddressSet.js +7 -0
  293. package/build/deterministic/AddressSet.js.map +1 -0
  294. package/build/deterministic/CustomMap.d.ts +3 -1
  295. package/build/deterministic/CustomMap.d.ts.map +1 -0
  296. package/build/deterministic/CustomMap.js +65 -47
  297. package/build/deterministic/CustomMap.js.map +1 -0
  298. package/build/deterministic/DeterministicMap.d.ts +4 -2
  299. package/build/deterministic/DeterministicMap.d.ts.map +1 -0
  300. package/build/deterministic/DeterministicMap.js +24 -27
  301. package/build/deterministic/DeterministicMap.js.map +1 -0
  302. package/build/deterministic/DeterministicSet.d.ts +3 -1
  303. package/build/deterministic/DeterministicSet.d.ts.map +1 -0
  304. package/build/deterministic/DeterministicSet.js +6 -0
  305. package/build/deterministic/DeterministicSet.js.map +1 -0
  306. package/build/deterministic/ExtendedAddressMap.d.ts +7 -1
  307. package/build/deterministic/ExtendedAddressMap.d.ts.map +1 -0
  308. package/build/deterministic/ExtendedAddressMap.js +18 -2
  309. package/build/deterministic/ExtendedAddressMap.js.map +1 -0
  310. package/build/deterministic/FastMap.d.ts +7 -1
  311. package/build/deterministic/FastMap.d.ts.map +1 -0
  312. package/build/deterministic/FastMap.js +7 -2
  313. package/build/deterministic/FastMap.js.map +1 -0
  314. package/build/ecc/backend.d.ts +13 -0
  315. package/build/ecc/backend.d.ts.map +1 -0
  316. package/build/ecc/backend.js +15 -0
  317. package/build/ecc/backend.js.map +1 -0
  318. package/build/epoch/ChallengeSolution.d.ts +34 -2
  319. package/build/epoch/ChallengeSolution.d.ts.map +1 -0
  320. package/build/epoch/ChallengeSolution.js +52 -0
  321. package/build/epoch/ChallengeSolution.js.map +1 -0
  322. package/build/epoch/interfaces/IChallengeSolution.d.ts +14 -13
  323. package/build/epoch/interfaces/IChallengeSolution.d.ts.map +1 -0
  324. package/build/epoch/interfaces/IChallengeSolution.js +2 -1
  325. package/build/epoch/interfaces/IChallengeSolution.js.map +1 -0
  326. package/build/epoch/validator/EpochValidator.d.ts +38 -8
  327. package/build/epoch/validator/EpochValidator.d.ts.map +1 -0
  328. package/build/epoch/validator/EpochValidator.js +45 -19
  329. package/build/epoch/validator/EpochValidator.js.map +1 -0
  330. package/build/event/NetEvent.d.ts +1 -0
  331. package/build/event/NetEvent.d.ts.map +1 -0
  332. package/build/event/NetEvent.js +3 -0
  333. package/build/event/NetEvent.js.map +1 -0
  334. package/build/generators/AddressGenerator.d.ts +4 -3
  335. package/build/generators/AddressGenerator.d.ts.map +1 -0
  336. package/build/generators/AddressGenerator.js +9 -4
  337. package/build/generators/AddressGenerator.js.map +1 -0
  338. package/build/generators/Features.d.ts +4 -3
  339. package/build/generators/Features.d.ts.map +1 -0
  340. package/build/generators/Features.js +1 -0
  341. package/build/generators/Features.js.map +1 -0
  342. package/build/generators/Generator.d.ts +47 -11
  343. package/build/generators/Generator.d.ts.map +1 -0
  344. package/build/generators/Generator.js +48 -12
  345. package/build/generators/Generator.js.map +1 -0
  346. package/build/generators/MLDSAData.d.ts +1 -0
  347. package/build/generators/MLDSAData.d.ts.map +1 -0
  348. package/build/generators/MLDSAData.js +1 -0
  349. package/build/generators/MLDSAData.js.map +1 -0
  350. package/build/generators/builders/CalldataGenerator.d.ts +27 -6
  351. package/build/generators/builders/CalldataGenerator.d.ts.map +1 -0
  352. package/build/generators/builders/CalldataGenerator.js +33 -4
  353. package/build/generators/builders/CalldataGenerator.js.map +1 -0
  354. package/build/generators/builders/CustomGenerator.d.ts +13 -3
  355. package/build/generators/builders/CustomGenerator.d.ts.map +1 -0
  356. package/build/generators/builders/CustomGenerator.js +11 -0
  357. package/build/generators/builders/CustomGenerator.js.map +1 -0
  358. package/build/generators/builders/DeploymentGenerator.d.ts +17 -6
  359. package/build/generators/builders/DeploymentGenerator.d.ts.map +1 -0
  360. package/build/generators/builders/DeploymentGenerator.js +18 -2
  361. package/build/generators/builders/DeploymentGenerator.js.map +1 -0
  362. package/build/generators/builders/HashCommitmentGenerator.d.ts +166 -14
  363. package/build/generators/builders/HashCommitmentGenerator.d.ts.map +1 -0
  364. package/build/generators/builders/HashCommitmentGenerator.js +193 -27
  365. package/build/generators/builders/HashCommitmentGenerator.js.map +1 -0
  366. package/build/generators/builders/LegacyCalldataGenerator.d.ts +27 -5
  367. package/build/generators/builders/LegacyCalldataGenerator.d.ts.map +1 -0
  368. package/build/generators/builders/LegacyCalldataGenerator.js +35 -5
  369. package/build/generators/builders/LegacyCalldataGenerator.js.map +1 -0
  370. package/build/generators/builders/MultiSignGenerator.d.ts +6 -1
  371. package/build/generators/builders/MultiSignGenerator.d.ts.map +1 -0
  372. package/build/generators/builders/MultiSignGenerator.js +20 -10
  373. package/build/generators/builders/MultiSignGenerator.js.map +1 -0
  374. package/build/generators/builders/P2WDAGenerator.d.ts +44 -6
  375. package/build/generators/builders/P2WDAGenerator.d.ts.map +1 -0
  376. package/build/generators/builders/P2WDAGenerator.js +41 -2
  377. package/build/generators/builders/P2WDAGenerator.js.map +1 -0
  378. package/build/index.d.ts +1 -0
  379. package/build/index.d.ts.map +1 -0
  380. package/build/index.js +1 -0
  381. package/build/index.js.map +1 -0
  382. package/build/keypair/Address.d.ts +284 -14
  383. package/build/keypair/Address.d.ts.map +1 -0
  384. package/build/keypair/Address.js +447 -129
  385. package/build/keypair/Address.js.map +1 -0
  386. package/build/keypair/AddressVerificator.d.ts +7 -6
  387. package/build/keypair/AddressVerificator.d.ts.map +1 -0
  388. package/build/keypair/AddressVerificator.js +4 -5
  389. package/build/keypair/AddressVerificator.js.map +1 -0
  390. package/build/keypair/EcKeyPair.d.ts +185 -22
  391. package/build/keypair/EcKeyPair.d.ts.map +1 -0
  392. package/build/keypair/EcKeyPair.js +226 -49
  393. package/build/keypair/EcKeyPair.js.map +1 -0
  394. package/build/keypair/MessageSigner.d.ts +18 -17
  395. package/build/keypair/MessageSigner.d.ts.map +1 -0
  396. package/build/keypair/MessageSigner.js +34 -25
  397. package/build/keypair/MessageSigner.js.map +1 -0
  398. package/build/keypair/Secp256k1PointDeriver.d.ts +55 -0
  399. package/build/keypair/Secp256k1PointDeriver.d.ts.map +1 -0
  400. package/build/keypair/Secp256k1PointDeriver.js +66 -0
  401. package/build/keypair/Secp256k1PointDeriver.js.map +1 -0
  402. package/build/keypair/Wallet.d.ts +29 -15
  403. package/build/keypair/Wallet.d.ts.map +1 -0
  404. package/build/keypair/Wallet.js +46 -14
  405. package/build/keypair/Wallet.js.map +1 -0
  406. package/build/keypair/interfaces/IWallet.d.ts +19 -0
  407. package/build/keypair/interfaces/IWallet.d.ts.map +1 -0
  408. package/build/keypair/interfaces/IWallet.js +1 -0
  409. package/build/keypair/interfaces/IWallet.js.map +1 -0
  410. package/build/metadata/ContractBaseMetadata.d.ts +10 -2
  411. package/build/metadata/ContractBaseMetadata.d.ts.map +1 -0
  412. package/build/metadata/ContractBaseMetadata.js +10 -1
  413. package/build/metadata/ContractBaseMetadata.js.map +1 -0
  414. package/build/mnemonic/BIPStandard.d.ts +59 -0
  415. package/build/mnemonic/BIPStandard.d.ts.map +1 -0
  416. package/build/mnemonic/BIPStandard.js +59 -0
  417. package/build/mnemonic/BIPStandard.js.map +1 -0
  418. package/build/mnemonic/Mnemonic.d.ts +16 -4
  419. package/build/mnemonic/Mnemonic.d.ts.map +1 -0
  420. package/build/mnemonic/Mnemonic.js +35 -8
  421. package/build/mnemonic/Mnemonic.js.map +1 -0
  422. package/build/mnemonic/MnemonicStrength.d.ts +6 -0
  423. package/build/mnemonic/MnemonicStrength.d.ts.map +1 -0
  424. package/build/mnemonic/MnemonicStrength.js +6 -0
  425. package/build/mnemonic/MnemonicStrength.js.map +1 -0
  426. package/build/network/ChainId.d.ts +1 -0
  427. package/build/network/ChainId.d.ts.map +1 -0
  428. package/build/network/ChainId.js +1 -0
  429. package/build/network/ChainId.js.map +1 -0
  430. package/build/opnet.d.ts +29 -3
  431. package/build/opnet.d.ts.map +1 -0
  432. package/build/opnet.js +26 -0
  433. package/build/opnet.js.map +1 -0
  434. package/build/p2wda/P2WDADetector.d.ts +38 -11
  435. package/build/p2wda/P2WDADetector.d.ts.map +1 -0
  436. package/build/p2wda/P2WDADetector.js +43 -10
  437. package/build/p2wda/P2WDADetector.js.map +1 -0
  438. package/build/polyfill/disposable.d.ts +16 -0
  439. package/build/polyfill/disposable.d.ts.map +1 -0
  440. package/build/polyfill/disposable.js +23 -0
  441. package/build/polyfill/disposable.js.map +1 -0
  442. package/build/signer/AddressRotation.d.ts +37 -1
  443. package/build/signer/AddressRotation.d.ts.map +1 -0
  444. package/build/signer/AddressRotation.js +16 -0
  445. package/build/signer/AddressRotation.js.map +1 -0
  446. package/build/signer/IRotationSigner.d.ts +27 -3
  447. package/build/signer/IRotationSigner.d.ts.map +1 -0
  448. package/build/signer/IRotationSigner.js +2 -1
  449. package/build/signer/IRotationSigner.js.map +1 -0
  450. package/build/signer/ParallelSignerAdapter.d.ts +14 -0
  451. package/build/signer/ParallelSignerAdapter.d.ts.map +1 -0
  452. package/build/signer/ParallelSignerAdapter.js +51 -0
  453. package/build/signer/ParallelSignerAdapter.js.map +1 -0
  454. package/build/signer/SignerUtils.d.ts +11 -4
  455. package/build/signer/SignerUtils.d.ts.map +1 -0
  456. package/build/signer/SignerUtils.js +16 -0
  457. package/build/signer/SignerUtils.js.map +1 -0
  458. package/build/signer/TweakedSigner.d.ts +28 -4
  459. package/build/signer/TweakedSigner.d.ts.map +1 -0
  460. package/build/signer/TweakedSigner.js +23 -6
  461. package/build/signer/TweakedSigner.js.map +1 -0
  462. package/build/transaction/ContractAddress.d.ts +2 -2
  463. package/build/transaction/ContractAddress.d.ts.map +1 -0
  464. package/build/transaction/ContractAddress.js +4 -8
  465. package/build/transaction/ContractAddress.js.map +1 -0
  466. package/build/transaction/TransactionFactory.d.ts +147 -9
  467. package/build/transaction/TransactionFactory.d.ts.map +1 -0
  468. package/build/transaction/TransactionFactory.js +145 -26
  469. package/build/transaction/TransactionFactory.js.map +1 -0
  470. package/build/transaction/browser/BrowserSignerBase.d.ts +12 -6
  471. package/build/transaction/browser/BrowserSignerBase.d.ts.map +1 -0
  472. package/build/transaction/browser/BrowserSignerBase.js +7 -0
  473. package/build/transaction/browser/BrowserSignerBase.js.map +1 -0
  474. package/build/transaction/browser/WalletNetworks.d.ts +1 -0
  475. package/build/transaction/browser/WalletNetworks.d.ts.map +1 -0
  476. package/build/transaction/browser/WalletNetworks.js +1 -0
  477. package/build/transaction/browser/WalletNetworks.js.map +1 -0
  478. package/build/transaction/browser/Web3Provider.d.ts +30 -3
  479. package/build/transaction/browser/Web3Provider.d.ts.map +1 -0
  480. package/build/transaction/browser/Web3Provider.js +1 -0
  481. package/build/transaction/browser/Web3Provider.js.map +1 -0
  482. package/build/transaction/browser/extensions/UnisatSigner.d.ts +11 -9
  483. package/build/transaction/browser/extensions/UnisatSigner.d.ts.map +1 -0
  484. package/build/transaction/browser/extensions/UnisatSigner.js +27 -17
  485. package/build/transaction/browser/extensions/UnisatSigner.js.map +1 -0
  486. package/build/transaction/browser/extensions/XverseSigner.d.ts +10 -8
  487. package/build/transaction/browser/extensions/XverseSigner.d.ts.map +1 -0
  488. package/build/transaction/browser/extensions/XverseSigner.js +25 -15
  489. package/build/transaction/browser/extensions/XverseSigner.js.map +1 -0
  490. package/build/transaction/browser/types/OPWallet.d.ts +12 -2
  491. package/build/transaction/browser/types/OPWallet.d.ts.map +1 -0
  492. package/build/transaction/browser/types/OPWallet.js +4 -0
  493. package/build/transaction/browser/types/OPWallet.js.map +1 -0
  494. package/build/transaction/browser/types/Unisat.d.ts +2 -1
  495. package/build/transaction/browser/types/Unisat.d.ts.map +1 -0
  496. package/build/transaction/browser/types/Unisat.js +2 -0
  497. package/build/transaction/browser/types/Unisat.js.map +1 -0
  498. package/build/transaction/browser/types/Xverse.d.ts +1 -0
  499. package/build/transaction/browser/types/Xverse.d.ts.map +1 -0
  500. package/build/transaction/browser/types/Xverse.js +1 -0
  501. package/build/transaction/browser/types/Xverse.js.map +1 -0
  502. package/build/transaction/builders/CancelTransaction.d.ts +31 -6
  503. package/build/transaction/builders/CancelTransaction.d.ts.map +1 -0
  504. package/build/transaction/builders/CancelTransaction.js +116 -33
  505. package/build/transaction/builders/CancelTransaction.js.map +1 -0
  506. package/build/transaction/builders/ChallengeSolutionTransaction.d.ts +1 -0
  507. package/build/transaction/builders/ChallengeSolutionTransaction.d.ts.map +1 -0
  508. package/build/transaction/builders/ChallengeSolutionTransaction.js +88 -0
  509. package/build/transaction/builders/ChallengeSolutionTransaction.js.map +1 -0
  510. package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts +140 -13
  511. package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +1 -0
  512. package/build/transaction/builders/ConsolidatedInteractionTransaction.js +197 -20
  513. package/build/transaction/builders/ConsolidatedInteractionTransaction.js.map +1 -0
  514. package/build/transaction/builders/CustomScriptTransaction.d.ts +108 -8
  515. package/build/transaction/builders/CustomScriptTransaction.d.ts.map +1 -0
  516. package/build/transaction/builders/CustomScriptTransaction.js +176 -39
  517. package/build/transaction/builders/CustomScriptTransaction.js.map +1 -0
  518. package/build/transaction/builders/DeploymentTransaction.d.ts +120 -9
  519. package/build/transaction/builders/DeploymentTransaction.d.ts.map +1 -0
  520. package/build/transaction/builders/DeploymentTransaction.js +194 -51
  521. package/build/transaction/builders/DeploymentTransaction.js.map +1 -0
  522. package/build/transaction/builders/FundingTransaction.d.ts +6 -4
  523. package/build/transaction/builders/FundingTransaction.d.ts.map +1 -0
  524. package/build/transaction/builders/FundingTransaction.js +50 -9
  525. package/build/transaction/builders/FundingTransaction.js.map +1 -0
  526. package/build/transaction/builders/InteractionTransaction.d.ts +14 -5
  527. package/build/transaction/builders/InteractionTransaction.d.ts.map +1 -0
  528. package/build/transaction/builders/InteractionTransaction.js +18 -5
  529. package/build/transaction/builders/InteractionTransaction.js.map +1 -0
  530. package/build/transaction/builders/InteractionTransactionP2WDA.d.ts +58 -7
  531. package/build/transaction/builders/InteractionTransactionP2WDA.d.ts.map +1 -0
  532. package/build/transaction/builders/InteractionTransactionP2WDA.js +95 -18
  533. package/build/transaction/builders/InteractionTransactionP2WDA.js.map +1 -0
  534. package/build/transaction/builders/MultiSignTransaction.d.ts +126 -17
  535. package/build/transaction/builders/MultiSignTransaction.d.ts.map +1 -0
  536. package/build/transaction/builders/MultiSignTransaction.js +201 -76
  537. package/build/transaction/builders/MultiSignTransaction.js.map +1 -0
  538. package/build/transaction/builders/SharedInteractionTransaction.d.ts +106 -18
  539. package/build/transaction/builders/SharedInteractionTransaction.d.ts.map +1 -0
  540. package/build/transaction/builders/SharedInteractionTransaction.js +158 -40
  541. package/build/transaction/builders/SharedInteractionTransaction.js.map +1 -0
  542. package/build/transaction/builders/TransactionBuilder.d.ts +244 -20
  543. package/build/transaction/builders/TransactionBuilder.d.ts.map +1 -0
  544. package/build/transaction/builders/TransactionBuilder.js +371 -152
  545. package/build/transaction/builders/TransactionBuilder.js.map +1 -0
  546. package/build/transaction/enums/TransactionType.d.ts +1 -0
  547. package/build/transaction/enums/TransactionType.d.ts.map +1 -0
  548. package/build/transaction/enums/TransactionType.js +1 -0
  549. package/build/transaction/enums/TransactionType.js.map +1 -0
  550. package/build/transaction/interfaces/ICancelTransactionParameters.d.ts +3 -2
  551. package/build/transaction/interfaces/ICancelTransactionParameters.d.ts.map +1 -0
  552. package/build/transaction/interfaces/ICancelTransactionParameters.js +1 -0
  553. package/build/transaction/interfaces/ICancelTransactionParameters.js.map +1 -0
  554. package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +48 -5
  555. package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +1 -0
  556. package/build/transaction/interfaces/IConsolidatedTransactionParameters.js +1 -0
  557. package/build/transaction/interfaces/IConsolidatedTransactionParameters.js.map +1 -0
  558. package/build/transaction/interfaces/ICustomTransactionParameters.d.ts +7 -5
  559. package/build/transaction/interfaces/ICustomTransactionParameters.d.ts.map +1 -0
  560. package/build/transaction/interfaces/ICustomTransactionParameters.js +1 -0
  561. package/build/transaction/interfaces/ICustomTransactionParameters.js.map +1 -0
  562. package/build/transaction/interfaces/ITransactionParameters.d.ts +38 -15
  563. package/build/transaction/interfaces/ITransactionParameters.d.ts.map +1 -0
  564. package/build/transaction/interfaces/ITransactionParameters.js +1 -0
  565. package/build/transaction/interfaces/ITransactionParameters.js.map +1 -0
  566. package/build/transaction/interfaces/ITransactionResponses.d.ts +3 -2
  567. package/build/transaction/interfaces/ITransactionResponses.d.ts.map +1 -0
  568. package/build/transaction/interfaces/ITransactionResponses.js +1 -0
  569. package/build/transaction/interfaces/ITransactionResponses.js.map +1 -0
  570. package/build/transaction/interfaces/ITweakedTransactionData.d.ts +21 -8
  571. package/build/transaction/interfaces/ITweakedTransactionData.d.ts.map +1 -0
  572. package/build/transaction/interfaces/ITweakedTransactionData.js +1 -0
  573. package/build/transaction/interfaces/ITweakedTransactionData.js.map +1 -0
  574. package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts +29 -3
  575. package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +1 -0
  576. package/build/transaction/interfaces/IWeb3ProviderTypes.js +2 -1
  577. package/build/transaction/interfaces/IWeb3ProviderTypes.js.map +1 -0
  578. package/build/transaction/interfaces/Tap.d.ts +4 -3
  579. package/build/transaction/interfaces/Tap.d.ts.map +1 -0
  580. package/build/transaction/interfaces/Tap.js +1 -0
  581. package/build/transaction/interfaces/Tap.js.map +1 -0
  582. package/build/transaction/mineable/IP2WSHAddress.d.ts +2 -1
  583. package/build/transaction/mineable/IP2WSHAddress.d.ts.map +1 -0
  584. package/build/transaction/mineable/IP2WSHAddress.js +1 -0
  585. package/build/transaction/mineable/IP2WSHAddress.js.map +1 -0
  586. package/build/transaction/mineable/TimelockGenerator.d.ts +13 -4
  587. package/build/transaction/mineable/TimelockGenerator.d.ts.map +1 -0
  588. package/build/transaction/mineable/TimelockGenerator.js +12 -3
  589. package/build/transaction/mineable/TimelockGenerator.js.map +1 -0
  590. package/build/transaction/offline/OfflineTransactionManager.d.ts +193 -12
  591. package/build/transaction/offline/OfflineTransactionManager.d.ts.map +1 -0
  592. package/build/transaction/offline/OfflineTransactionManager.js +192 -8
  593. package/build/transaction/offline/OfflineTransactionManager.js.map +1 -0
  594. package/build/transaction/offline/TransactionReconstructor.d.ts +56 -6
  595. package/build/transaction/offline/TransactionReconstructor.d.ts.map +1 -0
  596. package/build/transaction/offline/TransactionReconstructor.js +111 -75
  597. package/build/transaction/offline/TransactionReconstructor.js.map +1 -0
  598. package/build/transaction/offline/TransactionSerializer.d.ts +54 -3
  599. package/build/transaction/offline/TransactionSerializer.d.ts.map +1 -0
  600. package/build/transaction/offline/TransactionSerializer.js +206 -95
  601. package/build/transaction/offline/TransactionSerializer.js.map +1 -0
  602. package/build/transaction/offline/TransactionStateCapture.d.ts +66 -7
  603. package/build/transaction/offline/TransactionStateCapture.d.ts.map +1 -0
  604. package/build/transaction/offline/TransactionStateCapture.js +124 -60
  605. package/build/transaction/offline/TransactionStateCapture.js.map +1 -0
  606. package/build/transaction/offline/interfaces/ISerializableState.d.ts +72 -1
  607. package/build/transaction/offline/interfaces/ISerializableState.d.ts.map +1 -0
  608. package/build/transaction/offline/interfaces/ISerializableState.js +10 -1
  609. package/build/transaction/offline/interfaces/ISerializableState.js.map +1 -0
  610. package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts +77 -1
  611. package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +1 -0
  612. package/build/transaction/offline/interfaces/ITypeSpecificData.js +19 -0
  613. package/build/transaction/offline/interfaces/ITypeSpecificData.js.map +1 -0
  614. package/build/transaction/psbt/PSBTTypes.d.ts +1 -0
  615. package/build/transaction/psbt/PSBTTypes.d.ts.map +1 -0
  616. package/build/transaction/psbt/PSBTTypes.js +1 -0
  617. package/build/transaction/psbt/PSBTTypes.js.map +1 -0
  618. package/build/transaction/shared/P2TR_MS.d.ts +11 -2
  619. package/build/transaction/shared/P2TR_MS.d.ts.map +1 -0
  620. package/build/transaction/shared/P2TR_MS.js +10 -0
  621. package/build/transaction/shared/P2TR_MS.js.map +1 -0
  622. package/build/transaction/shared/TweakedTransaction.d.ts +280 -38
  623. package/build/transaction/shared/TweakedTransaction.d.ts.map +1 -0
  624. package/build/transaction/shared/TweakedTransaction.js +576 -114
  625. package/build/transaction/shared/TweakedTransaction.js.map +1 -0
  626. package/build/transaction/utils/WitnessUtils.d.ts +7 -1
  627. package/build/transaction/utils/WitnessUtils.d.ts.map +1 -0
  628. package/build/transaction/utils/WitnessUtils.js +17 -3
  629. package/build/transaction/utils/WitnessUtils.js.map +1 -0
  630. package/build/tsconfig.build.tsbuildinfo +1 -1
  631. package/build/utils/BitcoinUtils.d.ts +19 -0
  632. package/build/utils/BitcoinUtils.d.ts.map +1 -0
  633. package/build/utils/BitcoinUtils.js +19 -0
  634. package/build/utils/BitcoinUtils.js.map +1 -0
  635. package/build/utils/BufferHelper.d.ts +2 -1
  636. package/build/utils/BufferHelper.d.ts.map +1 -0
  637. package/build/utils/BufferHelper.js +38 -32
  638. package/build/utils/BufferHelper.js.map +1 -0
  639. package/build/utils/StringToBuffer.d.ts +1 -0
  640. package/build/utils/StringToBuffer.d.ts.map +1 -0
  641. package/build/utils/StringToBuffer.js +1 -0
  642. package/build/utils/StringToBuffer.js.map +1 -0
  643. package/build/utils/lengths.d.ts +1 -0
  644. package/build/utils/lengths.d.ts.map +1 -0
  645. package/build/utils/lengths.js +1 -0
  646. package/build/utils/lengths.js.map +1 -0
  647. package/build/utils/types.d.ts +1 -0
  648. package/build/utils/types.d.ts.map +1 -0
  649. package/build/utils/types.js +2 -1
  650. package/build/utils/types.js.map +1 -0
  651. package/build/utxo/OPNetLimitedProvider.d.ts +39 -3
  652. package/build/utxo/OPNetLimitedProvider.d.ts.map +1 -0
  653. package/build/utxo/OPNetLimitedProvider.js +43 -5
  654. package/build/utxo/OPNetLimitedProvider.js.map +1 -0
  655. package/build/utxo/interfaces/BroadcastResponse.d.ts +1 -0
  656. package/build/utxo/interfaces/BroadcastResponse.d.ts.map +1 -0
  657. package/build/utxo/interfaces/BroadcastResponse.js +1 -0
  658. package/build/utxo/interfaces/BroadcastResponse.js.map +1 -0
  659. package/build/utxo/interfaces/IUTXO.d.ts +13 -7
  660. package/build/utxo/interfaces/IUTXO.d.ts.map +1 -0
  661. package/build/utxo/interfaces/IUTXO.js +1 -0
  662. package/build/utxo/interfaces/IUTXO.js.map +1 -0
  663. package/build/verification/TapscriptVerificator.d.ts +12 -10
  664. package/build/verification/TapscriptVerificator.d.ts.map +1 -0
  665. package/build/verification/TapscriptVerificator.js +28 -38
  666. package/build/verification/TapscriptVerificator.js.map +1 -0
  667. package/documentation/offline-transaction-signing.md +10 -8
  668. package/documentation/quantum-support/01-introduction.md +2 -2
  669. package/documentation/quantum-support/02-mnemonic-and-wallet.md +5 -3
  670. package/documentation/quantum-support/03-address-generation.md +6 -4
  671. package/documentation/quantum-support/04-message-signing.md +36 -43
  672. package/documentation/quantum-support/05-address-verification.md +13 -18
  673. package/documentation/quantum-support/README.md +1 -1
  674. package/documentation/transaction-building.md +9 -9
  675. package/eslint.config.js +0 -1
  676. package/package.json +16 -39
  677. package/src/_version.ts +1 -1
  678. package/src/abi/ABICoder.ts +131 -154
  679. package/src/abi/ABIDataTypes.ts +45 -0
  680. package/src/abi/AbiTypes.ts +183 -0
  681. package/src/abi/TupleUtils.ts +57 -0
  682. package/src/branded/Branded.ts +5 -0
  683. package/src/buffer/BinaryReader.ts +7 -7
  684. package/src/buffer/BinaryWriter.ts +29 -24
  685. package/src/bytecode/Compressor.ts +1 -1
  686. package/src/chain/ChainData.ts +36 -25
  687. package/src/consensus/ConsensusConfig.ts +1 -1
  688. package/src/consensus/IConsensusConfig.ts +0 -17
  689. package/src/consensus/metadata/RoswellConsensus.ts +1 -17
  690. package/src/crypto/crypto-browser.js +3 -4
  691. package/src/deterministic/AddressMap.ts +5 -1
  692. package/src/deterministic/AddressSet.ts +5 -1
  693. package/src/deterministic/CustomMap.ts +6 -2
  694. package/src/deterministic/DeterministicMap.ts +8 -4
  695. package/src/deterministic/DeterministicSet.ts +6 -2
  696. package/src/deterministic/ExtendedAddressMap.ts +9 -4
  697. package/src/deterministic/FastMap.ts +9 -5
  698. package/src/ecc/backend.ts +17 -0
  699. package/src/epoch/ChallengeSolution.ts +3 -3
  700. package/src/epoch/interfaces/IChallengeSolution.ts +13 -13
  701. package/src/epoch/validator/EpochValidator.ts +24 -43
  702. package/src/generators/AddressGenerator.ts +4 -7
  703. package/src/generators/Features.ts +3 -3
  704. package/src/generators/Generator.ts +42 -26
  705. package/src/generators/builders/CalldataGenerator.ts +26 -24
  706. package/src/generators/builders/CustomGenerator.ts +4 -4
  707. package/src/generators/builders/DeploymentGenerator.ts +25 -23
  708. package/src/generators/builders/HashCommitmentGenerator.ts +31 -31
  709. package/src/generators/builders/LegacyCalldataGenerator.ts +26 -24
  710. package/src/generators/builders/MultiSignGenerator.ts +12 -12
  711. package/src/generators/builders/P2WDAGenerator.ts +10 -10
  712. package/src/keypair/Address.ts +115 -72
  713. package/src/keypair/AddressVerificator.ts +14 -148
  714. package/src/keypair/EcKeyPair.ts +110 -111
  715. package/src/keypair/MessageSigner.ts +70 -150
  716. package/src/keypair/Wallet.ts +56 -241
  717. package/src/metadata/ContractBaseMetadata.ts +2 -2
  718. package/src/mnemonic/Mnemonic.ts +31 -222
  719. package/src/opnet.ts +15 -6
  720. package/src/p2wda/P2WDADetector.ts +23 -72
  721. package/src/polyfill/disposable.ts +29 -0
  722. package/src/signer/AddressRotation.ts +1 -1
  723. package/src/signer/IRotationSigner.ts +3 -3
  724. package/src/signer/ParallelSignerAdapter.ts +59 -0
  725. package/src/signer/SignerUtils.ts +4 -4
  726. package/src/signer/TweakedSigner.ts +26 -14
  727. package/src/transaction/ContractAddress.ts +3 -7
  728. package/src/transaction/TransactionFactory.ts +38 -53
  729. package/src/transaction/browser/BrowserSignerBase.ts +12 -6
  730. package/src/transaction/browser/Web3Provider.ts +3 -3
  731. package/src/transaction/browser/extensions/UnisatSigner.ts +52 -48
  732. package/src/transaction/browser/extensions/XverseSigner.ts +55 -38
  733. package/src/transaction/browser/types/OPWallet.ts +2 -2
  734. package/src/transaction/browser/types/Unisat.ts +1 -1
  735. package/src/transaction/builders/CancelTransaction.ts +59 -24
  736. package/src/transaction/builders/ChallengeSolutionTransaction.ts +3 -3
  737. package/src/transaction/builders/ConsolidatedInteractionTransaction.ts +39 -34
  738. package/src/transaction/builders/CustomScriptTransaction.ts +79 -56
  739. package/src/transaction/builders/DeploymentTransaction.ts +82 -63
  740. package/src/transaction/builders/FundingTransaction.ts +53 -12
  741. package/src/transaction/builders/InteractionTransaction.ts +10 -10
  742. package/src/transaction/builders/InteractionTransactionP2WDA.ts +38 -40
  743. package/src/transaction/builders/MultiSignTransaction.ts +68 -61
  744. package/src/transaction/builders/SharedInteractionTransaction.ts +81 -57
  745. package/src/transaction/builders/TransactionBuilder.ts +159 -255
  746. package/src/transaction/interfaces/ICancelTransactionParameters.ts +2 -2
  747. package/src/transaction/interfaces/IConsolidatedTransactionParameters.ts +5 -5
  748. package/src/transaction/interfaces/ICustomTransactionParameters.ts +5 -5
  749. package/src/transaction/interfaces/ITransactionParameters.ts +28 -15
  750. package/src/transaction/interfaces/ITransactionResponses.ts +2 -2
  751. package/src/transaction/interfaces/ITweakedTransactionData.ts +17 -8
  752. package/src/transaction/interfaces/IWeb3ProviderTypes.ts +3 -3
  753. package/src/transaction/interfaces/Tap.ts +3 -3
  754. package/src/transaction/mineable/IP2WSHAddress.ts +1 -1
  755. package/src/transaction/mineable/TimelockGenerator.ts +19 -12
  756. package/src/transaction/offline/OfflineTransactionManager.ts +22 -23
  757. package/src/transaction/offline/TransactionReconstructor.ts +83 -91
  758. package/src/transaction/offline/TransactionSerializer.ts +151 -101
  759. package/src/transaction/offline/TransactionStateCapture.ts +83 -79
  760. package/src/transaction/offline/interfaces/ISerializableState.ts +1 -1
  761. package/src/transaction/offline/interfaces/ITypeSpecificData.ts +1 -1
  762. package/src/transaction/shared/P2TR_MS.ts +4 -4
  763. package/src/transaction/shared/TweakedTransaction.ts +318 -125
  764. package/src/transaction/utils/WitnessUtils.ts +18 -9
  765. package/src/utils/BufferHelper.ts +39 -37
  766. package/src/utxo/OPNetLimitedProvider.ts +9 -9
  767. package/src/utxo/interfaces/IUTXO.ts +7 -7
  768. package/src/verification/TapscriptVerificator.ts +73 -86
  769. package/test/add-refund-output.test.ts +535 -0
  770. package/test/address-rotation.test.ts +24 -24
  771. package/test/address.test.ts +12 -12
  772. package/test/addressmap.test.ts +30 -30
  773. package/test/binary-reader-writer.test.ts +8 -8
  774. package/test/browser/offline-transaction.test.ts +2206 -0
  775. package/test/browser/parallel-signing.test.ts +316 -0
  776. package/test/browser/setup.ts +11 -0
  777. package/test/browser/transaction-signing.test.ts +416 -0
  778. package/test/buffer-helper.test.ts +287 -0
  779. package/test/derivePath.test.ts +4 -3
  780. package/test/disposable.test.ts +279 -0
  781. package/test/fastmap-setall.test.ts +1 -1
  782. package/test/fastmap.test.ts +3 -3
  783. package/test/messagesigner-mldsa.test.ts +3 -3
  784. package/test/messagesigner-schnorr.test.ts +9 -9
  785. package/test/offline-transaction.test.ts +461 -288
  786. package/test/old/FastBigIntMap.ts +3 -3
  787. package/test/oldfastmap.test.ts +6 -6
  788. package/test/transaction-builders.test.ts +482 -0
  789. package/tsconfig.base.json +34 -18
  790. package/tsconfig.browser.json +15 -0
  791. package/tsconfig.json +3 -8
  792. package/vite.config.browser.ts +4 -5
  793. package/vitest.config.browser.ts +68 -0
  794. package/vitest.config.ts +1 -1
  795. package/browser/valibot.js +0 -4948
  796. package/tsconfig.webpack.json +0 -18
@@ -0,0 +1,535 @@
1
+ import { beforeAll, describe, expect, it } from 'vitest';
2
+ import { networks, opcodes, payments, script, toHex, toXOnly } from '@btc-vision/bitcoin';
3
+ import { type UniversalSigner } from '@btc-vision/ecpair';
4
+ import type { UTXO } from '../build/opnet.js';
5
+ import {
6
+ CancelTransaction,
7
+ FundingTransaction,
8
+ MLDSASecurityLevel,
9
+ Mnemonic,
10
+ TransactionBuilder,
11
+ } from '../build/opnet.js';
12
+
13
+ const network = networks.regtest;
14
+ const testMnemonic =
15
+ 'abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon abandon about';
16
+
17
+ function createTaprootUtxo(
18
+ addr: string,
19
+ value: bigint,
20
+ txId: string = '0'.repeat(64),
21
+ index: number = 0,
22
+ ): UTXO {
23
+ const p2tr = payments.p2tr({ address: addr, network });
24
+ return {
25
+ transactionId: txId,
26
+ outputIndex: index,
27
+ value,
28
+ scriptPubKey: {
29
+ hex: toHex(p2tr.output as Uint8Array),
30
+ address: addr,
31
+ },
32
+ };
33
+ }
34
+
35
+ describe('addRefundOutput , deterministic fee estimation', () => {
36
+ let signer: UniversalSigner;
37
+ let taprootAddress: string;
38
+
39
+ beforeAll(() => {
40
+ const mnemonic = new Mnemonic(testMnemonic, '', network, MLDSASecurityLevel.LEVEL2);
41
+ const wallet = mnemonic.derive(0);
42
+ signer = wallet.keypair;
43
+ taprootAddress = wallet.p2tr;
44
+ });
45
+
46
+ // ----------------------------------------------------------------
47
+ // Helper: build a FundingTransaction and return the signed tx
48
+ // ----------------------------------------------------------------
49
+ function buildFunding(opts: {
50
+ utxoValue: bigint;
51
+ amount: bigint;
52
+ feeRate?: number;
53
+ feeUtxos?: UTXO[];
54
+ autoAdjustAmount?: boolean;
55
+ }) {
56
+ const utxo = createTaprootUtxo(taprootAddress, opts.utxoValue);
57
+ return new FundingTransaction({
58
+ signer,
59
+ network,
60
+ utxos: [utxo],
61
+ to: taprootAddress,
62
+ amount: opts.amount,
63
+ feeRate: opts.feeRate ?? 1,
64
+ priorityFee: 0n,
65
+ gasSatFee: 0n,
66
+ mldsaSigner: null,
67
+ feeUtxos: opts.feeUtxos,
68
+ autoAdjustAmount: opts.autoAdjustAmount,
69
+ });
70
+ }
71
+
72
+ // ================================================================
73
+ // 1-call path: change output IS viable
74
+ // ================================================================
75
+ describe('1-call path (change output viable)', () => {
76
+ it('should produce a change output when plenty of funds remain', async () => {
77
+ const utxoValue = 100_000n;
78
+ const amount = 50_000n;
79
+ const tx = buildFunding({ utxoValue, amount });
80
+
81
+ const signed = await tx.signTransaction();
82
+
83
+ // Must have at least 2 outputs: send + change
84
+ expect(signed.outs.length).toBeGreaterThanOrEqual(2);
85
+
86
+ // Total output value + fee = total input value
87
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
88
+ const fee = utxoValue - totalOut;
89
+ expect(fee).toBeGreaterThan(0n);
90
+ expect(totalOut).toBeLessThan(utxoValue);
91
+ });
92
+
93
+ it('should set transactionFee and overflowFees correctly', async () => {
94
+ const utxoValue = 200_000n;
95
+ const amount = 50_000n;
96
+ const tx = buildFunding({ utxoValue, amount });
97
+
98
+ const signed = await tx.signTransaction();
99
+
100
+ // transactionFee should be positive
101
+ expect(tx.transactionFee).toBeGreaterThan(0n);
102
+
103
+ // overflowFees should be the change amount
104
+ expect(tx.overflowFees).toBeGreaterThan(0n);
105
+
106
+ // overflowFees should be >= MINIMUM_DUST (330n)
107
+ expect(tx.overflowFees).toBeGreaterThanOrEqual(TransactionBuilder.MINIMUM_DUST);
108
+
109
+ // totalInput = amount + overflowFees + transactionFee
110
+ expect(tx.overflowFees + amount + tx.transactionFee).toBe(utxoValue);
111
+ });
112
+
113
+ it('should produce exact change when using multiple UTXOs', async () => {
114
+ const utxo1 = createTaprootUtxo(taprootAddress, 50_000n, '1'.repeat(64), 0);
115
+ const utxo2 = createTaprootUtxo(taprootAddress, 50_000n, '2'.repeat(64), 1);
116
+ const totalInput = 100_000n;
117
+ const amount = 30_000n;
118
+
119
+ const tx = new FundingTransaction({
120
+ signer,
121
+ network,
122
+ utxos: [utxo1, utxo2],
123
+ to: taprootAddress,
124
+ amount,
125
+ feeRate: 1,
126
+ priorityFee: 0n,
127
+ gasSatFee: 0n,
128
+ mldsaSigner: null,
129
+ });
130
+
131
+ const signed = await tx.signTransaction();
132
+
133
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
134
+ const fee = totalInput - totalOut;
135
+
136
+ expect(fee).toBeGreaterThan(0n);
137
+ expect(tx.transactionFee).toBe(fee);
138
+ });
139
+ });
140
+
141
+ // ================================================================
142
+ // 2-call path: change output NOT viable (below dust)
143
+ // ================================================================
144
+ describe('2-call path (no change output)', () => {
145
+ it('should drop the change output when leftover is below dust', async () => {
146
+ // Choose amount so that leftover after fee is < 330 sats
147
+ // With feeRate=1 and a simple 1-in-1-out taproot tx (~110 vbytes),
148
+ // fee ~110 sats. So utxoValue = amount + fee + small_leftover
149
+ // e.g. 50_000 + 110 + 200 = 50_310 → leftover ~200 < 330 dust
150
+ const utxoValue = 50_310n;
151
+ const amount = 50_000n;
152
+ const tx = buildFunding({ utxoValue, amount });
153
+
154
+ const signed = await tx.signTransaction();
155
+
156
+ // Should have only 1 output (the send output, no change)
157
+ expect(signed.outs.length).toBe(1);
158
+
159
+ // The output should be the send amount
160
+ expect(BigInt(signed.outs[0].value)).toBe(amount);
161
+
162
+ // overflowFees should be 0 (no change output)
163
+ expect(tx.overflowFees).toBe(0n);
164
+
165
+ // Fee = all the leftover (absorbed by miner)
166
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
167
+ expect(utxoValue - totalOut).toBeGreaterThan(0n);
168
+ });
169
+
170
+ it('should set transactionFee when there is no change output', async () => {
171
+ const utxoValue = 50_200n;
172
+ const amount = 50_000n;
173
+ const tx = buildFunding({ utxoValue, amount });
174
+
175
+ const signed = await tx.signTransaction();
176
+
177
+ // transactionFee should be set (the estimated fee without change)
178
+ expect(tx.transactionFee).toBeGreaterThan(0n);
179
+ expect(tx.overflowFees).toBe(0n);
180
+
181
+ // Only 1 output
182
+ expect(signed.outs.length).toBe(1);
183
+ });
184
+ });
185
+
186
+ // ================================================================
187
+ // Insufficient funds
188
+ // ================================================================
189
+ describe('insufficient funds', () => {
190
+ it('should throw when amount equals total UTXO value', async () => {
191
+ const utxoValue = 100_000n;
192
+ const tx = buildFunding({ utxoValue, amount: utxoValue });
193
+
194
+ await expect(tx.signTransaction()).rejects.toThrow(/Insufficient funds/);
195
+ });
196
+
197
+ it('should throw when amount exceeds total UTXO value', async () => {
198
+ const utxoValue = 50_000n;
199
+ const tx = buildFunding({ utxoValue, amount: 60_000n });
200
+
201
+ await expect(tx.signTransaction()).rejects.toThrow(/Insufficient funds/);
202
+ });
203
+ });
204
+
205
+ // ================================================================
206
+ // Tolerance: sendBack < 0 but totalInput > amountSpent
207
+ // ================================================================
208
+ describe('tolerance , effective fee is positive but less than estimated', () => {
209
+ it('should succeed when amount is close to totalInput leaving a small effective fee', async () => {
210
+ const utxoValue = 100_000n;
211
+ // Leave 200 sats for fees , less than the estimated fee at high rate
212
+ // but totalInput > amountSpent so it's valid
213
+ const amount = utxoValue - 200n;
214
+
215
+ const tx = buildFunding({ utxoValue, amount, feeRate: 10 });
216
+
217
+ const signed = await tx.signTransaction();
218
+
219
+ expect(signed.ins.length).toBeGreaterThan(0);
220
+ expect(signed.outs.length).toBeGreaterThan(0);
221
+
222
+ // Verify fee is exactly the 200 sats leftover
223
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
224
+ expect(utxoValue - totalOut).toBe(200n);
225
+ });
226
+
227
+ it('should succeed with very small leftover (1 sat) as long as totalInput > amountSpent', async () => {
228
+ const utxoValue = 100_000n;
229
+ const amount = utxoValue - 1n;
230
+
231
+ const tx = buildFunding({ utxoValue, amount, feeRate: 5 });
232
+
233
+ const signed = await tx.signTransaction();
234
+ expect(signed.ins.length).toBeGreaterThan(0);
235
+
236
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
237
+ expect(utxoValue - totalOut).toBe(1n);
238
+ });
239
+ });
240
+
241
+ // ================================================================
242
+ // CancelTransaction (amountSpent = 0n)
243
+ // ================================================================
244
+ describe('CancelTransaction , amountSpent = 0n', () => {
245
+ it('should not throw from addRefundOutput when amountSpent is 0', async () => {
246
+ const utxo = createTaprootUtxo(taprootAddress, 100_000n);
247
+
248
+ const compiledTargetScript = script.compile([
249
+ toXOnly(signer.publicKey),
250
+ opcodes.OP_CHECKSIG,
251
+ ]);
252
+
253
+ const tx = new CancelTransaction({
254
+ signer,
255
+ network,
256
+ utxos: [utxo],
257
+ compiledTargetScript,
258
+ feeRate: 1,
259
+ mldsaSigner: null,
260
+ });
261
+
262
+ const signed = await tx.signTransaction();
263
+
264
+ expect(signed.ins.length).toBeGreaterThan(0);
265
+ expect(signed.outs.length).toBeGreaterThan(0);
266
+ expect(signed.virtualSize()).toBeGreaterThan(0);
267
+ });
268
+
269
+ it('should return all input value minus fee as change', async () => {
270
+ const utxoValue = 100_000n;
271
+ const utxo = createTaprootUtxo(taprootAddress, utxoValue);
272
+
273
+ const compiledTargetScript = script.compile([
274
+ toXOnly(signer.publicKey),
275
+ opcodes.OP_CHECKSIG,
276
+ ]);
277
+
278
+ const tx = new CancelTransaction({
279
+ signer,
280
+ network,
281
+ utxos: [utxo],
282
+ compiledTargetScript,
283
+ feeRate: 1,
284
+ mldsaSigner: null,
285
+ });
286
+
287
+ const signed = await tx.signTransaction();
288
+
289
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
290
+ const fee = utxoValue - totalOut;
291
+
292
+ // Fee should be small relative to total
293
+ expect(fee).toBeGreaterThan(0n);
294
+ expect(fee).toBeLessThan(utxoValue / 2n);
295
+
296
+ // overflowFees should equal the change output
297
+ expect(tx.overflowFees).toBe(totalOut);
298
+ });
299
+
300
+ it('should succeed with high fee rate (cancel is still valid)', async () => {
301
+ const utxo = createTaprootUtxo(taprootAddress, 100_000n);
302
+
303
+ const compiledTargetScript = script.compile([
304
+ toXOnly(signer.publicKey),
305
+ opcodes.OP_CHECKSIG,
306
+ ]);
307
+
308
+ const tx = new CancelTransaction({
309
+ signer,
310
+ network,
311
+ utxos: [utxo],
312
+ compiledTargetScript,
313
+ feeRate: 50,
314
+ mldsaSigner: null,
315
+ });
316
+
317
+ const signed = await tx.signTransaction();
318
+
319
+ expect(signed.ins.length).toBeGreaterThan(0);
320
+ expect(signed.outs.length).toBeGreaterThan(0);
321
+ });
322
+
323
+ it('should throw when expectRefund is true but fees consume all input', async () => {
324
+ // Use a tiny UTXO so that fees eat everything , expectRefund
325
+ // (set by CancelTransaction) must reject this since the user
326
+ // would get nothing back.
327
+ const utxo = createTaprootUtxo(taprootAddress, 500n);
328
+
329
+ const compiledTargetScript = script.compile([
330
+ toXOnly(signer.publicKey),
331
+ opcodes.OP_CHECKSIG,
332
+ ]);
333
+
334
+ const tx = new CancelTransaction({
335
+ signer,
336
+ network,
337
+ utxos: [utxo],
338
+ compiledTargetScript,
339
+ feeRate: 100, // very high fee rate on tiny UTXO
340
+ mldsaSigner: null,
341
+ });
342
+
343
+ await expect(tx.signTransaction()).rejects.toThrow(/Insufficient funds/);
344
+ });
345
+ });
346
+
347
+ // ================================================================
348
+ // feeUtxos , separate fee funding
349
+ // ================================================================
350
+ describe('feeUtxos , separate UTXOs for fees', () => {
351
+ it('should use feeUtxos to cover fees while preserving exact send amount', async () => {
352
+ const utxoValue = 50_000n;
353
+ const feeUtxoValue = 10_000n;
354
+ const amount = 50_000n; // exact match with primary UTXO
355
+
356
+ const feeUtxo = createTaprootUtxo(taprootAddress, feeUtxoValue, 'f'.repeat(64), 0);
357
+
358
+ const tx = buildFunding({
359
+ utxoValue,
360
+ amount,
361
+ feeUtxos: [feeUtxo],
362
+ });
363
+
364
+ const signed = await tx.signTransaction();
365
+
366
+ expect(signed.ins.length).toBe(2); // primary + fee UTXO
367
+
368
+ // The send output should be exactly the requested amount
369
+ const outputValues = signed.outs.map((o) => BigInt(o.value));
370
+ expect(outputValues).toContain(amount);
371
+
372
+ // Total outputs + fee = total inputs
373
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
374
+ const totalIn = utxoValue + feeUtxoValue;
375
+ expect(totalOut + tx.transactionFee).toBeLessThanOrEqual(totalIn);
376
+ });
377
+
378
+ it('should produce a change output from feeUtxos leftover', async () => {
379
+ const utxoValue = 50_000n;
380
+ const feeUtxoValue = 50_000n; // generous fee UTXO
381
+ const amount = 50_000n;
382
+
383
+ const feeUtxo = createTaprootUtxo(taprootAddress, feeUtxoValue, 'f'.repeat(64), 0);
384
+
385
+ const tx = buildFunding({
386
+ utxoValue,
387
+ amount,
388
+ feeUtxos: [feeUtxo],
389
+ });
390
+
391
+ const signed = await tx.signTransaction();
392
+
393
+ // Should have change output from generous feeUtxo
394
+ expect(signed.outs.length).toBeGreaterThanOrEqual(2);
395
+ expect(tx.overflowFees).toBeGreaterThan(0n);
396
+ });
397
+ });
398
+
399
+ // ================================================================
400
+ // Fee rate variations
401
+ // ================================================================
402
+ describe('fee rate variations', () => {
403
+ it('should produce higher fees with higher fee rates', async () => {
404
+ const utxoValue = 200_000n;
405
+ const amount = 50_000n;
406
+
407
+ const txLow = buildFunding({ utxoValue, amount, feeRate: 1 });
408
+ const txHigh = buildFunding({ utxoValue, amount, feeRate: 10 });
409
+
410
+ await txLow.signTransaction();
411
+ await txHigh.signTransaction();
412
+
413
+ expect(txHigh.transactionFee).toBeGreaterThan(txLow.transactionFee);
414
+ });
415
+
416
+ it('should produce fee roughly proportional to fee rate', async () => {
417
+ const utxoValue = 200_000n;
418
+ const amount = 50_000n;
419
+
420
+ const tx1 = buildFunding({ utxoValue, amount, feeRate: 2 });
421
+ const tx5 = buildFunding({ utxoValue, amount, feeRate: 10 });
422
+
423
+ await tx1.signTransaction();
424
+ await tx5.signTransaction();
425
+
426
+ // Fee at rate 10 should be roughly 5x fee at rate 2
427
+ const ratio = Number(tx5.transactionFee) / Number(tx1.transactionFee);
428
+ expect(ratio).toBeGreaterThan(3); // allow some slack
429
+ expect(ratio).toBeLessThan(7);
430
+ });
431
+ });
432
+
433
+ // ================================================================
434
+ // Conservation of value
435
+ // ================================================================
436
+ describe('conservation of value', () => {
437
+ it('total output + fee should equal total input (with change)', async () => {
438
+ const utxoValue = 100_000n;
439
+ const amount = 30_000n;
440
+ const tx = buildFunding({ utxoValue, amount });
441
+
442
+ const signed = await tx.signTransaction();
443
+
444
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
445
+ const fee = utxoValue - totalOut;
446
+
447
+ expect(fee).toBeGreaterThan(0n);
448
+ // The fee deduced from outputs should match transactionFee
449
+ // (when there's a change output, they match exactly)
450
+ expect(fee).toBe(tx.transactionFee);
451
+ });
452
+
453
+ it('total output + absorbed fee should equal total input (without change)', async () => {
454
+ // Set up so leftover is below dust
455
+ const utxoValue = 50_200n;
456
+ const amount = 50_000n;
457
+ const tx = buildFunding({ utxoValue, amount });
458
+
459
+ const signed = await tx.signTransaction();
460
+
461
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
462
+ const actualFee = utxoValue - totalOut;
463
+
464
+ // Actual fee >= estimated fee (extra absorbed by miner)
465
+ expect(actualFee).toBeGreaterThanOrEqual(tx.transactionFee);
466
+ // Total is conserved
467
+ expect(totalOut + actualFee).toBe(utxoValue);
468
+ });
469
+ });
470
+
471
+ // ================================================================
472
+ // Edge cases around MINIMUM_DUST boundary
473
+ // ================================================================
474
+ describe('MINIMUM_DUST boundary', () => {
475
+ it('should create change output when leftover is exactly MINIMUM_DUST', async () => {
476
+ // We need: totalInput - amount - feeWithChange = 330
477
+ // This is tricky because fee depends on vsize. We'll use a large
478
+ // input and check the boundary condition through the public API.
479
+ const utxoValue = 200_000n;
480
+ const amount = 50_000n;
481
+ const tx = buildFunding({ utxoValue, amount });
482
+
483
+ const signed = await tx.signTransaction();
484
+
485
+ // With plenty of headroom, change should exist
486
+ expect(tx.overflowFees).toBeGreaterThanOrEqual(TransactionBuilder.MINIMUM_DUST);
487
+ expect(signed.outs.length).toBeGreaterThanOrEqual(2);
488
+ });
489
+ });
490
+
491
+ // ================================================================
492
+ // autoAdjustAmount interaction
493
+ // ================================================================
494
+ describe('autoAdjustAmount interaction with addRefundOutput', () => {
495
+ it('should auto-adjust amount and still compute correct fee', async () => {
496
+ const utxoValue = 100_000n;
497
+
498
+ const tx = buildFunding({
499
+ utxoValue,
500
+ amount: utxoValue, // exact match triggers auto-adjust
501
+ autoAdjustAmount: true,
502
+ feeRate: 2,
503
+ });
504
+
505
+ const signed = await tx.signTransaction();
506
+
507
+ const totalOut = signed.outs.reduce((sum, o) => sum + BigInt(o.value), 0n);
508
+ const fee = utxoValue - totalOut;
509
+
510
+ expect(fee).toBeGreaterThan(0n);
511
+ expect(totalOut).toBeLessThan(utxoValue);
512
+ expect(totalOut).toBeGreaterThan(0n);
513
+ });
514
+
515
+ it('should not auto-adjust when amount is well below totalInput', async () => {
516
+ const utxoValue = 100_000n;
517
+ const amount = 30_000n;
518
+
519
+ const tx = buildFunding({
520
+ utxoValue,
521
+ amount,
522
+ autoAdjustAmount: true,
523
+ });
524
+
525
+ const signed = await tx.signTransaction();
526
+
527
+ // Primary output should be exactly the requested amount
528
+ const outputValues = signed.outs.map((o) => BigInt(o.value));
529
+ expect(outputValues).toContain(amount);
530
+
531
+ // Should still have a change output
532
+ expect(signed.outs.length).toBeGreaterThanOrEqual(2);
533
+ });
534
+ });
535
+ });
@@ -5,22 +5,19 @@ import {
5
5
  disabledAddressRotation,
6
6
  EcKeyPair,
7
7
  FundingTransaction,
8
- SignerMap,
9
- RotationSigner,
10
- AddressRotationConfig,
11
8
  } from '../build/opnet.js';
12
- import { networks, payments, toXOnly } from '@btc-vision/bitcoin';
13
- import { ECPairInterface } from 'ecpair';
14
- import { UTXO } from '../build/opnet.js';
9
+ import type { SignerMap, RotationSigner, AddressRotationConfig, UTXO } from '../build/opnet.js';
10
+ import { networks, payments, toXOnly, toHex, equals } from '@btc-vision/bitcoin';
11
+ import type { UniversalSigner } from '@btc-vision/ecpair';
15
12
 
16
13
  describe('Address Rotation', () => {
17
14
  const network = networks.regtest;
18
15
 
19
16
  // Generate test keypairs
20
- let signer1: ECPairInterface;
21
- let signer2: ECPairInterface;
22
- let signer3: ECPairInterface;
23
- let defaultSigner: ECPairInterface;
17
+ let signer1: UniversalSigner;
18
+ let signer2: UniversalSigner;
19
+ let signer3: UniversalSigner;
20
+ let defaultSigner: UniversalSigner;
24
21
 
25
22
  let address1: string;
26
23
  let address2: string;
@@ -56,7 +53,7 @@ describe('Address Rotation', () => {
56
53
  outputIndex: index,
57
54
  value,
58
55
  scriptPubKey: {
59
- hex: p2tr.output!.toString('hex'),
56
+ hex: toHex(p2tr.output as Uint8Array),
60
57
  address,
61
58
  },
62
59
  };
@@ -400,7 +397,7 @@ describe('Address Rotation', () => {
400
397
  });
401
398
 
402
399
  it('should handle many UTXOs from different addresses', async () => {
403
- const signers: ECPairInterface[] = [];
400
+ const signers: UniversalSigner[] = [];
404
401
  const addresses: string[] = [];
405
402
  const utxos: UTXO[] = [];
406
403
 
@@ -413,9 +410,9 @@ describe('Address Rotation', () => {
413
410
  utxos.push(createTaprootUtxo(addr, 20000n, i.toString().repeat(64), 0));
414
411
  }
415
412
 
416
- const pairs: [string, ECPairInterface][] = addresses.map((addr, i) => [
413
+ const pairs: [string, UniversalSigner][] = addresses.map((addr, i) => [
417
414
  addr,
418
- signers[i],
415
+ signers[i] as UniversalSigner,
419
416
  ]);
420
417
 
421
418
  const tx = new FundingTransaction({
@@ -515,13 +512,15 @@ describe('Address Rotation', () => {
515
512
  const inputs = tx.getInputs();
516
513
 
517
514
  // Verify each input has the correct tapInternalKey
518
- const expectedKey1 = toXOnly(Buffer.from(signer1.publicKey));
519
- const expectedKey2 = toXOnly(Buffer.from(signer2.publicKey));
520
-
521
- expect(inputs[0].tapInternalKey).toBeDefined();
522
- expect(inputs[1].tapInternalKey).toBeDefined();
523
- expect(inputs[0].tapInternalKey!.equals(expectedKey1)).toBe(true);
524
- expect(inputs[1].tapInternalKey!.equals(expectedKey2)).toBe(true);
515
+ const expectedKey1 = toXOnly(signer1.publicKey);
516
+ const expectedKey2 = toXOnly(signer2.publicKey);
517
+
518
+ const input0 = inputs[0] as (typeof inputs)[0];
519
+ const input1 = inputs[1] as (typeof inputs)[0];
520
+ expect(input0.tapInternalKey).toBeDefined();
521
+ expect(input1.tapInternalKey).toBeDefined();
522
+ expect(equals(input0.tapInternalKey as Uint8Array, expectedKey1)).toBe(true);
523
+ expect(equals(input1.tapInternalKey as Uint8Array, expectedKey2)).toBe(true);
525
524
  });
526
525
 
527
526
  it('should use default signer tapInternalKey when rotation disabled', async () => {
@@ -544,10 +543,11 @@ describe('Address Rotation', () => {
544
543
  await tx.generateTransactionMinimalSignatures();
545
544
 
546
545
  const inputs = tx.getInputs();
547
- const expectedKey = toXOnly(Buffer.from(defaultSigner.publicKey));
546
+ const expectedKey = toXOnly(defaultSigner.publicKey);
548
547
 
549
- expect(inputs[0].tapInternalKey).toBeDefined();
550
- expect(inputs[0].tapInternalKey!.equals(expectedKey)).toBe(true);
548
+ const input0 = inputs[0] as (typeof inputs)[0];
549
+ expect(input0.tapInternalKey).toBeDefined();
550
+ expect(equals(input0.tapInternalKey as Uint8Array, expectedKey)).toBe(true);
551
551
  });
552
552
  });
553
553
  });