@btc-vision/transaction 1.0.85 → 1.0.86

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 (279) hide show
  1. package/.gitattributes +2 -2
  2. package/browser/_version.d.ts +1 -1
  3. package/browser/index.js +1 -1
  4. package/browser/keypair/Wallet.d.ts +3 -0
  5. package/browser/transaction/builders/TapUnwarpTransaction.d.ts +40 -40
  6. package/browser/transaction/builders/UnwarpTransaction.d.ts +34 -34
  7. package/browser/utxo/UTXOManager.d.ts +7 -7
  8. package/build/Utils.d.ts +0 -0
  9. package/build/Utils.js +1 -0
  10. package/build/_version.d.ts +1 -1
  11. package/build/_version.js +1 -1
  12. package/build/consensus/metadata/RoswsellConsensus.d.ts +2 -0
  13. package/build/consensus/metadata/RoswsellConsensus.js +4 -0
  14. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  15. package/build/contracts/ContractMetadataManager.js +1 -0
  16. package/build/generators/OPNetAddressGenerator.d.ts +0 -0
  17. package/build/generators/OPNetAddressGenerator.js +1 -0
  18. package/build/generators/builders/UnwrapGenerator.d.ts +8 -0
  19. package/build/generators/builders/UnwrapGenerator.js +79 -0
  20. package/build/keypair/Wallet.d.ts +3 -0
  21. package/build/keypair/Wallet.js +8 -0
  22. package/build/keypair/interfaces/GeneratedWallet.d.ts +5 -0
  23. package/build/keypair/interfaces/GeneratedWallet.js +1 -0
  24. package/build/metadata/CommonContracts.d.ts +6 -0
  25. package/build/metadata/CommonContracts.js +5 -0
  26. package/build/metadata/ContractMetadataManager.d.ts +1 -0
  27. package/build/metadata/ContractMetadataManager.js +9 -0
  28. package/build/metadata/contracts/ContractBase.d.ts +9 -0
  29. package/build/metadata/contracts/ContractBase.js +13 -0
  30. package/build/metadata/contracts/ContractBaseMetadata.d.ts +9 -0
  31. package/build/metadata/contracts/ContractBaseMetadata.js +13 -0
  32. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  33. package/build/metadata/contracts/ContractMetadataManager.js +1 -0
  34. package/build/network/NetworkConverter.d.ts +0 -0
  35. package/build/network/NetworkConverter.js +14 -0
  36. package/build/scripts/Regtest.d.ts +2 -0
  37. package/build/scripts/Regtest.js +15 -0
  38. package/build/scripts/test.d.ts +1 -0
  39. package/build/scripts/test.js +74 -0
  40. package/build/signer/Regtest.d.ts +2 -0
  41. package/build/signer/Regtest.js +15 -0
  42. package/build/tests/Regtest.d.ts +3 -0
  43. package/build/tests/Regtest.js +29 -0
  44. package/build/tests/adaptPSBT.d.ts +1 -0
  45. package/build/tests/adaptPSBT.js +44 -0
  46. package/build/tests/btc/send.d.ts +1 -0
  47. package/build/tests/btc/send.js +35 -0
  48. package/build/tests/btc/transfer.d.ts +1 -0
  49. package/build/tests/btc/transfer.js +35 -0
  50. package/build/tests/createPairReg.d.ts +1 -0
  51. package/build/tests/createPairReg.js +73 -0
  52. package/build/tests/deploy/deployMoto.d.ts +4 -0
  53. package/build/tests/deploy/deployMoto.js +89 -0
  54. package/build/tests/deploy/deployPool.d.ts +1 -0
  55. package/build/tests/deploy/deployPool.js +5 -0
  56. package/build/tests/deploy/deployStep1.d.ts +1 -0
  57. package/build/tests/deploy/deployStep1.js +5 -0
  58. package/build/tests/deploy/deployStep2.d.ts +1 -0
  59. package/build/tests/deploy/deployStep2.js +5 -0
  60. package/build/tests/deploy/deployStep3.d.ts +1 -0
  61. package/build/tests/deploy/deployStep3.js +5 -0
  62. package/build/tests/deploy.d.ts +1 -0
  63. package/build/tests/deploy.js +41 -0
  64. package/build/tests/deployMotoRegStep1.d.ts +1 -0
  65. package/build/tests/deployMotoRegStep1.js +85 -0
  66. package/build/tests/deployReg.d.ts +1 -0
  67. package/build/tests/deployReg.js +85 -0
  68. package/build/tests/factory/createPairReg.d.ts +1 -0
  69. package/build/tests/factory/createPairReg.js +13 -0
  70. package/build/tests/gen.d.ts +1 -0
  71. package/build/tests/gen.js +19 -0
  72. package/build/tests/interaction.d.ts +5 -0
  73. package/build/tests/interaction.js +62 -0
  74. package/build/tests/massWrapReg.d.ts +1 -0
  75. package/build/tests/massWrapReg.js +105 -0
  76. package/build/tests/mineReg.d.ts +1 -0
  77. package/build/tests/mineReg.js +19 -0
  78. package/build/tests/moto/airdropToken.d.ts +1 -0
  79. package/build/tests/moto/airdropToken.js +21 -0
  80. package/build/tests/moto/airdropTokens.d.ts +1 -0
  81. package/build/tests/moto/airdropTokens.js +60 -0
  82. package/build/tests/moto/allowance.d.ts +1 -0
  83. package/build/tests/moto/allowance.js +6 -0
  84. package/build/tests/moto/approve.d.ts +1 -0
  85. package/build/tests/moto/approve.js +10 -0
  86. package/build/tests/moto/approveWBTC.d.ts +1 -0
  87. package/build/tests/moto/approveWBTC.js +12 -0
  88. package/build/tests/moto/balanceOf.d.ts +1 -0
  89. package/build/tests/moto/balanceOf.js +12 -0
  90. package/build/tests/moto/transfer.d.ts +1 -0
  91. package/build/tests/moto/transfer.js +16 -0
  92. package/build/tests/motoswap/airdropToken.d.ts +11 -0
  93. package/build/tests/motoswap/airdropToken.js +36 -0
  94. package/build/tests/motoswap/deployMoto.d.ts +4 -0
  95. package/build/tests/motoswap/deployMoto.js +89 -0
  96. package/build/tests/motoswap/deployMotoRegStep1.d.ts +1 -0
  97. package/build/tests/motoswap/deployMotoRegStep1.js +91 -0
  98. package/build/tests/motoswap/deployMotoRegStep2.d.ts +1 -0
  99. package/build/tests/motoswap/deployMotoRegStep2.js +91 -0
  100. package/build/tests/motoswap/deployPool.d.ts +1 -0
  101. package/build/tests/motoswap/deployPool.js +5 -0
  102. package/build/tests/motoswap/deployStep1.d.ts +1 -0
  103. package/build/tests/motoswap/deployStep1.js +5 -0
  104. package/build/tests/motoswap/deployStep2.d.ts +1 -0
  105. package/build/tests/motoswap/deployStep2.js +5 -0
  106. package/build/tests/motoswap/deployStep3.d.ts +1 -0
  107. package/build/tests/motoswap/deployStep3.js +5 -0
  108. package/build/tests/motoswap/interaction.d.ts +3 -0
  109. package/build/tests/motoswap/interaction.js +63 -0
  110. package/build/tests/motoswap/routerAddLiquidity.d.ts +11 -0
  111. package/build/tests/motoswap/routerAddLiquidity.js +35 -0
  112. package/build/tests/motoswap-router/addLiquidity.d.ts +11 -0
  113. package/build/tests/motoswap-router/addLiquidity.js +36 -0
  114. package/build/tests/motoswap-router/deployMoto.d.ts +4 -0
  115. package/build/tests/motoswap-router/deployMoto.js +89 -0
  116. package/build/tests/motoswap-router/deployPool.d.ts +1 -0
  117. package/build/tests/motoswap-router/deployPool.js +5 -0
  118. package/build/tests/motoswap-router/deployStep1.d.ts +1 -0
  119. package/build/tests/motoswap-router/deployStep1.js +5 -0
  120. package/build/tests/motoswap-router/deployStep2.d.ts +1 -0
  121. package/build/tests/motoswap-router/deployStep2.js +5 -0
  122. package/build/tests/motoswap-router/deployStep3.d.ts +1 -0
  123. package/build/tests/motoswap-router/deployStep3.js +5 -0
  124. package/build/tests/motoswap-router/getAmountsOut.d.ts +5 -0
  125. package/build/tests/motoswap-router/getAmountsOut.js +34 -0
  126. package/build/tests/motoswap-router/routerAddLiquidity.d.ts +11 -0
  127. package/build/tests/motoswap-router/routerAddLiquidity.js +35 -0
  128. package/build/tests/motoswap-router/swap.d.ts +8 -0
  129. package/build/tests/motoswap-router/swap.js +24 -0
  130. package/build/tests/multisign.d.ts +1 -0
  131. package/build/tests/multisign.js +47 -0
  132. package/build/tests/multisign2.d.ts +1 -0
  133. package/build/tests/multisign2.js +27 -0
  134. package/build/tests/pool/DecodePoolAddress.d.ts +6 -0
  135. package/build/tests/pool/DecodePoolAddress.js +12 -0
  136. package/build/tests/pool/decodeReserves.d.ts +5 -0
  137. package/build/tests/pool/decodeReserves.js +13 -0
  138. package/build/tests/pool/reserves.d.ts +1 -0
  139. package/build/tests/pool/reserves.js +18 -0
  140. package/build/tests/shared/Utils.d.ts +2 -0
  141. package/build/tests/shared/Utils.js +14 -0
  142. package/build/tests/shared/interaction.d.ts +7 -0
  143. package/build/tests/shared/interaction.js +85 -0
  144. package/build/tests/shared/tokens.d.ts +6 -0
  145. package/build/tests/shared/tokens.js +5 -0
  146. package/build/tests/stakeReg.d.ts +1 -0
  147. package/build/tests/stakeReg.js +73 -0
  148. package/build/tests/stakedReg.d.ts +1 -0
  149. package/build/tests/stakedReg.js +28 -0
  150. package/build/tests/test.d.ts +1 -0
  151. package/build/tests/test.js +51 -0
  152. package/build/tests/test2.d.ts +1 -0
  153. package/build/tests/test2.js +73 -0
  154. package/build/tests/testReg.d.ts +1 -0
  155. package/build/tests/testReg.js +91 -0
  156. package/build/tests/tokens.d.ts +6 -0
  157. package/build/tests/tokens.js +5 -0
  158. package/build/tests/totalRewardReg.d.ts +1 -0
  159. package/build/tests/totalRewardReg.js +28 -0
  160. package/build/tests/transfer.d.ts +1 -0
  161. package/build/tests/transfer.js +74 -0
  162. package/build/tests/transferReg.d.ts +1 -0
  163. package/build/tests/transferReg.js +74 -0
  164. package/build/tests/unStakeReg.d.ts +1 -0
  165. package/build/tests/unStakeReg.js +72 -0
  166. package/build/tests/unwrapReg.d.ts +1 -0
  167. package/build/tests/unwrapReg.js +61 -0
  168. package/build/tests/unwrapReg2.d.ts +1 -0
  169. package/build/tests/unwrapReg2.js +56 -0
  170. package/build/tests/unwrapRegSegwit.d.ts +1 -0
  171. package/build/tests/unwrapRegSegwit.js +83 -0
  172. package/build/tests/wbtc/approve.d.ts +1 -0
  173. package/build/tests/wbtc/approve.js +6 -0
  174. package/build/tests/wbtc/approveWBTC.d.ts +1 -0
  175. package/build/tests/wbtc/approveWBTC.js +12 -0
  176. package/build/tests/wbtc/massWrapReg.d.ts +1 -0
  177. package/build/tests/wbtc/massWrapReg.js +105 -0
  178. package/build/tests/wbtc/transfer.d.ts +1 -0
  179. package/build/tests/wbtc/transfer.js +16 -0
  180. package/build/tests/wbtc/transferReg.d.ts +1 -0
  181. package/build/tests/wbtc/transferReg.js +16 -0
  182. package/build/tests/wbtc/unStakeReg.d.ts +1 -0
  183. package/build/tests/wbtc/unStakeReg.js +72 -0
  184. package/build/tests/wbtc/unwrapReg.d.ts +1 -0
  185. package/build/tests/wbtc/unwrapReg.js +60 -0
  186. package/build/tests/wbtc/unwrapRegSegwit.d.ts +1 -0
  187. package/build/tests/wbtc/unwrapRegSegwit.js +83 -0
  188. package/build/tests/wbtc/withdrawalRequestReg.d.ts +1 -0
  189. package/build/tests/wbtc/withdrawalRequestReg.js +71 -0
  190. package/build/tests/wbtc/wrapReg.d.ts +1 -0
  191. package/build/tests/wbtc/wrapReg.js +65 -0
  192. package/build/tests/wbtc/wrapTest.d.ts +1 -0
  193. package/build/tests/wbtc/wrapTest.js +66 -0
  194. package/build/tests/withdrawalRequestReg.d.ts +1 -0
  195. package/build/tests/withdrawalRequestReg.js +71 -0
  196. package/build/tests/wrap.d.ts +1 -0
  197. package/build/tests/wrap.js +65 -0
  198. package/build/tests/wrapReg.d.ts +1 -0
  199. package/build/tests/wrapReg.js +68 -0
  200. package/build/tests/wrapTest.d.ts +1 -0
  201. package/build/tests/wrapTest.js +66 -0
  202. package/build/tests/wrapTestg.d.ts +1 -0
  203. package/build/tests/wrapTestg.js +66 -0
  204. package/build/tests/writers/allowance.d.ts +3 -0
  205. package/build/tests/writers/allowance.js +10 -0
  206. package/build/tests/writers/approve.d.ts +4 -0
  207. package/build/tests/writers/approve.js +11 -0
  208. package/build/transaction/TransactionBuilder.d.ts +60 -0
  209. package/build/transaction/TransactionBuilder.js +244 -0
  210. package/build/transaction/browser/BrowserSigner.d.ts +11 -0
  211. package/build/transaction/browser/BrowserSigner.js +10 -0
  212. package/build/transaction/browser/extensions/Unisat.d.ts +54 -0
  213. package/build/transaction/browser/extensions/Unisat.js +11 -0
  214. package/build/transaction/builders/GenericTransaction.d.ts +11 -0
  215. package/build/transaction/builders/GenericTransaction.js +23 -0
  216. package/build/transaction/builders/TapUnwarpTransaction.d.ts +37 -0
  217. package/build/transaction/builders/TapUnwarpTransaction.js +201 -0
  218. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +34 -0
  219. package/build/transaction/builders/UnwarpSegwitTransaction.js +184 -0
  220. package/build/transaction/builders/UnwarpTransaction.d.ts +35 -0
  221. package/build/transaction/builders/UnwarpTransaction.js +199 -0
  222. package/build/transaction/interfaces/ITransactions.d.ts +32 -0
  223. package/build/transaction/interfaces/ITransactions.js +1 -0
  224. package/build/utxo/IUTXO.d.ts +0 -0
  225. package/build/utxo/IUTXO.js +1 -0
  226. package/build/utxo/OPNetUtils.d.ts +7 -0
  227. package/build/utxo/OPNetUtils.js +47 -0
  228. package/build/utxo/UTXOManager.d.ts +7 -0
  229. package/build/utxo/UTXOManager.js +47 -0
  230. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  231. package/build/wbtc/BroadcastResponse.js +1 -0
  232. package/gulpfile.js +152 -152
  233. package/package.json +109 -109
  234. package/src/_version.ts +1 -1
  235. package/src/consensus/Consensus.ts +36 -36
  236. package/src/consensus/ConsensusConfig.ts +39 -39
  237. package/src/crypto/crypto-browser.js +75 -75
  238. package/src/generators/AddressGenerator.ts +24 -24
  239. package/src/generators/Features.ts +5 -5
  240. package/src/generators/Generator.ts +75 -75
  241. package/src/generators/builders/CalldataGenerator.ts +148 -148
  242. package/src/generators/builders/DeploymentGenerator.ts +66 -66
  243. package/src/index.ts +4 -4
  244. package/src/keypair/AddressVerificator.ts +40 -40
  245. package/src/keypair/EcKeyPair.ts +282 -282
  246. package/src/keypair/Wallet.ts +120 -97
  247. package/src/keypair/interfaces/IWallet.ts +19 -19
  248. package/src/metadata/ContractBaseMetadata.ts +23 -23
  249. package/src/metadata/contracts/wBTC.ts +60 -60
  250. package/src/metadata/tokens.ts +135 -135
  251. package/src/network/NetworkInformation.ts +7 -7
  252. package/src/transaction/TransactionFactory.ts +496 -496
  253. package/src/transaction/browser/BrowserSignerBase.ts +37 -37
  254. package/src/transaction/browser/Web3Provider.ts +46 -46
  255. package/src/transaction/browser/extensions/UnisatSigner.ts +218 -218
  256. package/src/transaction/browser/types/Unisat.ts +97 -97
  257. package/src/transaction/builders/FundingTransaction.ts +40 -40
  258. package/src/transaction/builders/InteractionTransaction.ts +38 -38
  259. package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
  260. package/src/transaction/builders/TransactionBuilder.ts +665 -665
  261. package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
  262. package/src/transaction/builders/UnwrapTransaction.ts +507 -507
  263. package/src/transaction/builders/WrapTransaction.ts +346 -346
  264. package/src/transaction/interfaces/ITransactionParameters.ts +59 -59
  265. package/src/transaction/interfaces/Tap.ts +26 -26
  266. package/src/transaction/psbt/PSBTTypes.ts +3 -3
  267. package/src/transaction/shared/TweakedTransaction.ts +539 -539
  268. package/src/utxo/OPNetLimitedProvider.ts +244 -244
  269. package/src/utxo/interfaces/BroadcastResponse.ts +10 -10
  270. package/src/utxo/interfaces/IUTXO.ts +29 -29
  271. package/src/verification/TapscriptVerificator.ts +89 -89
  272. package/src/wbtc/Generate.ts +40 -40
  273. package/src/wbtc/UnwrapGeneration.ts +13 -13
  274. package/src/wbtc/WrappedGenerationParameters.ts +33 -33
  275. package/webpack.config.js +78 -78
  276. /package/build/generators/builders/{MultiSignGenerator.d.ts → MultisignGenerator.d.ts} +0 -0
  277. /package/build/generators/builders/{MultiSignGenerator.js → MultisignGenerator.js} +0 -0
  278. /package/build/generators/{Features.d.ts → features.d.ts} +0 -0
  279. /package/build/generators/{Features.js → features.js} +0 -0
@@ -8,10 +8,13 @@ export declare class Wallet {
8
8
  private readonly _keypair;
9
9
  private readonly _p2wpkh;
10
10
  private readonly _p2tr;
11
+ private readonly _legacy;
11
12
  constructor(wallet: IWallet, network?: Network);
12
13
  get keypair(): ECPairInterface;
13
14
  get p2wpkh(): Address;
14
15
  get p2tr(): Address;
16
+ get legacy(): Address;
17
+ get addresses(): Address[];
15
18
  get publicKey(): Buffer;
16
19
  get xOnly(): Buffer;
17
20
  static fromWif(wif: string, network?: Network): Wallet;
@@ -1,40 +1,40 @@
1
- /// <reference types="node" />
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
- import { TransactionType } from '../enums/TransactionType.js';
4
- import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
- import bitcoin, { Payment, Psbt } from 'bitcoinjs-lib';
7
- import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
- import { PsbtInput } from 'bip174/src/lib/interfaces.js';
9
- export declare class TapUnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
10
- private static readonly UNWRAP_SELECTOR;
11
- type: TransactionType.WBTC_UNWRAP;
12
- readonly amount: bigint;
13
- protected readonly compiledTargetScript: Buffer;
14
- protected readonly scriptTree: Taptree;
15
- protected sighashTypes: number[];
16
- protected readonly contractSecret: Buffer;
17
- protected readonly vaultUTXOs: VaultUTXOs[];
18
- private readonly wbtc;
19
- private readonly calculatedSignHash;
20
- constructor(parameters: IUnwrapParameters);
21
- static generateBurnCalldata(amount: bigint): Buffer;
22
- signPSBT(): Psbt;
23
- mergeVaults(input: VaultUTXOs[]): void;
24
- protected calculateNumEmptyWitnesses(vault: VaultUTXOs[]): bigint;
25
- protected calculateNumSignatures(vault: VaultUTXOs[]): bigint;
26
- protected calculateNumInputs(vault: VaultUTXOs[]): bigint;
27
- protected internalPubKeyToXOnly(): Buffer;
28
- protected generateTapDataForInput(pubkeys: Buffer[], minimumSignatures: number): {
29
- internalPubkey: Buffer;
30
- network: bitcoin.Network;
31
- scriptTree: Taptree;
32
- redeem: Payment;
33
- };
34
- protected getScriptSolution(input: PsbtInput): Buffer[];
35
- protected internalBuildTransaction(transaction: Psbt): boolean;
36
- private addVaultUTXO;
37
- private addVaultInputs;
38
- private calculateOutputLeftAmountFromVaults;
39
- private getVaultTotalOutputAmount;
40
- }
1
+ /// <reference types="node" />
2
+ import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
+ import { TransactionType } from '../enums/TransactionType.js';
4
+ import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
+ import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
+ import bitcoin, { Payment, Psbt } from 'bitcoinjs-lib';
7
+ import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
+ import { PsbtInput } from 'bip174/src/lib/interfaces.js';
9
+ export declare class TapUnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
10
+ private static readonly UNWRAP_SELECTOR;
11
+ type: TransactionType.WBTC_UNWRAP;
12
+ readonly amount: bigint;
13
+ protected readonly compiledTargetScript: Buffer;
14
+ protected readonly scriptTree: Taptree;
15
+ protected sighashTypes: number[];
16
+ protected readonly contractSecret: Buffer;
17
+ protected readonly vaultUTXOs: VaultUTXOs[];
18
+ private readonly wbtc;
19
+ private readonly calculatedSignHash;
20
+ constructor(parameters: IUnwrapParameters);
21
+ static generateBurnCalldata(amount: bigint): Buffer;
22
+ signPSBT(): Psbt;
23
+ mergeVaults(input: VaultUTXOs[]): void;
24
+ protected calculateNumEmptyWitnesses(vault: VaultUTXOs[]): bigint;
25
+ protected calculateNumSignatures(vault: VaultUTXOs[]): bigint;
26
+ protected calculateNumInputs(vault: VaultUTXOs[]): bigint;
27
+ protected internalPubKeyToXOnly(): Buffer;
28
+ protected generateTapDataForInput(pubkeys: Buffer[], minimumSignatures: number): {
29
+ internalPubkey: Buffer;
30
+ network: bitcoin.Network;
31
+ scriptTree: Taptree;
32
+ redeem: Payment;
33
+ };
34
+ protected getScriptSolution(input: PsbtInput): Buffer[];
35
+ protected internalBuildTransaction(transaction: Psbt): boolean;
36
+ private addVaultUTXO;
37
+ private addVaultInputs;
38
+ private calculateOutputLeftAmountFromVaults;
39
+ private getVaultTotalOutputAmount;
40
+ }
@@ -1,34 +1,34 @@
1
- /// <reference types="node" />
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
- import { TransactionType } from '../enums/TransactionType.js';
4
- import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
- import { Psbt } from 'bitcoinjs-lib';
7
- import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
- export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
9
- static readonly MINIMUM_CONSOLIDATION_AMOUNT: bigint;
10
- private static readonly UNWRAP_SELECTOR;
11
- type: TransactionType.WBTC_UNWRAP;
12
- readonly amount: bigint;
13
- protected readonly compiledTargetScript: Buffer;
14
- protected readonly scriptTree: Taptree;
15
- protected sighashTypes: number[];
16
- protected readonly contractSecret: Buffer;
17
- protected readonly vaultUTXOs: VaultUTXOs[];
18
- private readonly wbtc;
19
- private readonly calculatedSignHash;
20
- constructor(parameters: IUnwrapParameters);
21
- static generateBurnCalldata(amount: bigint): Buffer;
22
- signPSBT(): Psbt;
23
- mergeVaults(input: VaultUTXOs[]): void;
24
- protected internalBuildTransaction(transaction: Psbt): boolean;
25
- protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
26
- witnessUtxo: Buffer;
27
- redeemScript: Buffer;
28
- witnessScript: Buffer;
29
- };
30
- private addVaultUTXO;
31
- private addVaultInputs;
32
- private calculateOutputLeftAmountFromVaults;
33
- private getVaultTotalOutputAmount;
34
- }
1
+ /// <reference types="node" />
2
+ import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
+ import { TransactionType } from '../enums/TransactionType.js';
4
+ import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
+ import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
+ import { Psbt } from 'bitcoinjs-lib';
7
+ import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
+ export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
9
+ static readonly MINIMUM_CONSOLIDATION_AMOUNT: bigint;
10
+ private static readonly UNWRAP_SELECTOR;
11
+ type: TransactionType.WBTC_UNWRAP;
12
+ readonly amount: bigint;
13
+ protected readonly compiledTargetScript: Buffer;
14
+ protected readonly scriptTree: Taptree;
15
+ protected sighashTypes: number[];
16
+ protected readonly contractSecret: Buffer;
17
+ protected readonly vaultUTXOs: VaultUTXOs[];
18
+ private readonly wbtc;
19
+ private readonly calculatedSignHash;
20
+ constructor(parameters: IUnwrapParameters);
21
+ static generateBurnCalldata(amount: bigint): Buffer;
22
+ signPSBT(): Psbt;
23
+ mergeVaults(input: VaultUTXOs[]): void;
24
+ protected internalBuildTransaction(transaction: Psbt): boolean;
25
+ protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
26
+ witnessUtxo: Buffer;
27
+ redeemScript: Buffer;
28
+ witnessScript: Buffer;
29
+ };
30
+ private addVaultUTXO;
31
+ private addVaultInputs;
32
+ private calculateOutputLeftAmountFromVaults;
33
+ private getVaultTotalOutputAmount;
34
+ }
@@ -1,7 +1,7 @@
1
- import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
- export declare class UTXOManager {
3
- private readonly opnetAPIUrl;
4
- private readonly utxoPath;
5
- constructor(opnetAPIUrl: string);
6
- fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
- }
1
+ import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
+ export declare class UTXOManager {
3
+ private readonly opnetAPIUrl;
4
+ private readonly utxoPath;
5
+ constructor(opnetAPIUrl: string);
6
+ fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
+ }
File without changes
package/build/Utils.js ADDED
@@ -0,0 +1 @@
1
+ "use strict";
@@ -1 +1 @@
1
- export declare const version = "1.0.85";
1
+ export declare const version = "1.0.86";
package/build/_version.js CHANGED
@@ -1 +1 @@
1
- export const version = '1.0.85';
1
+ export const version = '1.0.86';
@@ -0,0 +1,2 @@
1
+ import { ConsensusConfig } from '../ConsensusConfig.js';
2
+ export declare const RoswsellConsensus: ConsensusConfig;
@@ -0,0 +1,4 @@
1
+ import { Consensus } from '../Consensus.js';
2
+ export const RoswsellConsensus = {
3
+ consensus: Consensus.Roswell,
4
+ };
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
@@ -0,0 +1 @@
1
+ "use strict";
@@ -0,0 +1,8 @@
1
+ /// <reference types="node" />
2
+ import { Network } from 'bitcoinjs-lib';
3
+ import { Generator } from '../Generator.js';
4
+ export declare class CalldataGenerator extends Generator {
5
+ constructor(senderPubKey: Buffer, contractSaltPubKey: Buffer, network?: Network);
6
+ static getPubKeyAsBuffer(witnessKeys: Buffer[], network: Network): Buffer;
7
+ compile(calldata: Buffer, contractSecret: Buffer, vaultPublicKeys?: Buffer[], minimumSignatures?: number): Buffer;
8
+ }
@@ -0,0 +1,79 @@
1
+ import { crypto, networks, opcodes, script } from 'bitcoinjs-lib';
2
+ import { Compressor } from '../../bytecode/Compressor.js';
3
+ import { Generator } from '../Generator.js';
4
+ import { EcKeyPair } from '../../keypair/EcKeyPair.js';
5
+ export class CalldataGenerator extends Generator {
6
+ constructor(senderPubKey, contractSaltPubKey, network = networks.bitcoin) {
7
+ super(senderPubKey, contractSaltPubKey, network);
8
+ }
9
+ static getPubKeyAsBuffer(witnessKeys, network) {
10
+ let finalBuffer = Buffer.alloc(0);
11
+ for (let pubKey of witnessKeys) {
12
+ const key = EcKeyPair.fromPublicKey(pubKey, network);
13
+ if (!key.compressed) {
14
+ throw new Error('Public key must be compressed');
15
+ }
16
+ if (pubKey.byteLength !== 33) {
17
+ throw new Error(`Public key must be 33 bytes, got ${pubKey.byteLength} bytes.`);
18
+ }
19
+ finalBuffer = Buffer.concat([finalBuffer, pubKey]);
20
+ }
21
+ const compressed = Compressor.compress(finalBuffer);
22
+ if (compressed.byteLength >= finalBuffer.byteLength) {
23
+ return finalBuffer;
24
+ }
25
+ return compressed;
26
+ }
27
+ compile(calldata, contractSecret, vaultPublicKeys = [], minimumSignatures = 0) {
28
+ const dataChunks = this.splitBufferIntoChunks(calldata);
29
+ if (!dataChunks.length)
30
+ throw new Error('No data chunks found');
31
+ let compiledData = [
32
+ this.senderPubKey,
33
+ opcodes.OP_CHECKSIGVERIFY,
34
+ this.contractSaltPubKey,
35
+ opcodes.OP_CHECKSIGVERIFY,
36
+ opcodes.OP_HASH160,
37
+ crypto.hash160(this.senderPubKey),
38
+ opcodes.OP_EQUALVERIFY,
39
+ opcodes.OP_HASH160,
40
+ crypto.hash160(contractSecret),
41
+ opcodes.OP_EQUALVERIFY,
42
+ opcodes.OP_DEPTH,
43
+ opcodes.OP_1,
44
+ opcodes.OP_NUMEQUAL,
45
+ opcodes.OP_IF,
46
+ Generator.MAGIC,
47
+ ];
48
+ if (vaultPublicKeys.length > 0) {
49
+ const pubKeyBuffer = CalldataGenerator.getPubKeyAsBuffer(vaultPublicKeys, this.network);
50
+ const pubKeyDataChunks = this.splitBufferIntoChunks(pubKeyBuffer);
51
+ compiledData = compiledData.concat(...[
52
+ opcodes.OP_0,
53
+ ...pubKeyDataChunks,
54
+ ]);
55
+ if (minimumSignatures) {
56
+ if (minimumSignatures > 255) {
57
+ throw new Error('Minimum signatures cannot exceed 255');
58
+ }
59
+ const minSigBuffer = Buffer.alloc(2);
60
+ minSigBuffer.writeUint16LE(minimumSignatures, 0);
61
+ compiledData = compiledData.concat(...[
62
+ opcodes.OP_1,
63
+ minSigBuffer,
64
+ ]);
65
+ }
66
+ else {
67
+ throw new Error('Minimum signatures must be provided');
68
+ }
69
+ }
70
+ compiledData = compiledData.concat(...[opcodes.OP_1NEGATE, ...dataChunks, opcodes.OP_ELSE, opcodes.OP_1, opcodes.OP_ENDIF]);
71
+ const asm = compiledData.flat();
72
+ const compiled = script.compile(asm);
73
+ const decompiled = script.decompile(compiled);
74
+ if (!decompiled) {
75
+ throw new Error('Failed to decompile script??');
76
+ }
77
+ return compiled;
78
+ }
79
+ }
@@ -8,10 +8,13 @@ export declare class Wallet {
8
8
  private readonly _keypair;
9
9
  private readonly _p2wpkh;
10
10
  private readonly _p2tr;
11
+ private readonly _legacy;
11
12
  constructor(wallet: IWallet, network?: Network);
12
13
  get keypair(): ECPairInterface;
13
14
  get p2wpkh(): Address;
14
15
  get p2tr(): Address;
16
+ get legacy(): Address;
17
+ get addresses(): Address[];
15
18
  get publicKey(): Buffer;
16
19
  get xOnly(): Buffer;
17
20
  static fromWif(wif: string, network?: Network): Wallet;
@@ -6,11 +6,13 @@ export class Wallet {
6
6
  _keypair;
7
7
  _p2wpkh;
8
8
  _p2tr;
9
+ _legacy;
9
10
  constructor(wallet, network = networks.bitcoin) {
10
11
  this.network = network;
11
12
  this._keypair = EcKeyPair.fromWIF(wallet.privateKey, this.network);
12
13
  this._p2wpkh = EcKeyPair.getP2WPKHAddress(this._keypair, this.network);
13
14
  this._p2tr = EcKeyPair.getTaprootAddress(this._keypair, this.network);
15
+ this._legacy = EcKeyPair.getLegacyAddress(this._keypair, this.network);
14
16
  }
15
17
  get keypair() {
16
18
  if (!this._keypair)
@@ -23,6 +25,12 @@ export class Wallet {
23
25
  get p2tr() {
24
26
  return this._p2tr;
25
27
  }
28
+ get legacy() {
29
+ return this._legacy;
30
+ }
31
+ get addresses() {
32
+ return [this.p2wpkh, this.p2tr, this.legacy];
33
+ }
26
34
  get publicKey() {
27
35
  if (!this.keypair)
28
36
  throw new Error('Keypair not set');
@@ -0,0 +1,5 @@
1
+ export interface GeneratedWallet {
2
+ readonly address: string;
3
+ readonly privateKey: string;
4
+ readonly publicKey: string;
5
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ import { Address } from '@btc-vision/bsi-binary';
2
+ export declare const FACTORY_ADDRESS: Address;
3
+ export declare const POOL_ADDRESS: Address;
4
+ export declare const WBTC_ADDRESS: Address;
5
+ export declare const MOTO_ADDRESS: Address;
6
+ export declare const ROUTER_ADDRESS: Address;
@@ -0,0 +1,5 @@
1
+ export const FACTORY_ADDRESS = 'bcrt1qz98txrd6csz0ljhp0v2rw8846k0zgn57uul8c9';
2
+ export const POOL_ADDRESS = 'bcrt1qzwth3t3wdgy83tt9xegq7yww5dx0rhy3ezglg9';
3
+ export const WBTC_ADDRESS = 'bcrt1q99qtptumw027cw8w274tqzd564q66u537vn0lh';
4
+ export const MOTO_ADDRESS = 'bcrt1qwx9h2fvqlzx84t6jhxa424y7g2ynayt8p9rs38';
5
+ export const ROUTER_ADDRESS = 'bcrt1qelqwcguvwkgr90w6u5f2q0a7gqlnq4w8rl26ht';
@@ -0,0 +1 @@
1
+ export declare const ContractMetadataManager: {};
@@ -0,0 +1,9 @@
1
+ export const ContractMetadataManager = new (class {
2
+ contractsMetadata;
3
+ }), {};
4
+ getContractMetadata(contractName, string);
5
+ any;
6
+ {
7
+ return {};
8
+ }
9
+ ();
@@ -0,0 +1,9 @@
1
+ import { Address } from '@btc-vision/bsi-binary';
2
+ import { Network } from 'bitcoinjs-lib';
3
+ export declare abstract class ContractBase {
4
+ protected network: Network;
5
+ protected abstract readonly address: Address;
6
+ protected constructor(network?: Network);
7
+ static getAddress(network?: Network): string;
8
+ getAddress(): Address;
9
+ }
@@ -0,0 +1,13 @@
1
+ import { networks } from 'bitcoinjs-lib';
2
+ export class ContractBase {
3
+ network;
4
+ constructor(network = networks.bitcoin) {
5
+ this.network = network;
6
+ }
7
+ static getAddress(network = networks.bitcoin) {
8
+ throw new Error('Method not implemented.');
9
+ }
10
+ getAddress() {
11
+ return this.address;
12
+ }
13
+ }
@@ -0,0 +1,9 @@
1
+ import { Address } from '@btc-vision/bsi-binary';
2
+ import { Network } from 'bitcoinjs-lib';
3
+ export declare abstract class ContractBaseMetadata {
4
+ protected network: Network;
5
+ protected abstract readonly address: Address;
6
+ protected constructor(network?: Network);
7
+ static getAddress(network?: Network): Address;
8
+ getAddress(): Address;
9
+ }
@@ -0,0 +1,13 @@
1
+ import { networks } from 'bitcoinjs-lib';
2
+ export class ContractBaseMetadata {
3
+ network;
4
+ constructor(network = networks.bitcoin) {
5
+ this.network = network;
6
+ }
7
+ static getAddress(network = networks.bitcoin) {
8
+ throw new Error('Method not implemented.');
9
+ }
10
+ getAddress() {
11
+ return this.address;
12
+ }
13
+ }
@@ -0,0 +1 @@
1
+ "use strict";
File without changes
@@ -0,0 +1,14 @@
1
+ export class NetworkConverter {
2
+ static toBitcoinJSNetwork(network) {
3
+ switch (network) {
4
+ case OPNetNetwork.Mainnet:
5
+ return networks.bitcoin;
6
+ case OPNetNetwork.Testnet:
7
+ return networks.testnet;
8
+ case OPNetNetwork.Regtest:
9
+ return networks.regtest;
10
+ default:
11
+ throw new Error(`Invalid network: ${network}`);
12
+ }
13
+ }
14
+ }
@@ -0,0 +1,2 @@
1
+ import { NetworkInformation } from '../network/NetworkInformation.js';
2
+ export declare const Regtest: NetworkInformation;
@@ -0,0 +1,15 @@
1
+ import { BitcoinNetwork } from '@btc-vision/bsi-common';
2
+ export const Regtest = {
3
+ wallet: {
4
+ address: 'bcrt1qfqsr3m7vjxheghcvw4ks0fryqxfq8qzjf8fxes',
5
+ publicKey: '020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c',
6
+ privateKey: 'cRCiYAgCBrU7hSaJBRuPqKVYXQqM5CKXbMfWHb25X4FDAWJ8Ai92',
7
+ },
8
+ config: {
9
+ BITCOIND_NETWORK: BitcoinNetwork.Regtest,
10
+ BITCOIND_HOST: '51.81.67.34',
11
+ BITCOIND_PORT: 9242,
12
+ BITCOIND_USERNAME: 'HJSiowseujhs',
13
+ BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
14
+ },
15
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,74 @@
1
+ import { wBTC } from '../metadata/contracts/wBTC.js';
2
+ import { Wallet } from '../keypair/Wallet.js';
3
+ import { Regtest } from './Regtest.js';
4
+ import { UTXOManager } from '../utxo/UTXOManager.js';
5
+ import { networks } from 'bitcoinjs-lib';
6
+ import { TransactionFactory } from '../transaction/TransactionFactory.js';
7
+ import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
8
+ import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
9
+ const network = networks.regtest;
10
+ const rpc = new BitcoinRPC();
11
+ const wBtc = new wBTC(network);
12
+ const wallet = new Wallet(Regtest.wallet, network);
13
+ const utxoManager = new UTXOManager('http://localhost:9001');
14
+ const factory = new TransactionFactory();
15
+ const abiCoder = new ABICoder();
16
+ const transferSelector = Number(`0x` + abiCoder.encodeSelector('transfer'));
17
+ function getTransferToCalldata(to, amount) {
18
+ const addCalldata = new BinaryWriter();
19
+ addCalldata.writeSelector(transferSelector);
20
+ addCalldata.writeAddress(to);
21
+ addCalldata.writeU256(amount);
22
+ return Buffer.from(addCalldata.getBuffer());
23
+ }
24
+ const shouldMineBlock = true;
25
+ async function mineBlock() {
26
+ const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
27
+ if (!ok) {
28
+ throw new Error('Could not mine block');
29
+ }
30
+ console.log(`Mined block`, ok);
31
+ return !!ok.length;
32
+ }
33
+ (async () => {
34
+ await rpc.init(Regtest.config);
35
+ const utxoSetting = {
36
+ address: wallet.p2wpkh,
37
+ minAmount: 10000n,
38
+ requestedAmount: 100000n,
39
+ };
40
+ const utxos = await utxoManager.fetchUTXO(utxoSetting);
41
+ console.log(`UTXOs:`, utxos);
42
+ if (!utxos) {
43
+ throw new Error('No UTXOs found');
44
+ }
45
+ const calldata = getTransferToCalldata(wBtc.getAddress(), 5000000n);
46
+ const interactionParameters = {
47
+ from: wallet.p2wpkh,
48
+ to: wBtc.getAddress(),
49
+ utxos: utxos,
50
+ signer: wallet.keypair,
51
+ network: network,
52
+ feeRate: 150,
53
+ priorityFee: 50000n,
54
+ calldata: calldata,
55
+ };
56
+ const finalTx = factory.signInteraction(interactionParameters);
57
+ const firstTxBroadcast = await rpc.sendRawTransaction({
58
+ hexstring: finalTx[0],
59
+ });
60
+ console.log(`First transaction broadcasted: ${firstTxBroadcast}`);
61
+ if (!firstTxBroadcast) {
62
+ throw new Error('Could not broadcast first transaction');
63
+ }
64
+ const secondTxBroadcast = await rpc.sendRawTransaction({
65
+ hexstring: finalTx[1],
66
+ });
67
+ console.log(`Second transaction broadcasted: ${secondTxBroadcast}`);
68
+ if (!secondTxBroadcast) {
69
+ throw new Error('Could not broadcast second transaction');
70
+ }
71
+ if (shouldMineBlock) {
72
+ await mineBlock();
73
+ }
74
+ })();
@@ -0,0 +1,2 @@
1
+ import { NetworkInformation } from '../../src/network/NetworkInformation.js';
2
+ export declare const Regtest: NetworkInformation;
@@ -0,0 +1,15 @@
1
+ import { networks } from 'bitcoinjs-lib';
2
+ export const Regtest = {
3
+ wallet: {
4
+ address: 'bcrt1qfqsr3m7vjxheghcvw4ks0fryqxfq8qzjf8fxes',
5
+ publicKey: '020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c',
6
+ privateKey: 'cRCiYAgCBrU7hSaJBRuPqKVYXQqM5CKXbMfWHb25X4FDAWJ8Ai92',
7
+ },
8
+ config: {
9
+ BITCOIND_NETWORK: networks.regtest,
10
+ BITCOIND_HOST: '51.81.67.34',
11
+ BITCOIND_PORT: 9242,
12
+ BITCOIND_USERNAME: 'HJSiowseujhs',
13
+ BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
14
+ },
15
+ };
@@ -0,0 +1,3 @@
1
+ import { NetworkInformation } from '../network/NetworkInformation.js';
2
+ export declare const Regtest: NetworkInformation;
3
+ export declare const Testnet: NetworkInformation;
@@ -0,0 +1,29 @@
1
+ import { BitcoinNetwork } from '@btc-vision/bsi-common';
2
+ export const Regtest = {
3
+ wallet: {
4
+ address: 'bcrt1qfqsr3m7vjxheghcvw4ks0fryqxfq8qzjf8fxes',
5
+ publicKey: '020373626d317ae8788ce3280b491068610d840c23ecb64c14075bbb9f670af52c',
6
+ privateKey: 'cRCiYAgCBrU7hSaJBRuPqKVYXQqM5CKXbMfWHb25X4FDAWJ8Ai92',
7
+ },
8
+ config: {
9
+ BITCOIND_NETWORK: BitcoinNetwork.Regtest,
10
+ BITCOIND_HOST: '51.81.67.34',
11
+ BITCOIND_PORT: 8001,
12
+ BITCOIND_USERNAME: 'HJSiowseujhs',
13
+ BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
14
+ },
15
+ };
16
+ export const Testnet = {
17
+ wallet: {
18
+ address: 'tb1qcfszz8dcvsz9mcp70ezw5zy2r3ydr0cfz60d3t',
19
+ privateKey: 'cSZU2QB9aUYvaL6ukU9d3DKq7QaxTRms1BCQnx5vqXbxBk4bdBc4',
20
+ publicKey: '026764d622f083d78f47c2f2a007ab08e96edf398de74acc0251a7bba202ffb92b',
21
+ },
22
+ config: {
23
+ BITCOIND_NETWORK: BitcoinNetwork.TestNet,
24
+ BITCOIND_HOST: '51.81.67.34',
25
+ BITCOIND_PORT: 9237,
26
+ BITCOIND_USERNAME: 'HJSiowseujhs',
27
+ BITCOIND_PASSWORD: 'YHEFHSDJ23JOIhjjef2ied9u290efu2930u90U',
28
+ },
29
+ };
@@ -0,0 +1 @@
1
+ export {};