@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
@@ -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
+ }
@@ -1,218 +1,218 @@
1
- import { CustomKeypair } from '../BrowserSignerBase.js';
2
- import { Network, networks, Psbt } from 'bitcoinjs-lib';
3
- import { PsbtSignatureOptions, Unisat, UnisatNetwork } from '../types/Unisat.js';
4
- import { Address } from '@btc-vision/bsi-binary';
5
- import { EcKeyPair } from '../../../keypair/EcKeyPair.js';
6
- import { ECPairInterface } from 'ecpair';
7
- import { TapScriptSig } from 'bip174/src/lib/interfaces.js';
8
-
9
- declare global {
10
- interface Window {
11
- unisat?: Unisat;
12
- }
13
- }
14
-
15
- export class UnisatSigner extends CustomKeypair {
16
- private isInitialized: boolean = false;
17
-
18
- constructor() {
19
- super();
20
-
21
- if (!window) {
22
- throw new Error('UnisatSigner can only be used in a browser environment');
23
- }
24
- }
25
-
26
- private _p2tr: Address | undefined;
27
-
28
- public get p2tr(): Address {
29
- if (!this._p2tr) {
30
- throw new Error('P2TR address not set');
31
- }
32
-
33
- return this._p2tr;
34
- }
35
-
36
- private _p2wpkh: Address | undefined;
37
-
38
- public get p2wpkh(): Address {
39
- if (!this._p2wpkh) {
40
- throw new Error('P2PKH address not set');
41
- }
42
-
43
- return this._p2wpkh;
44
- }
45
-
46
- private _addresses: Address[] | undefined;
47
-
48
- public get addresses(): Address[] {
49
- if (!this._addresses) {
50
- throw new Error('Addresses not set');
51
- }
52
-
53
- return this._addresses;
54
- }
55
-
56
- private _publicKey: Buffer | undefined;
57
-
58
- public get publicKey(): Buffer {
59
- if (!this._publicKey) {
60
- throw new Error('Public key not set');
61
- }
62
-
63
- return this._publicKey;
64
- }
65
-
66
- public _network: Network | undefined;
67
-
68
- public get network(): Network {
69
- if (!this._network) {
70
- throw new Error('Network not set');
71
- }
72
-
73
- return this._network;
74
- }
75
-
76
- public get unisat(): Unisat {
77
- if (!window.unisat) {
78
- throw new Error('Unisat extension not found');
79
- }
80
-
81
- return window.unisat;
82
- }
83
-
84
- public async init(): Promise<void> {
85
- if (this.isInitialized) {
86
- return;
87
- }
88
-
89
- const network = await this.unisat.getNetwork();
90
- switch (network) {
91
- case UnisatNetwork.mainnet:
92
- this._network = networks.bitcoin;
93
- break;
94
- case UnisatNetwork.testnet:
95
- this._network = networks.testnet;
96
- break;
97
- case UnisatNetwork.regtest:
98
- this._network = networks.regtest;
99
- break;
100
- default:
101
- throw new Error('Invalid network');
102
- }
103
-
104
- const publicKey = await this.unisat.getPublicKey();
105
- this._publicKey = Buffer.from(publicKey, 'hex');
106
-
107
- this._p2wpkh = EcKeyPair.getP2WPKHAddress(this as unknown as ECPairInterface, this.network);
108
-
109
- this._p2tr = EcKeyPair.getTaprootAddress(this as unknown as ECPairInterface, this.network);
110
-
111
- this._addresses = [this._p2wpkh, this._p2tr];
112
-
113
- this.isInitialized = true;
114
- }
115
-
116
- public getPublicKey(): Buffer {
117
- if (!this.isInitialized) {
118
- throw new Error('UnisatSigner not initialized');
119
- }
120
-
121
- return this.publicKey;
122
- }
123
-
124
- public sign(hash: Buffer, lowR?: boolean): Buffer {
125
- throw new Error('Not implemented: sign');
126
- }
127
-
128
- public signSchnorr(hash: Buffer): Buffer {
129
- throw new Error('Not implemented: signSchnorr');
130
- }
131
-
132
- public verify(hash: Buffer, signature: Buffer): boolean {
133
- throw new Error('Not implemented: verify');
134
- }
135
-
136
- public async signTaprootInput(
137
- transaction: Psbt,
138
- i: number,
139
- sighashTypes: number[],
140
- ): Promise<void> {
141
- let firstSignature = await this.signTweaked(transaction, i, sighashTypes, false);
142
- this.combine(transaction, firstSignature, i);
143
- }
144
-
145
- public async signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void> {
146
- const secondSignature = await this.signTweaked(transaction, i, sighashTypes, true);
147
-
148
- this.combine(transaction, secondSignature, i);
149
- }
150
-
151
- private combine(transaction: Psbt, newPsbt: Psbt, i: number): void {
152
- const signedInput = newPsbt.data.inputs[i];
153
- const originalInput = transaction.data.inputs[i];
154
-
155
- if (signedInput.partialSig) {
156
- transaction.updateInput(i, { partialSig: signedInput.partialSig });
157
- }
158
-
159
- if (signedInput.tapKeySig && !originalInput.tapKeySig) {
160
- transaction.updateInput(i, { tapKeySig: signedInput.tapKeySig });
161
- }
162
-
163
- if (signedInput.tapScriptSig?.length) {
164
- const lastScriptSig = originalInput.tapScriptSig;
165
- if (lastScriptSig) {
166
- const getNonDuplicate = this.getNonDuplicateScriptSig(
167
- lastScriptSig,
168
- signedInput.tapScriptSig,
169
- );
170
-
171
- if (getNonDuplicate.length) {
172
- transaction.updateInput(i, { tapScriptSig: getNonDuplicate });
173
- }
174
- } else {
175
- transaction.updateInput(i, { tapScriptSig: signedInput.tapScriptSig });
176
- }
177
- }
178
- }
179
-
180
- private async signTweaked(
181
- transaction: Psbt,
182
- i: number,
183
- sighashTypes: number[],
184
- disableTweakSigner: boolean = false,
185
- ): Promise<Psbt> {
186
- const opts: PsbtSignatureOptions = {
187
- autoFinalized: false,
188
- toSignInputs: [
189
- {
190
- index: i,
191
- publicKey: this.publicKey.toString('hex'),
192
- sighashTypes,
193
- disableTweakSigner: disableTweakSigner,
194
- },
195
- ],
196
- };
197
-
198
- const psbt = transaction.toHex();
199
- const signed = await this.unisat.signPsbt(psbt, opts);
200
-
201
- return Psbt.fromHex(signed);
202
- }
203
-
204
- private getNonDuplicateScriptSig(
205
- scriptSig1: TapScriptSig[],
206
- scriptSig2: TapScriptSig[],
207
- ): TapScriptSig[] {
208
- const nonDuplicate: TapScriptSig[] = [];
209
- for (let i = 0; i < scriptSig2.length; i++) {
210
- const found = scriptSig1.find((item) => item.pubkey.equals(scriptSig2[i].pubkey));
211
- if (!found) {
212
- nonDuplicate.push(scriptSig2[i]);
213
- }
214
- }
215
-
216
- return nonDuplicate;
217
- }
218
- }
1
+ import { CustomKeypair } from '../BrowserSignerBase.js';
2
+ import { Network, networks, Psbt } from 'bitcoinjs-lib';
3
+ import { PsbtSignatureOptions, Unisat, UnisatNetwork } from '../types/Unisat.js';
4
+ import { Address } from '@btc-vision/bsi-binary';
5
+ import { EcKeyPair } from '../../../keypair/EcKeyPair.js';
6
+ import { ECPairInterface } from 'ecpair';
7
+ import { TapScriptSig } from 'bip174/src/lib/interfaces.js';
8
+
9
+ declare global {
10
+ interface Window {
11
+ unisat?: Unisat;
12
+ }
13
+ }
14
+
15
+ export class UnisatSigner extends CustomKeypair {
16
+ private isInitialized: boolean = false;
17
+
18
+ constructor() {
19
+ super();
20
+
21
+ if (!window) {
22
+ throw new Error('UnisatSigner can only be used in a browser environment');
23
+ }
24
+ }
25
+
26
+ private _p2tr: Address | undefined;
27
+
28
+ public get p2tr(): Address {
29
+ if (!this._p2tr) {
30
+ throw new Error('P2TR address not set');
31
+ }
32
+
33
+ return this._p2tr;
34
+ }
35
+
36
+ private _p2wpkh: Address | undefined;
37
+
38
+ public get p2wpkh(): Address {
39
+ if (!this._p2wpkh) {
40
+ throw new Error('P2PKH address not set');
41
+ }
42
+
43
+ return this._p2wpkh;
44
+ }
45
+
46
+ private _addresses: Address[] | undefined;
47
+
48
+ public get addresses(): Address[] {
49
+ if (!this._addresses) {
50
+ throw new Error('Addresses not set');
51
+ }
52
+
53
+ return this._addresses;
54
+ }
55
+
56
+ private _publicKey: Buffer | undefined;
57
+
58
+ public get publicKey(): Buffer {
59
+ if (!this._publicKey) {
60
+ throw new Error('Public key not set');
61
+ }
62
+
63
+ return this._publicKey;
64
+ }
65
+
66
+ public _network: Network | undefined;
67
+
68
+ public get network(): Network {
69
+ if (!this._network) {
70
+ throw new Error('Network not set');
71
+ }
72
+
73
+ return this._network;
74
+ }
75
+
76
+ public get unisat(): Unisat {
77
+ if (!window.unisat) {
78
+ throw new Error('Unisat extension not found');
79
+ }
80
+
81
+ return window.unisat;
82
+ }
83
+
84
+ public async init(): Promise<void> {
85
+ if (this.isInitialized) {
86
+ return;
87
+ }
88
+
89
+ const network = await this.unisat.getNetwork();
90
+ switch (network) {
91
+ case UnisatNetwork.mainnet:
92
+ this._network = networks.bitcoin;
93
+ break;
94
+ case UnisatNetwork.testnet:
95
+ this._network = networks.testnet;
96
+ break;
97
+ case UnisatNetwork.regtest:
98
+ this._network = networks.regtest;
99
+ break;
100
+ default:
101
+ throw new Error('Invalid network');
102
+ }
103
+
104
+ const publicKey = await this.unisat.getPublicKey();
105
+ this._publicKey = Buffer.from(publicKey, 'hex');
106
+
107
+ this._p2wpkh = EcKeyPair.getP2WPKHAddress(this as unknown as ECPairInterface, this.network);
108
+
109
+ this._p2tr = EcKeyPair.getTaprootAddress(this as unknown as ECPairInterface, this.network);
110
+
111
+ this._addresses = [this._p2wpkh, this._p2tr];
112
+
113
+ this.isInitialized = true;
114
+ }
115
+
116
+ public getPublicKey(): Buffer {
117
+ if (!this.isInitialized) {
118
+ throw new Error('UnisatSigner not initialized');
119
+ }
120
+
121
+ return this.publicKey;
122
+ }
123
+
124
+ public sign(hash: Buffer, lowR?: boolean): Buffer {
125
+ throw new Error('Not implemented: sign');
126
+ }
127
+
128
+ public signSchnorr(hash: Buffer): Buffer {
129
+ throw new Error('Not implemented: signSchnorr');
130
+ }
131
+
132
+ public verify(hash: Buffer, signature: Buffer): boolean {
133
+ throw new Error('Not implemented: verify');
134
+ }
135
+
136
+ public async signTaprootInput(
137
+ transaction: Psbt,
138
+ i: number,
139
+ sighashTypes: number[],
140
+ ): Promise<void> {
141
+ let firstSignature = await this.signTweaked(transaction, i, sighashTypes, false);
142
+ this.combine(transaction, firstSignature, i);
143
+ }
144
+
145
+ public async signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void> {
146
+ const secondSignature = await this.signTweaked(transaction, i, sighashTypes, true);
147
+
148
+ this.combine(transaction, secondSignature, i);
149
+ }
150
+
151
+ private combine(transaction: Psbt, newPsbt: Psbt, i: number): void {
152
+ const signedInput = newPsbt.data.inputs[i];
153
+ const originalInput = transaction.data.inputs[i];
154
+
155
+ if (signedInput.partialSig) {
156
+ transaction.updateInput(i, { partialSig: signedInput.partialSig });
157
+ }
158
+
159
+ if (signedInput.tapKeySig && !originalInput.tapKeySig) {
160
+ transaction.updateInput(i, { tapKeySig: signedInput.tapKeySig });
161
+ }
162
+
163
+ if (signedInput.tapScriptSig?.length) {
164
+ const lastScriptSig = originalInput.tapScriptSig;
165
+ if (lastScriptSig) {
166
+ const getNonDuplicate = this.getNonDuplicateScriptSig(
167
+ lastScriptSig,
168
+ signedInput.tapScriptSig,
169
+ );
170
+
171
+ if (getNonDuplicate.length) {
172
+ transaction.updateInput(i, { tapScriptSig: getNonDuplicate });
173
+ }
174
+ } else {
175
+ transaction.updateInput(i, { tapScriptSig: signedInput.tapScriptSig });
176
+ }
177
+ }
178
+ }
179
+
180
+ private async signTweaked(
181
+ transaction: Psbt,
182
+ i: number,
183
+ sighashTypes: number[],
184
+ disableTweakSigner: boolean = false,
185
+ ): Promise<Psbt> {
186
+ const opts: PsbtSignatureOptions = {
187
+ autoFinalized: false,
188
+ toSignInputs: [
189
+ {
190
+ index: i,
191
+ publicKey: this.publicKey.toString('hex'),
192
+ sighashTypes,
193
+ disableTweakSigner: disableTweakSigner,
194
+ },
195
+ ],
196
+ };
197
+
198
+ const psbt = transaction.toHex();
199
+ const signed = await this.unisat.signPsbt(psbt, opts);
200
+
201
+ return Psbt.fromHex(signed);
202
+ }
203
+
204
+ private getNonDuplicateScriptSig(
205
+ scriptSig1: TapScriptSig[],
206
+ scriptSig2: TapScriptSig[],
207
+ ): TapScriptSig[] {
208
+ const nonDuplicate: TapScriptSig[] = [];
209
+ for (let i = 0; i < scriptSig2.length; i++) {
210
+ const found = scriptSig1.find((item) => item.pubkey.equals(scriptSig2[i].pubkey));
211
+ if (!found) {
212
+ nonDuplicate.push(scriptSig2[i]);
213
+ }
214
+ }
215
+
216
+ return nonDuplicate;
217
+ }
218
+ }