@btc-vision/transaction 1.0.85 → 1.0.87

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 (281) 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/metadata/tokens.js +1 -1
  35. package/build/network/NetworkConverter.d.ts +0 -0
  36. package/build/network/NetworkConverter.js +14 -0
  37. package/build/scripts/Regtest.d.ts +2 -0
  38. package/build/scripts/Regtest.js +15 -0
  39. package/build/scripts/test.d.ts +1 -0
  40. package/build/scripts/test.js +74 -0
  41. package/build/signer/Regtest.d.ts +2 -0
  42. package/build/signer/Regtest.js +15 -0
  43. package/build/tests/Regtest.d.ts +3 -0
  44. package/build/tests/Regtest.js +29 -0
  45. package/build/tests/adaptPSBT.d.ts +1 -0
  46. package/build/tests/adaptPSBT.js +44 -0
  47. package/build/tests/btc/send.d.ts +1 -0
  48. package/build/tests/btc/send.js +35 -0
  49. package/build/tests/btc/transfer.d.ts +1 -0
  50. package/build/tests/btc/transfer.js +35 -0
  51. package/build/tests/createPairReg.d.ts +1 -0
  52. package/build/tests/createPairReg.js +73 -0
  53. package/build/tests/deploy/deployMoto.d.ts +4 -0
  54. package/build/tests/deploy/deployMoto.js +89 -0
  55. package/build/tests/deploy/deployPool.d.ts +1 -0
  56. package/build/tests/deploy/deployPool.js +5 -0
  57. package/build/tests/deploy/deployStep1.d.ts +1 -0
  58. package/build/tests/deploy/deployStep1.js +5 -0
  59. package/build/tests/deploy/deployStep2.d.ts +1 -0
  60. package/build/tests/deploy/deployStep2.js +5 -0
  61. package/build/tests/deploy/deployStep3.d.ts +1 -0
  62. package/build/tests/deploy/deployStep3.js +5 -0
  63. package/build/tests/deploy.d.ts +1 -0
  64. package/build/tests/deploy.js +41 -0
  65. package/build/tests/deployMotoRegStep1.d.ts +1 -0
  66. package/build/tests/deployMotoRegStep1.js +85 -0
  67. package/build/tests/deployReg.d.ts +1 -0
  68. package/build/tests/deployReg.js +85 -0
  69. package/build/tests/factory/createPairReg.d.ts +1 -0
  70. package/build/tests/factory/createPairReg.js +13 -0
  71. package/build/tests/gen.d.ts +1 -0
  72. package/build/tests/gen.js +19 -0
  73. package/build/tests/interaction.d.ts +5 -0
  74. package/build/tests/interaction.js +62 -0
  75. package/build/tests/massWrapReg.d.ts +1 -0
  76. package/build/tests/massWrapReg.js +105 -0
  77. package/build/tests/mineReg.d.ts +1 -0
  78. package/build/tests/mineReg.js +19 -0
  79. package/build/tests/moto/airdropToken.d.ts +1 -0
  80. package/build/tests/moto/airdropToken.js +21 -0
  81. package/build/tests/moto/airdropTokens.d.ts +1 -0
  82. package/build/tests/moto/airdropTokens.js +60 -0
  83. package/build/tests/moto/allowance.d.ts +1 -0
  84. package/build/tests/moto/allowance.js +6 -0
  85. package/build/tests/moto/approve.d.ts +1 -0
  86. package/build/tests/moto/approve.js +10 -0
  87. package/build/tests/moto/approveWBTC.d.ts +1 -0
  88. package/build/tests/moto/approveWBTC.js +12 -0
  89. package/build/tests/moto/balanceOf.d.ts +1 -0
  90. package/build/tests/moto/balanceOf.js +12 -0
  91. package/build/tests/moto/transfer.d.ts +1 -0
  92. package/build/tests/moto/transfer.js +16 -0
  93. package/build/tests/motoswap/airdropToken.d.ts +11 -0
  94. package/build/tests/motoswap/airdropToken.js +36 -0
  95. package/build/tests/motoswap/deployMoto.d.ts +4 -0
  96. package/build/tests/motoswap/deployMoto.js +89 -0
  97. package/build/tests/motoswap/deployMotoRegStep1.d.ts +1 -0
  98. package/build/tests/motoswap/deployMotoRegStep1.js +91 -0
  99. package/build/tests/motoswap/deployMotoRegStep2.d.ts +1 -0
  100. package/build/tests/motoswap/deployMotoRegStep2.js +91 -0
  101. package/build/tests/motoswap/deployPool.d.ts +1 -0
  102. package/build/tests/motoswap/deployPool.js +5 -0
  103. package/build/tests/motoswap/deployStep1.d.ts +1 -0
  104. package/build/tests/motoswap/deployStep1.js +5 -0
  105. package/build/tests/motoswap/deployStep2.d.ts +1 -0
  106. package/build/tests/motoswap/deployStep2.js +5 -0
  107. package/build/tests/motoswap/deployStep3.d.ts +1 -0
  108. package/build/tests/motoswap/deployStep3.js +5 -0
  109. package/build/tests/motoswap/interaction.d.ts +3 -0
  110. package/build/tests/motoswap/interaction.js +63 -0
  111. package/build/tests/motoswap/routerAddLiquidity.d.ts +11 -0
  112. package/build/tests/motoswap/routerAddLiquidity.js +35 -0
  113. package/build/tests/motoswap-router/addLiquidity.d.ts +11 -0
  114. package/build/tests/motoswap-router/addLiquidity.js +36 -0
  115. package/build/tests/motoswap-router/deployMoto.d.ts +4 -0
  116. package/build/tests/motoswap-router/deployMoto.js +89 -0
  117. package/build/tests/motoswap-router/deployPool.d.ts +1 -0
  118. package/build/tests/motoswap-router/deployPool.js +5 -0
  119. package/build/tests/motoswap-router/deployStep1.d.ts +1 -0
  120. package/build/tests/motoswap-router/deployStep1.js +5 -0
  121. package/build/tests/motoswap-router/deployStep2.d.ts +1 -0
  122. package/build/tests/motoswap-router/deployStep2.js +5 -0
  123. package/build/tests/motoswap-router/deployStep3.d.ts +1 -0
  124. package/build/tests/motoswap-router/deployStep3.js +5 -0
  125. package/build/tests/motoswap-router/getAmountsOut.d.ts +5 -0
  126. package/build/tests/motoswap-router/getAmountsOut.js +34 -0
  127. package/build/tests/motoswap-router/routerAddLiquidity.d.ts +11 -0
  128. package/build/tests/motoswap-router/routerAddLiquidity.js +35 -0
  129. package/build/tests/motoswap-router/swap.d.ts +8 -0
  130. package/build/tests/motoswap-router/swap.js +24 -0
  131. package/build/tests/multisign.d.ts +1 -0
  132. package/build/tests/multisign.js +47 -0
  133. package/build/tests/multisign2.d.ts +1 -0
  134. package/build/tests/multisign2.js +27 -0
  135. package/build/tests/pool/DecodePoolAddress.d.ts +6 -0
  136. package/build/tests/pool/DecodePoolAddress.js +12 -0
  137. package/build/tests/pool/decodeReserves.d.ts +5 -0
  138. package/build/tests/pool/decodeReserves.js +13 -0
  139. package/build/tests/pool/reserves.d.ts +1 -0
  140. package/build/tests/pool/reserves.js +18 -0
  141. package/build/tests/shared/Utils.d.ts +2 -0
  142. package/build/tests/shared/Utils.js +14 -0
  143. package/build/tests/shared/interaction.d.ts +7 -0
  144. package/build/tests/shared/interaction.js +85 -0
  145. package/build/tests/shared/tokens.d.ts +6 -0
  146. package/build/tests/shared/tokens.js +5 -0
  147. package/build/tests/stakeReg.d.ts +1 -0
  148. package/build/tests/stakeReg.js +73 -0
  149. package/build/tests/stakedReg.d.ts +1 -0
  150. package/build/tests/stakedReg.js +28 -0
  151. package/build/tests/test.d.ts +1 -0
  152. package/build/tests/test.js +51 -0
  153. package/build/tests/test2.d.ts +1 -0
  154. package/build/tests/test2.js +73 -0
  155. package/build/tests/testReg.d.ts +1 -0
  156. package/build/tests/testReg.js +91 -0
  157. package/build/tests/tokens.d.ts +6 -0
  158. package/build/tests/tokens.js +5 -0
  159. package/build/tests/totalRewardReg.d.ts +1 -0
  160. package/build/tests/totalRewardReg.js +28 -0
  161. package/build/tests/transfer.d.ts +1 -0
  162. package/build/tests/transfer.js +74 -0
  163. package/build/tests/transferReg.d.ts +1 -0
  164. package/build/tests/transferReg.js +74 -0
  165. package/build/tests/unStakeReg.d.ts +1 -0
  166. package/build/tests/unStakeReg.js +72 -0
  167. package/build/tests/unwrapReg.d.ts +1 -0
  168. package/build/tests/unwrapReg.js +61 -0
  169. package/build/tests/unwrapReg2.d.ts +1 -0
  170. package/build/tests/unwrapReg2.js +56 -0
  171. package/build/tests/unwrapRegSegwit.d.ts +1 -0
  172. package/build/tests/unwrapRegSegwit.js +83 -0
  173. package/build/tests/wbtc/approve.d.ts +1 -0
  174. package/build/tests/wbtc/approve.js +6 -0
  175. package/build/tests/wbtc/approveWBTC.d.ts +1 -0
  176. package/build/tests/wbtc/approveWBTC.js +12 -0
  177. package/build/tests/wbtc/massWrapReg.d.ts +1 -0
  178. package/build/tests/wbtc/massWrapReg.js +105 -0
  179. package/build/tests/wbtc/transfer.d.ts +1 -0
  180. package/build/tests/wbtc/transfer.js +16 -0
  181. package/build/tests/wbtc/transferReg.d.ts +1 -0
  182. package/build/tests/wbtc/transferReg.js +16 -0
  183. package/build/tests/wbtc/unStakeReg.d.ts +1 -0
  184. package/build/tests/wbtc/unStakeReg.js +72 -0
  185. package/build/tests/wbtc/unwrapReg.d.ts +1 -0
  186. package/build/tests/wbtc/unwrapReg.js +60 -0
  187. package/build/tests/wbtc/unwrapRegSegwit.d.ts +1 -0
  188. package/build/tests/wbtc/unwrapRegSegwit.js +83 -0
  189. package/build/tests/wbtc/withdrawalRequestReg.d.ts +1 -0
  190. package/build/tests/wbtc/withdrawalRequestReg.js +71 -0
  191. package/build/tests/wbtc/wrapReg.d.ts +1 -0
  192. package/build/tests/wbtc/wrapReg.js +65 -0
  193. package/build/tests/wbtc/wrapTest.d.ts +1 -0
  194. package/build/tests/wbtc/wrapTest.js +66 -0
  195. package/build/tests/withdrawalRequestReg.d.ts +1 -0
  196. package/build/tests/withdrawalRequestReg.js +71 -0
  197. package/build/tests/wrap.d.ts +1 -0
  198. package/build/tests/wrap.js +65 -0
  199. package/build/tests/wrapReg.d.ts +1 -0
  200. package/build/tests/wrapReg.js +68 -0
  201. package/build/tests/wrapTest.d.ts +1 -0
  202. package/build/tests/wrapTest.js +66 -0
  203. package/build/tests/wrapTestg.d.ts +1 -0
  204. package/build/tests/wrapTestg.js +66 -0
  205. package/build/tests/writers/allowance.d.ts +3 -0
  206. package/build/tests/writers/allowance.js +10 -0
  207. package/build/tests/writers/approve.d.ts +4 -0
  208. package/build/tests/writers/approve.js +11 -0
  209. package/build/transaction/TransactionBuilder.d.ts +60 -0
  210. package/build/transaction/TransactionBuilder.js +244 -0
  211. package/build/transaction/TransactionFactory.js +2 -0
  212. package/build/transaction/browser/BrowserSigner.d.ts +11 -0
  213. package/build/transaction/browser/BrowserSigner.js +10 -0
  214. package/build/transaction/browser/extensions/Unisat.d.ts +54 -0
  215. package/build/transaction/browser/extensions/Unisat.js +11 -0
  216. package/build/transaction/builders/GenericTransaction.d.ts +11 -0
  217. package/build/transaction/builders/GenericTransaction.js +23 -0
  218. package/build/transaction/builders/TapUnwarpTransaction.d.ts +37 -0
  219. package/build/transaction/builders/TapUnwarpTransaction.js +201 -0
  220. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +34 -0
  221. package/build/transaction/builders/UnwarpSegwitTransaction.js +184 -0
  222. package/build/transaction/builders/UnwarpTransaction.d.ts +35 -0
  223. package/build/transaction/builders/UnwarpTransaction.js +199 -0
  224. package/build/transaction/interfaces/ITransactions.d.ts +32 -0
  225. package/build/transaction/interfaces/ITransactions.js +1 -0
  226. package/build/utxo/IUTXO.d.ts +0 -0
  227. package/build/utxo/IUTXO.js +1 -0
  228. package/build/utxo/OPNetUtils.d.ts +7 -0
  229. package/build/utxo/OPNetUtils.js +47 -0
  230. package/build/utxo/UTXOManager.d.ts +7 -0
  231. package/build/utxo/UTXOManager.js +47 -0
  232. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  233. package/build/wbtc/BroadcastResponse.js +1 -0
  234. package/gulpfile.js +152 -152
  235. package/package.json +109 -109
  236. package/src/_version.ts +1 -1
  237. package/src/consensus/Consensus.ts +36 -36
  238. package/src/consensus/ConsensusConfig.ts +39 -39
  239. package/src/crypto/crypto-browser.js +75 -75
  240. package/src/generators/AddressGenerator.ts +24 -24
  241. package/src/generators/Features.ts +5 -5
  242. package/src/generators/Generator.ts +75 -75
  243. package/src/generators/builders/CalldataGenerator.ts +148 -148
  244. package/src/generators/builders/DeploymentGenerator.ts +66 -66
  245. package/src/index.ts +4 -4
  246. package/src/keypair/AddressVerificator.ts +40 -40
  247. package/src/keypair/EcKeyPair.ts +282 -282
  248. package/src/keypair/Wallet.ts +120 -97
  249. package/src/keypair/interfaces/IWallet.ts +19 -19
  250. package/src/metadata/ContractBaseMetadata.ts +23 -23
  251. package/src/metadata/contracts/wBTC.ts +60 -60
  252. package/src/metadata/tokens.ts +1 -1
  253. package/src/network/NetworkInformation.ts +7 -7
  254. package/src/transaction/TransactionFactory.ts +2 -0
  255. package/src/transaction/browser/BrowserSignerBase.ts +37 -37
  256. package/src/transaction/browser/Web3Provider.ts +46 -46
  257. package/src/transaction/browser/extensions/UnisatSigner.ts +218 -218
  258. package/src/transaction/browser/types/Unisat.ts +97 -97
  259. package/src/transaction/builders/FundingTransaction.ts +40 -40
  260. package/src/transaction/builders/InteractionTransaction.ts +38 -38
  261. package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
  262. package/src/transaction/builders/TransactionBuilder.ts +665 -665
  263. package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
  264. package/src/transaction/builders/UnwrapTransaction.ts +507 -507
  265. package/src/transaction/builders/WrapTransaction.ts +346 -346
  266. package/src/transaction/interfaces/ITransactionParameters.ts +59 -59
  267. package/src/transaction/interfaces/Tap.ts +26 -26
  268. package/src/transaction/psbt/PSBTTypes.ts +3 -3
  269. package/src/transaction/shared/TweakedTransaction.ts +539 -539
  270. package/src/utxo/OPNetLimitedProvider.ts +244 -244
  271. package/src/utxo/interfaces/BroadcastResponse.ts +10 -10
  272. package/src/utxo/interfaces/IUTXO.ts +29 -29
  273. package/src/verification/TapscriptVerificator.ts +89 -89
  274. package/src/wbtc/Generate.ts +40 -40
  275. package/src/wbtc/UnwrapGeneration.ts +13 -13
  276. package/src/wbtc/WrappedGenerationParameters.ts +33 -33
  277. package/webpack.config.js +78 -78
  278. /package/build/generators/builders/{MultiSignGenerator.d.ts → MultisignGenerator.d.ts} +0 -0
  279. /package/build/generators/builders/{MultiSignGenerator.js → MultisignGenerator.js} +0 -0
  280. /package/build/generators/{Features.d.ts → features.d.ts} +0 -0
  281. /package/build/generators/{Features.js → features.js} +0 -0
@@ -1,97 +1,120 @@
1
- import { IWallet } from './interfaces/IWallet.js';
2
- import { ECPairInterface } from 'ecpair';
3
- import { EcKeyPair } from './EcKeyPair.js';
4
- import { Network, networks } from 'bitcoinjs-lib';
5
- import { Address } from '@btc-vision/bsi-binary';
6
- import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
7
-
8
- /**
9
- * Wallet class
10
- */
11
- export class Wallet {
12
- /**
13
- * Keypair for the wallet
14
- * @private
15
- */
16
- private readonly _keypair: ECPairInterface;
17
-
18
- /**
19
- * P2WPKH address for the wallet
20
- * @private
21
- */
22
- private readonly _p2wpkh: Address;
23
-
24
- /**
25
- * P2TR address for the wallet
26
- * @private
27
- */
28
- private readonly _p2tr: Address;
29
-
30
- constructor(
31
- wallet: IWallet,
32
- public readonly network: Network = networks.bitcoin,
33
- ) {
34
- this._keypair = EcKeyPair.fromWIF(wallet.privateKey, this.network);
35
-
36
- this._p2wpkh = EcKeyPair.getP2WPKHAddress(this._keypair, this.network);
37
- this._p2tr = EcKeyPair.getTaprootAddress(this._keypair, this.network);
38
- }
39
-
40
- /**
41
- * Get the keypair for the wallet
42
- * @returns {ECPairInterface}
43
- */
44
- public get keypair(): ECPairInterface {
45
- if (!this._keypair) throw new Error('Keypair not set');
46
-
47
- return this._keypair;
48
- }
49
-
50
- /**
51
- * Get the P2WPKH address for the wallet
52
- * @returns {Address}
53
- */
54
- public get p2wpkh(): Address {
55
- return this._p2wpkh;
56
- }
57
-
58
- /**
59
- * Get the P2TR address for the wallet
60
- * @returns {Address}
61
- */
62
- public get p2tr(): Address {
63
- return this._p2tr;
64
- }
65
-
66
- /**
67
- * Get the public key for the wallet
68
- * @protected
69
- * @returns {Buffer}
70
- */
71
- public get publicKey(): Buffer {
72
- if (!this.keypair) throw new Error('Keypair not set');
73
-
74
- return this.keypair.publicKey;
75
- }
76
-
77
- /**
78
- * Get the x-only public key for the wallet
79
- * @public
80
- * @returns {Buffer}
81
- */
82
- public get xOnly(): Buffer {
83
- if (!this.keypair) throw new Error('Keypair not set');
84
-
85
- return toXOnly(this.keypair.publicKey);
86
- }
87
-
88
- /**
89
- * Create a wallet from a WIF
90
- * @param {string} wif The WIF
91
- * @param {Network} network The network
92
- * @returns {Wallet} The wallet
93
- */
94
- public static fromWif(wif: string, network: Network = networks.bitcoin): Wallet {
95
- return new Wallet({ privateKey: wif, address: '', publicKey: '' }, network);
96
- }
97
- }
1
+ import { IWallet } from './interfaces/IWallet.js';
2
+ import { ECPairInterface } from 'ecpair';
3
+ import { EcKeyPair } from './EcKeyPair.js';
4
+ import { Network, networks } from 'bitcoinjs-lib';
5
+ import { Address } from '@btc-vision/bsi-binary';
6
+ import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
7
+
8
+ /**
9
+ * Wallet class
10
+ */
11
+ export class Wallet {
12
+ /**
13
+ * Keypair for the wallet
14
+ * @private
15
+ */
16
+ private readonly _keypair: ECPairInterface;
17
+
18
+ /**
19
+ * P2WPKH address for the wallet
20
+ * @private
21
+ */
22
+ private readonly _p2wpkh: Address;
23
+
24
+ /**
25
+ * P2TR address for the wallet
26
+ * @private
27
+ */
28
+ private readonly _p2tr: Address;
29
+
30
+ /**
31
+ * Legacy address for the wallet
32
+ * @private
33
+ */
34
+ private readonly _legacy: Address;
35
+
36
+ constructor(
37
+ wallet: IWallet,
38
+ public readonly network: Network = networks.bitcoin,
39
+ ) {
40
+ this._keypair = EcKeyPair.fromWIF(wallet.privateKey, this.network);
41
+
42
+ this._p2wpkh = EcKeyPair.getP2WPKHAddress(this._keypair, this.network);
43
+ this._p2tr = EcKeyPair.getTaprootAddress(this._keypair, this.network);
44
+ this._legacy = EcKeyPair.getLegacyAddress(this._keypair, this.network);
45
+ }
46
+
47
+ /**
48
+ * Get the keypair for the wallet
49
+ * @returns {ECPairInterface}
50
+ */
51
+ public get keypair(): ECPairInterface {
52
+ if (!this._keypair) throw new Error('Keypair not set');
53
+
54
+ return this._keypair;
55
+ }
56
+
57
+ /**
58
+ * Get the P2WPKH address for the wallet
59
+ * @returns {Address}
60
+ */
61
+ public get p2wpkh(): Address {
62
+ return this._p2wpkh;
63
+ }
64
+
65
+ /**
66
+ * Get the P2TR address for the wallet
67
+ * @returns {Address}
68
+ */
69
+ public get p2tr(): Address {
70
+ return this._p2tr;
71
+ }
72
+
73
+ /**
74
+ * Get the legacy address for the wallet
75
+ * @returns {Address}
76
+ */
77
+ public get legacy(): Address {
78
+ return this._legacy;
79
+ }
80
+
81
+ /**
82
+ * Get the addresses for the wallet
83
+ * @returns {Address[]}
84
+ */
85
+ public get addresses(): Address[] {
86
+ return [this.p2wpkh, this.p2tr, this.legacy];
87
+ }
88
+
89
+ /**
90
+ * Get the public key for the wallet
91
+ * @protected
92
+ * @returns {Buffer}
93
+ */
94
+ public get publicKey(): Buffer {
95
+ if (!this.keypair) throw new Error('Keypair not set');
96
+
97
+ return this.keypair.publicKey;
98
+ }
99
+
100
+ /**
101
+ * Get the x-only public key for the wallet
102
+ * @public
103
+ * @returns {Buffer}
104
+ */
105
+ public get xOnly(): Buffer {
106
+ if (!this.keypair) throw new Error('Keypair not set');
107
+
108
+ return toXOnly(this.keypair.publicKey);
109
+ }
110
+
111
+ /**
112
+ * Create a wallet from a WIF
113
+ * @param {string} wif The WIF
114
+ * @param {Network} network The network
115
+ * @returns {Wallet} The wallet
116
+ */
117
+ public static fromWif(wif: string, network: Network = networks.bitcoin): Wallet {
118
+ return new Wallet({ privateKey: wif, address: '', publicKey: '' }, network);
119
+ }
120
+ }
@@ -1,19 +1,19 @@
1
- /**
2
- * Interface for the generated wallet
3
- */
4
- export interface IWallet {
5
- /**
6
- * The address of the wallet
7
- */
8
- readonly address: string;
9
-
10
- /**
11
- * The private key of the wallet
12
- */
13
- readonly privateKey: string;
14
-
15
- /**
16
- * The public key of the wallet
17
- */
18
- readonly publicKey: string;
19
- }
1
+ /**
2
+ * Interface for the generated wallet
3
+ */
4
+ export interface IWallet {
5
+ /**
6
+ * The address of the wallet
7
+ */
8
+ readonly address: string;
9
+
10
+ /**
11
+ * The private key of the wallet
12
+ */
13
+ readonly privateKey: string;
14
+
15
+ /**
16
+ * The public key of the wallet
17
+ */
18
+ readonly publicKey: string;
19
+ }
@@ -1,23 +1,23 @@
1
- import { Address } from '@btc-vision/bsi-binary';
2
- import { Network, networks } from 'bitcoinjs-lib';
3
-
4
- export abstract class ContractBaseMetadata {
5
- protected abstract readonly address: Address;
6
-
7
- protected constructor(protected network: Network = networks.bitcoin) {}
8
-
9
- /**
10
- * @description Get the contract address
11
- * @param {Network} network - The network to get the address for
12
- */
13
- public static getAddress(network: Network = networks.bitcoin): Address {
14
- throw new Error('Method not implemented.');
15
- }
16
-
17
- /**
18
- * @description Get the contract address
19
- */
20
- public getAddress(): Address {
21
- return this.address;
22
- }
23
- }
1
+ import { Address } from '@btc-vision/bsi-binary';
2
+ import { Network, networks } from 'bitcoinjs-lib';
3
+
4
+ export abstract class ContractBaseMetadata {
5
+ protected abstract readonly address: Address;
6
+
7
+ protected constructor(protected network: Network = networks.bitcoin) {}
8
+
9
+ /**
10
+ * @description Get the contract address
11
+ * @param {Network} network - The network to get the address for
12
+ */
13
+ public static getAddress(network: Network = networks.bitcoin): Address {
14
+ throw new Error('Method not implemented.');
15
+ }
16
+
17
+ /**
18
+ * @description Get the contract address
19
+ */
20
+ public getAddress(): Address {
21
+ return this.address;
22
+ }
23
+ }
@@ -1,60 +1,60 @@
1
- import { Network, networks } from 'bitcoinjs-lib';
2
- import { ContractBaseMetadata } from '../ContractBaseMetadata.js';
3
- import { Address } from '@btc-vision/bsi-binary';
4
- import { WBTC_ADDRESS_FRACTAL, WBTC_ADDRESS_REGTEST, WBTC_ADDRESS_TESTNET } from '../tokens.js';
5
- import { ChainId } from '../../network/ChainId.js';
6
-
7
- /**
8
- * @description Wrapped Bitcoin (wBTC) contract metadata.
9
- * */
10
- export class wBTC extends ContractBaseMetadata {
11
- /**
12
- * @description Token Name
13
- */
14
- public readonly tokenName: string = 'Wrapped Bitcoin';
15
-
16
- /**
17
- * @description Token Symbol
18
- */
19
- public readonly tokenSymbol: string = 'wBTC';
20
-
21
- /**
22
- * @description Token Decimals, same as Bitcoin
23
- */
24
- public readonly decimals: number = 8;
25
-
26
- protected readonly address: Address;
27
-
28
- constructor(
29
- protected network: Network = networks.bitcoin,
30
- chainId: ChainId = ChainId.Bitcoin,
31
- ) {
32
- super(network);
33
-
34
- this.address = wBTC.getAddress(network, chainId);
35
- }
36
-
37
- public static getAddress(network: Network = networks.bitcoin, chainId?: ChainId): Address {
38
- switch (network.bech32) {
39
- case networks.bitcoin.bech32:
40
- return this.getWBTCAddressForChain(chainId ?? ChainId.Bitcoin);
41
- case networks.regtest.bech32:
42
- return WBTC_ADDRESS_REGTEST;
43
- case networks.testnet.bech32:
44
- return WBTC_ADDRESS_TESTNET;
45
- default:
46
- throw new Error(`Invalid network: ${network}`);
47
- }
48
- }
49
-
50
- private static getWBTCAddressForChain(chainId: ChainId): Address {
51
- switch (chainId) {
52
- case ChainId.Bitcoin:
53
- return 'unknown';
54
- case ChainId.Fractal:
55
- return WBTC_ADDRESS_FRACTAL;
56
- default:
57
- throw new Error(`Invalid chainId: ${chainId}`);
58
- }
59
- }
60
- }
1
+ import { Network, networks } from 'bitcoinjs-lib';
2
+ import { ContractBaseMetadata } from '../ContractBaseMetadata.js';
3
+ import { Address } from '@btc-vision/bsi-binary';
4
+ import { WBTC_ADDRESS_FRACTAL, WBTC_ADDRESS_REGTEST, WBTC_ADDRESS_TESTNET } from '../tokens.js';
5
+ import { ChainId } from '../../network/ChainId.js';
6
+
7
+ /**
8
+ * @description Wrapped Bitcoin (wBTC) contract metadata.
9
+ * */
10
+ export class wBTC extends ContractBaseMetadata {
11
+ /**
12
+ * @description Token Name
13
+ */
14
+ public readonly tokenName: string = 'Wrapped Bitcoin';
15
+
16
+ /**
17
+ * @description Token Symbol
18
+ */
19
+ public readonly tokenSymbol: string = 'wBTC';
20
+
21
+ /**
22
+ * @description Token Decimals, same as Bitcoin
23
+ */
24
+ public readonly decimals: number = 8;
25
+
26
+ protected readonly address: Address;
27
+
28
+ constructor(
29
+ protected network: Network = networks.bitcoin,
30
+ chainId: ChainId = ChainId.Bitcoin,
31
+ ) {
32
+ super(network);
33
+
34
+ this.address = wBTC.getAddress(network, chainId);
35
+ }
36
+
37
+ public static getAddress(network: Network = networks.bitcoin, chainId?: ChainId): Address {
38
+ switch (network.bech32) {
39
+ case networks.bitcoin.bech32:
40
+ return this.getWBTCAddressForChain(chainId ?? ChainId.Bitcoin);
41
+ case networks.regtest.bech32:
42
+ return WBTC_ADDRESS_REGTEST;
43
+ case networks.testnet.bech32:
44
+ return WBTC_ADDRESS_TESTNET;
45
+ default:
46
+ throw new Error(`Invalid network: ${network}`);
47
+ }
48
+ }
49
+
50
+ private static getWBTCAddressForChain(chainId: ChainId): Address {
51
+ switch (chainId) {
52
+ case ChainId.Bitcoin:
53
+ return 'unknown';
54
+ case ChainId.Fractal:
55
+ return WBTC_ADDRESS_FRACTAL;
56
+ default:
57
+ throw new Error(`Invalid chainId: ${chainId}`);
58
+ }
59
+ }
60
+ }
@@ -18,7 +18,7 @@ export const ROUTER_ADDRESS_TESTNET: Address = 'tb1qnh9mj95nnej25dwhjvvsppwmdm0m
18
18
  // Addresses Fractal
19
19
  export const FACTORY_ADDRESS_FRACTAL: Address = 'bc1qr4g85824m58wu0zffjtnf56n425fp0e8azhc7q';
20
20
  export const POOL_ADDRESS_FRACTAL: Address = 'bc1qv55cht4zzlt29ea7vdgwsedsn63a2sxtkgpv6h';
21
- export const WBTC_ADDRESS_FRACTAL: Address = 'bc1qdtzlucslvrvu4useyh9r69supqrw3w4xn9t4yv';
21
+ export const WBTC_ADDRESS_FRACTAL: Address = 'u fou';
22
22
  export const MOTO_ADDRESS_FRACTAL: Address = 'bc1qfzq6w5uvgg5489egv0lj4shlqx4dagqt0ewdnu';
23
23
  export const ROUTER_ADDRESS_FRACTAL: Address = 'bc1q9w2zvmkzlezt2fu34u57y9vuw6rll5sp2090kn';
24
24
 
@@ -1,7 +1,7 @@
1
- import { IWallet } from '../keypair/interfaces/IWallet.js';
2
- import { BlockchainConfig } from '@btc-vision/bsi-common';
3
-
4
- export interface NetworkInformation {
5
- readonly wallet: IWallet;
6
- readonly config: BlockchainConfig;
7
- }
1
+ import { IWallet } from '../keypair/interfaces/IWallet.js';
2
+ import { BlockchainConfig } from '@btc-vision/bsi-common';
3
+
4
+ export interface NetworkInformation {
5
+ readonly wallet: IWallet;
6
+ readonly config: BlockchainConfig;
7
+ }
@@ -480,6 +480,8 @@ export class TransactionFactory {
480
480
  }
481
481
 
482
482
  private getUTXOAsTransaction(tx: Transaction, to: Address, index: number): UTXO[] {
483
+ if (!tx.outs[index]) return [];
484
+
483
485
  const out: Output = tx.outs[index];
484
486
  const newUtxo: UTXO = {
485
487
  transactionId: tx.getId(),
@@ -1,37 +1,37 @@
1
- import { Network, Psbt, Signer } from 'bitcoinjs-lib';
2
- import { Address } from '@btc-vision/bsi-binary';
3
-
4
- /**
5
- * Create a custom keypair.
6
- * @class CustomKeypair
7
- */
8
- export abstract class CustomKeypair implements Signer {
9
- public abstract network: Network;
10
-
11
- public abstract publicKey: Buffer;
12
-
13
- public abstract addresses: Address[];
14
-
15
- public abstract p2tr: Address;
16
- public abstract p2wpkh: Address;
17
-
18
- protected constructor() {}
19
-
20
- public abstract signTaprootInput(
21
- transaction: Psbt,
22
- i: number,
23
- sighashTypes: number[],
24
- ): Promise<void>;
25
-
26
- public abstract signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
27
-
28
- public abstract getPublicKey(): Buffer;
29
-
30
- public abstract sign(hash: Buffer, lowR?: boolean): Buffer;
31
-
32
- public abstract signSchnorr(hash: Buffer): Buffer;
33
-
34
- public abstract verify(hash: Buffer, signature: Buffer): boolean;
35
-
36
- public abstract init(): Promise<void>;
37
- }
1
+ import { Network, Psbt, Signer } from 'bitcoinjs-lib';
2
+ import { Address } from '@btc-vision/bsi-binary';
3
+
4
+ /**
5
+ * Create a custom keypair.
6
+ * @class CustomKeypair
7
+ */
8
+ export abstract class CustomKeypair implements Signer {
9
+ public abstract network: Network;
10
+
11
+ public abstract publicKey: Buffer;
12
+
13
+ public abstract addresses: Address[];
14
+
15
+ public abstract p2tr: Address;
16
+ public abstract p2wpkh: Address;
17
+
18
+ protected constructor() {}
19
+
20
+ public abstract signTaprootInput(
21
+ transaction: Psbt,
22
+ i: number,
23
+ sighashTypes: number[],
24
+ ): Promise<void>;
25
+
26
+ public abstract signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
27
+
28
+ public abstract getPublicKey(): Buffer;
29
+
30
+ public abstract sign(hash: Buffer, lowR?: boolean): Buffer;
31
+
32
+ public abstract signSchnorr(hash: Buffer): Buffer;
33
+
34
+ public abstract verify(hash: Buffer, signature: Buffer): boolean;
35
+
36
+ public abstract init(): Promise<void>;
37
+ }
@@ -1,46 +1,46 @@
1
- import { IInteractionParameters } from '../interfaces/ITransactionParameters.js';
2
- import { UTXO } from '../../utxo/interfaces/IUTXO.js';
3
-
4
- export type InteractionParametersWithoutSigner = Omit<IInteractionParameters, 'signer'>; //| 'utxos'
5
-
6
- export interface BroadcastTransactionOptions {
7
- raw: string;
8
- psbt: boolean;
9
- }
10
-
11
- export interface BroadcastedTransaction {
12
- /** Whether the transaction was successfully broadcasted. */
13
- readonly success: boolean;
14
-
15
- /**
16
- * The result of the broadcasted transaction.
17
- */
18
- readonly result?: string;
19
-
20
- /**
21
- * The error message if the transaction was not successfully broadcasted.
22
- */
23
- readonly error?: string;
24
-
25
- /**
26
- * The number of peers that the transaction was broadcasted to.
27
- */
28
- readonly peers?: number;
29
-
30
- /**
31
- * The identifier of the transaction.
32
- */
33
- readonly identifier: bigint | string;
34
- }
35
-
36
- export interface Web3Provider {
37
- signInteraction(
38
- interactionParameters: InteractionParametersWithoutSigner,
39
- ): Promise<[string, string, UTXO[]]>;
40
-
41
- signAndBroadcastInteraction(
42
- interactionParameters: InteractionParametersWithoutSigner,
43
- ): Promise<[BroadcastedTransaction, BroadcastedTransaction, UTXO[]]>;
44
-
45
- broadcast(transactions: BroadcastTransactionOptions[]): Promise<BroadcastedTransaction[]>;
46
- }
1
+ import { IInteractionParameters } from '../interfaces/ITransactionParameters.js';
2
+ import { UTXO } from '../../utxo/interfaces/IUTXO.js';
3
+
4
+ export type InteractionParametersWithoutSigner = Omit<IInteractionParameters, 'signer'>; //| 'utxos'
5
+
6
+ export interface BroadcastTransactionOptions {
7
+ raw: string;
8
+ psbt: boolean;
9
+ }
10
+
11
+ export interface BroadcastedTransaction {
12
+ /** Whether the transaction was successfully broadcasted. */
13
+ readonly success: boolean;
14
+
15
+ /**
16
+ * The result of the broadcasted transaction.
17
+ */
18
+ readonly result?: string;
19
+
20
+ /**
21
+ * The error message if the transaction was not successfully broadcasted.
22
+ */
23
+ readonly error?: string;
24
+
25
+ /**
26
+ * The number of peers that the transaction was broadcasted to.
27
+ */
28
+ readonly peers?: number;
29
+
30
+ /**
31
+ * The identifier of the transaction.
32
+ */
33
+ readonly identifier: bigint | string;
34
+ }
35
+
36
+ export interface Web3Provider {
37
+ signInteraction(
38
+ interactionParameters: InteractionParametersWithoutSigner,
39
+ ): Promise<[string, string, UTXO[]]>;
40
+
41
+ signAndBroadcastInteraction(
42
+ interactionParameters: InteractionParametersWithoutSigner,
43
+ ): Promise<[BroadcastedTransaction, BroadcastedTransaction, UTXO[]]>;
44
+
45
+ broadcast(transactions: BroadcastTransactionOptions[]): Promise<BroadcastedTransaction[]>;
46
+ }