@btc-vision/transaction 1.0.41 → 1.0.44

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 (151) hide show
  1. package/browser/_version.d.ts +1 -1
  2. package/browser/index.js +1 -1
  3. package/browser/opnet.d.ts +3 -0
  4. package/browser/transaction/TransactionFactory.d.ts +3 -3
  5. package/browser/transaction/browser/BrowserSigner.d.ts +9 -0
  6. package/browser/transaction/browser/BrowserSignerBase.d.ts +18 -0
  7. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +35 -0
  8. package/browser/transaction/browser/types/Unisat.d.ts +54 -0
  9. package/browser/transaction/builders/DeploymentTransaction.d.ts +2 -2
  10. package/browser/transaction/builders/FundingTransaction.d.ts +1 -1
  11. package/browser/transaction/builders/MultiSignTransaction.d.ts +4 -4
  12. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
  13. package/browser/transaction/builders/TransactionBuilder.d.ts +10 -9
  14. package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +3 -3
  15. package/browser/transaction/builders/UnwrapTransaction.d.ts +2 -2
  16. package/browser/transaction/builders/WrapTransaction.d.ts +1 -1
  17. package/browser/transaction/interfaces/ITransactionParameters.d.ts +1 -0
  18. package/browser/transaction/processor/PsbtTransaction.d.ts +1 -1
  19. package/browser/transaction/shared/TweakedTransaction.d.ts +5 -4
  20. package/build/_version.d.ts +1 -1
  21. package/build/_version.js +1 -1
  22. package/build/metadata/contracts/wBTC.js +1 -1
  23. package/build/opnet.d.ts +3 -0
  24. package/build/opnet.js +3 -0
  25. package/build/tests/adaptPSBT.js +1 -1
  26. package/build/tests/deploy.js +1 -2
  27. package/build/tests/deployMotoRegStep1.d.ts +1 -0
  28. package/build/tests/deployMotoRegStep1.js +85 -0
  29. package/build/tests/deployReg.js +2 -2
  30. package/build/tests/factory/createPairReg.js +6 -77
  31. package/build/tests/gen.js +6 -17
  32. package/build/tests/interaction.d.ts +5 -0
  33. package/build/tests/interaction.js +62 -0
  34. package/build/tests/mineReg.js +1 -4
  35. package/build/tests/moto/airdropToken.d.ts +1 -0
  36. package/build/tests/moto/airdropToken.js +21 -0
  37. package/build/tests/moto/allowance.d.ts +1 -0
  38. package/build/tests/moto/allowance.js +5 -0
  39. package/build/tests/moto/approve.d.ts +1 -0
  40. package/build/tests/moto/approve.js +6 -0
  41. package/build/tests/moto/approveWBTC.d.ts +1 -0
  42. package/build/tests/moto/approveWBTC.js +12 -0
  43. package/build/tests/moto/balanceOf.d.ts +1 -0
  44. package/build/tests/moto/balanceOf.js +13 -0
  45. package/build/tests/motoswap/airdropToken.d.ts +11 -0
  46. package/build/tests/motoswap/airdropToken.js +36 -0
  47. package/build/tests/motoswap/deployMoto.d.ts +4 -0
  48. package/build/tests/motoswap/deployMoto.js +87 -0
  49. package/build/tests/motoswap/deployMotoRegStep1.d.ts +1 -0
  50. package/build/tests/motoswap/deployMotoRegStep1.js +91 -0
  51. package/build/tests/motoswap/deployMotoRegStep2.d.ts +1 -0
  52. package/build/tests/motoswap/deployMotoRegStep2.js +91 -0
  53. package/build/tests/motoswap/deployStep1.d.ts +1 -0
  54. package/build/tests/motoswap/deployStep1.js +5 -0
  55. package/build/tests/motoswap/deployStep2.d.ts +1 -0
  56. package/build/tests/motoswap/deployStep2.js +5 -0
  57. package/build/tests/motoswap/deployStep3.d.ts +1 -0
  58. package/build/tests/motoswap/deployStep3.js +5 -0
  59. package/build/tests/motoswap/interaction.d.ts +3 -0
  60. package/build/tests/motoswap/interaction.js +63 -0
  61. package/build/tests/motoswap/routerAddLiquidity.d.ts +11 -0
  62. package/build/tests/motoswap/routerAddLiquidity.js +36 -0
  63. package/build/tests/multisign.js +1 -1
  64. package/build/tests/shared/Utils.d.ts +2 -0
  65. package/build/tests/shared/Utils.js +9 -0
  66. package/build/tests/shared/interaction.d.ts +5 -0
  67. package/build/tests/shared/interaction.js +76 -0
  68. package/build/tests/shared/tokens.d.ts +6 -0
  69. package/build/tests/shared/tokens.js +5 -0
  70. package/build/tests/stakeReg.js +1 -1
  71. package/build/tests/test.js +1 -1
  72. package/build/tests/testReg.js +1 -1
  73. package/build/tests/tokens.d.ts +6 -0
  74. package/build/tests/tokens.js +5 -0
  75. package/build/tests/transfer.js +1 -1
  76. package/build/tests/wbtc/approve.d.ts +1 -0
  77. package/build/tests/wbtc/approve.js +6 -0
  78. package/build/tests/wbtc/approveWBTC.d.ts +1 -0
  79. package/build/tests/wbtc/approveWBTC.js +12 -0
  80. package/build/tests/wbtc/massWrapReg.d.ts +1 -0
  81. package/build/tests/wbtc/massWrapReg.js +105 -0
  82. package/build/tests/wbtc/transferReg.d.ts +1 -0
  83. package/build/tests/wbtc/transferReg.js +16 -0
  84. package/build/tests/wbtc/unStakeReg.d.ts +1 -0
  85. package/build/tests/wbtc/unStakeReg.js +72 -0
  86. package/build/tests/wbtc/unwrapReg.d.ts +1 -0
  87. package/build/tests/wbtc/unwrapReg.js +60 -0
  88. package/build/tests/wbtc/unwrapRegSegwit.d.ts +1 -0
  89. package/build/tests/wbtc/unwrapRegSegwit.js +83 -0
  90. package/build/tests/wbtc/withdrawalRequestReg.d.ts +1 -0
  91. package/build/tests/wbtc/withdrawalRequestReg.js +71 -0
  92. package/build/tests/wbtc/wrapReg.d.ts +1 -0
  93. package/build/tests/wbtc/wrapReg.js +69 -0
  94. package/build/tests/wbtc/wrapTest.d.ts +1 -0
  95. package/build/tests/wbtc/wrapTest.js +66 -0
  96. package/build/tests/writers/allowance.d.ts +3 -0
  97. package/build/tests/writers/allowance.js +10 -0
  98. package/build/tests/writers/approve.d.ts +4 -0
  99. package/build/tests/writers/approve.js +11 -0
  100. package/build/transaction/TransactionFactory.d.ts +3 -3
  101. package/build/transaction/TransactionFactory.js +41 -38
  102. package/build/transaction/browser/BrowserSigner.d.ts +11 -0
  103. package/build/transaction/browser/BrowserSigner.js +10 -0
  104. package/build/transaction/browser/BrowserSignerBase.d.ts +18 -0
  105. package/build/transaction/browser/BrowserSignerBase.js +3 -0
  106. package/build/transaction/browser/extensions/Unisat.d.ts +54 -0
  107. package/build/transaction/browser/extensions/Unisat.js +11 -0
  108. package/build/transaction/browser/extensions/UnisatSigner.d.ts +35 -0
  109. package/build/transaction/browser/extensions/UnisatSigner.js +150 -0
  110. package/build/transaction/browser/types/Unisat.d.ts +54 -0
  111. package/build/transaction/browser/types/Unisat.js +11 -0
  112. package/build/transaction/builders/DeploymentTransaction.d.ts +2 -2
  113. package/build/transaction/builders/DeploymentTransaction.js +4 -4
  114. package/build/transaction/builders/FundingTransaction.d.ts +1 -1
  115. package/build/transaction/builders/FundingTransaction.js +2 -2
  116. package/build/transaction/builders/MultiSignTransaction.d.ts +4 -4
  117. package/build/transaction/builders/MultiSignTransaction.js +7 -7
  118. package/build/transaction/builders/SharedInteractionTransaction.d.ts +2 -2
  119. package/build/transaction/builders/SharedInteractionTransaction.js +6 -6
  120. package/build/transaction/builders/TransactionBuilder.d.ts +10 -9
  121. package/build/transaction/builders/TransactionBuilder.js +29 -22
  122. package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +3 -3
  123. package/build/transaction/builders/UnwrapSegwitTransaction.js +10 -10
  124. package/build/transaction/builders/UnwrapTransaction.d.ts +2 -2
  125. package/build/transaction/builders/UnwrapTransaction.js +9 -6
  126. package/build/transaction/builders/WrapTransaction.d.ts +1 -1
  127. package/build/transaction/builders/WrapTransaction.js +2 -2
  128. package/build/transaction/interfaces/ITransactionParameters.d.ts +1 -0
  129. package/build/transaction/processor/PsbtTransaction.d.ts +1 -1
  130. package/build/transaction/processor/PsbtTransaction.js +2 -2
  131. package/build/transaction/shared/TweakedTransaction.d.ts +5 -4
  132. package/build/transaction/shared/TweakedTransaction.js +59 -23
  133. package/package.json +2 -2
  134. package/src/_version.ts +1 -1
  135. package/src/metadata/contracts/wBTC.ts +1 -1
  136. package/src/opnet.ts +81 -76
  137. package/src/transaction/TransactionFactory.ts +52 -44
  138. package/src/transaction/browser/BrowserSignerBase.ts +44 -0
  139. package/src/transaction/browser/extensions/UnisatSigner.ts +218 -0
  140. package/src/transaction/browser/types/Unisat.ts +77 -0
  141. package/src/transaction/builders/DeploymentTransaction.ts +4 -4
  142. package/src/transaction/builders/FundingTransaction.ts +40 -40
  143. package/src/transaction/builders/MultiSignTransaction.ts +9 -17
  144. package/src/transaction/builders/SharedInteractionTransaction.ts +368 -368
  145. package/src/transaction/builders/TransactionBuilder.ts +637 -632
  146. package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -362
  147. package/src/transaction/builders/UnwrapTransaction.ts +503 -499
  148. package/src/transaction/builders/WrapTransaction.ts +346 -346
  149. package/src/transaction/interfaces/ITransactionParameters.ts +55 -54
  150. package/src/transaction/processor/PsbtTransaction.ts +192 -192
  151. package/src/transaction/shared/TweakedTransaction.ts +109 -56
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
41
41
  export * from './consensus/ConsensusConfig.js';
42
42
  export * from './consensus/Consensus.js';
43
43
  export * from './consensus/metadata/RoswellConsensus.js';
44
+ export * from './transaction/browser/BrowserSignerBase.js';
45
+ export * from './transaction/browser/extensions/UnisatSigner.js';
46
+ export * from './transaction/browser/types/Unisat.js';
@@ -18,9 +18,9 @@ export interface UnwrapResult {
18
18
  }
19
19
  export declare class TransactionFactory {
20
20
  constructor();
21
- signInteraction(interactionParameters: IInteractionParameters): [string, string];
22
- signDeployment(deploymentParameters: IDeploymentParameters): DeploymentResult;
23
- wrap(warpParameters: IWrapParameters): WrapResult;
21
+ signInteraction(interactionParameters: IInteractionParameters): Promise<[string, string]>;
22
+ signDeployment(deploymentParameters: IDeploymentParameters): Promise<DeploymentResult>;
23
+ wrap(warpParameters: IWrapParameters): Promise<WrapResult>;
24
24
  unwrapSegwit(unwrapParameters: IUnwrapParameters): Promise<UnwrapResult>;
25
25
  unwrap(unwrapParameters: IUnwrapParameters): Promise<UnwrapResult>;
26
26
  private calculateNumSignatures;
@@ -0,0 +1,9 @@
1
+ import { Psbt, Transaction } from 'bitcoinjs-lib';
2
+ declare global {
3
+ interface Window {
4
+ unisat?: {};
5
+ }
6
+ }
7
+ export declare class BrowserSigner {
8
+ static signTransaction(transaction: Psbt): Promise<Transaction>;
9
+ }
@@ -0,0 +1,18 @@
1
+ /// <reference types="node" />
2
+ import { Network, Psbt, Signer } from 'bitcoinjs-lib';
3
+ import { Address } from '@btc-vision/bsi-binary';
4
+ export declare abstract class CustomKeypair implements Signer {
5
+ abstract network: Network;
6
+ abstract publicKey: Buffer;
7
+ abstract addresses: Address[];
8
+ abstract p2tr: Address;
9
+ abstract p2pkh: Address;
10
+ protected constructor();
11
+ abstract signTaprootInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
12
+ abstract signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
13
+ abstract getPublicKey(): Buffer;
14
+ abstract sign(hash: Buffer, lowR?: boolean): Buffer;
15
+ abstract signSchnorr(hash: Buffer): Buffer;
16
+ abstract verify(hash: Buffer, signature: Buffer): boolean;
17
+ abstract init(): Promise<void>;
18
+ }
@@ -0,0 +1,35 @@
1
+ /// <reference types="node" />
2
+ import { CustomKeypair } from '../BrowserSignerBase.js';
3
+ import { Network, Psbt } from 'bitcoinjs-lib';
4
+ import { Unisat } from '../types/Unisat.js';
5
+ import { Address } from '@btc-vision/bsi-binary';
6
+ declare global {
7
+ interface Window {
8
+ unisat?: Unisat;
9
+ }
10
+ }
11
+ export declare class UnisatSigner extends CustomKeypair {
12
+ private isInitialized;
13
+ constructor();
14
+ private _p2tr;
15
+ get p2tr(): Address;
16
+ private _p2pkh;
17
+ get p2pkh(): Address;
18
+ private _addresses;
19
+ get addresses(): Address[];
20
+ private _publicKey;
21
+ get publicKey(): Buffer;
22
+ _network: Network | undefined;
23
+ get network(): Network;
24
+ get unisat(): Unisat;
25
+ init(): Promise<void>;
26
+ getPublicKey(): Buffer;
27
+ sign(hash: Buffer, lowR?: boolean): Buffer;
28
+ signSchnorr(hash: Buffer): Buffer;
29
+ verify(hash: Buffer, signature: Buffer): boolean;
30
+ signTaprootInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
31
+ signInput(transaction: Psbt, i: number, sighashTypes: number[]): Promise<void>;
32
+ private combine;
33
+ private signTweaked;
34
+ private getNonDuplicateScriptSig;
35
+ }
@@ -0,0 +1,54 @@
1
+ import { Address } from '@btc-vision/bsi-binary';
2
+ export declare enum UnisatNetwork {
3
+ testnet = "testnet",
4
+ mainnet = "livenet",
5
+ regtest = "regtest"
6
+ }
7
+ export interface Balance {
8
+ readonly confirmed: number;
9
+ readonly unconfirmed: number;
10
+ readonly total: number;
11
+ }
12
+ export declare enum MessageType {
13
+ ecdsa = "ecdsa",
14
+ bip322 = "bip322-simple"
15
+ }
16
+ interface ToSignInputBase {
17
+ readonly index: number;
18
+ readonly sighashTypes?: number[];
19
+ readonly disableTweakSigner?: boolean;
20
+ }
21
+ export interface ToSignInputPublicKey extends ToSignInputBase {
22
+ readonly publicKey: string;
23
+ }
24
+ export interface ToSignInputAddress extends ToSignInputBase {
25
+ readonly address: Address;
26
+ }
27
+ export type ToSignInput = ToSignInputPublicKey | ToSignInputAddress;
28
+ export interface PsbtSignatureOptions {
29
+ readonly autoFinalized?: boolean;
30
+ readonly toSignInputs?: ToSignInput[];
31
+ }
32
+ export interface Unisat {
33
+ sendBitcoin(toAddress: Address, satoshis: number, options: {
34
+ feeRate: number;
35
+ }): Promise<string>;
36
+ requestAccounts(): Promise<string[]>;
37
+ getNetwork(): Promise<UnisatNetwork>;
38
+ getAccounts(): Promise<string[]>;
39
+ switchNetwork(network: UnisatNetwork): Promise<void>;
40
+ getPublicKey(): Promise<string>;
41
+ getBalance(): Promise<Balance>;
42
+ signMessage(message: string, type?: MessageType): Promise<string>;
43
+ pushTx(options: {
44
+ rawtx: string;
45
+ }): Promise<string>;
46
+ signPsbt(psbtHex: string, psbtOptions: PsbtSignatureOptions): Promise<string>;
47
+ signPsbts(psbtHex: string[], psbtOptions: PsbtSignatureOptions): Promise<string[]>;
48
+ pushPsbt(psbtHex: string): Promise<string>;
49
+ on(event: 'accountsChanged', listener: (accounts: string[]) => void): void;
50
+ on(event: 'networkChanged', listener: (network: UnisatNetwork) => void): void;
51
+ removeListener(event: 'accountsChanged', listener: (accounts: string[]) => void): void;
52
+ removeListener(event: 'networkChanged', listener: (network: UnisatNetwork) => void): void;
53
+ }
54
+ export {};
@@ -23,8 +23,8 @@ export declare class DeploymentTransaction extends TransactionBuilder<Transactio
23
23
  get p2trAddress(): Address;
24
24
  getRndBytes(): Buffer;
25
25
  protected contractSignerXOnlyPubKey(): Buffer;
26
- protected buildTransaction(): void;
27
- protected signInputs(transaction: Psbt): void;
26
+ protected buildTransaction(): Promise<void>;
27
+ protected signInputs(transaction: Psbt): Promise<void>;
28
28
  protected generateScriptAddress(): Payment;
29
29
  protected generateTapData(): Payment;
30
30
  private getContractSeed;
@@ -6,6 +6,6 @@ export declare class FundingTransaction extends TransactionBuilder<TransactionTy
6
6
  readonly type: TransactionType.FUNDING;
7
7
  protected childTransactionRequiredFees: bigint;
8
8
  constructor(parameters: IFundingTransactionParameters);
9
- protected buildTransaction(): void;
9
+ protected buildTransaction(): Promise<void>;
10
10
  protected getSignerKey(): Signer;
11
11
  }
@@ -48,10 +48,10 @@ export declare class MultiSignTransaction extends TransactionBuilder<Transaction
48
48
  static dedupeSignatures(original: TapScriptSig[], partial: TapScriptSig[]): TapScriptSig[];
49
49
  static attemptFinalizeInputs(psbt: Psbt, startIndex: number, orderedPubKeys: Buffer[][], isFinal: boolean): boolean;
50
50
  finalizeTransactionInputs(): boolean;
51
- signPSBT(): Psbt;
52
- protected buildTransaction(): void;
53
- protected internalBuildTransaction(transaction: Psbt): boolean;
54
- protected signInputs(_transaction: Psbt): void;
51
+ signPSBT(): Promise<Psbt>;
52
+ protected buildTransaction(): Promise<void>;
53
+ protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
54
+ protected signInputs(_transaction: Psbt): Promise<void>;
55
55
  protected generateScriptAddress(): Payment;
56
56
  protected generateTapData(): Payment;
57
57
  protected getScriptSolution(input: PsbtInput): Buffer[];
@@ -24,8 +24,8 @@ export declare abstract class SharedInteractionTransaction<T extends Transaction
24
24
  protected generateSecret(): Buffer;
25
25
  protected scriptSignerXOnlyPubKey(): Buffer;
26
26
  protected generateKeyPairFromSeed(): ECPairInterface;
27
- protected buildTransaction(): void;
28
- protected signInputs(transaction: Psbt): void;
27
+ protected buildTransaction(): Promise<void>;
28
+ protected signInputs(transaction: Psbt): Promise<void>;
29
29
  protected generateScriptAddress(): Payment;
30
30
  protected generateTapData(): Payment;
31
31
  protected getScriptSolution(input: PsbtInput): Buffer[];
@@ -14,6 +14,7 @@ export declare abstract class TransactionBuilder<T extends TransactionType> exte
14
14
  readonly logColor: string;
15
15
  overflowFees: bigint;
16
16
  transactionFee: bigint;
17
+ estimatedFees: bigint;
17
18
  protected transaction: Psbt;
18
19
  protected readonly updateInputs: UpdateInput[];
19
20
  protected readonly outputs: PsbtOutputExtended[];
@@ -30,32 +31,32 @@ export declare abstract class TransactionBuilder<T extends TransactionType> exte
30
31
  protected constructor(parameters: ITransactionParameters);
31
32
  static getFrom(from: string | undefined, keypair: ECPairInterface, network: Network): Address;
32
33
  static witnessStackToScriptWitness(witness: Buffer[]): Buffer;
33
- getFundingTransactionParameters(): IFundingTransactionParameters;
34
+ getFundingTransactionParameters(): Promise<IFundingTransactionParameters>;
34
35
  setDestinationAddress(address: Address): void;
35
36
  setMaximumFeeRate(feeRate: number): void;
36
- signTransaction(): Transaction;
37
- signPSBT(): Psbt;
37
+ signTransaction(): Promise<Transaction>;
38
+ signPSBT(): Promise<Psbt>;
38
39
  addInput(input: PsbtInputExtended): void;
39
40
  addOutput(output: PsbtOutputExtended): void;
40
41
  toAddress(): string | undefined;
41
42
  address(): Address | undefined;
42
- estimateTransactionFees(): bigint;
43
- rebuildFromBase64(base64: string): Psbt;
43
+ estimateTransactionFees(): Promise<bigint>;
44
+ rebuildFromBase64(base64: string): Promise<Psbt>;
44
45
  setPSBT(psbt: Psbt): void;
45
- protected addRefundOutput(amountSpent: bigint): void;
46
+ protected addRefundOutput(amountSpent: bigint): Promise<void>;
46
47
  protected addValueToToOutput(value: number | bigint): void;
47
48
  protected getTransactionOPNetFee(): bigint;
48
49
  protected calculateTotalUTXOAmount(): bigint;
49
50
  protected calculateTotalVOutAmount(): bigint;
50
51
  protected addInputsFromUTXO(): void;
51
52
  protected internalInit(): void;
52
- protected abstract buildTransaction(): void;
53
+ protected abstract buildTransaction(): Promise<void>;
53
54
  protected updateInput(input: UpdateInput): void;
54
55
  protected getWitness(): Buffer;
55
56
  protected getTapOutput(): Buffer;
56
57
  protected getInputs(): PsbtInputExtended[];
57
58
  protected getOutputs(): PsbtOutputExtended[];
58
59
  protected verifyUTXOValidity(): void;
59
- protected setFeeOutput(output: PsbtOutputExtended): void;
60
- protected internalBuildTransaction(transaction: Psbt): boolean;
60
+ protected setFeeOutput(output: PsbtOutputExtended): Promise<void>;
61
+ protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
61
62
  }
@@ -18,9 +18,9 @@ export declare class UnwrapSegwitTransaction extends SharedInteractionTransactio
18
18
  private readonly calculatedSignHash;
19
19
  constructor(parameters: IUnwrapParameters);
20
20
  static generateBurnCalldata(amount: bigint): Buffer;
21
- signPSBT(): Psbt;
22
- mergeVaults(input: VaultUTXOs[]): void;
23
- protected internalBuildTransaction(transaction: Psbt): boolean;
21
+ signPSBT(): Promise<Psbt>;
22
+ mergeVaults(input: VaultUTXOs[]): Promise<void>;
23
+ protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
24
24
  protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
25
25
  witnessUtxo: Buffer;
26
26
  redeemScript: Buffer;
@@ -20,7 +20,7 @@ export declare class UnwrapTransaction extends SharedInteractionTransaction<Tran
20
20
  private readonly calculatedSignHash;
21
21
  constructor(parameters: IUnwrapParameters);
22
22
  static generateBurnCalldata(amount: bigint): Buffer;
23
- signPSBT(): Psbt;
23
+ signPSBT(): Promise<Psbt>;
24
24
  getRefund(): bigint;
25
25
  getFeeLossOrRefund(): bigint;
26
26
  protected mergeVaults(): void;
@@ -35,7 +35,7 @@ export declare class UnwrapTransaction extends SharedInteractionTransaction<Tran
35
35
  redeem: Payment;
36
36
  };
37
37
  protected getScriptSolution(input: PsbtInput): Buffer[];
38
- protected internalBuildTransaction(transaction: Psbt): boolean;
38
+ protected internalBuildTransaction(transaction: Psbt): Promise<boolean>;
39
39
  private addVaultUTXO;
40
40
  private addVaultInputs;
41
41
  private calculateOutputLeftAmountFromVaults;
@@ -22,7 +22,7 @@ export declare class WrapTransaction extends SharedInteractionTransaction<Transa
22
22
  constructor(parameters: IWrapParameters);
23
23
  private static generateMintCalldata;
24
24
  verifyPublicKeysConstraints(generation: WrappedGeneration): boolean;
25
- protected buildTransaction(): void;
25
+ protected buildTransaction(): Promise<void>;
26
26
  private verifyRequiredValue;
27
27
  private addVaultOutput;
28
28
  private generateVaultAddress;
@@ -9,6 +9,7 @@ export interface ITransactionParameters extends ITweakedTransactionData {
9
9
  readonly to?: Address | undefined;
10
10
  utxos: UTXO[];
11
11
  nonWitnessUtxo?: Buffer | undefined;
12
+ estimatedFees?: bigint;
12
13
  readonly feeRate: number;
13
14
  readonly priorityFee: bigint;
14
15
  }
@@ -36,7 +36,7 @@ export declare class PsbtTransaction extends TweakedTransaction {
36
36
  toHex(): string;
37
37
  addInput(input: PsbtInputExtended): void;
38
38
  addOutput(output: PsbtOutputExtended): void;
39
- attemptSignAllInputs(): boolean;
39
+ attemptSignAllInputs(): Promise<boolean>;
40
40
  attemptFinalizeInputs(n?: number): boolean;
41
41
  getPSBT(): Psbt;
42
42
  private getTotalOutputAmount;
@@ -28,10 +28,12 @@ export declare abstract class TweakedTransaction extends Logger {
28
28
  protected sequence: number;
29
29
  protected tapLeafScript: TapLeafScript | null;
30
30
  protected nonWitnessUtxo?: Buffer;
31
+ protected readonly isBrowser: boolean;
31
32
  protected regenerated: boolean;
32
33
  protected ignoreSignatureErrors: boolean;
33
34
  protected constructor(data: ITweakedTransactionData);
34
35
  static readScriptWitnessToWitnessStack(buffer: Buffer): Buffer[];
36
+ static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
35
37
  protected static signInput(transaction: Psbt, input: PsbtInput, i: number, signer: Signer, sighashTypes: number[]): void;
36
38
  protected static calculateSignHash(sighashTypes: number[]): number;
37
39
  ignoreSignatureError(): void;
@@ -41,15 +43,14 @@ export declare abstract class TweakedTransaction extends Logger {
41
43
  disableRBF(): void;
42
44
  getTweakerHash(): Buffer | undefined;
43
45
  preEstimateTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numSignatures: bigint, numPubkeys: bigint): bigint;
44
- static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
45
46
  protected generateTapData(): Payment;
46
47
  protected generateScriptAddress(): Payment;
47
48
  protected getSignerKey(): Signer;
48
- protected signInput(transaction: Psbt, input: PsbtInput, i: number, signer?: Signer): void;
49
- protected signInputs(transaction: Psbt): void;
49
+ protected signInput(transaction: Psbt, input: PsbtInput, i: number, signer?: Signer): Promise<void>;
50
+ protected signInputs(transaction: Psbt): Promise<void>;
50
51
  protected internalPubKeyToXOnly(): Buffer;
51
52
  protected internalInit(): void;
52
53
  protected tweakSigner(): void;
53
- protected getTweakedSigner(useTweakedHash?: boolean, signer?: Signer): Signer;
54
+ protected getTweakedSigner(useTweakedHash?: boolean, signer?: Signer): Signer | undefined;
54
55
  protected generatePsbtInputExtended(utxo: UTXO, i: number): PsbtInputExtended;
55
56
  }
@@ -1 +1 @@
1
- export declare const version = "1.0.41";
1
+ export declare const version = "1.0.44";
package/build/_version.js CHANGED
@@ -1 +1 @@
1
- export const version = '1.0.41';
1
+ export const version = '1.0.44';
@@ -16,7 +16,7 @@ export class wBTC extends ContractBaseMetadata {
16
16
  case networks.bitcoin.bech32:
17
17
  return 'unknown';
18
18
  case networks.regtest.bech32:
19
- return 'bcrt1qxeyh0pacdtkqmlna9n254fztp3ptadkkfu6efl';
19
+ return 'bcrt1q99qtptumw027cw8w274tqzd564q66u537vn0lh';
20
20
  case networks.testnet.bech32:
21
21
  return 'tb1qj58a6yf4pez426nqvf8wyu6ssggcajw8kr44vy';
22
22
  default:
package/build/opnet.d.ts CHANGED
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
41
41
  export * from './consensus/ConsensusConfig.js';
42
42
  export * from './consensus/Consensus.js';
43
43
  export * from './consensus/metadata/RoswellConsensus.js';
44
+ export * from './transaction/browser/BrowserSignerBase.js';
45
+ export * from './transaction/browser/extensions/UnisatSigner.js';
46
+ export * from './transaction/browser/types/Unisat.js';
package/build/opnet.js CHANGED
@@ -41,3 +41,6 @@ export * from './wbtc/UnwrapGeneration.js';
41
41
  export * from './consensus/ConsensusConfig.js';
42
42
  export * from './consensus/Consensus.js';
43
43
  export * from './consensus/metadata/RoswellConsensus.js';
44
+ export * from './transaction/browser/BrowserSignerBase.js';
45
+ export * from './transaction/browser/extensions/UnisatSigner.js';
46
+ export * from './transaction/browser/types/Unisat.js';
@@ -37,7 +37,7 @@ const psbtTransactionData2 = {
37
37
  };
38
38
  const psbtTransaction2 = PsbtTransaction.fromBase64('AHBzYnT/AQCJAgAAAAGqpr9zTL0OUcMPJqSjy18vGXoaAwonXBXnpciJFtGgggEAAAAA/f///wLgP+4FAAAAACIAIPxalL3e9VOleQh1cyXELH155fo5VCUAMolPgEQO/yfFSgEAAAAAAAAiUSDL4fsq34Gxa6Svuzh0P0c4zLKBcNLvw1o8qTZs5k6kUQAAAAAAAQErAOH1BQAAAAAiACD8WpS93vVTpXkIdXMlxCx9eeX6OVQlADKJT4BEDv8nxSICAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+RzBEAiAZRgcFaRr39GY9sko5lKWov4g4i+77dNzCMKHR2WUbHQIgaPfYFjQZt0sCItEkosLeCZD94VPH4T2q/pZXP//x/luBAQMEgQAAAAEFi1IhAgPmjuI2/MNJM9STswWm8MdWEllHHRPs0Q3+DjdjOny+IQLTjqWw7J4i27NkBrqjxbuwJwjivZTUkpfqbz69JtGMdyEDgkTBMHBPHlBosIU5FOjDbtRC+QtBZmC6HPo353wVzMghA7ZKMoDQJlcQNbzIikCE5MPiFC81RvHHTeTMRx2/bFiOVK4AAAA=', psbtTransactionData2);
39
39
  psbtTransaction2.ignoreSignatureError();
40
- const s = psbtTransaction2.attemptSignAllInputs();
40
+ const s = await psbtTransaction2.attemptSignAllInputs();
41
41
  const f = psbtTransaction2.attemptFinalizeInputs(1);
42
42
  console.log(psbtTransaction2, s, f);
43
43
  const newPsbt = psbtTransaction2.getTransaction().toHex();
@@ -13,7 +13,6 @@ const utxoSetting = {
13
13
  minAmount: 10000n,
14
14
  requestedAmount: 100000n,
15
15
  };
16
- console.log(utxoSetting);
17
16
  const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
18
17
  if (!utxos) {
19
18
  throw new Error('No UTXOs found');
@@ -28,7 +27,7 @@ const deploymentParameters = {
28
27
  priorityFee: 50000n,
29
28
  bytecode: bytecode,
30
29
  };
31
- const finalTx = factory.signDeployment(deploymentParameters);
30
+ const finalTx = await factory.signDeployment(deploymentParameters);
32
31
  console.log(`Final transaction:`, finalTx);
33
32
  const firstTxBroadcast = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
34
33
  console.log(`First transaction broadcasted:`, firstTxBroadcast);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,85 @@
1
+ import { Wallet } from '../keypair/Wallet.js';
2
+ import { Regtest } from './Regtest.js';
3
+ import { OPNetLimitedProvider } from '../utxo/OPNetLimitedProvider.js';
4
+ import { networks } from 'bitcoinjs-lib';
5
+ import { TransactionFactory } from '../transaction/TransactionFactory.js';
6
+ import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
7
+ import * as fs from 'fs';
8
+ const network = networks.regtest;
9
+ const rpc = new BitcoinRPC();
10
+ const wallet = new Wallet(Regtest.wallet, network);
11
+ const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
12
+ const factory = new TransactionFactory();
13
+ const shouldMineBlock = false;
14
+ async function mineBlock() {
15
+ const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
16
+ if (!ok) {
17
+ throw new Error('Could not mine block');
18
+ }
19
+ console.log(`Mined block`, ok);
20
+ return !!ok.length;
21
+ }
22
+ await rpc.init(Regtest.config);
23
+ const requestedAmount = 100000000000n;
24
+ const utxoSetting = {
25
+ addresses: [wallet.p2wpkh, wallet.p2tr],
26
+ minAmount: 10000n,
27
+ requestedAmount: requestedAmount,
28
+ };
29
+ function shuffleArray(array) {
30
+ for (let i = array.length - 1; i > 0; i--) {
31
+ const j = Math.floor(Math.random() * (i + 1));
32
+ [array[i], array[j]] = [array[j], array[i]];
33
+ }
34
+ }
35
+ const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
36
+ if (!utxos) {
37
+ throw new Error('No UTXOs found');
38
+ }
39
+ shuffleArray(utxos);
40
+ const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
41
+ for (let utxo of utxos) {
42
+ const deploymentParameters = {
43
+ from: wallet.p2wpkh,
44
+ utxos: [utxo],
45
+ signer: wallet.keypair,
46
+ network: network,
47
+ feeRate: 500,
48
+ priorityFee: 50000n,
49
+ bytecode: bytecode,
50
+ };
51
+ try {
52
+ const finalTx = factory.signDeployment(deploymentParameters);
53
+ console.log(`Final transaction:`, finalTx);
54
+ let txid;
55
+ try {
56
+ txid = await utxoManager.broadcastTransaction(finalTx.transaction[0], false);
57
+ console.log(`Transaction ID:`, txid);
58
+ }
59
+ catch (e) {
60
+ continue;
61
+ }
62
+ if (!txid) {
63
+ continue;
64
+ }
65
+ try {
66
+ txid = await utxoManager.broadcastTransaction(finalTx.transaction[1], false);
67
+ console.log(`Transaction ID:`, txid);
68
+ }
69
+ catch (e) {
70
+ continue;
71
+ }
72
+ if (!txid) {
73
+ continue;
74
+ }
75
+ console.log(`Contract deployed at ${finalTx.contractAddress}`);
76
+ }
77
+ catch (e) {
78
+ continue;
79
+ }
80
+ break;
81
+ }
82
+ if (shouldMineBlock) {
83
+ await mineBlock();
84
+ }
85
+ rpc.destroy();
@@ -37,7 +37,7 @@ if (!utxos) {
37
37
  throw new Error('No UTXOs found');
38
38
  }
39
39
  shuffleArray(utxos);
40
- const bytecode = fs.readFileSync('./bytecode/pool.wasm');
40
+ const bytecode = fs.readFileSync('./bytecode/wbtc.wasm');
41
41
  for (let utxo of utxos) {
42
42
  const deploymentParameters = {
43
43
  from: wallet.p2wpkh,
@@ -49,7 +49,7 @@ for (let utxo of utxos) {
49
49
  bytecode: bytecode,
50
50
  };
51
51
  try {
52
- const finalTx = factory.signDeployment(deploymentParameters);
52
+ const finalTx = await factory.signDeployment(deploymentParameters);
53
53
  console.log(`Final transaction:`, finalTx);
54
54
  let txid;
55
55
  try {
@@ -1,84 +1,13 @@
1
- import { wBTC } from '../../metadata/contracts/wBTC.js';
2
- import { Wallet } from '../../keypair/Wallet.js';
3
- import { Regtest } from '../Regtest.js';
4
- import { OPNetLimitedProvider } from '../../utxo/OPNetLimitedProvider.js';
5
- import { networks } from 'bitcoinjs-lib';
6
- import { TransactionFactory } from '../../transaction/TransactionFactory.js';
7
- import { BitcoinRPC } from '@btc-vision/bsi-bitcoin-rpc';
8
1
  import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
9
- const network = networks.regtest;
10
- const rpc = new BitcoinRPC();
11
- const wBtc = new wBTC(network);
12
- const wallet = new Wallet(Regtest.wallet, network);
13
- const utxoManager = new OPNetLimitedProvider('http://localhost:9001');
14
- const factory = new TransactionFactory();
2
+ import { MOTO_ADDRESS, WBTC_ADDRESS } from '../shared/tokens.js';
15
3
  const abiCoder = new ABICoder();
16
- const stakeSelector = Number(`0x` + abiCoder.encodeSelector('createPool'));
17
- const MOTO_CONTRACT = 'bcrt1q6zk8yjz2l2mzhy0xa645jzsuh44gg3re8qr5zj';
18
- const FACTORY_CONTRACT = 'bcrt1q65enkl69g8ysh5tg9v7g35dmxzuy34egjftz6w';
4
+ const createPoolSelector = Number(`0x` + abiCoder.encodeSelector('createPool'));
19
5
  function generateCalldata() {
20
6
  const addCalldata = new BinaryWriter();
21
- addCalldata.writeSelector(stakeSelector);
22
- addCalldata.writeAddress(wBtc.getAddress());
23
- addCalldata.writeAddress(MOTO_CONTRACT);
7
+ addCalldata.writeSelector(createPoolSelector);
8
+ addCalldata.writeAddress(WBTC_ADDRESS);
9
+ addCalldata.writeAddress(MOTO_ADDRESS);
24
10
  return Buffer.from(addCalldata.getBuffer());
25
11
  }
26
- const shouldMineBlock = true;
27
- async function mineBlock() {
28
- const ok = await rpc.generateToAddress(1, wallet.p2wpkh, 'default');
29
- if (!ok) {
30
- throw new Error('Could not mine block');
31
- }
32
- return !!ok.length;
33
- }
34
- await rpc.init(Regtest.config);
35
- const requestedAmount = 1n * 10000000000000n;
36
- const utxoSetting = {
37
- addresses: [wallet.p2wpkh, wallet.p2tr],
38
- minAmount: 10000n,
39
- requestedAmount: requestedAmount,
40
- };
41
- const utxos = await utxoManager.fetchUTXOMultiAddr(utxoSetting);
42
- if (!utxos) {
43
- throw new Error('No UTXOs found');
44
- }
45
12
  const calldata = generateCalldata();
46
- for (let utxo of utxos) {
47
- const interactionParameters = {
48
- from: wallet.p2wpkh,
49
- to: FACTORY_CONTRACT,
50
- utxos: [utxo],
51
- signer: wallet.keypair,
52
- network: network,
53
- feeRate: 140,
54
- priorityFee: 45000n,
55
- calldata: calldata,
56
- };
57
- const finalTx = factory.signInteraction(interactionParameters);
58
- let txid;
59
- try {
60
- txid = await utxoManager.broadcastTransaction(finalTx[0], false);
61
- console.log(`Transaction ID:`, txid);
62
- }
63
- catch (e) {
64
- continue;
65
- }
66
- if (!txid) {
67
- continue;
68
- }
69
- try {
70
- txid = await utxoManager.broadcastTransaction(finalTx[1], false);
71
- console.log(`Transaction ID:`, txid);
72
- }
73
- catch (e) {
74
- continue;
75
- }
76
- if (!txid) {
77
- continue;
78
- }
79
- break;
80
- }
81
- if (shouldMineBlock) {
82
- await mineBlock();
83
- }
84
- rpc.destroy();
13
+ console.log('createPool', calldata.toString('hex'));
@@ -1,30 +1,19 @@
1
- import { TapscriptVerificator } from '../verification/TapscriptVerificator.js';
2
1
  import { networks } from 'bitcoinjs-lib';
3
2
  import { Regtest } from './Regtest.js';
4
3
  import { Wallet } from '../keypair/Wallet.js';
5
- import { EcKeyPair } from '../keypair/EcKeyPair.js';
6
4
  import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
7
5
  const walletTest = new Wallet(Regtest.wallet, networks.testnet);
8
6
  console.log(walletTest);
9
7
  const wallet = new Wallet(Regtest.wallet, networks.regtest);
10
8
  console.log(wallet);
11
9
  const selector = new ABICoder().encodeSelector('approve');
12
- console.log('selector', Number(`0x${selector}`), selector);
10
+ console.log('approve', Number(`0x${selector}`), selector);
13
11
  const balanceOf = Number('0x' + new ABICoder().encodeSelector('balanceOf'));
12
+ const totalSupplyS = Number('0x' + new ABICoder().encodeSelector('totalSupply'));
14
13
  const balanceCall = new BinaryWriter();
15
14
  balanceCall.writeSelector(balanceOf);
16
- balanceCall.writeAddress('bcrt1pe0slk2klsxckhf90hvu8g0688rxt9qts6thuxk3u4ymxeejw53gs0xjlhn');
15
+ balanceCall.writeAddress('bcrt1pmc2dz8fy4rwghzmfz4hdsennusld8cwgtr0mjxl45wt8cnqcm3psssc327');
16
+ const totalSupply = new BinaryWriter();
17
+ totalSupply.writeSelector(totalSupplyS);
17
18
  console.log('balanceOf', balanceOf, Buffer.from(balanceCall.getBuffer()).toString('hex'));
18
- const rndGeneratedRegWallet = EcKeyPair.generateWallet(networks.regtest);
19
- const rndWallet = new Wallet(rndGeneratedRegWallet, networks.regtest);
20
- console.log('rnd', rndWallet);
21
- const params = {
22
- bytecode: Buffer.from('deadbeef', 'hex'),
23
- contractSaltPubKey: Buffer.from('deadbeef', 'hex'),
24
- deployerPubKeyXOnly: wallet.xOnly,
25
- originalSalt: Buffer.from('deadbeef', 'hex'),
26
- network: networks.regtest,
27
- };
28
- const contractAddress = TapscriptVerificator.getContractAddress(params);
29
- const virtualAddress = TapscriptVerificator.generateContractVirtualAddress(params.deployerPubKeyXOnly, params.bytecode, params.originalSalt, networks.regtest);
30
- console.log('contract sewgit address', virtualAddress, '\ncontract p2tr address', contractAddress);
19
+ console.log('totalSupply', totalSupplyS, Buffer.from(totalSupply.getBuffer()).toString('hex'));
@@ -0,0 +1,5 @@
1
+ /// <reference types="node" />
2
+ import { Wallet } from '../keypair/Wallet.js';
3
+ import { Address } from '@btc-vision/bsi-binary';
4
+ export declare const wallet: Wallet;
5
+ export declare function interact(contract: Address, calldata: Buffer, mine?: boolean): Promise<void>;