@btc-vision/transaction 1.0.118 → 1.0.120

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 (146) hide show
  1. package/browser/_version.d.ts +1 -1
  2. package/browser/event/NetEvent.d.ts +3 -3
  3. package/browser/generators/AddressGenerator.d.ts +1 -1
  4. package/browser/generators/Generator.d.ts +1 -1
  5. package/browser/generators/builders/CalldataGenerator.d.ts +1 -1
  6. package/browser/generators/builders/CustomGenerator.d.ts +1 -1
  7. package/browser/generators/builders/DeploymentGenerator.d.ts +1 -1
  8. package/browser/generators/builders/LegacyCalldataGenerator.d.ts +8 -0
  9. package/browser/index.js +1 -1
  10. package/browser/keypair/Address.d.ts +2 -1
  11. package/browser/keypair/AddressVerificator.d.ts +3 -4
  12. package/browser/keypair/EcKeyPair.d.ts +1 -1
  13. package/browser/keypair/Wallet.d.ts +1 -1
  14. package/browser/metadata/ContractBaseMetadata.d.ts +1 -1
  15. package/browser/metadata/contracts/wBTC.d.ts +1 -1
  16. package/browser/opnet.d.ts +1 -0
  17. package/browser/signer/TweakedSigner.d.ts +1 -1
  18. package/browser/transaction/TransactionFactory.d.ts +1 -1
  19. package/browser/transaction/browser/BrowserSignerBase.d.ts +1 -1
  20. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +1 -1
  21. package/browser/transaction/builders/CustomScriptTransaction.d.ts +1 -1
  22. package/browser/transaction/builders/DeploymentTransaction.d.ts +1 -1
  23. package/browser/transaction/builders/FundingTransaction.d.ts +1 -1
  24. package/browser/transaction/builders/InteractionTransaction.d.ts +1 -1
  25. package/browser/transaction/builders/MultiSignTransaction.d.ts +2 -2
  26. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
  27. package/browser/transaction/builders/TransactionBuilder.d.ts +1 -1
  28. package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +2 -2
  29. package/browser/transaction/builders/UnwrapTransaction.d.ts +2 -2
  30. package/browser/transaction/builders/WrapTransaction.d.ts +1 -1
  31. package/browser/transaction/interfaces/ITransactionParameters.d.ts +1 -1
  32. package/browser/transaction/interfaces/Tap.d.ts +1 -1
  33. package/browser/transaction/processor/PsbtTransaction.d.ts +1 -1
  34. package/browser/transaction/shared/P2TR_MS.d.ts +1 -1
  35. package/browser/transaction/shared/TweakedTransaction.d.ts +10 -1
  36. package/browser/utxo/OPNetLimitedProvider.d.ts +1 -1
  37. package/browser/utxo/interfaces/IUTXO.d.ts +3 -0
  38. package/browser/verification/TapscriptVerificator.d.ts +2 -2
  39. package/build/_version.d.ts +1 -1
  40. package/build/_version.js +1 -1
  41. package/build/event/NetEvent.d.ts +3 -3
  42. package/build/event/NetEvent.js +3 -3
  43. package/build/generators/AddressGenerator.d.ts +1 -1
  44. package/build/generators/AddressGenerator.js +2 -2
  45. package/build/generators/Features.js +1 -1
  46. package/build/generators/Generator.d.ts +1 -1
  47. package/build/generators/Generator.js +2 -2
  48. package/build/generators/builders/CalldataGenerator.d.ts +1 -1
  49. package/build/generators/builders/CalldataGenerator.js +1 -1
  50. package/build/generators/builders/CustomGenerator.d.ts +1 -1
  51. package/build/generators/builders/CustomGenerator.js +1 -1
  52. package/build/generators/builders/DeploymentGenerator.d.ts +1 -1
  53. package/build/generators/builders/DeploymentGenerator.js +1 -1
  54. package/build/generators/builders/LegacyCalldataGenerator.d.ts +8 -0
  55. package/build/generators/builders/LegacyCalldataGenerator.js +75 -0
  56. package/build/generators/builders/MultiSignGenerator.js +2 -2
  57. package/build/keypair/Address.d.ts +2 -1
  58. package/build/keypair/Address.js +4 -1
  59. package/build/keypair/AddressVerificator.d.ts +3 -4
  60. package/build/keypair/AddressVerificator.js +14 -4
  61. package/build/keypair/EcKeyPair.d.ts +1 -1
  62. package/build/keypair/EcKeyPair.js +3 -3
  63. package/build/keypair/Wallet.d.ts +1 -1
  64. package/build/keypair/Wallet.js +2 -2
  65. package/build/metadata/ContractBaseMetadata.d.ts +1 -1
  66. package/build/metadata/ContractBaseMetadata.js +1 -1
  67. package/build/metadata/contracts/wBTC.d.ts +1 -1
  68. package/build/metadata/contracts/wBTC.js +1 -1
  69. package/build/opnet.d.ts +1 -0
  70. package/build/opnet.js +1 -0
  71. package/build/signer/TweakedSigner.d.ts +1 -1
  72. package/build/signer/TweakedSigner.js +3 -3
  73. package/build/transaction/TransactionFactory.d.ts +1 -1
  74. package/build/transaction/browser/BrowserSignerBase.d.ts +1 -1
  75. package/build/transaction/browser/extensions/UnisatSigner.d.ts +1 -1
  76. package/build/transaction/browser/extensions/UnisatSigner.js +1 -1
  77. package/build/transaction/builders/CustomScriptTransaction.d.ts +1 -1
  78. package/build/transaction/builders/CustomScriptTransaction.js +2 -2
  79. package/build/transaction/builders/DeploymentTransaction.d.ts +1 -1
  80. package/build/transaction/builders/DeploymentTransaction.js +2 -2
  81. package/build/transaction/builders/FundingTransaction.d.ts +1 -1
  82. package/build/transaction/builders/InteractionTransaction.d.ts +1 -1
  83. package/build/transaction/builders/MultiSignTransaction.d.ts +2 -2
  84. package/build/transaction/builders/MultiSignTransaction.js +2 -2
  85. package/build/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
  86. package/build/transaction/builders/SharedInteractionTransaction.js +2 -2
  87. package/build/transaction/builders/TransactionBuilder.d.ts +1 -1
  88. package/build/transaction/builders/TransactionBuilder.js +3 -3
  89. package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +2 -2
  90. package/build/transaction/builders/UnwrapSegwitTransaction.js +1 -1
  91. package/build/transaction/builders/UnwrapTransaction.d.ts +2 -2
  92. package/build/transaction/builders/UnwrapTransaction.js +2 -2
  93. package/build/transaction/builders/WrapTransaction.d.ts +1 -1
  94. package/build/transaction/interfaces/ITransactionParameters.d.ts +1 -1
  95. package/build/transaction/interfaces/Tap.d.ts +1 -1
  96. package/build/transaction/processor/PsbtTransaction.d.ts +1 -1
  97. package/build/transaction/processor/PsbtTransaction.js +1 -1
  98. package/build/transaction/shared/P2TR_MS.d.ts +1 -1
  99. package/build/transaction/shared/P2TR_MS.js +1 -1
  100. package/build/transaction/shared/TweakedTransaction.d.ts +10 -1
  101. package/build/transaction/shared/TweakedTransaction.js +95 -5
  102. package/build/utxo/OPNetLimitedProvider.d.ts +1 -1
  103. package/build/utxo/interfaces/IUTXO.d.ts +3 -0
  104. package/build/verification/TapscriptVerificator.d.ts +2 -2
  105. package/build/verification/TapscriptVerificator.js +2 -2
  106. package/package.json +2 -2
  107. package/src/_version.ts +1 -1
  108. package/src/event/NetEvent.ts +2 -2
  109. package/src/generators/AddressGenerator.ts +2 -2
  110. package/src/generators/Features.ts +1 -1
  111. package/src/generators/Generator.ts +2 -2
  112. package/src/generators/builders/CalldataGenerator.ts +2 -2
  113. package/src/generators/builders/CustomGenerator.ts +1 -1
  114. package/src/generators/builders/DeploymentGenerator.ts +1 -1
  115. package/src/generators/builders/LegacyCalldataGenerator.ts +141 -0
  116. package/src/generators/builders/MultiSignGenerator.ts +2 -2
  117. package/src/keypair/Address.ts +10 -2
  118. package/src/keypair/AddressVerificator.ts +23 -4
  119. package/src/keypair/EcKeyPair.ts +3 -3
  120. package/src/keypair/Wallet.ts +2 -2
  121. package/src/metadata/ContractBaseMetadata.ts +1 -1
  122. package/src/metadata/contracts/wBTC.ts +1 -1
  123. package/src/opnet.ts +1 -0
  124. package/src/signer/TweakedSigner.ts +3 -3
  125. package/src/transaction/TransactionFactory.ts +2 -2
  126. package/src/transaction/browser/BrowserSignerBase.ts +1 -1
  127. package/src/transaction/browser/extensions/UnisatSigner.ts +1 -1
  128. package/src/transaction/builders/CustomScriptTransaction.ts +3 -3
  129. package/src/transaction/builders/DeploymentTransaction.ts +3 -3
  130. package/src/transaction/builders/FundingTransaction.ts +1 -1
  131. package/src/transaction/builders/InteractionTransaction.ts +1 -1
  132. package/src/transaction/builders/MultiSignTransaction.ts +3 -3
  133. package/src/transaction/builders/SharedInteractionTransaction.ts +3 -3
  134. package/src/transaction/builders/TransactionBuilder.ts +3 -3
  135. package/src/transaction/builders/UnwrapSegwitTransaction.ts +2 -2
  136. package/src/transaction/builders/UnwrapTransaction.ts +3 -3
  137. package/src/transaction/builders/WrapTransaction.ts +2 -2
  138. package/src/transaction/interfaces/ITransactionParameters.ts +1 -1
  139. package/src/transaction/interfaces/Tap.ts +1 -1
  140. package/src/transaction/processor/PsbtTransaction.ts +1 -1
  141. package/src/transaction/shared/P2TR_MS.ts +1 -1
  142. package/src/transaction/shared/TweakedTransaction.ts +160 -5
  143. package/src/utxo/OPNetLimitedProvider.ts +1 -1
  144. package/src/utxo/interfaces/IUTXO.ts +3 -0
  145. package/src/verification/TapscriptVerificator.ts +3 -3
  146. package/webpack.config.js +1 -1
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { ECPairInterface } from 'ecpair';
3
3
  export declare class Address extends Uint8Array {
4
4
  #private;
@@ -11,6 +11,7 @@ export declare class Address extends Uint8Array {
11
11
  static fromString(pubKey: string): Address;
12
12
  static wrap(bytes: ArrayLike<number>): Address;
13
13
  toHex(): string;
14
+ toBuffer(): Buffer;
14
15
  equals(a: Address): boolean;
15
16
  lessThan(a: Address): boolean;
16
17
  greaterThan(a: Address): boolean;
@@ -1,8 +1,6 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare enum AddressTypes {
3
3
  P2PKH = "P2PKH",
4
- P2SH = "P2SH",
5
- P2SH_P2WPKH = "P2SH-P2WPKH",
6
4
  P2SH_OR_P2SH_P2WPKH = "P2SH_OR_P2SH-P2WPKH",
7
5
  P2PK = "P2PK",
8
6
  P2TR = "P2TR",
@@ -13,5 +11,6 @@ export declare class AddressVerificator {
13
11
  static isP2WPKHAddress(inAddress: string, network: Network): boolean;
14
12
  static isP2PKHOrP2SH(addy: string, network: Network): boolean;
15
13
  static isValidPublicKey(input: string, network: Network): boolean;
16
- static validateBitcoinAddress(addy: string, network: Network): AddressTypes | null;
14
+ static requireRedeemScript(addy: string, network: Network): boolean;
15
+ static detectAddressType(addy: string, network: Network): AddressTypes | null;
17
16
  }
@@ -1,5 +1,5 @@
1
1
  import { BIP32API, BIP32Interface } from 'bip32';
2
- import { Network, Signer } from 'bitcoinjs-lib';
2
+ import { Network, Signer } from '@btc-vision/bitcoin';
3
3
  import { ECPairAPI, ECPairInterface } from 'ecpair';
4
4
  import { IWallet } from './interfaces/IWallet.js';
5
5
  export declare class EcKeyPair {
@@ -1,6 +1,6 @@
1
1
  import { IWallet } from './interfaces/IWallet.js';
2
2
  import { ECPairInterface } from 'ecpair';
3
- import { Network } from 'bitcoinjs-lib';
3
+ import { Network } from '@btc-vision/bitcoin';
4
4
  import { Address } from './Address.js';
5
5
  export declare class Wallet {
6
6
  readonly network: Network;
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare abstract class ContractBaseMetadata {
3
3
  protected network: Network;
4
4
  protected abstract readonly address: string;
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { ChainId } from '../../network/ChainId.js';
3
3
  import { ContractBaseMetadata } from '../ContractBaseMetadata.js';
4
4
  export declare class wBTC extends ContractBaseMetadata {
@@ -2,6 +2,7 @@ export { version } from './_version.js';
2
2
  export * from './bytecode/Compressor.js';
3
3
  export * from './generators/Generator.js';
4
4
  export * from './generators/builders/CalldataGenerator.js';
5
+ export * from './generators/builders/LegacyCalldataGenerator.js';
5
6
  export * from './generators/builders/DeploymentGenerator.js';
6
7
  export * from './generators/builders/CustomGenerator.js';
7
8
  export * from './generators/builders/MultiSignGenerator.js';
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { ECPairInterface } from 'ecpair';
3
3
  export interface TweakSettings {
4
4
  readonly network?: Network;
@@ -1,4 +1,4 @@
1
- import { Transaction } from 'bitcoinjs-lib';
1
+ import { Transaction } from '@btc-vision/bitcoin';
2
2
  import { UTXO } from '../utxo/interfaces/IUTXO.js';
3
3
  import { ICustomTransactionParameters } from './builders/CustomScriptTransaction.js';
4
4
  import { FundingTransaction } from './builders/FundingTransaction.js';
@@ -1,4 +1,4 @@
1
- import { Network, Psbt, Signer } from 'bitcoinjs-lib';
1
+ import { Network, Psbt, Signer } from '@btc-vision/bitcoin';
2
2
  export declare abstract class CustomKeypair implements Signer {
3
3
  abstract network: Network;
4
4
  abstract publicKey: Buffer;
@@ -1,4 +1,4 @@
1
- import { Network, Psbt } from 'bitcoinjs-lib';
1
+ import { Network, Psbt } from '@btc-vision/bitcoin';
2
2
  import { CustomKeypair } from '../BrowserSignerBase.js';
3
3
  import { Unisat } from '../types/Unisat.js';
4
4
  declare global {
@@ -1,7 +1,7 @@
1
1
  import { TransactionType } from '../enums/TransactionType.js';
2
2
  import { TapLeafScript } from '../interfaces/Tap.js';
3
3
  import { SharedInteractionParameters } from '../interfaces/ITransactionParameters.js';
4
- import { Payment, Psbt, Stack } from 'bitcoinjs-lib';
4
+ import { Payment, Psbt, Stack } from '@btc-vision/bitcoin';
5
5
  import { TransactionBuilder } from './TransactionBuilder.js';
6
6
  export interface ICustomTransactionParameters extends SharedInteractionParameters {
7
7
  readonly script: (Buffer | Stack)[];
@@ -1,6 +1,6 @@
1
1
  import { TransactionType } from '../enums/TransactionType.js';
2
2
  import { IDeploymentParameters } from '../interfaces/ITransactionParameters.js';
3
- import { Payment, Psbt } from 'bitcoinjs-lib';
3
+ import { Payment, Psbt } from '@btc-vision/bitcoin';
4
4
  import { TransactionBuilder } from './TransactionBuilder.js';
5
5
  import { TapLeafScript } from '../interfaces/Tap.js';
6
6
  import { Address } from '../../keypair/Address.js';
@@ -1,6 +1,6 @@
1
1
  import { TransactionType } from '../enums/TransactionType.js';
2
2
  import { IFundingTransactionParameters } from '../interfaces/ITransactionParameters.js';
3
- import { Signer } from 'bitcoinjs-lib';
3
+ import { Signer } from '@btc-vision/bitcoin';
4
4
  import { TransactionBuilder } from './TransactionBuilder.js';
5
5
  import { ECPairInterface } from 'ecpair';
6
6
  export declare class FundingTransaction extends TransactionBuilder<TransactionType.FUNDING> {
@@ -1,4 +1,4 @@
1
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
2
2
  import { TransactionType } from '../enums/TransactionType.js';
3
3
  import { TapLeafScript } from '../interfaces/Tap.js';
4
4
  import { IInteractionParameters } from '../interfaces/ITransactionParameters.js';
@@ -1,5 +1,5 @@
1
- import { Payment, Psbt, PsbtInput, Signer, TapScriptSig } from 'bitcoinjs-lib';
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Payment, Psbt, PsbtInput, Signer, TapScriptSig } from '@btc-vision/bitcoin';
2
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
3
3
  import { TransactionBuilder } from './TransactionBuilder.js';
4
4
  import { TransactionType } from '../enums/TransactionType.js';
5
5
  import { ITransactionParameters } from '../interfaces/ITransactionParameters.js';
@@ -1,5 +1,5 @@
1
- import { Payment, Psbt, PsbtInput, Signer } from 'bitcoinjs-lib';
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Payment, Psbt, PsbtInput, Signer } from '@btc-vision/bitcoin';
2
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
3
3
  import { ECPairInterface } from 'ecpair';
4
4
  import { TransactionBuilder } from './TransactionBuilder.js';
5
5
  import { TransactionType } from '../enums/TransactionType.js';
@@ -1,4 +1,4 @@
1
- import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from 'bitcoinjs-lib';
1
+ import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
2
2
  import { UpdateInput } from '../interfaces/Tap.js';
3
3
  import { TransactionType } from '../enums/TransactionType.js';
4
4
  import { IFundingTransactionParameters, ITransactionParameters } from '../interfaces/ITransactionParameters.js';
@@ -1,8 +1,8 @@
1
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
2
2
  import { TransactionType } from '../enums/TransactionType.js';
3
3
  import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
4
4
  import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
5
- import { Psbt } from 'bitcoinjs-lib';
5
+ import { Psbt } from '@btc-vision/bitcoin';
6
6
  import { VaultUTXOs } from '../processor/PsbtTransaction.js';
7
7
  export declare class UnwrapSegwitTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
8
8
  private static readonly UNWRAP_SELECTOR;
@@ -1,8 +1,8 @@
1
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
2
2
  import { TransactionType } from '../enums/TransactionType.js';
3
3
  import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
4
4
  import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
5
- import { Network, Payment, Psbt, PsbtInput } from 'bitcoinjs-lib';
5
+ import { Network, Payment, Psbt, PsbtInput } from '@btc-vision/bitcoin';
6
6
  import { VaultUTXOs } from '../processor/PsbtTransaction.js';
7
7
  export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
8
8
  private static readonly UNWRAP_SELECTOR;
@@ -1,4 +1,4 @@
1
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
2
2
  import { TransactionType } from '../enums/TransactionType.js';
3
3
  import { TapLeafScript } from '../interfaces/Tap.js';
4
4
  import { IWrapParameters } from '../interfaces/ITransactionParameters.js';
@@ -4,7 +4,7 @@ import { ITweakedTransactionData } from '../shared/TweakedTransaction.js';
4
4
  import { VaultUTXOs } from '../processor/PsbtTransaction.js';
5
5
  import { ChainId } from '../../network/ChainId.js';
6
6
  import { Address } from '../../keypair/Address.js';
7
- import { PsbtOutputExtended } from 'bitcoinjs-lib';
7
+ import { PsbtOutputExtended } from '@btc-vision/bitcoin';
8
8
  export interface ITransactionParameters extends ITweakedTransactionData {
9
9
  readonly from?: string;
10
10
  readonly to?: string;
@@ -1,4 +1,4 @@
1
- import { PsbtInput as _PsbtInput, PsbtInputUpdate as _PsbtInputUpdate, PsbtOutput as _PsbtOutput, TapBip32Derivation as _TapBip32Derivation, TapInternalKey as _TapInternalKey, TapKeySig as _TapKeySig, TapLeaf as _TapLeaf, TapLeafScript as _TapLeafScript, TapMerkleRoot as _TapMerkleRoot, TapScriptSig as _TapScriptSig, TapTree as _TapTree } from 'bitcoinjs-lib';
1
+ import { PsbtInput as _PsbtInput, PsbtInputUpdate as _PsbtInputUpdate, PsbtOutput as _PsbtOutput, TapBip32Derivation as _TapBip32Derivation, TapInternalKey as _TapInternalKey, TapKeySig as _TapKeySig, TapLeaf as _TapLeaf, TapLeafScript as _TapLeafScript, TapMerkleRoot as _TapMerkleRoot, TapScriptSig as _TapScriptSig, TapTree as _TapTree } from '@btc-vision/bitcoin';
2
2
  export interface TapLeafScript {
3
3
  readonly leafVersion: number;
4
4
  readonly controlBlock: Buffer;
@@ -1,4 +1,4 @@
1
- import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from 'bitcoinjs-lib';
1
+ import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
2
2
  import { ITweakedTransactionData, TweakedTransaction } from '../shared/TweakedTransaction.js';
3
3
  export interface PsbtTransactionData extends ITweakedTransactionData {
4
4
  readonly psbt: Psbt;
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare class P2TR_MS {
3
3
  static generateMultiSigAddress(pubKeys: Buffer[], minimumSignatureRequired: number, network?: Network): string;
4
4
  }
@@ -1,5 +1,5 @@
1
1
  import { Logger } from '@btc-vision/logger';
2
- import { Network, Payment, Psbt, PsbtInput, PsbtInputExtended, Signer, Transaction } from 'bitcoinjs-lib';
2
+ import { Network, Payment, Psbt, PsbtInput, PsbtInputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
3
3
  import { ECPairInterface } from 'ecpair';
4
4
  import { UTXO } from '../../utxo/interfaces/IUTXO.js';
5
5
  import { TapLeafScript } from '../interfaces/Tap.js';
@@ -54,5 +54,14 @@ export declare abstract class TweakedTransaction extends Logger {
54
54
  protected internalInit(): void;
55
55
  protected tweakSigner(): void;
56
56
  protected getTweakedSigner(useTweakedHash?: boolean, signer?: Signer | ECPairInterface): ECPairInterface | undefined;
57
+ protected generateP2SHRedeemScript(customWitnessScript: Buffer): Buffer | undefined;
58
+ protected generateP2SHRedeemScriptLegacy(inputAddr: string): {
59
+ redeemScript: Buffer;
60
+ outputScript: Buffer;
61
+ } | undefined;
57
62
  protected generatePsbtInputExtended(utxo: UTXO, i: number): PsbtInputExtended;
63
+ protected customFinalizerP2SH: (inputIndex: number, input: PsbtInput, scriptA: Buffer, isSegwit: boolean, isP2SH: boolean, isP2WSH: boolean) => {
64
+ finalScriptSig: Buffer | undefined;
65
+ finalScriptWitness: Buffer | undefined;
66
+ };
58
67
  }
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { Address, Wallet } from '../opnet.js';
3
3
  import { UnwrapGeneration } from '../wbtc/UnwrapGeneration.js';
4
4
  import { WrappedGeneration } from '../wbtc/WrappedGenerationParameters.js';
@@ -4,6 +4,9 @@ export interface UTXO {
4
4
  readonly outputIndex: number;
5
5
  readonly value: bigint;
6
6
  readonly scriptPubKey: ScriptPubKey;
7
+ redeemScript?: string | Buffer;
8
+ witnessScript?: string | Buffer;
9
+ nonWitnessUtxo?: string | Buffer;
7
10
  }
8
11
  export interface FetchUTXOParams {
9
12
  readonly address: string;
@@ -1,5 +1,5 @@
1
- import { Network } from 'bitcoinjs-lib';
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
1
+ import { Network } from '@btc-vision/bitcoin';
2
+ import { Taptree } from '@btc-vision/bitcoin/src/types.js';
3
3
  export interface ContractAddressVerificationParams {
4
4
  readonly deployerPubKey: Buffer;
5
5
  readonly contractSaltPubKey: Buffer;
@@ -1 +1 @@
1
- export declare const version = "1.0.118";
1
+ export declare const version = "1.0.120";
package/build/_version.js CHANGED
@@ -1 +1 @@
1
- export const version = '1.0.118';
1
+ export const version = '1.0.120';
@@ -1,5 +1,5 @@
1
1
  export declare class NetEvent {
2
- readonly eventType: string;
3
- readonly eventData: Uint8Array;
4
- constructor(eventType: string, eventData: Uint8Array);
2
+ readonly type: string;
3
+ readonly data: Uint8Array;
4
+ constructor(type: string, data: Uint8Array);
5
5
  }
@@ -1,6 +1,6 @@
1
1
  export class NetEvent {
2
- constructor(eventType, eventData) {
3
- this.eventType = eventType;
4
- this.eventData = eventData;
2
+ constructor(type, data) {
3
+ this.type = type;
4
+ this.data = data;
5
5
  }
6
6
  }
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare class AddressGenerator {
3
3
  static generatePKSH(sha256Hash: Buffer, network: Network): string;
4
4
  static generateTaprootAddress(pubKey: Buffer, network: {
@@ -1,7 +1,7 @@
1
1
  import { bech32, bech32m } from 'bech32';
2
- import { initEccLib } from 'bitcoinjs-lib';
2
+ import { initEccLib } from '@btc-vision/bitcoin';
3
3
  import * as ecc from '@bitcoinerlab/secp256k1';
4
- import { ripemd160 } from 'bitcoinjs-lib/src/crypto.js';
4
+ import { ripemd160 } from '@btc-vision/bitcoin/src/crypto.js';
5
5
  initEccLib(ecc);
6
6
  export class AddressGenerator {
7
7
  static generatePKSH(sha256Hash, network) {
@@ -1,4 +1,4 @@
1
- import { opcodes } from 'bitcoinjs-lib';
1
+ import { opcodes } from '@btc-vision/bitcoin';
2
2
  export var Features;
3
3
  (function (Features) {
4
4
  Features[Features["UNWRAP"] = 0] = "UNWRAP";
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare abstract class Generator {
3
3
  static readonly DATA_CHUNK_SIZE: number;
4
4
  static readonly MAGIC: Buffer;
@@ -1,5 +1,5 @@
1
- import { networks } from 'bitcoinjs-lib';
2
- import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
1
+ import { networks } from '@btc-vision/bitcoin';
2
+ import { toXOnly } from '@btc-vision/bitcoin/src/psbt/bip371.js';
3
3
  export class Generator {
4
4
  constructor(senderPubKey, contractSaltPubKey, network = networks.bitcoin) {
5
5
  this.network = networks.bitcoin;
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { Features } from '../Features.js';
3
3
  import { Generator } from '../Generator.js';
4
4
  export declare class CalldataGenerator extends Generator {
@@ -1,4 +1,4 @@
1
- import { crypto, networks, opcodes, script } from 'bitcoinjs-lib';
1
+ import { crypto, networks, opcodes, script } from '@btc-vision/bitcoin';
2
2
  import { Compressor } from '../../bytecode/Compressor.js';
3
3
  import { EcKeyPair } from '../../keypair/EcKeyPair.js';
4
4
  import { FeatureOpCodes } from '../Features.js';
@@ -1,4 +1,4 @@
1
- import { Network, Stack } from 'bitcoinjs-lib';
1
+ import { Network, Stack } from '@btc-vision/bitcoin';
2
2
  import { Generator } from '../Generator.js';
3
3
  export declare class CustomGenerator extends Generator {
4
4
  constructor(senderPubKey: Buffer, network?: Network);
@@ -1,4 +1,4 @@
1
- import { networks, script } from 'bitcoinjs-lib';
1
+ import { networks, script } from '@btc-vision/bitcoin';
2
2
  import { Generator } from '../Generator.js';
3
3
  export class CustomGenerator extends Generator {
4
4
  constructor(senderPubKey, network = networks.bitcoin) {
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { Generator } from '../Generator.js';
3
3
  export declare class DeploymentGenerator extends Generator {
4
4
  constructor(senderPubKey: Buffer, contractSaltPubKey: Buffer, network?: Network);
@@ -1,4 +1,4 @@
1
- import { crypto, networks, opcodes, script } from 'bitcoinjs-lib';
1
+ import { crypto, networks, opcodes, script } from '@btc-vision/bitcoin';
2
2
  import { Generator } from '../Generator.js';
3
3
  export class DeploymentGenerator extends Generator {
4
4
  constructor(senderPubKey, contractSaltPubKey, network = networks.bitcoin) {
@@ -0,0 +1,8 @@
1
+ import { Network } from '@btc-vision/bitcoin';
2
+ import { Features } from '../Features.js';
3
+ import { Generator } from '../Generator.js';
4
+ export declare class LegacyCalldataGenerator extends Generator {
5
+ constructor(senderPubKey: Buffer, network?: Network);
6
+ static getPubKeyAsBuffer(witnessKeys: Buffer[], network: Network): Buffer;
7
+ compile(calldata: Buffer, contractSecret: Buffer, features?: Features[], vaultPublicKeys?: Buffer[], minimumSignatures?: number): Buffer;
8
+ }
@@ -0,0 +1,75 @@
1
+ import { networks, opcodes, script } from '@btc-vision/bitcoin';
2
+ import { Compressor } from '../../bytecode/Compressor.js';
3
+ import { EcKeyPair } from '../../keypair/EcKeyPair.js';
4
+ import { FeatureOpCodes } from '../Features.js';
5
+ import { Generator } from '../Generator.js';
6
+ export class LegacyCalldataGenerator extends Generator {
7
+ constructor(senderPubKey, network = networks.bitcoin) {
8
+ super(senderPubKey, Buffer.alloc(0), network);
9
+ }
10
+ static getPubKeyAsBuffer(witnessKeys, network) {
11
+ let finalBuffer = Buffer.alloc(0);
12
+ for (const pubKey of witnessKeys) {
13
+ const key = EcKeyPair.fromPublicKey(pubKey, network);
14
+ if (!key.compressed) {
15
+ throw new Error('Public key must be compressed');
16
+ }
17
+ if (pubKey.byteLength !== 33) {
18
+ throw new Error(`Public key must be 33 bytes, got ${pubKey.byteLength} bytes.`);
19
+ }
20
+ finalBuffer = Buffer.concat([finalBuffer, pubKey]);
21
+ }
22
+ const compressed = Compressor.compress(finalBuffer);
23
+ if (compressed.byteLength >= finalBuffer.byteLength) {
24
+ return finalBuffer;
25
+ }
26
+ return compressed;
27
+ }
28
+ compile(calldata, contractSecret, features = [], vaultPublicKeys = [], minimumSignatures = 0) {
29
+ const dataChunks = this.splitBufferIntoChunks(calldata);
30
+ if (!dataChunks.length)
31
+ throw new Error('No data chunks found');
32
+ let compiledData = [
33
+ this.senderPubKey,
34
+ opcodes.OP_CHECKSIGVERIFY,
35
+ contractSecret,
36
+ opcodes.OP_TOALTSTACK,
37
+ opcodes.OP_DEPTH,
38
+ opcodes.OP_1,
39
+ opcodes.OP_NUMEQUAL,
40
+ opcodes.OP_IF,
41
+ Generator.MAGIC,
42
+ ];
43
+ if (vaultPublicKeys.length > 0) {
44
+ const pubKeyBuffer = LegacyCalldataGenerator.getPubKeyAsBuffer(vaultPublicKeys, this.network);
45
+ const pubKeyDataChunks = this.splitBufferIntoChunks(pubKeyBuffer);
46
+ compiledData = compiledData.concat(...[
47
+ opcodes.OP_0,
48
+ ...pubKeyDataChunks,
49
+ ]);
50
+ if (minimumSignatures) {
51
+ if (minimumSignatures > 255) {
52
+ throw new Error('Minimum signatures cannot exceed 255');
53
+ }
54
+ const minSigBuffer = Buffer.alloc(2);
55
+ minSigBuffer.writeUint16LE(minimumSignatures, 0);
56
+ compiledData = compiledData.concat(...[
57
+ opcodes.OP_1,
58
+ minSigBuffer,
59
+ ]);
60
+ }
61
+ else {
62
+ throw new Error('Minimum signatures must be provided');
63
+ }
64
+ }
65
+ const featureOpcodes = features.map((feature) => FeatureOpCodes[feature]);
66
+ compiledData = compiledData.concat(...featureOpcodes, ...[opcodes.OP_1NEGATE, ...dataChunks, opcodes.OP_ELSE, opcodes.OP_1, opcodes.OP_ENDIF]);
67
+ const asm = compiledData.flat();
68
+ const compiled = script.compile(asm);
69
+ const decompiled = script.decompile(compiled);
70
+ if (!decompiled) {
71
+ throw new Error('Failed to decompile script??');
72
+ }
73
+ return compiled;
74
+ }
75
+ }
@@ -1,5 +1,5 @@
1
- import { opcodes, script } from 'bitcoinjs-lib';
2
- import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
1
+ import { opcodes, script } from '@btc-vision/bitcoin';
2
+ import { toXOnly } from '@btc-vision/bitcoin/src/psbt/bip371.js';
3
3
  export class MultiSignGenerator {
4
4
  static compile(vaultPublicKeys, minimumSignatures = 0, internal) {
5
5
  if (minimumSignatures < 2) {
@@ -1,4 +1,4 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  import { ECPairInterface } from 'ecpair';
3
3
  export declare class Address extends Uint8Array {
4
4
  #private;
@@ -11,6 +11,7 @@ export declare class Address extends Uint8Array {
11
11
  static fromString(pubKey: string): Address;
12
12
  static wrap(bytes: ArrayLike<number>): Address;
13
13
  toHex(): string;
14
+ toBuffer(): Buffer;
14
15
  equals(a: Address): boolean;
15
16
  lessThan(a: Address): boolean;
16
17
  greaterThan(a: Address): boolean;
@@ -13,7 +13,7 @@ var _Address_p2tr, _Address_network, _Address_tweakedBytes;
13
13
  import { EcKeyPair } from './EcKeyPair.js';
14
14
  import { ADDRESS_BYTE_LENGTH } from '../utils/types.js';
15
15
  import { AddressVerificator } from './AddressVerificator.js';
16
- import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
16
+ import { toXOnly } from '@btc-vision/bitcoin/src/psbt/bip371.js';
17
17
  export class Address extends Uint8Array {
18
18
  constructor(bytes) {
19
19
  super(bytes?.length || ADDRESS_BYTE_LENGTH);
@@ -53,6 +53,9 @@ export class Address extends Uint8Array {
53
53
  toHex() {
54
54
  return '0x' + Buffer.from(this).toString('hex');
55
55
  }
56
+ toBuffer() {
57
+ return Buffer.from(this);
58
+ }
56
59
  equals(a) {
57
60
  const b = this.isP2TROnly ? this : __classPrivateFieldGet(this, _Address_tweakedBytes, "f");
58
61
  const c = a.isP2TROnly ? a : __classPrivateFieldGet(a, _Address_tweakedBytes, "f");
@@ -1,8 +1,6 @@
1
- import { Network } from 'bitcoinjs-lib';
1
+ import { Network } from '@btc-vision/bitcoin';
2
2
  export declare enum AddressTypes {
3
3
  P2PKH = "P2PKH",
4
- P2SH = "P2SH",
5
- P2SH_P2WPKH = "P2SH-P2WPKH",
6
4
  P2SH_OR_P2SH_P2WPKH = "P2SH_OR_P2SH-P2WPKH",
7
5
  P2PK = "P2PK",
8
6
  P2TR = "P2TR",
@@ -13,5 +11,6 @@ export declare class AddressVerificator {
13
11
  static isP2WPKHAddress(inAddress: string, network: Network): boolean;
14
12
  static isP2PKHOrP2SH(addy: string, network: Network): boolean;
15
13
  static isValidPublicKey(input: string, network: Network): boolean;
16
- static validateBitcoinAddress(addy: string, network: Network): AddressTypes | null;
14
+ static requireRedeemScript(addy: string, network: Network): boolean;
15
+ static detectAddressType(addy: string, network: Network): AddressTypes | null;
17
16
  }
@@ -1,12 +1,10 @@
1
- import { address, initEccLib } from 'bitcoinjs-lib';
1
+ import { address, initEccLib } from '@btc-vision/bitcoin';
2
2
  import * as ecc from '@bitcoinerlab/secp256k1';
3
3
  import { EcKeyPair } from './EcKeyPair.js';
4
4
  initEccLib(ecc);
5
5
  export var AddressTypes;
6
6
  (function (AddressTypes) {
7
7
  AddressTypes["P2PKH"] = "P2PKH";
8
- AddressTypes["P2SH"] = "P2SH";
9
- AddressTypes["P2SH_P2WPKH"] = "P2SH-P2WPKH";
10
8
  AddressTypes["P2SH_OR_P2SH_P2WPKH"] = "P2SH_OR_P2SH-P2WPKH";
11
9
  AddressTypes["P2PK"] = "P2PK";
12
10
  AddressTypes["P2TR"] = "P2TR";
@@ -73,7 +71,19 @@ export class AddressVerificator {
73
71
  }
74
72
  return false;
75
73
  }
76
- static validateBitcoinAddress(addy, network) {
74
+ static requireRedeemScript(addy, network) {
75
+ try {
76
+ const decodedBase58 = address.fromBase58Check(addy);
77
+ if (decodedBase58.version === network.pubKeyHash) {
78
+ return false;
79
+ }
80
+ return decodedBase58.version === network.scriptHash;
81
+ }
82
+ catch {
83
+ return false;
84
+ }
85
+ }
86
+ static detectAddressType(addy, network) {
77
87
  if (AddressVerificator.isValidPublicKey(addy, network)) {
78
88
  return AddressTypes.P2PK;
79
89
  }
@@ -1,5 +1,5 @@
1
1
  import { BIP32API, BIP32Interface } from 'bip32';
2
- import { Network, Signer } from 'bitcoinjs-lib';
2
+ import { Network, Signer } from '@btc-vision/bitcoin';
3
3
  import { ECPairAPI, ECPairInterface } from 'ecpair';
4
4
  import { IWallet } from './interfaces/IWallet.js';
5
5
  export declare class EcKeyPair {
@@ -1,10 +1,10 @@
1
1
  import * as ecc from '@bitcoinerlab/secp256k1';
2
2
  import bip32, { BIP32Factory } from 'bip32';
3
- import { address, initEccLib, networks, payments } from 'bitcoinjs-lib';
4
- import { toXOnly } from 'bitcoinjs-lib/src/psbt/bip371.js';
3
+ import { address, initEccLib, networks, payments } from '@btc-vision/bitcoin';
4
+ import { toXOnly } from '@btc-vision/bitcoin/src/psbt/bip371.js';
5
5
  import { ECPairFactory } from 'ecpair';
6
6
  import { CURVE, Point, utils } from '@noble/secp256k1';
7
- import { taggedHash } from 'bitcoinjs-lib/src/crypto.js';
7
+ import { taggedHash } from '@btc-vision/bitcoin/src/crypto.js';
8
8
  initEccLib(ecc);
9
9
  const BIP32factory = typeof bip32 === 'function' ? bip32 : BIP32Factory;
10
10
  if (!BIP32factory) {
@@ -1,6 +1,6 @@
1
1
  import { IWallet } from './interfaces/IWallet.js';
2
2
  import { ECPairInterface } from 'ecpair';
3
- import { Network } from 'bitcoinjs-lib';
3
+ import { Network } from '@btc-vision/bitcoin';
4
4
  import { Address } from './Address.js';
5
5
  export declare class Wallet {
6
6
  readonly network: Network;