@btc-vision/transaction 1.8.6 → 1.8.7

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 (702) hide show
  1. package/browser/btc-vision-bitcoin.js +364 -364
  2. package/browser/index.js +1577 -1276
  3. package/browser/noble-curves.js +1072 -1173
  4. package/browser/noble-hashes.js +282 -261
  5. package/browser/rolldown-runtime.js +7 -7
  6. package/browser/src/_version.d.ts +1 -0
  7. package/browser/{abi → src/abi}/ABICoder.d.ts +0 -1
  8. package/browser/{abi → src/abi}/ABIDataTypes.d.ts +0 -1
  9. package/browser/{abi → src/abi}/AbiTypes.d.ts +0 -1
  10. package/browser/{abi → src/abi}/TupleUtils.d.ts +0 -1
  11. package/browser/{branded → src/branded}/Branded.d.ts +0 -1
  12. package/browser/{buffer → src/buffer}/BinaryReader.d.ts +0 -1
  13. package/browser/{buffer → src/buffer}/BinaryWriter.d.ts +0 -1
  14. package/browser/{bytecode → src/bytecode}/Compressor.d.ts +0 -1
  15. package/browser/{chain → src/chain}/ChainData.d.ts +1 -2
  16. package/browser/{consensus → src/consensus}/Consensus.d.ts +0 -1
  17. package/browser/{consensus → src/consensus}/ConsensusConfig.d.ts +0 -1
  18. package/browser/{consensus → src/consensus}/IConsensusConfig.d.ts +0 -1
  19. package/browser/{consensus → src/consensus}/metadata/RoswellConsensus.d.ts +0 -1
  20. package/browser/{crypto → src/crypto}/crypto.d.ts +1 -2
  21. package/browser/{deterministic → src/deterministic}/AddressMap.d.ts +0 -1
  22. package/browser/{deterministic → src/deterministic}/AddressSet.d.ts +0 -1
  23. package/browser/{deterministic → src/deterministic}/CustomMap.d.ts +0 -1
  24. package/browser/{deterministic → src/deterministic}/DeterministicMap.d.ts +0 -1
  25. package/browser/{deterministic → src/deterministic}/DeterministicSet.d.ts +0 -1
  26. package/browser/{deterministic → src/deterministic}/ExtendedAddressMap.d.ts +0 -1
  27. package/browser/{deterministic → src/deterministic}/FastMap.d.ts +0 -1
  28. package/browser/{ecc → src/ecc}/backend.d.ts +1 -2
  29. package/browser/{epoch → src/epoch}/ChallengeSolution.d.ts +0 -1
  30. package/browser/{epoch → src/epoch}/interfaces/IChallengeSolution.d.ts +0 -1
  31. package/browser/{epoch → src/epoch}/validator/EpochValidator.d.ts +0 -1
  32. package/browser/{event → src/event}/NetEvent.d.ts +0 -1
  33. package/browser/{generators → src/generators}/AddressGenerator.d.ts +1 -2
  34. package/browser/{generators → src/generators}/Features.d.ts +0 -1
  35. package/browser/{generators → src/generators}/Generator.d.ts +1 -2
  36. package/browser/{generators → src/generators}/MLDSAData.d.ts +1 -2
  37. package/browser/{generators → src/generators}/builders/CalldataGenerator.d.ts +1 -2
  38. package/browser/{generators → src/generators}/builders/CustomGenerator.d.ts +1 -2
  39. package/browser/{generators → src/generators}/builders/DeploymentGenerator.d.ts +1 -2
  40. package/browser/{generators → src/generators}/builders/HashCommitmentGenerator.d.ts +1 -2
  41. package/browser/{generators → src/generators}/builders/LegacyCalldataGenerator.d.ts +1 -2
  42. package/browser/{generators → src/generators}/builders/MultiSignGenerator.d.ts +1 -2
  43. package/browser/{generators → src/generators}/builders/P2WDAGenerator.d.ts +1 -2
  44. package/browser/{index.d.ts → src/index.d.ts} +0 -1
  45. package/browser/{keypair → src/keypair}/Address.d.ts +2 -3
  46. package/browser/{keypair → src/keypair}/AddressVerificator.d.ts +2 -3
  47. package/browser/{keypair → src/keypair}/EcKeyPair.d.ts +2 -3
  48. package/browser/{keypair → src/keypair}/MessageSigner.d.ts +2 -3
  49. package/browser/{keypair → src/keypair}/Secp256k1PointDeriver.d.ts +0 -1
  50. package/browser/{keypair → src/keypair}/Wallet.d.ts +2 -3
  51. package/browser/{keypair → src/keypair}/interfaces/IWallet.d.ts +0 -1
  52. package/browser/{metadata → src/metadata}/ContractBaseMetadata.d.ts +1 -2
  53. package/browser/{mnemonic → src/mnemonic}/BIPStandard.d.ts +0 -1
  54. package/browser/{mnemonic → src/mnemonic}/Mnemonic.d.ts +2 -3
  55. package/browser/{mnemonic → src/mnemonic}/MnemonicStrength.d.ts +0 -1
  56. package/browser/{network → src/network}/ChainId.d.ts +0 -1
  57. package/browser/{opnet.d.ts → src/opnet.d.ts} +2 -2
  58. package/browser/{p2wda → src/p2wda}/P2WDADetector.d.ts +1 -2
  59. package/browser/{polyfill → src/polyfill}/disposable.d.ts +0 -1
  60. package/browser/{signer → src/signer}/AddressRotation.d.ts +0 -1
  61. package/browser/{signer → src/signer}/IRotationSigner.d.ts +1 -2
  62. package/browser/{signer → src/signer}/ParallelSignerAdapter.d.ts +1 -2
  63. package/browser/{signer → src/signer}/SignerUtils.d.ts +1 -2
  64. package/browser/{signer → src/signer}/TweakedSigner.d.ts +1 -2
  65. package/browser/{transaction → src/transaction}/ContractAddress.d.ts +0 -1
  66. package/browser/{transaction → src/transaction}/TransactionFactory.d.ts +1 -2
  67. package/browser/{transaction → src/transaction}/browser/BrowserSignerBase.d.ts +1 -2
  68. package/browser/{transaction → src/transaction}/browser/WalletNetworks.d.ts +0 -1
  69. package/browser/{transaction → src/transaction}/browser/Web3Provider.d.ts +0 -1
  70. package/browser/{transaction → src/transaction}/browser/extensions/UnisatSigner.d.ts +1 -2
  71. package/browser/{transaction → src/transaction}/browser/extensions/XverseSigner.d.ts +1 -2
  72. package/browser/{transaction → src/transaction}/browser/types/OPWallet.d.ts +0 -1
  73. package/browser/{transaction → src/transaction}/browser/types/Unisat.d.ts +0 -1
  74. package/browser/{transaction → src/transaction}/browser/types/Xverse.d.ts +0 -1
  75. package/browser/{transaction → src/transaction}/builders/CancelTransaction.d.ts +1 -2
  76. package/browser/src/transaction/builders/ChallengeSolutionTransaction.d.ts +1 -0
  77. package/browser/{transaction → src/transaction}/builders/ConsolidatedInteractionTransaction.d.ts +0 -1
  78. package/browser/{transaction → src/transaction}/builders/CustomScriptTransaction.d.ts +1 -2
  79. package/browser/{transaction → src/transaction}/builders/DeploymentTransaction.d.ts +1 -2
  80. package/browser/{transaction → src/transaction}/builders/FundingTransaction.d.ts +1 -2
  81. package/browser/{transaction → src/transaction}/builders/InteractionTransaction.d.ts +1 -2
  82. package/browser/{transaction → src/transaction}/builders/InteractionTransactionP2WDA.d.ts +1 -2
  83. package/browser/{transaction → src/transaction}/builders/MultiSignTransaction.d.ts +1 -2
  84. package/browser/{transaction → src/transaction}/builders/SharedInteractionTransaction.d.ts +1 -2
  85. package/browser/{transaction → src/transaction}/builders/TransactionBuilder.d.ts +2 -2
  86. package/browser/{transaction → src/transaction}/enums/TransactionType.d.ts +0 -1
  87. package/browser/{transaction → src/transaction}/interfaces/ICancelTransactionParameters.d.ts +0 -1
  88. package/browser/{transaction → src/transaction}/interfaces/IConsolidatedTransactionParameters.d.ts +0 -1
  89. package/browser/{transaction → src/transaction}/interfaces/ICustomTransactionParameters.d.ts +1 -2
  90. package/browser/{transaction → src/transaction}/interfaces/ITransactionParameters.d.ts +1 -2
  91. package/browser/{transaction → src/transaction}/interfaces/ITransactionResponses.d.ts +0 -1
  92. package/browser/{transaction → src/transaction}/interfaces/ITweakedTransactionData.d.ts +2 -3
  93. package/browser/{transaction → src/transaction}/interfaces/IWeb3ProviderTypes.d.ts +1 -2
  94. package/browser/{transaction → src/transaction}/interfaces/Tap.d.ts +1 -2
  95. package/browser/src/transaction/mineable/CSVMultisigProvider.d.ts +102 -0
  96. package/browser/{transaction → src/transaction}/mineable/IP2WSHAddress.d.ts +0 -1
  97. package/browser/{transaction → src/transaction}/mineable/TimelockGenerator.d.ts +1 -2
  98. package/browser/{transaction → src/transaction}/offline/OfflineTransactionManager.d.ts +51 -2
  99. package/browser/{transaction → src/transaction}/offline/TransactionReconstructor.d.ts +2 -3
  100. package/browser/{transaction → src/transaction}/offline/TransactionSerializer.d.ts +0 -1
  101. package/browser/{transaction → src/transaction}/offline/TransactionStateCapture.d.ts +0 -1
  102. package/browser/{transaction → src/transaction}/offline/interfaces/ISerializableState.d.ts +10 -3
  103. package/browser/{transaction → src/transaction}/offline/interfaces/ITypeSpecificData.d.ts +0 -1
  104. package/browser/{transaction → src/transaction}/psbt/PSBTTypes.d.ts +0 -1
  105. package/browser/{transaction → src/transaction}/shared/P2MR_MS.d.ts +1 -2
  106. package/browser/{transaction → src/transaction}/shared/P2TR_MS.d.ts +1 -2
  107. package/browser/{transaction → src/transaction}/shared/TweakedTransaction.d.ts +21 -3
  108. package/browser/{transaction → src/transaction}/utils/WitnessUtils.d.ts +0 -1
  109. package/browser/{utils → src/utils}/BitcoinUtils.d.ts +0 -1
  110. package/browser/{utils → src/utils}/BufferHelper.d.ts +0 -1
  111. package/browser/{utils → src/utils}/StringToBuffer.d.ts +0 -1
  112. package/browser/{utils → src/utils}/lengths.d.ts +0 -1
  113. package/browser/{utils → src/utils}/types.d.ts +0 -1
  114. package/browser/{utxo → src/utxo}/OPNetLimitedProvider.d.ts +1 -2
  115. package/browser/{utxo → src/utxo}/interfaces/BroadcastResponse.d.ts +0 -1
  116. package/browser/{utxo → src/utxo}/interfaces/IUTXO.d.ts +0 -1
  117. package/browser/{verification → src/verification}/TapscriptVerificator.d.ts +1 -2
  118. package/browser/vendors.js +1397 -1397
  119. package/build/_version.d.ts +1 -2
  120. package/build/_version.js +1 -2
  121. package/build/abi/ABICoder.d.ts +0 -1
  122. package/build/abi/ABICoder.js +0 -1
  123. package/build/abi/ABIDataTypes.d.ts +0 -1
  124. package/build/abi/ABIDataTypes.js +0 -1
  125. package/build/abi/AbiTypes.d.ts +0 -1
  126. package/build/abi/AbiTypes.js +0 -1
  127. package/build/abi/TupleUtils.d.ts +0 -1
  128. package/build/abi/TupleUtils.js +0 -1
  129. package/build/branded/Branded.d.ts +0 -1
  130. package/build/branded/Branded.js +0 -1
  131. package/build/buffer/BinaryReader.d.ts +0 -1
  132. package/build/buffer/BinaryReader.js +0 -1
  133. package/build/buffer/BinaryWriter.d.ts +0 -1
  134. package/build/buffer/BinaryWriter.js +0 -1
  135. package/build/bytecode/Compressor.d.ts +0 -1
  136. package/build/bytecode/Compressor.js +0 -1
  137. package/build/chain/ChainData.d.ts +0 -1
  138. package/build/chain/ChainData.js +0 -1
  139. package/build/consensus/Consensus.d.ts +0 -1
  140. package/build/consensus/Consensus.js +0 -1
  141. package/build/consensus/ConsensusConfig.d.ts +0 -1
  142. package/build/consensus/ConsensusConfig.js +0 -1
  143. package/build/consensus/IConsensusConfig.d.ts +0 -1
  144. package/build/consensus/IConsensusConfig.js +0 -1
  145. package/build/consensus/metadata/RoswellConsensus.d.ts +0 -1
  146. package/build/consensus/metadata/RoswellConsensus.js +0 -1
  147. package/build/crypto/crypto.d.ts +0 -1
  148. package/build/crypto/crypto.js +0 -1
  149. package/build/deterministic/AddressMap.d.ts +0 -1
  150. package/build/deterministic/AddressMap.js +0 -1
  151. package/build/deterministic/AddressSet.d.ts +0 -1
  152. package/build/deterministic/AddressSet.js +0 -1
  153. package/build/deterministic/CustomMap.d.ts +0 -1
  154. package/build/deterministic/CustomMap.js +0 -1
  155. package/build/deterministic/DeterministicMap.d.ts +0 -1
  156. package/build/deterministic/DeterministicMap.js +0 -1
  157. package/build/deterministic/DeterministicSet.d.ts +0 -1
  158. package/build/deterministic/DeterministicSet.js +0 -1
  159. package/build/deterministic/ExtendedAddressMap.d.ts +0 -1
  160. package/build/deterministic/ExtendedAddressMap.js +0 -1
  161. package/build/deterministic/FastMap.d.ts +0 -1
  162. package/build/deterministic/FastMap.js +0 -1
  163. package/build/ecc/backend.d.ts +0 -1
  164. package/build/ecc/backend.js +0 -1
  165. package/build/epoch/ChallengeSolution.d.ts +0 -1
  166. package/build/epoch/ChallengeSolution.js +0 -1
  167. package/build/epoch/interfaces/IChallengeSolution.d.ts +0 -1
  168. package/build/epoch/interfaces/IChallengeSolution.js +0 -1
  169. package/build/epoch/validator/EpochValidator.d.ts +0 -1
  170. package/build/epoch/validator/EpochValidator.js +0 -1
  171. package/build/event/NetEvent.d.ts +0 -1
  172. package/build/event/NetEvent.js +0 -1
  173. package/build/generators/AddressGenerator.d.ts +0 -1
  174. package/build/generators/AddressGenerator.js +0 -1
  175. package/build/generators/Features.d.ts +0 -1
  176. package/build/generators/Features.js +0 -1
  177. package/build/generators/Generator.d.ts +0 -1
  178. package/build/generators/Generator.js +0 -1
  179. package/build/generators/MLDSAData.d.ts +0 -1
  180. package/build/generators/MLDSAData.js +0 -1
  181. package/build/generators/builders/CalldataGenerator.d.ts +0 -1
  182. package/build/generators/builders/CalldataGenerator.js +0 -1
  183. package/build/generators/builders/CustomGenerator.d.ts +0 -1
  184. package/build/generators/builders/CustomGenerator.js +0 -1
  185. package/build/generators/builders/DeploymentGenerator.d.ts +0 -1
  186. package/build/generators/builders/DeploymentGenerator.js +0 -1
  187. package/build/generators/builders/HashCommitmentGenerator.d.ts +0 -1
  188. package/build/generators/builders/HashCommitmentGenerator.js +0 -1
  189. package/build/generators/builders/LegacyCalldataGenerator.d.ts +0 -1
  190. package/build/generators/builders/LegacyCalldataGenerator.js +0 -1
  191. package/build/generators/builders/MultiSignGenerator.d.ts +0 -1
  192. package/build/generators/builders/MultiSignGenerator.js +0 -1
  193. package/build/generators/builders/P2WDAGenerator.d.ts +0 -1
  194. package/build/generators/builders/P2WDAGenerator.js +0 -1
  195. package/build/index.d.ts +0 -1
  196. package/build/index.js +0 -1
  197. package/build/keypair/Address.d.ts +0 -1
  198. package/build/keypair/Address.js +0 -1
  199. package/build/keypair/AddressVerificator.d.ts +0 -1
  200. package/build/keypair/AddressVerificator.js +0 -1
  201. package/build/keypair/EcKeyPair.d.ts +0 -1
  202. package/build/keypair/EcKeyPair.js +0 -1
  203. package/build/keypair/MessageSigner.d.ts +0 -1
  204. package/build/keypair/MessageSigner.js +0 -1
  205. package/build/keypair/Secp256k1PointDeriver.d.ts +0 -1
  206. package/build/keypair/Secp256k1PointDeriver.js +0 -1
  207. package/build/keypair/Wallet.d.ts +0 -1
  208. package/build/keypair/Wallet.js +0 -1
  209. package/build/keypair/interfaces/IWallet.d.ts +0 -1
  210. package/build/keypair/interfaces/IWallet.js +0 -1
  211. package/build/metadata/ContractBaseMetadata.d.ts +0 -1
  212. package/build/metadata/ContractBaseMetadata.js +0 -1
  213. package/build/mnemonic/BIPStandard.d.ts +0 -1
  214. package/build/mnemonic/BIPStandard.js +0 -1
  215. package/build/mnemonic/Mnemonic.d.ts +0 -1
  216. package/build/mnemonic/Mnemonic.js +0 -1
  217. package/build/mnemonic/MnemonicStrength.d.ts +0 -1
  218. package/build/mnemonic/MnemonicStrength.js +0 -1
  219. package/build/network/ChainId.d.ts +0 -1
  220. package/build/network/ChainId.js +0 -1
  221. package/build/opnet.d.ts +1 -1
  222. package/build/opnet.js +1 -1
  223. package/build/p2wda/P2WDADetector.d.ts +0 -1
  224. package/build/p2wda/P2WDADetector.js +0 -1
  225. package/build/polyfill/disposable.d.ts +0 -1
  226. package/build/polyfill/disposable.js +0 -1
  227. package/build/signer/AddressRotation.d.ts +0 -1
  228. package/build/signer/AddressRotation.js +0 -1
  229. package/build/signer/IRotationSigner.d.ts +0 -1
  230. package/build/signer/IRotationSigner.js +0 -1
  231. package/build/signer/ParallelSignerAdapter.d.ts +0 -1
  232. package/build/signer/ParallelSignerAdapter.js +0 -1
  233. package/build/signer/SignerUtils.d.ts +0 -1
  234. package/build/signer/SignerUtils.js +0 -1
  235. package/build/signer/TweakedSigner.d.ts +0 -1
  236. package/build/signer/TweakedSigner.js +0 -1
  237. package/build/transaction/ContractAddress.d.ts +0 -1
  238. package/build/transaction/ContractAddress.js +0 -1
  239. package/build/transaction/TransactionFactory.d.ts +0 -1
  240. package/build/transaction/TransactionFactory.js +1 -2
  241. package/build/transaction/browser/BrowserSignerBase.d.ts +0 -1
  242. package/build/transaction/browser/BrowserSignerBase.js +0 -1
  243. package/build/transaction/browser/WalletNetworks.d.ts +0 -1
  244. package/build/transaction/browser/WalletNetworks.js +0 -1
  245. package/build/transaction/browser/Web3Provider.d.ts +0 -1
  246. package/build/transaction/browser/Web3Provider.js +0 -1
  247. package/build/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
  248. package/build/transaction/browser/extensions/UnisatSigner.js +0 -1
  249. package/build/transaction/browser/extensions/XverseSigner.d.ts +0 -1
  250. package/build/transaction/browser/extensions/XverseSigner.js +0 -1
  251. package/build/transaction/browser/types/OPWallet.d.ts +0 -1
  252. package/build/transaction/browser/types/OPWallet.js +0 -1
  253. package/build/transaction/browser/types/Unisat.d.ts +0 -1
  254. package/build/transaction/browser/types/Unisat.js +0 -1
  255. package/build/transaction/browser/types/Xverse.d.ts +0 -1
  256. package/build/transaction/browser/types/Xverse.js +0 -1
  257. package/build/transaction/builders/CancelTransaction.d.ts +0 -1
  258. package/build/transaction/builders/CancelTransaction.js +0 -1
  259. package/build/transaction/builders/ChallengeSolutionTransaction.d.ts +0 -1
  260. package/build/transaction/builders/ChallengeSolutionTransaction.js +0 -1
  261. package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts +0 -1
  262. package/build/transaction/builders/ConsolidatedInteractionTransaction.js +0 -1
  263. package/build/transaction/builders/CustomScriptTransaction.d.ts +0 -1
  264. package/build/transaction/builders/CustomScriptTransaction.js +0 -1
  265. package/build/transaction/builders/DeploymentTransaction.d.ts +0 -1
  266. package/build/transaction/builders/DeploymentTransaction.js +0 -1
  267. package/build/transaction/builders/FundingTransaction.d.ts +0 -1
  268. package/build/transaction/builders/FundingTransaction.js +17 -14
  269. package/build/transaction/builders/InteractionTransaction.d.ts +0 -1
  270. package/build/transaction/builders/InteractionTransaction.js +0 -1
  271. package/build/transaction/builders/InteractionTransactionP2WDA.d.ts +0 -1
  272. package/build/transaction/builders/InteractionTransactionP2WDA.js +0 -1
  273. package/build/transaction/builders/MultiSignTransaction.d.ts +0 -1
  274. package/build/transaction/builders/MultiSignTransaction.js +0 -1
  275. package/build/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
  276. package/build/transaction/builders/SharedInteractionTransaction.js +0 -1
  277. package/build/transaction/builders/TransactionBuilder.d.ts +1 -1
  278. package/build/transaction/builders/TransactionBuilder.js +39 -8
  279. package/build/transaction/enums/TransactionType.d.ts +0 -1
  280. package/build/transaction/enums/TransactionType.js +0 -1
  281. package/build/transaction/interfaces/ICancelTransactionParameters.d.ts +0 -1
  282. package/build/transaction/interfaces/ICancelTransactionParameters.js +0 -1
  283. package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +0 -1
  284. package/build/transaction/interfaces/IConsolidatedTransactionParameters.js +0 -1
  285. package/build/transaction/interfaces/ICustomTransactionParameters.d.ts +0 -1
  286. package/build/transaction/interfaces/ICustomTransactionParameters.js +0 -1
  287. package/build/transaction/interfaces/ITransactionParameters.d.ts +0 -1
  288. package/build/transaction/interfaces/ITransactionParameters.js +0 -1
  289. package/build/transaction/interfaces/ITransactionResponses.d.ts +0 -1
  290. package/build/transaction/interfaces/ITransactionResponses.js +0 -1
  291. package/build/transaction/interfaces/ITweakedTransactionData.d.ts +0 -1
  292. package/build/transaction/interfaces/ITweakedTransactionData.js +0 -1
  293. package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts +0 -1
  294. package/build/transaction/interfaces/IWeb3ProviderTypes.js +0 -1
  295. package/build/transaction/interfaces/Tap.d.ts +0 -1
  296. package/build/transaction/interfaces/Tap.js +0 -1
  297. package/build/transaction/mineable/CSVMultisigProvider.d.ts +102 -0
  298. package/build/transaction/mineable/CSVMultisigProvider.js +348 -0
  299. package/build/transaction/mineable/IP2WSHAddress.d.ts +0 -1
  300. package/build/transaction/mineable/IP2WSHAddress.js +0 -1
  301. package/build/transaction/mineable/TimelockGenerator.d.ts +0 -1
  302. package/build/transaction/mineable/TimelockGenerator.js +0 -1
  303. package/build/transaction/offline/OfflineTransactionManager.d.ts +50 -1
  304. package/build/transaction/offline/OfflineTransactionManager.js +142 -2
  305. package/build/transaction/offline/TransactionReconstructor.d.ts +0 -1
  306. package/build/transaction/offline/TransactionReconstructor.js +0 -1
  307. package/build/transaction/offline/TransactionSerializer.d.ts +0 -1
  308. package/build/transaction/offline/TransactionSerializer.js +9 -1
  309. package/build/transaction/offline/TransactionStateCapture.d.ts +0 -1
  310. package/build/transaction/offline/TransactionStateCapture.js +0 -1
  311. package/build/transaction/offline/interfaces/ISerializableState.d.ts +10 -3
  312. package/build/transaction/offline/interfaces/ISerializableState.js +3 -3
  313. package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts +0 -1
  314. package/build/transaction/offline/interfaces/ITypeSpecificData.js +0 -1
  315. package/build/transaction/psbt/PSBTTypes.d.ts +0 -1
  316. package/build/transaction/psbt/PSBTTypes.js +0 -1
  317. package/build/transaction/shared/P2MR_MS.d.ts +0 -1
  318. package/build/transaction/shared/P2MR_MS.js +0 -1
  319. package/build/transaction/shared/P2TR_MS.d.ts +0 -1
  320. package/build/transaction/shared/P2TR_MS.js +0 -1
  321. package/build/transaction/shared/TweakedTransaction.d.ts +19 -1
  322. package/build/transaction/shared/TweakedTransaction.js +96 -12
  323. package/build/transaction/utils/WitnessUtils.d.ts +0 -1
  324. package/build/transaction/utils/WitnessUtils.js +0 -1
  325. package/build/utils/BitcoinUtils.d.ts +0 -1
  326. package/build/utils/BitcoinUtils.js +0 -1
  327. package/build/utils/BufferHelper.d.ts +0 -1
  328. package/build/utils/BufferHelper.js +0 -1
  329. package/build/utils/StringToBuffer.d.ts +0 -1
  330. package/build/utils/StringToBuffer.js +0 -1
  331. package/build/utils/lengths.d.ts +0 -1
  332. package/build/utils/lengths.js +0 -1
  333. package/build/utils/types.d.ts +0 -1
  334. package/build/utils/types.js +0 -1
  335. package/build/utxo/OPNetLimitedProvider.d.ts +0 -1
  336. package/build/utxo/OPNetLimitedProvider.js +0 -1
  337. package/build/utxo/interfaces/BroadcastResponse.d.ts +0 -1
  338. package/build/utxo/interfaces/BroadcastResponse.js +0 -1
  339. package/build/utxo/interfaces/IUTXO.d.ts +0 -1
  340. package/build/utxo/interfaces/IUTXO.js +0 -1
  341. package/build/verification/TapscriptVerificator.d.ts +0 -1
  342. package/build/verification/TapscriptVerificator.js +0 -1
  343. package/eslint.config.js +5 -0
  344. package/package.json +20 -17
  345. package/src/_version.ts +1 -1
  346. package/src/keypair/Address.ts +1 -1
  347. package/src/opnet.ts +1 -0
  348. package/src/transaction/TransactionFactory.ts +1 -1
  349. package/src/transaction/builders/FundingTransaction.ts +21 -16
  350. package/src/transaction/builders/TransactionBuilder.ts +56 -10
  351. package/src/transaction/mineable/CSVMultisigProvider.ts +465 -0
  352. package/src/transaction/offline/OfflineTransactionManager.ts +191 -1
  353. package/src/transaction/offline/TransactionSerializer.ts +11 -0
  354. package/src/transaction/offline/interfaces/ISerializableState.ts +10 -2
  355. package/src/transaction/shared/TweakedTransaction.ts +123 -10
  356. package/test/add-refund-output.test.ts +96 -11
  357. package/test/csv-multisig-offline-edges.test.ts +293 -0
  358. package/test/csv-multisig-offline.test.ts +202 -0
  359. package/test/csv-multisig-spend.test.ts +363 -0
  360. package/test/transaction-builders.test.ts +69 -3
  361. package/test/web3-provider-types.test.ts +349 -0
  362. package/test/zero-amount-funding.test.ts +311 -0
  363. package/tsconfig.base.json +2 -2
  364. package/tsconfig.build.json +4 -1
  365. package/tsconfig.build.tsbuildinfo +1 -0
  366. package/tsconfig.json +9 -3
  367. package/browser/_version.d.ts +0 -2
  368. package/browser/_version.d.ts.map +0 -1
  369. package/browser/abi/ABICoder.d.ts.map +0 -1
  370. package/browser/abi/ABIDataTypes.d.ts.map +0 -1
  371. package/browser/abi/AbiTypes.d.ts.map +0 -1
  372. package/browser/abi/TupleUtils.d.ts.map +0 -1
  373. package/browser/branded/Branded.d.ts.map +0 -1
  374. package/browser/buffer/BinaryReader.d.ts.map +0 -1
  375. package/browser/buffer/BinaryWriter.d.ts.map +0 -1
  376. package/browser/bytecode/Compressor.d.ts.map +0 -1
  377. package/browser/chain/ChainData.d.ts.map +0 -1
  378. package/browser/consensus/Consensus.d.ts.map +0 -1
  379. package/browser/consensus/ConsensusConfig.d.ts.map +0 -1
  380. package/browser/consensus/IConsensusConfig.d.ts.map +0 -1
  381. package/browser/consensus/metadata/RoswellConsensus.d.ts.map +0 -1
  382. package/browser/crypto/crypto.d.ts.map +0 -1
  383. package/browser/deterministic/AddressMap.d.ts.map +0 -1
  384. package/browser/deterministic/AddressSet.d.ts.map +0 -1
  385. package/browser/deterministic/CustomMap.d.ts.map +0 -1
  386. package/browser/deterministic/DeterministicMap.d.ts.map +0 -1
  387. package/browser/deterministic/DeterministicSet.d.ts.map +0 -1
  388. package/browser/deterministic/ExtendedAddressMap.d.ts.map +0 -1
  389. package/browser/deterministic/FastMap.d.ts.map +0 -1
  390. package/browser/ecc/backend.d.ts.map +0 -1
  391. package/browser/epoch/ChallengeSolution.d.ts.map +0 -1
  392. package/browser/epoch/interfaces/IChallengeSolution.d.ts.map +0 -1
  393. package/browser/epoch/validator/EpochValidator.d.ts.map +0 -1
  394. package/browser/event/NetEvent.d.ts.map +0 -1
  395. package/browser/generators/AddressGenerator.d.ts.map +0 -1
  396. package/browser/generators/Features.d.ts.map +0 -1
  397. package/browser/generators/Generator.d.ts.map +0 -1
  398. package/browser/generators/MLDSAData.d.ts.map +0 -1
  399. package/browser/generators/builders/CalldataGenerator.d.ts.map +0 -1
  400. package/browser/generators/builders/CustomGenerator.d.ts.map +0 -1
  401. package/browser/generators/builders/DeploymentGenerator.d.ts.map +0 -1
  402. package/browser/generators/builders/HashCommitmentGenerator.d.ts.map +0 -1
  403. package/browser/generators/builders/LegacyCalldataGenerator.d.ts.map +0 -1
  404. package/browser/generators/builders/MultiSignGenerator.d.ts.map +0 -1
  405. package/browser/generators/builders/P2WDAGenerator.d.ts.map +0 -1
  406. package/browser/index.d.ts.map +0 -1
  407. package/browser/keypair/Address.d.ts.map +0 -1
  408. package/browser/keypair/AddressVerificator.d.ts.map +0 -1
  409. package/browser/keypair/EcKeyPair.d.ts.map +0 -1
  410. package/browser/keypair/MessageSigner.d.ts.map +0 -1
  411. package/browser/keypair/Secp256k1PointDeriver.d.ts.map +0 -1
  412. package/browser/keypair/Wallet.d.ts.map +0 -1
  413. package/browser/keypair/interfaces/IWallet.d.ts.map +0 -1
  414. package/browser/metadata/ContractBaseMetadata.d.ts.map +0 -1
  415. package/browser/mnemonic/BIPStandard.d.ts.map +0 -1
  416. package/browser/mnemonic/Mnemonic.d.ts.map +0 -1
  417. package/browser/mnemonic/MnemonicStrength.d.ts.map +0 -1
  418. package/browser/network/ChainId.d.ts.map +0 -1
  419. package/browser/opnet.d.ts.map +0 -1
  420. package/browser/p2wda/P2WDADetector.d.ts.map +0 -1
  421. package/browser/polyfill/disposable.d.ts.map +0 -1
  422. package/browser/signer/AddressRotation.d.ts.map +0 -1
  423. package/browser/signer/IRotationSigner.d.ts.map +0 -1
  424. package/browser/signer/ParallelSignerAdapter.d.ts.map +0 -1
  425. package/browser/signer/SignerUtils.d.ts.map +0 -1
  426. package/browser/signer/TweakedSigner.d.ts.map +0 -1
  427. package/browser/transaction/ContractAddress.d.ts.map +0 -1
  428. package/browser/transaction/TransactionFactory.d.ts.map +0 -1
  429. package/browser/transaction/browser/BrowserSignerBase.d.ts.map +0 -1
  430. package/browser/transaction/browser/WalletNetworks.d.ts.map +0 -1
  431. package/browser/transaction/browser/Web3Provider.d.ts.map +0 -1
  432. package/browser/transaction/browser/extensions/UnisatSigner.d.ts.map +0 -1
  433. package/browser/transaction/browser/extensions/XverseSigner.d.ts.map +0 -1
  434. package/browser/transaction/browser/types/OPWallet.d.ts.map +0 -1
  435. package/browser/transaction/browser/types/Unisat.d.ts.map +0 -1
  436. package/browser/transaction/browser/types/Xverse.d.ts.map +0 -1
  437. package/browser/transaction/builders/CancelTransaction.d.ts.map +0 -1
  438. package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts +0 -2
  439. package/browser/transaction/builders/ChallengeSolutionTransaction.d.ts.map +0 -1
  440. package/browser/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +0 -1
  441. package/browser/transaction/builders/CustomScriptTransaction.d.ts.map +0 -1
  442. package/browser/transaction/builders/DeploymentTransaction.d.ts.map +0 -1
  443. package/browser/transaction/builders/FundingTransaction.d.ts.map +0 -1
  444. package/browser/transaction/builders/InteractionTransaction.d.ts.map +0 -1
  445. package/browser/transaction/builders/InteractionTransactionP2WDA.d.ts.map +0 -1
  446. package/browser/transaction/builders/MultiSignTransaction.d.ts.map +0 -1
  447. package/browser/transaction/builders/SharedInteractionTransaction.d.ts.map +0 -1
  448. package/browser/transaction/builders/TransactionBuilder.d.ts.map +0 -1
  449. package/browser/transaction/enums/TransactionType.d.ts.map +0 -1
  450. package/browser/transaction/interfaces/ICancelTransactionParameters.d.ts.map +0 -1
  451. package/browser/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +0 -1
  452. package/browser/transaction/interfaces/ICustomTransactionParameters.d.ts.map +0 -1
  453. package/browser/transaction/interfaces/ITransactionParameters.d.ts.map +0 -1
  454. package/browser/transaction/interfaces/ITransactionResponses.d.ts.map +0 -1
  455. package/browser/transaction/interfaces/ITweakedTransactionData.d.ts.map +0 -1
  456. package/browser/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +0 -1
  457. package/browser/transaction/interfaces/Tap.d.ts.map +0 -1
  458. package/browser/transaction/mineable/IP2WSHAddress.d.ts.map +0 -1
  459. package/browser/transaction/mineable/TimelockGenerator.d.ts.map +0 -1
  460. package/browser/transaction/offline/OfflineTransactionManager.d.ts.map +0 -1
  461. package/browser/transaction/offline/TransactionReconstructor.d.ts.map +0 -1
  462. package/browser/transaction/offline/TransactionSerializer.d.ts.map +0 -1
  463. package/browser/transaction/offline/TransactionStateCapture.d.ts.map +0 -1
  464. package/browser/transaction/offline/interfaces/ISerializableState.d.ts.map +0 -1
  465. package/browser/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +0 -1
  466. package/browser/transaction/psbt/PSBTTypes.d.ts.map +0 -1
  467. package/browser/transaction/shared/P2MR_MS.d.ts.map +0 -1
  468. package/browser/transaction/shared/P2TR_MS.d.ts.map +0 -1
  469. package/browser/transaction/shared/TweakedTransaction.d.ts.map +0 -1
  470. package/browser/transaction/utils/WitnessUtils.d.ts.map +0 -1
  471. package/browser/utils/BitcoinUtils.d.ts.map +0 -1
  472. package/browser/utils/BufferHelper.d.ts.map +0 -1
  473. package/browser/utils/StringToBuffer.d.ts.map +0 -1
  474. package/browser/utils/lengths.d.ts.map +0 -1
  475. package/browser/utils/types.d.ts.map +0 -1
  476. package/browser/utxo/OPNetLimitedProvider.d.ts.map +0 -1
  477. package/browser/utxo/interfaces/BroadcastResponse.d.ts.map +0 -1
  478. package/browser/utxo/interfaces/IUTXO.d.ts.map +0 -1
  479. package/browser/verification/TapscriptVerificator.d.ts.map +0 -1
  480. package/build/_version.d.ts.map +0 -1
  481. package/build/_version.js.map +0 -1
  482. package/build/abi/ABICoder.d.ts.map +0 -1
  483. package/build/abi/ABICoder.js.map +0 -1
  484. package/build/abi/ABIDataTypes.d.ts.map +0 -1
  485. package/build/abi/ABIDataTypes.js.map +0 -1
  486. package/build/abi/AbiTypes.d.ts.map +0 -1
  487. package/build/abi/AbiTypes.js.map +0 -1
  488. package/build/abi/TupleUtils.d.ts.map +0 -1
  489. package/build/abi/TupleUtils.js.map +0 -1
  490. package/build/branded/Branded.d.ts.map +0 -1
  491. package/build/branded/Branded.js.map +0 -1
  492. package/build/buffer/BinaryReader.d.ts.map +0 -1
  493. package/build/buffer/BinaryReader.js.map +0 -1
  494. package/build/buffer/BinaryWriter.d.ts.map +0 -1
  495. package/build/buffer/BinaryWriter.js.map +0 -1
  496. package/build/bytecode/Compressor.d.ts.map +0 -1
  497. package/build/bytecode/Compressor.js.map +0 -1
  498. package/build/chain/ChainData.d.ts.map +0 -1
  499. package/build/chain/ChainData.js.map +0 -1
  500. package/build/consensus/Consensus.d.ts.map +0 -1
  501. package/build/consensus/Consensus.js.map +0 -1
  502. package/build/consensus/ConsensusConfig.d.ts.map +0 -1
  503. package/build/consensus/ConsensusConfig.js.map +0 -1
  504. package/build/consensus/IConsensusConfig.d.ts.map +0 -1
  505. package/build/consensus/IConsensusConfig.js.map +0 -1
  506. package/build/consensus/metadata/RoswellConsensus.d.ts.map +0 -1
  507. package/build/consensus/metadata/RoswellConsensus.js.map +0 -1
  508. package/build/crypto/crypto.d.ts.map +0 -1
  509. package/build/crypto/crypto.js.map +0 -1
  510. package/build/deterministic/AddressMap.d.ts.map +0 -1
  511. package/build/deterministic/AddressMap.js.map +0 -1
  512. package/build/deterministic/AddressSet.d.ts.map +0 -1
  513. package/build/deterministic/AddressSet.js.map +0 -1
  514. package/build/deterministic/CustomMap.d.ts.map +0 -1
  515. package/build/deterministic/CustomMap.js.map +0 -1
  516. package/build/deterministic/DeterministicMap.d.ts.map +0 -1
  517. package/build/deterministic/DeterministicMap.js.map +0 -1
  518. package/build/deterministic/DeterministicSet.d.ts.map +0 -1
  519. package/build/deterministic/DeterministicSet.js.map +0 -1
  520. package/build/deterministic/ExtendedAddressMap.d.ts.map +0 -1
  521. package/build/deterministic/ExtendedAddressMap.js.map +0 -1
  522. package/build/deterministic/FastMap.d.ts.map +0 -1
  523. package/build/deterministic/FastMap.js.map +0 -1
  524. package/build/ecc/backend.d.ts.map +0 -1
  525. package/build/ecc/backend.js.map +0 -1
  526. package/build/epoch/ChallengeSolution.d.ts.map +0 -1
  527. package/build/epoch/ChallengeSolution.js.map +0 -1
  528. package/build/epoch/interfaces/IChallengeSolution.d.ts.map +0 -1
  529. package/build/epoch/interfaces/IChallengeSolution.js.map +0 -1
  530. package/build/epoch/validator/EpochValidator.d.ts.map +0 -1
  531. package/build/epoch/validator/EpochValidator.js.map +0 -1
  532. package/build/event/NetEvent.d.ts.map +0 -1
  533. package/build/event/NetEvent.js.map +0 -1
  534. package/build/generators/AddressGenerator.d.ts.map +0 -1
  535. package/build/generators/AddressGenerator.js.map +0 -1
  536. package/build/generators/Features.d.ts.map +0 -1
  537. package/build/generators/Features.js.map +0 -1
  538. package/build/generators/Generator.d.ts.map +0 -1
  539. package/build/generators/Generator.js.map +0 -1
  540. package/build/generators/MLDSAData.d.ts.map +0 -1
  541. package/build/generators/MLDSAData.js.map +0 -1
  542. package/build/generators/builders/CalldataGenerator.d.ts.map +0 -1
  543. package/build/generators/builders/CalldataGenerator.js.map +0 -1
  544. package/build/generators/builders/CustomGenerator.d.ts.map +0 -1
  545. package/build/generators/builders/CustomGenerator.js.map +0 -1
  546. package/build/generators/builders/DeploymentGenerator.d.ts.map +0 -1
  547. package/build/generators/builders/DeploymentGenerator.js.map +0 -1
  548. package/build/generators/builders/HashCommitmentGenerator.d.ts.map +0 -1
  549. package/build/generators/builders/HashCommitmentGenerator.js.map +0 -1
  550. package/build/generators/builders/LegacyCalldataGenerator.d.ts.map +0 -1
  551. package/build/generators/builders/LegacyCalldataGenerator.js.map +0 -1
  552. package/build/generators/builders/MultiSignGenerator.d.ts.map +0 -1
  553. package/build/generators/builders/MultiSignGenerator.js.map +0 -1
  554. package/build/generators/builders/P2WDAGenerator.d.ts.map +0 -1
  555. package/build/generators/builders/P2WDAGenerator.js.map +0 -1
  556. package/build/index.d.ts.map +0 -1
  557. package/build/index.js.map +0 -1
  558. package/build/keypair/Address.d.ts.map +0 -1
  559. package/build/keypair/Address.js.map +0 -1
  560. package/build/keypair/AddressVerificator.d.ts.map +0 -1
  561. package/build/keypair/AddressVerificator.js.map +0 -1
  562. package/build/keypair/EcKeyPair.d.ts.map +0 -1
  563. package/build/keypair/EcKeyPair.js.map +0 -1
  564. package/build/keypair/MessageSigner.d.ts.map +0 -1
  565. package/build/keypair/MessageSigner.js.map +0 -1
  566. package/build/keypair/Secp256k1PointDeriver.d.ts.map +0 -1
  567. package/build/keypair/Secp256k1PointDeriver.js.map +0 -1
  568. package/build/keypair/Wallet.d.ts.map +0 -1
  569. package/build/keypair/Wallet.js.map +0 -1
  570. package/build/keypair/interfaces/IWallet.d.ts.map +0 -1
  571. package/build/keypair/interfaces/IWallet.js.map +0 -1
  572. package/build/metadata/ContractBaseMetadata.d.ts.map +0 -1
  573. package/build/metadata/ContractBaseMetadata.js.map +0 -1
  574. package/build/mnemonic/BIPStandard.d.ts.map +0 -1
  575. package/build/mnemonic/BIPStandard.js.map +0 -1
  576. package/build/mnemonic/Mnemonic.d.ts.map +0 -1
  577. package/build/mnemonic/Mnemonic.js.map +0 -1
  578. package/build/mnemonic/MnemonicStrength.d.ts.map +0 -1
  579. package/build/mnemonic/MnemonicStrength.js.map +0 -1
  580. package/build/network/ChainId.d.ts.map +0 -1
  581. package/build/network/ChainId.js.map +0 -1
  582. package/build/opnet.d.ts.map +0 -1
  583. package/build/opnet.js.map +0 -1
  584. package/build/p2wda/P2WDADetector.d.ts.map +0 -1
  585. package/build/p2wda/P2WDADetector.js.map +0 -1
  586. package/build/polyfill/disposable.d.ts.map +0 -1
  587. package/build/polyfill/disposable.js.map +0 -1
  588. package/build/signer/AddressRotation.d.ts.map +0 -1
  589. package/build/signer/AddressRotation.js.map +0 -1
  590. package/build/signer/IRotationSigner.d.ts.map +0 -1
  591. package/build/signer/IRotationSigner.js.map +0 -1
  592. package/build/signer/ParallelSignerAdapter.d.ts.map +0 -1
  593. package/build/signer/ParallelSignerAdapter.js.map +0 -1
  594. package/build/signer/SignerUtils.d.ts.map +0 -1
  595. package/build/signer/SignerUtils.js.map +0 -1
  596. package/build/signer/TweakedSigner.d.ts.map +0 -1
  597. package/build/signer/TweakedSigner.js.map +0 -1
  598. package/build/transaction/ContractAddress.d.ts.map +0 -1
  599. package/build/transaction/ContractAddress.js.map +0 -1
  600. package/build/transaction/TransactionFactory.d.ts.map +0 -1
  601. package/build/transaction/TransactionFactory.js.map +0 -1
  602. package/build/transaction/browser/BrowserSignerBase.d.ts.map +0 -1
  603. package/build/transaction/browser/BrowserSignerBase.js.map +0 -1
  604. package/build/transaction/browser/WalletNetworks.d.ts.map +0 -1
  605. package/build/transaction/browser/WalletNetworks.js.map +0 -1
  606. package/build/transaction/browser/Web3Provider.d.ts.map +0 -1
  607. package/build/transaction/browser/Web3Provider.js.map +0 -1
  608. package/build/transaction/browser/extensions/UnisatSigner.d.ts.map +0 -1
  609. package/build/transaction/browser/extensions/UnisatSigner.js.map +0 -1
  610. package/build/transaction/browser/extensions/XverseSigner.d.ts.map +0 -1
  611. package/build/transaction/browser/extensions/XverseSigner.js.map +0 -1
  612. package/build/transaction/browser/types/OPWallet.d.ts.map +0 -1
  613. package/build/transaction/browser/types/OPWallet.js.map +0 -1
  614. package/build/transaction/browser/types/Unisat.d.ts.map +0 -1
  615. package/build/transaction/browser/types/Unisat.js.map +0 -1
  616. package/build/transaction/browser/types/Xverse.d.ts.map +0 -1
  617. package/build/transaction/browser/types/Xverse.js.map +0 -1
  618. package/build/transaction/builders/CancelTransaction.d.ts.map +0 -1
  619. package/build/transaction/builders/CancelTransaction.js.map +0 -1
  620. package/build/transaction/builders/ChallengeSolutionTransaction.d.ts.map +0 -1
  621. package/build/transaction/builders/ChallengeSolutionTransaction.js.map +0 -1
  622. package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts.map +0 -1
  623. package/build/transaction/builders/ConsolidatedInteractionTransaction.js.map +0 -1
  624. package/build/transaction/builders/CustomScriptTransaction.d.ts.map +0 -1
  625. package/build/transaction/builders/CustomScriptTransaction.js.map +0 -1
  626. package/build/transaction/builders/DeploymentTransaction.d.ts.map +0 -1
  627. package/build/transaction/builders/DeploymentTransaction.js.map +0 -1
  628. package/build/transaction/builders/FundingTransaction.d.ts.map +0 -1
  629. package/build/transaction/builders/FundingTransaction.js.map +0 -1
  630. package/build/transaction/builders/InteractionTransaction.d.ts.map +0 -1
  631. package/build/transaction/builders/InteractionTransaction.js.map +0 -1
  632. package/build/transaction/builders/InteractionTransactionP2WDA.d.ts.map +0 -1
  633. package/build/transaction/builders/InteractionTransactionP2WDA.js.map +0 -1
  634. package/build/transaction/builders/MultiSignTransaction.d.ts.map +0 -1
  635. package/build/transaction/builders/MultiSignTransaction.js.map +0 -1
  636. package/build/transaction/builders/SharedInteractionTransaction.d.ts.map +0 -1
  637. package/build/transaction/builders/SharedInteractionTransaction.js.map +0 -1
  638. package/build/transaction/builders/TransactionBuilder.d.ts.map +0 -1
  639. package/build/transaction/builders/TransactionBuilder.js.map +0 -1
  640. package/build/transaction/enums/TransactionType.d.ts.map +0 -1
  641. package/build/transaction/enums/TransactionType.js.map +0 -1
  642. package/build/transaction/interfaces/ICancelTransactionParameters.d.ts.map +0 -1
  643. package/build/transaction/interfaces/ICancelTransactionParameters.js.map +0 -1
  644. package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts.map +0 -1
  645. package/build/transaction/interfaces/IConsolidatedTransactionParameters.js.map +0 -1
  646. package/build/transaction/interfaces/ICustomTransactionParameters.d.ts.map +0 -1
  647. package/build/transaction/interfaces/ICustomTransactionParameters.js.map +0 -1
  648. package/build/transaction/interfaces/ITransactionParameters.d.ts.map +0 -1
  649. package/build/transaction/interfaces/ITransactionParameters.js.map +0 -1
  650. package/build/transaction/interfaces/ITransactionResponses.d.ts.map +0 -1
  651. package/build/transaction/interfaces/ITransactionResponses.js.map +0 -1
  652. package/build/transaction/interfaces/ITweakedTransactionData.d.ts.map +0 -1
  653. package/build/transaction/interfaces/ITweakedTransactionData.js.map +0 -1
  654. package/build/transaction/interfaces/IWeb3ProviderTypes.d.ts.map +0 -1
  655. package/build/transaction/interfaces/IWeb3ProviderTypes.js.map +0 -1
  656. package/build/transaction/interfaces/Tap.d.ts.map +0 -1
  657. package/build/transaction/interfaces/Tap.js.map +0 -1
  658. package/build/transaction/mineable/IP2WSHAddress.d.ts.map +0 -1
  659. package/build/transaction/mineable/IP2WSHAddress.js.map +0 -1
  660. package/build/transaction/mineable/TimelockGenerator.d.ts.map +0 -1
  661. package/build/transaction/mineable/TimelockGenerator.js.map +0 -1
  662. package/build/transaction/offline/OfflineTransactionManager.d.ts.map +0 -1
  663. package/build/transaction/offline/OfflineTransactionManager.js.map +0 -1
  664. package/build/transaction/offline/TransactionReconstructor.d.ts.map +0 -1
  665. package/build/transaction/offline/TransactionReconstructor.js.map +0 -1
  666. package/build/transaction/offline/TransactionSerializer.d.ts.map +0 -1
  667. package/build/transaction/offline/TransactionSerializer.js.map +0 -1
  668. package/build/transaction/offline/TransactionStateCapture.d.ts.map +0 -1
  669. package/build/transaction/offline/TransactionStateCapture.js.map +0 -1
  670. package/build/transaction/offline/interfaces/ISerializableState.d.ts.map +0 -1
  671. package/build/transaction/offline/interfaces/ISerializableState.js.map +0 -1
  672. package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts.map +0 -1
  673. package/build/transaction/offline/interfaces/ITypeSpecificData.js.map +0 -1
  674. package/build/transaction/psbt/PSBTTypes.d.ts.map +0 -1
  675. package/build/transaction/psbt/PSBTTypes.js.map +0 -1
  676. package/build/transaction/shared/P2MR_MS.d.ts.map +0 -1
  677. package/build/transaction/shared/P2MR_MS.js.map +0 -1
  678. package/build/transaction/shared/P2TR_MS.d.ts.map +0 -1
  679. package/build/transaction/shared/P2TR_MS.js.map +0 -1
  680. package/build/transaction/shared/TweakedTransaction.d.ts.map +0 -1
  681. package/build/transaction/shared/TweakedTransaction.js.map +0 -1
  682. package/build/transaction/utils/WitnessUtils.d.ts.map +0 -1
  683. package/build/transaction/utils/WitnessUtils.js.map +0 -1
  684. package/build/tsconfig.build.tsbuildinfo +0 -1
  685. package/build/utils/BitcoinUtils.d.ts.map +0 -1
  686. package/build/utils/BitcoinUtils.js.map +0 -1
  687. package/build/utils/BufferHelper.d.ts.map +0 -1
  688. package/build/utils/BufferHelper.js.map +0 -1
  689. package/build/utils/StringToBuffer.d.ts.map +0 -1
  690. package/build/utils/StringToBuffer.js.map +0 -1
  691. package/build/utils/lengths.d.ts.map +0 -1
  692. package/build/utils/lengths.js.map +0 -1
  693. package/build/utils/types.d.ts.map +0 -1
  694. package/build/utils/types.js.map +0 -1
  695. package/build/utxo/OPNetLimitedProvider.d.ts.map +0 -1
  696. package/build/utxo/OPNetLimitedProvider.js.map +0 -1
  697. package/build/utxo/interfaces/BroadcastResponse.d.ts.map +0 -1
  698. package/build/utxo/interfaces/BroadcastResponse.js.map +0 -1
  699. package/build/utxo/interfaces/IUTXO.d.ts.map +0 -1
  700. package/build/utxo/interfaces/IUTXO.js.map +0 -1
  701. package/build/verification/TapscriptVerificator.d.ts.map +0 -1
  702. package/build/verification/TapscriptVerificator.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { fromHex, Psbt, toHex } from '@btc-vision/bitcoin';
1
+ import { fromHex, Psbt, toHex, toXOnly } from '@btc-vision/bitcoin';
2
2
  import {} from '@btc-vision/ecpair';
3
3
  import { TransactionType } from '../enums/TransactionType.js';
4
4
  import { TransactionBuilder } from '../builders/TransactionBuilder.js';
@@ -7,6 +7,7 @@ import { TransactionSerializer } from './TransactionSerializer.js';
7
7
  import { TransactionReconstructor, } from './TransactionReconstructor.js';
8
8
  import { TransactionStateCapture } from './TransactionStateCapture.js';
9
9
  import { isMultiSigSpecificData } from './interfaces/ITypeSpecificData.js';
10
+ import { CSVMultisigProvider } from '../mineable/CSVMultisigProvider.js';
10
11
  /**
11
12
  * Main entry point for offline transaction signing workflow.
12
13
  *
@@ -435,5 +436,144 @@ export class OfflineTransactionManager {
435
436
  };
436
437
  return TransactionSerializer.toBase64(newState);
437
438
  }
439
+ /**
440
+ * Inspect collaborative signing progress on all CSV multisig inputs.
441
+ * Returns an empty array when no partial PSBT has been produced yet.
442
+ */
443
+ static csvMultisigGetStatus(serializedState) {
444
+ const state = TransactionSerializer.fromBase64(serializedState);
445
+ if (!state.partialPsbtBase64)
446
+ return [];
447
+ const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
448
+ const psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
449
+ return this.computeCSVMultisigStatus(state, psbt, network);
450
+ }
451
+ /**
452
+ * Add the given signer's contribution to every CSV multisig input it can sign.
453
+ * No-op for inputs whose tapscript does not contain the signer's x-only pubkey.
454
+ *
455
+ * First call (no partial PSBT yet) builds the PSBT from the funding params
456
+ * using the provided signer as the builder's signer. Subsequent calls load
457
+ * the carried PSBT and add the signer's tapScriptSig where applicable.
458
+ */
459
+ static async addCSVMultisigSignature(serializedState, signer) {
460
+ const state = TransactionSerializer.fromBase64(serializedState);
461
+ const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
462
+ let psbt;
463
+ if (state.partialPsbtBase64) {
464
+ psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
465
+ this.addSignerToCSVInputs(psbt, signer, network);
466
+ }
467
+ else {
468
+ const builder = this.importForSigning(serializedState, { signer });
469
+ psbt = await builder.signPSBT();
470
+ // Best-effort: ensure the signer's contribution is recorded on every
471
+ // CSV input where they're a cosigner (the builder already attempts
472
+ // this, but this guards against builds that bailed early).
473
+ this.addSignerToCSVInputs(psbt, signer, network);
474
+ }
475
+ const perInput = this.computeCSVMultisigStatus(state, psbt, network);
476
+ const final = perInput.length > 0 && perInput.every((s) => s.collected >= s.required);
477
+ const newState = {
478
+ ...state,
479
+ partialPsbtBase64: psbt.toBase64(),
480
+ };
481
+ return {
482
+ state: TransactionSerializer.toBase64(newState),
483
+ final,
484
+ perInput,
485
+ };
486
+ }
487
+ /**
488
+ * Finalize every CSV multisig input on the partial PSBT and extract the
489
+ * raw transaction hex. Throws if any input is still below its threshold.
490
+ */
491
+ static csvMultisigFinalize(serializedState) {
492
+ const state = TransactionSerializer.fromBase64(serializedState);
493
+ if (!state.partialPsbtBase64) {
494
+ throw new Error('No partial PSBT in state — call addCSVMultisigSignature first');
495
+ }
496
+ const network = TransactionReconstructor['nameToNetwork'](state.baseParams.networkName);
497
+ const psbt = Psbt.fromBase64(state.partialPsbtBase64, { network });
498
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
499
+ const input = psbt.data.inputs[i];
500
+ if (!input.tapLeafScript || input.tapLeafScript.length === 0)
501
+ continue;
502
+ const leaf = input.tapLeafScript[0];
503
+ if (!leaf)
504
+ continue;
505
+ const addr = CSVMultisigProvider.deriveAddressFromTapscript(leaf.script, network);
506
+ if (!addr)
507
+ continue;
508
+ CSVMultisigProvider.finalizePsbtInput(psbt, i, network, addr);
509
+ }
510
+ return psbt.extractTransaction(true, true).toHex();
511
+ }
512
+ /**
513
+ * Sign every CSV multisig input whose tapscript contains the signer's
514
+ * x-only pubkey and does not yet carry a signature from that pubkey.
515
+ */
516
+ static addSignerToCSVInputs(psbt, signer, network) {
517
+ const signerXOnly = toXOnly(signer.publicKey);
518
+ const signerXOnlyHex = toHex(signerXOnly);
519
+ for (let i = 0; i < psbt.data.inputs.length; i++) {
520
+ const input = psbt.data.inputs[i];
521
+ if (!input.tapLeafScript || input.tapLeafScript.length === 0)
522
+ continue;
523
+ const leaf = input.tapLeafScript[0];
524
+ if (!leaf)
525
+ continue;
526
+ const addr = CSVMultisigProvider.deriveAddressFromTapscript(leaf.script, network);
527
+ if (!addr)
528
+ continue;
529
+ const isCosigner = addr.config.pubkeys.some((pk) => toHex(pk) === signerXOnlyHex);
530
+ if (!isCosigner)
531
+ continue;
532
+ const alreadySigned = (input.tapScriptSig ?? []).some((s) => toHex(s.pubkey) === signerXOnlyHex);
533
+ if (alreadySigned)
534
+ continue;
535
+ psbt.signTaprootInput(i, signer);
536
+ }
537
+ }
538
+ /**
539
+ * Build per-input status for every CSV multisig input.
540
+ *
541
+ * Walks state.utxos so we can detect CSV multisig inputs even after the
542
+ * builder has already finalized them (which clears tapLeafScript). For
543
+ * partially-signed inputs the signers list reflects collected tapScriptSig
544
+ * entries; for finalized inputs collected is set to the threshold.
545
+ */
546
+ static computeCSVMultisigStatus(state, psbt, network) {
547
+ const result = [];
548
+ for (let i = 0; i < state.utxos.length; i++) {
549
+ const utxo = state.utxos[i];
550
+ if (!utxo?.witnessScript)
551
+ continue;
552
+ const tapscript = fromHex(utxo.witnessScript);
553
+ const addr = CSVMultisigProvider.deriveAddressFromTapscript(tapscript, network);
554
+ if (!addr)
555
+ continue;
556
+ const input = psbt.data.inputs[i];
557
+ if (!input)
558
+ continue;
559
+ if (input.finalScriptWitness) {
560
+ // Already finalized — by construction it carried >= threshold sigs.
561
+ result.push({
562
+ inputIndex: i,
563
+ required: addr.config.threshold,
564
+ collected: addr.config.threshold,
565
+ signers: [],
566
+ });
567
+ continue;
568
+ }
569
+ const tapSigs = input.tapScriptSig ?? [];
570
+ result.push({
571
+ inputIndex: i,
572
+ required: addr.config.threshold,
573
+ collected: tapSigs.length,
574
+ signers: tapSigs.map((s) => toHex(s.pubkey)),
575
+ });
576
+ }
577
+ return result;
578
+ }
438
579
  }
439
- //# sourceMappingURL=OfflineTransactionManager.js.map
@@ -75,4 +75,3 @@ export declare class TransactionReconstructor {
75
75
  */
76
76
  private static nameToNetwork;
77
77
  }
78
- //# sourceMappingURL=TransactionReconstructor.d.ts.map
@@ -314,4 +314,3 @@ export class TransactionReconstructor {
314
314
  }
315
315
  }
316
316
  }
317
- //# sourceMappingURL=TransactionReconstructor.js.map
@@ -98,4 +98,3 @@ export declare class TransactionSerializer {
98
98
  private static networkNameToU8;
99
99
  private static u8ToNetworkName;
100
100
  }
101
- //# sourceMappingURL=TransactionSerializer.d.ts.map
@@ -35,6 +35,8 @@ export class TransactionSerializer {
35
35
  this.writeTypeSpecificData(writer, state.typeSpecificData);
36
36
  // Write precomputed data
37
37
  this.writePrecomputedData(writer, state.precomputedData);
38
+ // v2: partial PSBT (empty string when absent)
39
+ writer.writeStringWithLength(state.partialPsbtBase64 ?? '');
38
40
  // Get buffer and calculate checksum
39
41
  const dataBuffer = writer.getBuffer();
40
42
  const checksum = this.calculateChecksum(dataBuffer);
@@ -82,6 +84,12 @@ export class TransactionSerializer {
82
84
  const typeSpecificData = this.readTypeSpecificData(reader, header.transactionType);
83
85
  // Read precomputed data
84
86
  const precomputedData = this.readPrecomputedData(reader);
87
+ // v2+: partial PSBT (collaborative signing carryover)
88
+ let partialPsbtBase64;
89
+ if (header.formatVersion >= 2) {
90
+ const stored = reader.readStringWithLength();
91
+ partialPsbtBase64 = stored.length > 0 ? stored : undefined;
92
+ }
85
93
  return {
86
94
  header,
87
95
  baseParams,
@@ -92,6 +100,7 @@ export class TransactionSerializer {
92
100
  signerMappings,
93
101
  typeSpecificData,
94
102
  precomputedData,
103
+ ...(partialPsbtBase64 !== undefined ? { partialPsbtBase64 } : {}),
95
104
  };
96
105
  }
97
106
  /**
@@ -797,4 +806,3 @@ export class TransactionSerializer {
797
806
  }
798
807
  }
799
808
  }
800
- //# sourceMappingURL=TransactionSerializer.js.map
@@ -108,4 +108,3 @@ export declare class TransactionStateCapture {
108
108
  */
109
109
  private static networkToChainId;
110
110
  }
111
- //# sourceMappingURL=TransactionStateCapture.d.ts.map
@@ -366,4 +366,3 @@ export class TransactionStateCapture {
366
366
  return ChainId.Bitcoin;
367
367
  }
368
368
  }
369
- //# sourceMappingURL=TransactionStateCapture.js.map
@@ -2,9 +2,10 @@ import { TransactionType } from '../../enums/TransactionType.js';
2
2
  import { ChainId } from '../../../network/ChainId.js';
3
3
  import type { TypeSpecificData } from './ITypeSpecificData.js';
4
4
  /**
5
- * Format version for serialization compatibility
5
+ * Format version for serialization compatibility.
6
+ * v2 adds the optional `partialPsbtBase64` field on the top-level state.
6
7
  */
7
- export declare const SERIALIZATION_FORMAT_VERSION = 1;
8
+ export declare const SERIALIZATION_FORMAT_VERSION = 2;
8
9
  /**
9
10
  * Magic byte for identifying serialized transaction state
10
11
  */
@@ -129,5 +130,11 @@ export interface ISerializableTransactionState {
129
130
  readonly typeSpecificData: TypeSpecificData;
130
131
  /** Pre-computed data for deterministic rebuild */
131
132
  readonly precomputedData: PrecomputedData;
133
+ /**
134
+ * Partial PSBT (base64) carrying signatures collected so far.
135
+ * Used by collaborative flows like CSV multisig where multiple cosigners
136
+ * accumulate signatures across hops before finalization.
137
+ * Only present once at least one signing hop has run.
138
+ */
139
+ readonly partialPsbtBase64?: string;
132
140
  }
133
- //# sourceMappingURL=ISerializableState.d.ts.map
@@ -1,11 +1,11 @@
1
1
  import { TransactionType } from '../../enums/TransactionType.js';
2
2
  import { ChainId } from '../../../network/ChainId.js';
3
3
  /**
4
- * Format version for serialization compatibility
4
+ * Format version for serialization compatibility.
5
+ * v2 adds the optional `partialPsbtBase64` field on the top-level state.
5
6
  */
6
- export const SERIALIZATION_FORMAT_VERSION = 1;
7
+ export const SERIALIZATION_FORMAT_VERSION = 2;
7
8
  /**
8
9
  * Magic byte for identifying serialized transaction state
9
10
  */
10
11
  export const SERIALIZATION_MAGIC_BYTE = 0x42; // 'B' for Bitcoin
11
- //# sourceMappingURL=ISerializableState.js.map
@@ -135,4 +135,3 @@ export declare function isCustomScriptSpecificData(data: TypeSpecificData): data
135
135
  * Type guard for CancelSpecificData
136
136
  */
137
137
  export declare function isCancelSpecificData(data: TypeSpecificData): data is CancelSpecificData;
138
- //# sourceMappingURL=ITypeSpecificData.d.ts.map
@@ -35,4 +35,3 @@ export function isCustomScriptSpecificData(data) {
35
35
  export function isCancelSpecificData(data) {
36
36
  return data.type === TransactionType.CANCEL;
37
37
  }
38
- //# sourceMappingURL=ITypeSpecificData.js.map
@@ -1,4 +1,3 @@
1
1
  export declare enum PSBTTypes {
2
2
  UNWRAP = 0
3
3
  }
4
- //# sourceMappingURL=PSBTTypes.d.ts.map
@@ -2,4 +2,3 @@ export var PSBTTypes;
2
2
  (function (PSBTTypes) {
3
3
  PSBTTypes[PSBTTypes["UNWRAP"] = 0] = "UNWRAP";
4
4
  })(PSBTTypes || (PSBTTypes = {}));
5
- //# sourceMappingURL=PSBTTypes.js.map
@@ -10,4 +10,3 @@ export declare class P2MR_MS {
10
10
  */
11
11
  static generateMultiSigAddress(pubKeys: Uint8Array[], minimumSignatureRequired: number, network?: Network): string;
12
12
  }
13
- //# sourceMappingURL=P2MR_MS.d.ts.map
@@ -34,4 +34,3 @@ export class P2MR_MS {
34
34
  return address;
35
35
  }
36
36
  }
37
- //# sourceMappingURL=P2MR_MS.js.map
@@ -10,4 +10,3 @@ export declare class P2TR_MS {
10
10
  */
11
11
  static generateMultiSigAddress(pubKeys: Uint8Array[], minimumSignatureRequired: number, network?: Network): string;
12
12
  }
13
- //# sourceMappingURL=P2TR_MS.d.ts.map
@@ -33,4 +33,3 @@ export class P2TR_MS {
33
33
  return address;
34
34
  }
35
35
  }
36
- //# sourceMappingURL=P2TR_MS.js.map
@@ -5,6 +5,7 @@ import { type UniversalSigner } from '@btc-vision/ecpair';
5
5
  import type { UTXO } from '../../utxo/interfaces/IUTXO.js';
6
6
  import type { TapLeafScript } from '../interfaces/Tap.js';
7
7
  import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
8
+ import { type CSVMultisigAddress } from '../mineable/CSVMultisigProvider.js';
8
9
  import type { QuantumBIP32Interface } from '@btc-vision/bip32';
9
10
  import { type RotationSigner, type SignerMap } from '../../signer/AddressRotation.js';
10
11
  import type { ITweakedTransactionData, SupportedTransactionVersion } from '../interfaces/ITweakedTransactionData.js';
@@ -93,6 +94,12 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
93
94
  */
94
95
  protected csvInputIndices: Set<number>;
95
96
  protected anchorInputIndices: Set<number>;
97
+ /**
98
+ * Track P2TR CSV multisig inputs together with the address descriptor needed
99
+ * to finalize them (tapscript + derived control block + parsed config).
100
+ * @protected
101
+ */
102
+ protected csvMultisigInputs: Map<number, CSVMultisigAddress>;
96
103
  protected regenerated: boolean;
97
104
  protected ignoreSignatureErrors: boolean;
98
105
  protected noSignatures: boolean;
@@ -331,6 +338,18 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
331
338
  * @returns {PsbtInputExtended} The PSBT input extended
332
339
  */
333
340
  protected generatePsbtInputExtended(utxo: UTXO, i: number, _extra?: boolean): PsbtInputExtended;
341
+ /**
342
+ * Detect + configure a P2TR CSV multisig input for script-path spending.
343
+ *
344
+ * UTXOs of this shape carry the tapscript in `witnessScript`. The control
345
+ * block and internal pubkey are fully determined by the tapscript (single
346
+ * leaf tree, NUMS internal key) so the caller only needs to provide the
347
+ * tapscript.
348
+ *
349
+ * Returns true when the UTXO was recognized and the input was configured,
350
+ * false otherwise (caller falls back to the default P2TR key-path setup).
351
+ */
352
+ protected processCSVMultisigP2TRInput(utxo: UTXO, input: PsbtInputExtended, i: number, scriptPub: Uint8Array): boolean;
334
353
  protected processP2WSHInput(utxo: UTXO, input: PsbtInputExtended, i: number): void;
335
354
  protected secondsToCSVTimeUnits(seconds: number): number;
336
355
  protected createTimeBasedCSV(seconds: number): number;
@@ -357,4 +376,3 @@ export declare abstract class TweakedTransaction extends Logger implements Dispo
357
376
  private signTaprootInput;
358
377
  private signNonTaprootInput;
359
378
  }
360
- //# sourceMappingURL=TweakedTransaction.d.ts.map
@@ -1,11 +1,12 @@
1
1
  import { Logger } from '@btc-vision/logger';
2
- import { address as bitAddress, applySignaturesToPsbt, crypto as bitCrypto, fromHex, getFinalScripts, isP2A, isP2MR, isP2MS, isP2PK, isP2PKH, isP2SHScript, isP2TR, isP2WPKH, isP2WSHScript, isUnknownSegwitVersion, opcodes, payments, PaymentType, prepareSigningTasks, Psbt, script, toXOnly, Transaction, varuint, WorkerSigningPool, } from '@btc-vision/bitcoin';
2
+ import { address as bitAddress, applySignaturesToPsbt, crypto as bitCrypto, equals, fromHex, getFinalScripts, isP2A, isP2MR, isP2MS, isP2PK, isP2PKH, isP2SHScript, isP2TR, isP2WPKH, isP2WSHScript, isUnknownSegwitVersion, opcodes, payments, PaymentType, prepareSigningTasks, Psbt, script, toXOnly, Transaction, varuint, WorkerSigningPool, } from '@btc-vision/bitcoin';
3
3
  import { isUniversalSigner, TweakedSigner, } from '../../signer/TweakedSigner.js';
4
4
  import {} from '@btc-vision/ecpair';
5
5
  import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
6
6
  import { canSignNonTaprootInput, isTaprootInput, pubkeyInScript, } from '../../signer/SignerUtils.js';
7
7
  import { witnessStackToScriptWitness } from '../utils/WitnessUtils.js';
8
8
  import { P2WDADetector } from '../../p2wda/P2WDADetector.js';
9
+ import { CSVMultisigProvider, } from '../mineable/CSVMultisigProvider.js';
9
10
  import { MessageSigner } from '../../keypair/MessageSigner.js';
10
11
  import {} from '../../signer/AddressRotation.js';
11
12
  import { toTweakedParallelKeyPair } from '../../signer/ParallelSignerAdapter.js';
@@ -87,6 +88,12 @@ export class TweakedTransaction extends Logger {
87
88
  */
88
89
  csvInputIndices = new Set();
89
90
  anchorInputIndices = new Set();
91
+ /**
92
+ * Track P2TR CSV multisig inputs together with the address descriptor needed
93
+ * to finalize them (tapscript + derived control block + parsed config).
94
+ * @protected
95
+ */
96
+ csvMultisigInputs = new Map();
90
97
  regenerated = false;
91
98
  ignoreSignatureErrors = false;
92
99
  noSignatures = false;
@@ -269,6 +276,7 @@ export class TweakedTransaction extends Logger {
269
276
  delete this.tweakedSigner;
270
277
  this.csvInputIndices.clear();
271
278
  this.anchorInputIndices.clear();
279
+ this.csvMultisigInputs.clear();
272
280
  this.inputSignerMap.clear();
273
281
  this.tweakedSignerCache.clear();
274
282
  delete this.parallelSigningConfig;
@@ -319,7 +327,8 @@ export class TweakedTransaction extends Logger {
319
327
  this.sequence = TransactionSequence.FINAL;
320
328
  for (const input of this.inputs) {
321
329
  // This would disable CSV! You need to check if the input has CSV
322
- if (this.csvInputIndices.has(this.inputs.indexOf(input))) {
330
+ const idx = this.inputs.indexOf(input);
331
+ if (this.csvInputIndices.has(idx) || this.csvMultisigInputs.has(idx)) {
323
332
  continue;
324
333
  }
325
334
  input.sequence = TransactionSequence.FINAL;
@@ -571,10 +580,23 @@ export class TweakedTransaction extends Logger {
571
580
  await this.signInputsSequential(transaction);
572
581
  }
573
582
  }
583
+ let allFinalized = true;
574
584
  for (let i = 0; i < transaction.data.inputs.length; i++) {
575
- transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
585
+ try {
586
+ transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
587
+ }
588
+ catch (e) {
589
+ // CSV multisig inputs may legitimately be below threshold during
590
+ // a collaborative signing hop. Leave them unfinalized so the
591
+ // partial PSBT can travel to the next cosigner.
592
+ if (this.csvMultisigInputs.has(i)) {
593
+ allFinalized = false;
594
+ continue;
595
+ }
596
+ throw e;
597
+ }
576
598
  }
577
- this.finalized = true;
599
+ this.finalized = allFinalized;
578
600
  }
579
601
  /**
580
602
  * Signs all inputs sequentially in batches of 20.
@@ -934,8 +956,13 @@ export class TweakedTransaction extends Logger {
934
956
  if (inputSign)
935
957
  input.sighashType = inputSign;
936
958
  }
937
- // Taproot internal key - use per-input signer in address rotation mode
938
- if (this.addressRotationEnabled) {
959
+ // CSV multisig P2TR: script-path spend with NUMS internal key.
960
+ // Must come before the default key-path setup below.
961
+ if (this.processCSVMultisigP2TRInput(utxo, input, i, scriptPub)) {
962
+ // input fully configured for script-path spend
963
+ }
964
+ else if (this.addressRotationEnabled) {
965
+ // Taproot internal key - use per-input signer in address rotation mode
939
966
  input.tapInternalKey = this.internalPubKeyToXOnlyForInput(i);
940
967
  }
941
968
  else {
@@ -982,8 +1009,10 @@ export class TweakedTransaction extends Logger {
982
1009
  this.error(`Unknown or unsupported script type for output: ${utxo.scriptPubKey.hex}`);
983
1010
  }
984
1011
  if (i === 0) {
985
- // TapLeafScript if available
986
- if (this.tapLeafScript) {
1012
+ // TapLeafScript if available — but never clobber a CSV multisig input's
1013
+ // own tapscript; its spend is a script-path that belongs to the UTXO,
1014
+ // not to this transaction's contract leaf.
1015
+ if (this.tapLeafScript && !this.csvMultisigInputs.has(i)) {
987
1016
  input.tapLeafScript = [this.tapLeafScript];
988
1017
  }
989
1018
  if (this.nonWitnessUtxo) {
@@ -992,6 +1021,44 @@ export class TweakedTransaction extends Logger {
992
1021
  }
993
1022
  return input;
994
1023
  }
1024
+ /**
1025
+ * Detect + configure a P2TR CSV multisig input for script-path spending.
1026
+ *
1027
+ * UTXOs of this shape carry the tapscript in `witnessScript`. The control
1028
+ * block and internal pubkey are fully determined by the tapscript (single
1029
+ * leaf tree, NUMS internal key) so the caller only needs to provide the
1030
+ * tapscript.
1031
+ *
1032
+ * Returns true when the UTXO was recognized and the input was configured,
1033
+ * false otherwise (caller falls back to the default P2TR key-path setup).
1034
+ */
1035
+ processCSVMultisigP2TRInput(utxo, input, i, scriptPub) {
1036
+ if (!utxo.witnessScript)
1037
+ return false;
1038
+ const tapscript = utxo.witnessScript instanceof Uint8Array
1039
+ ? utxo.witnessScript
1040
+ : fromHex(utxo.witnessScript);
1041
+ const addr = CSVMultisigProvider.deriveAddressFromTapscript(tapscript, this.network);
1042
+ if (!addr)
1043
+ return false;
1044
+ // Guard against spoofed witnessScripts on P2TR UTXOs from an unrelated
1045
+ // address: the tapscript must hash back to this exact scriptPubKey.
1046
+ if (!equals(addr.scriptPubKey, scriptPub)) {
1047
+ return false;
1048
+ }
1049
+ input.tapLeafScript = [
1050
+ {
1051
+ leafVersion: addr.leafVersion,
1052
+ script: addr.tapscript,
1053
+ controlBlock: addr.controlBlock,
1054
+ },
1055
+ ];
1056
+ input.tapInternalKey = addr.internalPubkey;
1057
+ // Force a CSV-compatible nSequence so OP_CHECKSEQUENCEVERIFY passes.
1058
+ input.sequence = this.setCSVSequence(addr.config.csvBlocks, this.sequence);
1059
+ this.csvMultisigInputs.set(i, addr);
1060
+ return true;
1061
+ }
995
1062
  processP2WSHInput(utxo, input, i) {
996
1063
  // P2WSH requires a witnessScript
997
1064
  if (!utxo.witnessScript) {
@@ -1047,6 +1114,15 @@ export class TweakedTransaction extends Logger {
1047
1114
  finalScriptWitness: Uint8Array.from([0]),
1048
1115
  };
1049
1116
  }
1117
+ const csvMultisigAddr = this.csvMultisigInputs.get(inputIndex);
1118
+ if (csvMultisigAddr) {
1119
+ const tapSigs = input.tapScriptSig ?? [];
1120
+ const witnessStack = CSVMultisigProvider.buildFinalWitnessFromTapScriptSigs(tapSigs, csvMultisigAddr);
1121
+ return {
1122
+ finalScriptSig: undefined,
1123
+ finalScriptWitness: witnessStackToScriptWitness(witnessStack),
1124
+ };
1125
+ }
1050
1126
  if (isP2WSH && isSegwit && input.witnessScript) {
1051
1127
  if (!input.partialSig || input.partialSig.length === 0) {
1052
1128
  throw new Error(`No signatures for P2WSH input #${inputIndex}`);
@@ -1092,11 +1168,20 @@ export class TweakedTransaction extends Logger {
1092
1168
  const signer = this.signer;
1093
1169
  // then, we sign all the remaining inputs with the wallet signer.
1094
1170
  await signer.multiSignPsbt([transaction]);
1095
- // Then, we finalize every input.
1171
+ let allFinalized = true;
1096
1172
  for (let i = 0; i < transaction.data.inputs.length; i++) {
1097
- transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
1173
+ try {
1174
+ transaction.finalizeInput(i, this.customFinalizerP2SH.bind(this));
1175
+ }
1176
+ catch (e) {
1177
+ if (this.csvMultisigInputs.has(i)) {
1178
+ allFinalized = false;
1179
+ continue;
1180
+ }
1181
+ throw e;
1182
+ }
1098
1183
  }
1099
- this.finalized = true;
1184
+ this.finalized = allFinalized;
1100
1185
  }
1101
1186
  isCSVScript(decompiled) {
1102
1187
  return decompiled.some((op) => op === opcodes.OP_CHECKSEQUENCEVERIFY);
@@ -1233,4 +1318,3 @@ export class TweakedTransaction extends Logger {
1233
1318
  }
1234
1319
  }
1235
1320
  }
1236
- //# sourceMappingURL=TweakedTransaction.js.map
@@ -4,4 +4,3 @@
4
4
  * @returns {Uint8Array}
5
5
  */
6
6
  export declare function witnessStackToScriptWitness(witness: Uint8Array[]): Uint8Array;
7
- //# sourceMappingURL=WitnessUtils.d.ts.map
@@ -34,4 +34,3 @@ export function witnessStackToScriptWitness(witness) {
34
34
  writeVector(witness);
35
35
  return buffer;
36
36
  }
37
- //# sourceMappingURL=WitnessUtils.js.map
@@ -23,4 +23,3 @@ export declare class BitcoinUtils {
23
23
  */
24
24
  static opnetHash(data: Uint8Array): string;
25
25
  }
26
- //# sourceMappingURL=BitcoinUtils.d.ts.map
@@ -54,4 +54,3 @@ export class BitcoinUtils {
54
54
  return `0x${toHex(new Uint8Array(hash))}`;
55
55
  }
56
56
  }
57
- //# sourceMappingURL=BitcoinUtils.js.map
@@ -9,4 +9,3 @@ export declare class BufferHelper {
9
9
  static valueToUint8Array(value: bigint, length?: number): Uint8Array;
10
10
  static uint8ArrayToValue(input: Uint8Array): bigint;
11
11
  }
12
- //# sourceMappingURL=BufferHelper.d.ts.map
@@ -54,4 +54,3 @@ export class BufferHelper {
54
54
  return BigInt('0x' + toHex(input));
55
55
  }
56
56
  }
57
- //# sourceMappingURL=BufferHelper.js.map
@@ -1,2 +1 @@
1
1
  export declare function stringToBuffer(str: string): Uint8Array;
2
- //# sourceMappingURL=StringToBuffer.d.ts.map
@@ -2,4 +2,3 @@ import { fromHex } from '@btc-vision/bitcoin';
2
2
  export function stringToBuffer(str) {
3
3
  return fromHex(str.startsWith('0x') ? str.slice(2) : str);
4
4
  }
5
- //# sourceMappingURL=StringToBuffer.js.map
@@ -15,4 +15,3 @@ export declare const I32_BYTE_LENGTH: number;
15
15
  export declare const I16_BYTE_LENGTH: number;
16
16
  export declare const I8_BYTE_LENGTH: number;
17
17
  export declare const BOOLEAN_BYTE_LENGTH: number;
18
- //# sourceMappingURL=lengths.d.ts.map
@@ -15,4 +15,3 @@ export const I32_BYTE_LENGTH = 4;
15
15
  export const I16_BYTE_LENGTH = 2;
16
16
  export const I8_BYTE_LENGTH = 1;
17
17
  export const BOOLEAN_BYTE_LENGTH = 1;
18
- //# sourceMappingURL=lengths.js.map
@@ -13,4 +13,3 @@ export type u16 = number;
13
13
  export type u32 = number;
14
14
  export type u64 = bigint;
15
15
  export type Selector = number;
16
- //# sourceMappingURL=types.d.ts.map
@@ -1,2 +1 @@
1
1
  import { DeterministicMap } from '../deterministic/DeterministicMap.js';
2
- //# sourceMappingURL=types.js.map
@@ -56,4 +56,3 @@ export declare class OPNetLimitedProvider {
56
56
  */
57
57
  rpcMethod(method: string, paramsMethod: unknown[]): Promise<unknown>;
58
58
  }
59
- //# sourceMappingURL=OPNetLimitedProvider.d.ts.map
@@ -219,4 +219,3 @@ export class OPNetLimitedProvider {
219
219
  return result;
220
220
  }
221
221
  }
222
- //# sourceMappingURL=OPNetLimitedProvider.js.map
@@ -7,4 +7,3 @@ export interface BroadcastResponse {
7
7
  modifiedTransaction?: string;
8
8
  created?: boolean;
9
9
  }
10
- //# sourceMappingURL=BroadcastResponse.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=BroadcastResponse.js.map
@@ -36,4 +36,3 @@ export interface RawUTXOResponse {
36
36
  readonly scriptPubKey: ScriptPubKey;
37
37
  readonly raw: string;
38
38
  }
39
- //# sourceMappingURL=IUTXO.d.ts.map
@@ -1,2 +1 @@
1
1
  export {};
2
- //# sourceMappingURL=IUTXO.js.map