@btc-vision/transaction 1.7.19 → 1.7.23

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 (139) hide show
  1. package/.babelrc +10 -1
  2. package/LICENSE +190 -21
  3. package/README.md +1 -1
  4. package/browser/_version.d.ts +1 -1
  5. package/browser/bip39.js +204 -0
  6. package/browser/bitcoin-utils.js +3172 -0
  7. package/browser/btc-vision-bip32.js +805 -0
  8. package/browser/btc-vision-bitcoin.js +4179 -0
  9. package/browser/btc-vision-logger.js +273 -0
  10. package/browser/btc-vision-post-quantum.js +542 -0
  11. package/browser/chain/ChainData.d.ts +1 -1
  12. package/browser/crypto/crypto.d.ts +1 -1
  13. package/browser/generators/AddressGenerator.d.ts +1 -1
  14. package/browser/generators/Generator.d.ts +1 -1
  15. package/browser/generators/MLDSAData.d.ts +1 -1
  16. package/browser/generators/builders/CalldataGenerator.d.ts +1 -1
  17. package/browser/generators/builders/CustomGenerator.d.ts +1 -1
  18. package/browser/generators/builders/DeploymentGenerator.d.ts +1 -1
  19. package/browser/generators/builders/HashCommitmentGenerator.d.ts +49 -0
  20. package/browser/generators/builders/LegacyCalldataGenerator.d.ts +1 -1
  21. package/browser/generators/builders/P2WDAGenerator.d.ts +1 -1
  22. package/browser/index.js +10775 -2
  23. package/browser/keypair/Address.d.ts +5 -3
  24. package/browser/keypair/AddressVerificator.d.ts +2 -2
  25. package/browser/keypair/EcKeyPair.d.ts +2 -2
  26. package/browser/keypair/MessageSigner.d.ts +2 -2
  27. package/browser/keypair/Wallet.d.ts +2 -2
  28. package/browser/metadata/ContractBaseMetadata.d.ts +1 -1
  29. package/browser/mnemonic/Mnemonic.d.ts +2 -2
  30. package/browser/noble-curves.js +3316 -0
  31. package/browser/noble-hashes.js +1608 -0
  32. package/browser/opnet.d.ts +15 -2
  33. package/browser/p2wda/P2WDADetector.d.ts +2 -2
  34. package/browser/polyfills.js +4590 -0
  35. package/browser/scure-base.js +410 -0
  36. package/browser/signer/AddressRotation.d.ts +12 -0
  37. package/browser/signer/SignerUtils.d.ts +1 -1
  38. package/browser/signer/TweakedSigner.d.ts +1 -1
  39. package/browser/transaction/TransactionFactory.d.ts +15 -1
  40. package/browser/transaction/browser/BrowserSignerBase.d.ts +1 -1
  41. package/browser/transaction/browser/Web3Provider.d.ts +1 -1
  42. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +1 -1
  43. package/browser/transaction/browser/extensions/XverseSigner.d.ts +1 -1
  44. package/browser/transaction/builders/CancelTransaction.d.ts +1 -1
  45. package/browser/transaction/builders/ConsolidatedInteractionTransaction.d.ts +44 -0
  46. package/browser/transaction/builders/CustomScriptTransaction.d.ts +1 -1
  47. package/browser/transaction/builders/DeploymentTransaction.d.ts +1 -1
  48. package/browser/transaction/builders/FundingTransaction.d.ts +1 -1
  49. package/browser/transaction/builders/InteractionTransaction.d.ts +1 -1
  50. package/browser/transaction/builders/InteractionTransactionP2WDA.d.ts +2 -2
  51. package/browser/transaction/builders/MultiSignTransaction.d.ts +1 -1
  52. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +1 -1
  53. package/browser/transaction/builders/TransactionBuilder.d.ts +1 -1
  54. package/browser/transaction/enums/TransactionType.d.ts +3 -1
  55. package/browser/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +31 -0
  56. package/browser/transaction/interfaces/ITransactionParameters.d.ts +3 -1
  57. package/browser/transaction/interfaces/Tap.d.ts +1 -1
  58. package/browser/transaction/mineable/TimelockGenerator.d.ts +1 -1
  59. package/browser/transaction/offline/OfflineTransactionManager.d.ts +69 -0
  60. package/browser/transaction/offline/TransactionReconstructor.d.ts +28 -0
  61. package/browser/transaction/offline/TransactionSerializer.d.ts +50 -0
  62. package/browser/transaction/offline/TransactionStateCapture.d.ts +52 -0
  63. package/browser/transaction/offline/interfaces/ISerializableState.d.ts +62 -0
  64. package/browser/transaction/offline/interfaces/ITypeSpecificData.d.ts +62 -0
  65. package/browser/transaction/processor/PsbtTransaction.d.ts +1 -1
  66. package/browser/transaction/shared/P2TR_MS.d.ts +1 -1
  67. package/browser/transaction/shared/TweakedTransaction.d.ts +15 -4
  68. package/browser/utxo/OPNetLimitedProvider.d.ts +1 -1
  69. package/browser/utxo/interfaces/IUTXO.d.ts +2 -0
  70. package/browser/valibot.js +4948 -0
  71. package/browser/vendors.js +12913 -0
  72. package/browser/verification/TapscriptVerificator.d.ts +1 -1
  73. package/build/_version.d.ts +1 -1
  74. package/build/_version.js +1 -1
  75. package/build/generators/builders/HashCommitmentGenerator.d.ts +49 -0
  76. package/build/generators/builders/HashCommitmentGenerator.js +229 -0
  77. package/build/keypair/Address.d.ts +3 -1
  78. package/build/keypair/Address.js +87 -54
  79. package/build/opnet.d.ts +14 -1
  80. package/build/opnet.js +11 -1
  81. package/build/signer/AddressRotation.d.ts +12 -0
  82. package/build/signer/AddressRotation.js +16 -0
  83. package/build/transaction/TransactionFactory.d.ts +14 -0
  84. package/build/transaction/TransactionFactory.js +36 -0
  85. package/build/transaction/builders/ConsolidatedInteractionTransaction.d.ts +44 -0
  86. package/build/transaction/builders/ConsolidatedInteractionTransaction.js +259 -0
  87. package/build/transaction/builders/TransactionBuilder.js +2 -0
  88. package/build/transaction/enums/TransactionType.d.ts +3 -1
  89. package/build/transaction/enums/TransactionType.js +2 -0
  90. package/build/transaction/interfaces/IConsolidatedTransactionParameters.d.ts +31 -0
  91. package/build/transaction/interfaces/IConsolidatedTransactionParameters.js +1 -0
  92. package/build/transaction/interfaces/ITransactionParameters.d.ts +2 -0
  93. package/build/transaction/offline/OfflineTransactionManager.d.ts +69 -0
  94. package/build/transaction/offline/OfflineTransactionManager.js +255 -0
  95. package/build/transaction/offline/TransactionReconstructor.d.ts +28 -0
  96. package/build/transaction/offline/TransactionReconstructor.js +243 -0
  97. package/build/transaction/offline/TransactionSerializer.d.ts +50 -0
  98. package/build/transaction/offline/TransactionSerializer.js +700 -0
  99. package/build/transaction/offline/TransactionStateCapture.d.ts +52 -0
  100. package/build/transaction/offline/TransactionStateCapture.js +275 -0
  101. package/build/transaction/offline/interfaces/ISerializableState.d.ts +62 -0
  102. package/build/transaction/offline/interfaces/ISerializableState.js +2 -0
  103. package/build/transaction/offline/interfaces/ITypeSpecificData.d.ts +62 -0
  104. package/build/transaction/offline/interfaces/ITypeSpecificData.js +19 -0
  105. package/build/transaction/shared/TweakedTransaction.d.ts +12 -1
  106. package/build/transaction/shared/TweakedTransaction.js +75 -8
  107. package/build/utxo/interfaces/IUTXO.d.ts +2 -0
  108. package/documentation/README.md +5 -0
  109. package/documentation/offline-transaction-signing.md +650 -0
  110. package/documentation/transaction-building.md +603 -0
  111. package/package.json +62 -4
  112. package/src/_version.ts +1 -1
  113. package/src/generators/builders/HashCommitmentGenerator.ts +495 -0
  114. package/src/keypair/Address.ts +123 -70
  115. package/src/opnet.ts +16 -1
  116. package/src/signer/AddressRotation.ts +72 -0
  117. package/src/transaction/TransactionFactory.ts +87 -0
  118. package/src/transaction/builders/CancelTransaction.ts +4 -2
  119. package/src/transaction/builders/ConsolidatedInteractionTransaction.ts +561 -0
  120. package/src/transaction/builders/CustomScriptTransaction.ts +4 -2
  121. package/src/transaction/builders/MultiSignTransaction.ts +4 -2
  122. package/src/transaction/builders/TransactionBuilder.ts +8 -2
  123. package/src/transaction/enums/TransactionType.ts +2 -0
  124. package/src/transaction/interfaces/IConsolidatedTransactionParameters.ts +78 -0
  125. package/src/transaction/interfaces/ITransactionParameters.ts +8 -0
  126. package/src/transaction/offline/OfflineTransactionManager.ts +630 -0
  127. package/src/transaction/offline/TransactionReconstructor.ts +402 -0
  128. package/src/transaction/offline/TransactionSerializer.ts +920 -0
  129. package/src/transaction/offline/TransactionStateCapture.ts +469 -0
  130. package/src/transaction/offline/interfaces/ISerializableState.ts +141 -0
  131. package/src/transaction/offline/interfaces/ITypeSpecificData.ts +172 -0
  132. package/src/transaction/shared/TweakedTransaction.ts +156 -9
  133. package/src/utxo/interfaces/IUTXO.ts +8 -0
  134. package/test/address-rotation.test.ts +553 -0
  135. package/test/offline-transaction.test.ts +2065 -0
  136. package/vite.config.browser.ts +92 -0
  137. package/webpack.config.js +143 -2
  138. package/browser/crypto/crypto-browser.d.ts +0 -11
  139. package/browser/index.js.LICENSE.txt +0 -29
@@ -0,0 +1,31 @@
1
+ import { IInteractionParameters } from './ITransactionParameters.js';
2
+ import { IP2WSHAddress } from '../mineable/IP2WSHAddress.js';
3
+ export interface IHashCommittedP2WSH extends IP2WSHAddress {
4
+ readonly dataHashes: Buffer[];
5
+ readonly dataChunks: Buffer[];
6
+ readonly chunkStartIndex: number;
7
+ readonly scriptPubKey: Buffer;
8
+ }
9
+ export interface IConsolidatedInteractionParameters extends IInteractionParameters {
10
+ readonly maxChunkSize?: number;
11
+ }
12
+ export interface ISetupTransactionResult {
13
+ readonly txHex: string;
14
+ readonly txId: string;
15
+ readonly outputs: IHashCommittedP2WSH[];
16
+ readonly feesPaid: bigint;
17
+ readonly chunkCount: number;
18
+ readonly totalDataSize: number;
19
+ }
20
+ export interface IRevealTransactionResult {
21
+ readonly txHex: string;
22
+ readonly txId: string;
23
+ readonly dataSize: number;
24
+ readonly feesPaid: bigint;
25
+ readonly inputCount: number;
26
+ }
27
+ export interface IConsolidatedInteractionResult {
28
+ readonly setup: ISetupTransactionResult;
29
+ readonly reveal: IRevealTransactionResult;
30
+ readonly totalFees: bigint;
31
+ }
@@ -1,8 +1,9 @@
1
1
  import { UTXO } from '../../utxo/interfaces/IUTXO.js';
2
2
  import { ITweakedTransactionData } from '../shared/TweakedTransaction.js';
3
3
  import { ChainId } from '../../network/ChainId.js';
4
- import { PsbtOutputExtended } from '@btc-vision/bitcoin';
4
+ import { PsbtOutputExtended } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
5
5
  import { ChallengeSolution } from '../../epoch/ChallengeSolution.js';
6
+ import { AddressRotationConfig } from '../../signer/AddressRotation.js';
6
7
  export interface LoadedStorage {
7
8
  [key: string]: string[];
8
9
  }
@@ -25,6 +26,7 @@ export interface ITransactionParameters extends ITweakedTransactionData {
25
26
  readonly priorityFee: bigint;
26
27
  readonly gasSatFee: bigint;
27
28
  readonly compiledTargetScript?: Buffer | string;
29
+ readonly addressRotation?: AddressRotationConfig;
28
30
  }
29
31
  export interface IFundingTransactionParameters extends ITransactionParameters {
30
32
  amount: bigint;
@@ -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 '@btc-vision/bitcoin';
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 '../../../node_modules/@btc-vision/bitcoin/build/index.js';
2
2
  export interface TapLeafScript {
3
3
  readonly leafVersion: number;
4
4
  readonly controlBlock: Buffer;
@@ -1,4 +1,4 @@
1
- import { Network } from '@btc-vision/bitcoin';
1
+ import { Network } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
2
2
  import { IP2WSHAddress } from './IP2WSHAddress.js';
3
3
  export declare class TimeLockGenerator {
4
4
  private static readonly UNSPENDABLE_INTERNAL_KEY;
@@ -0,0 +1,69 @@
1
+ import { Signer } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
2
+ import { ECPairInterface } from 'ecpair';
3
+ import { TransactionType } from '../enums/TransactionType.js';
4
+ import { TransactionBuilder } from '../builders/TransactionBuilder.js';
5
+ import { ISerializableTransactionState, PrecomputedData } from './interfaces/ISerializableState.js';
6
+ import { ReconstructionOptions } from './TransactionReconstructor.js';
7
+ import { IDeploymentParameters, IFundingTransactionParameters, IInteractionParameters, ITransactionParameters } from '../interfaces/ITransactionParameters.js';
8
+ export interface ExportOptions {
9
+ params: ITransactionParameters;
10
+ type: TransactionType;
11
+ precomputed?: Partial<PrecomputedData>;
12
+ }
13
+ export declare class OfflineTransactionManager {
14
+ static exportFunding(params: IFundingTransactionParameters, precomputed?: Partial<PrecomputedData>): string;
15
+ static exportDeployment(params: IDeploymentParameters, precomputed: Partial<PrecomputedData> & {
16
+ compiledTargetScript: string;
17
+ randomBytes: string;
18
+ }): string;
19
+ static exportInteraction(params: IInteractionParameters, precomputed: Partial<PrecomputedData> & {
20
+ compiledTargetScript: string;
21
+ randomBytes: string;
22
+ }): string;
23
+ static exportMultiSig(params: ITransactionParameters & {
24
+ pubkeys: Buffer[];
25
+ minimumSignatures: number;
26
+ receiver: string;
27
+ requestedAmount: bigint;
28
+ refundVault: string;
29
+ originalInputCount?: number;
30
+ existingPsbtBase64?: string;
31
+ }, precomputed?: Partial<PrecomputedData>): string;
32
+ static exportCustomScript(params: ITransactionParameters & {
33
+ scriptElements: (Buffer | number)[];
34
+ witnesses: Buffer[];
35
+ annex?: Buffer;
36
+ }, precomputed?: Partial<PrecomputedData>): string;
37
+ static exportCancel(params: ITransactionParameters & {
38
+ compiledTargetScript: Buffer | string;
39
+ }, precomputed?: Partial<PrecomputedData>): string;
40
+ static exportFromBuilder<T extends TransactionType>(builder: TransactionBuilder<T>, params: ITransactionParameters, precomputed?: Partial<PrecomputedData>): string;
41
+ static importForSigning(serializedState: string, options: ReconstructionOptions): TransactionBuilder<TransactionType>;
42
+ static signAndExport(builder: TransactionBuilder<TransactionType>): Promise<string>;
43
+ static importSignAndExport(serializedState: string, options: ReconstructionOptions): Promise<string>;
44
+ static rebuildWithNewFees(serializedState: string, newFeeRate: number): string;
45
+ static rebuildSignAndExport(serializedState: string, newFeeRate: number, options: ReconstructionOptions): Promise<string>;
46
+ static inspect(serializedState: string): ISerializableTransactionState;
47
+ static validate(serializedState: string): boolean;
48
+ static getType(serializedState: string): TransactionType;
49
+ static fromBase64(base64State: string): ISerializableTransactionState;
50
+ static toBase64(state: ISerializableTransactionState): string;
51
+ static toHex(serializedState: string): string;
52
+ static fromHex(hexState: string): string;
53
+ static multiSigAddSignature(serializedState: string, signer: Signer | ECPairInterface): Promise<{
54
+ state: string;
55
+ signed: boolean;
56
+ final: boolean;
57
+ psbtBase64: string;
58
+ }>;
59
+ static multiSigHasSigned(serializedState: string, signerPubKey: Buffer | string): boolean;
60
+ static multiSigGetSignatureStatus(serializedState: string): {
61
+ required: number;
62
+ collected: number;
63
+ isComplete: boolean;
64
+ signers: string[];
65
+ };
66
+ static multiSigFinalize(serializedState: string): string;
67
+ static multiSigGetPsbt(serializedState: string): string | null;
68
+ static multiSigUpdatePsbt(serializedState: string, psbtBase64: string): string;
69
+ }
@@ -0,0 +1,28 @@
1
+ import { Signer } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
2
+ import { ECPairInterface } from 'ecpair';
3
+ import { QuantumBIP32Interface } from '../../../node_modules/@btc-vision/bip32/src/cjs/index.cjs';
4
+ import { SignerMap } from '../../signer/AddressRotation.js';
5
+ import { TransactionType } from '../enums/TransactionType.js';
6
+ import { TransactionBuilder } from '../builders/TransactionBuilder.js';
7
+ import { ISerializableTransactionState } from './interfaces/ISerializableState.js';
8
+ export interface ReconstructionOptions {
9
+ signer: Signer | ECPairInterface;
10
+ newFeeRate?: number;
11
+ newPriorityFee?: bigint;
12
+ newGasSatFee?: bigint;
13
+ signerMap?: SignerMap;
14
+ mldsaSigner?: QuantumBIP32Interface | null;
15
+ }
16
+ export declare class TransactionReconstructor {
17
+ static reconstruct(state: ISerializableTransactionState, options: ReconstructionOptions): TransactionBuilder<TransactionType>;
18
+ private static reconstructFunding;
19
+ private static reconstructDeployment;
20
+ private static reconstructInteraction;
21
+ private static reconstructMultiSig;
22
+ private static reconstructCustomScript;
23
+ private static reconstructCancel;
24
+ private static buildAddressRotationConfig;
25
+ private static deserializeUTXOs;
26
+ private static deserializeOutputs;
27
+ private static nameToNetwork;
28
+ }
@@ -0,0 +1,50 @@
1
+ import { ISerializableTransactionState } from './interfaces/ISerializableState.js';
2
+ export declare class TransactionSerializer {
3
+ static serialize(state: ISerializableTransactionState): Buffer;
4
+ static deserialize(data: Buffer): ISerializableTransactionState;
5
+ static toBase64(state: ISerializableTransactionState): string;
6
+ static fromBase64(base64: string): ISerializableTransactionState;
7
+ static toHex(state: ISerializableTransactionState): string;
8
+ static fromHex(hex: string): ISerializableTransactionState;
9
+ private static writeHeader;
10
+ private static readHeader;
11
+ private static writeBaseParams;
12
+ private static readBaseParams;
13
+ private static writeUTXOArray;
14
+ private static writeUTXO;
15
+ private static readUTXOArray;
16
+ private static readUTXO;
17
+ private static writeOutputArray;
18
+ private static writeOutput;
19
+ private static readOutputArray;
20
+ private static readOutput;
21
+ private static writeSignerMappings;
22
+ private static readSignerMappings;
23
+ private static writeTypeSpecificData;
24
+ private static readTypeSpecificData;
25
+ private static writeFundingData;
26
+ private static readFundingData;
27
+ private static writeDeploymentData;
28
+ private static readDeploymentData;
29
+ private static writeInteractionData;
30
+ private static readInteractionData;
31
+ private static writeMultiSigData;
32
+ private static readMultiSigData;
33
+ private static writeCustomScriptData;
34
+ private static writeScriptElement;
35
+ private static readCustomScriptData;
36
+ private static readScriptElement;
37
+ private static writeCancelData;
38
+ private static readCancelData;
39
+ private static writeChallenge;
40
+ private static writeChallengeVerification;
41
+ private static readChallenge;
42
+ private static readChallengeVerification;
43
+ private static writeLoadedStorage;
44
+ private static readLoadedStorage;
45
+ private static writePrecomputedData;
46
+ private static readPrecomputedData;
47
+ private static calculateChecksum;
48
+ private static networkNameToU8;
49
+ private static u8ToNetworkName;
50
+ }
@@ -0,0 +1,52 @@
1
+ import { TransactionType } from '../enums/TransactionType.js';
2
+ import { ISerializableTransactionState, PrecomputedData } from './interfaces/ISerializableState.js';
3
+ import { IDeploymentParameters, IFundingTransactionParameters, IInteractionParameters, ITransactionParameters } from '../interfaces/ITransactionParameters.js';
4
+ export interface CaptureParams {
5
+ params: ITransactionParameters;
6
+ type: TransactionType;
7
+ precomputed?: Partial<PrecomputedData>;
8
+ }
9
+ export declare class TransactionStateCapture {
10
+ static fromFunding(params: IFundingTransactionParameters, precomputed?: Partial<PrecomputedData>): ISerializableTransactionState;
11
+ static fromDeployment(params: IDeploymentParameters, precomputed: Partial<PrecomputedData> & {
12
+ compiledTargetScript: string;
13
+ randomBytes: string;
14
+ }): ISerializableTransactionState;
15
+ static fromInteraction(params: IInteractionParameters, precomputed: Partial<PrecomputedData> & {
16
+ compiledTargetScript: string;
17
+ randomBytes: string;
18
+ }): ISerializableTransactionState;
19
+ static fromMultiSig(params: ITransactionParameters & {
20
+ pubkeys: Buffer[];
21
+ minimumSignatures: number;
22
+ receiver: string;
23
+ requestedAmount: bigint;
24
+ refundVault: string;
25
+ originalInputCount?: number;
26
+ existingPsbtBase64?: string;
27
+ }, precomputed?: Partial<PrecomputedData>): ISerializableTransactionState;
28
+ static fromCustomScript(params: ITransactionParameters & {
29
+ scriptElements: (Buffer | number)[];
30
+ witnesses: Buffer[];
31
+ annex?: Buffer;
32
+ }, precomputed?: Partial<PrecomputedData>): ISerializableTransactionState;
33
+ static fromCancel(params: ITransactionParameters & {
34
+ compiledTargetScript: Buffer | string;
35
+ }, precomputed?: Partial<PrecomputedData>): ISerializableTransactionState;
36
+ private static captureState;
37
+ private static createHeader;
38
+ private static extractBaseParams;
39
+ private static extractSignerMappings;
40
+ private static extractTypeSpecificData;
41
+ private static extractFundingData;
42
+ private static extractDeploymentData;
43
+ private static extractInteractionData;
44
+ private static extractMultiSigData;
45
+ private static extractCustomScriptData;
46
+ private static extractCancelData;
47
+ private static buildPrecomputedData;
48
+ private static serializeUTXOs;
49
+ private static serializeOutputs;
50
+ private static networkToName;
51
+ private static networkToChainId;
52
+ }
@@ -0,0 +1,62 @@
1
+ import { TransactionType } from '../../enums/TransactionType.js';
2
+ import { ChainId } from '../../../network/ChainId.js';
3
+ import { TypeSpecificData } from './ITypeSpecificData.js';
4
+ export declare const SERIALIZATION_FORMAT_VERSION = 1;
5
+ export declare const SERIALIZATION_MAGIC_BYTE = 66;
6
+ export interface SerializationHeader {
7
+ readonly formatVersion: number;
8
+ readonly consensusVersion: number;
9
+ readonly transactionType: TransactionType;
10
+ readonly chainId: ChainId;
11
+ readonly timestamp: number;
12
+ }
13
+ export interface SerializedUTXO {
14
+ readonly transactionId: string;
15
+ readonly outputIndex: number;
16
+ readonly value: string;
17
+ readonly scriptPubKeyHex: string;
18
+ readonly scriptPubKeyAddress?: string;
19
+ readonly redeemScript?: string;
20
+ readonly witnessScript?: string;
21
+ readonly nonWitnessUtxo?: string;
22
+ }
23
+ export interface SerializedOutput {
24
+ readonly value: number;
25
+ readonly address?: string;
26
+ readonly script?: string;
27
+ readonly tapInternalKey?: string;
28
+ }
29
+ export interface SerializedSignerMapping {
30
+ readonly address: string;
31
+ readonly inputIndices: number[];
32
+ }
33
+ export interface SerializedBaseParams {
34
+ readonly from: string;
35
+ readonly to?: string;
36
+ readonly feeRate: number;
37
+ readonly priorityFee: string;
38
+ readonly gasSatFee: string;
39
+ readonly networkName: 'mainnet' | 'testnet' | 'regtest';
40
+ readonly txVersion: number;
41
+ readonly note?: string;
42
+ readonly anchor: boolean;
43
+ readonly debugFees?: boolean;
44
+ }
45
+ export interface PrecomputedData {
46
+ readonly compiledTargetScript?: string;
47
+ readonly randomBytes?: string;
48
+ readonly estimatedFees?: string;
49
+ readonly contractSeed?: string;
50
+ readonly contractAddress?: string;
51
+ }
52
+ export interface ISerializableTransactionState {
53
+ readonly header: SerializationHeader;
54
+ readonly baseParams: SerializedBaseParams;
55
+ readonly utxos: SerializedUTXO[];
56
+ readonly optionalInputs: SerializedUTXO[];
57
+ readonly optionalOutputs: SerializedOutput[];
58
+ readonly addressRotationEnabled: boolean;
59
+ readonly signerMappings: SerializedSignerMapping[];
60
+ readonly typeSpecificData: TypeSpecificData;
61
+ readonly precomputedData: PrecomputedData;
62
+ }
@@ -0,0 +1,62 @@
1
+ import { TransactionType } from '../../enums/TransactionType.js';
2
+ import { RawChallenge } from '../../../epoch/interfaces/IChallengeSolution.js';
3
+ export type TypeSpecificData = FundingSpecificData | DeploymentSpecificData | InteractionSpecificData | MultiSigSpecificData | CustomScriptSpecificData | CancelSpecificData;
4
+ export interface FundingSpecificData {
5
+ readonly type: TransactionType.FUNDING;
6
+ readonly amount: string;
7
+ readonly splitInputsInto: number;
8
+ }
9
+ export interface DeploymentSpecificData {
10
+ readonly type: TransactionType.DEPLOYMENT;
11
+ readonly bytecode: string;
12
+ readonly calldata?: string;
13
+ readonly challenge: RawChallenge;
14
+ readonly revealMLDSAPublicKey?: boolean;
15
+ readonly linkMLDSAPublicKeyToAddress?: boolean;
16
+ readonly hashedPublicKey?: string;
17
+ }
18
+ export interface InteractionSpecificData {
19
+ readonly type: TransactionType.INTERACTION;
20
+ readonly calldata: string;
21
+ readonly contract?: string;
22
+ readonly challenge: RawChallenge;
23
+ readonly loadedStorage?: SerializedLoadedStorage;
24
+ readonly isCancellation?: boolean;
25
+ readonly disableAutoRefund?: boolean;
26
+ readonly revealMLDSAPublicKey?: boolean;
27
+ readonly linkMLDSAPublicKeyToAddress?: boolean;
28
+ readonly hashedPublicKey?: string;
29
+ }
30
+ export interface SerializedLoadedStorage {
31
+ [key: string]: string[];
32
+ }
33
+ export interface MultiSigSpecificData {
34
+ readonly type: TransactionType.MULTI_SIG;
35
+ readonly pubkeys: string[];
36
+ readonly minimumSignatures: number;
37
+ readonly receiver: string;
38
+ readonly requestedAmount: string;
39
+ readonly refundVault: string;
40
+ readonly originalInputCount: number;
41
+ readonly existingPsbtBase64?: string;
42
+ }
43
+ export interface SerializedScriptElement {
44
+ readonly elementType: 'buffer' | 'opcode';
45
+ readonly value: string | number;
46
+ }
47
+ export interface CustomScriptSpecificData {
48
+ readonly type: TransactionType.CUSTOM_CODE;
49
+ readonly scriptElements: SerializedScriptElement[];
50
+ readonly witnesses: string[];
51
+ readonly annex?: string;
52
+ }
53
+ export interface CancelSpecificData {
54
+ readonly type: TransactionType.CANCEL;
55
+ readonly compiledTargetScript: string;
56
+ }
57
+ export declare function isFundingSpecificData(data: TypeSpecificData): data is FundingSpecificData;
58
+ export declare function isDeploymentSpecificData(data: TypeSpecificData): data is DeploymentSpecificData;
59
+ export declare function isInteractionSpecificData(data: TypeSpecificData): data is InteractionSpecificData;
60
+ export declare function isMultiSigSpecificData(data: TypeSpecificData): data is MultiSigSpecificData;
61
+ export declare function isCustomScriptSpecificData(data: TypeSpecificData): data is CustomScriptSpecificData;
62
+ export declare function isCancelSpecificData(data: TypeSpecificData): data is CancelSpecificData;
@@ -1,4 +1,4 @@
1
- import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
1
+ import { Network, Psbt, PsbtInputExtended, PsbtOutputExtended, Signer, Transaction } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
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 '@btc-vision/bitcoin';
1
+ import { Network } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
2
2
  export declare class P2TR_MS {
3
3
  static generateMultiSigAddress(pubKeys: Buffer[], minimumSignatureRequired: number, network?: Network): string;
4
4
  }
@@ -1,12 +1,13 @@
1
1
  import { Logger } from '@btc-vision/logger';
2
- import { Network, P2TRPayment, Psbt, PsbtInput, PsbtInputExtended, Signer, Transaction } from '@btc-vision/bitcoin';
2
+ import { Network, P2TRPayment, Psbt, PsbtInput, PsbtInputExtended, Signer, Transaction } from '../../../node_modules/@btc-vision/bitcoin/build/index.js';
3
3
  import { ECPairInterface } from 'ecpair';
4
4
  import { UTXO } from '../../utxo/interfaces/IUTXO.js';
5
5
  import { TapLeafScript } from '../interfaces/Tap.js';
6
6
  import { ChainId } from '../../network/ChainId.js';
7
7
  import { UnisatSigner } from '../browser/extensions/UnisatSigner.js';
8
- import { Buffer } from 'buffer';
9
- import { QuantumBIP32Interface } from '@btc-vision/bip32';
8
+ import { Buffer } from '../../../buffer';
9
+ import { QuantumBIP32Interface } from '../../../node_modules/@btc-vision/bip32/src/cjs/index.cjs';
10
+ import { AddressRotationConfig, RotationSigner, SignerMap } from '../../signer/AddressRotation.js';
10
11
  export type SupportedTransactionVersion = 1 | 2 | 3;
11
12
  export interface ITweakedTransactionData {
12
13
  readonly mldsaSigner: QuantumBIP32Interface | null;
@@ -17,6 +18,7 @@ export interface ITweakedTransactionData {
17
18
  readonly noSignatures?: boolean;
18
19
  readonly unlockScript?: Buffer[];
19
20
  readonly txVersion?: SupportedTransactionVersion;
21
+ readonly addressRotation?: AddressRotationConfig;
20
22
  }
21
23
  export declare enum TransactionSequence {
22
24
  REPLACE_BY_FEE = 4294967293,
@@ -51,6 +53,10 @@ export declare abstract class TweakedTransaction extends Logger {
51
53
  protected txVersion: SupportedTransactionVersion;
52
54
  protected readonly _mldsaSigner: QuantumBIP32Interface | null;
53
55
  protected readonly _hashedPublicKey: Buffer | null;
56
+ protected readonly addressRotationEnabled: boolean;
57
+ protected readonly signerMap: SignerMap;
58
+ protected readonly inputSignerMap: Map<number, RotationSigner>;
59
+ protected readonly tweakedSignerCache: Map<number, ECPairInterface | undefined>;
54
60
  protected constructor(data: ITweakedTransactionData);
55
61
  protected get mldsaSigner(): QuantumBIP32Interface;
56
62
  protected get hashedPublicKey(): Buffer;
@@ -58,6 +64,7 @@ export declare abstract class TweakedTransaction extends Logger {
58
64
  static preEstimateTaprootTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numWitnessElements: bigint, witnessElementSize: bigint, emptyWitness: bigint, taprootControlWitnessSize?: bigint, taprootScriptSize?: bigint): bigint;
59
65
  protected static signInput(transaction: Psbt, input: PsbtInput, i: number, signer: Signer | ECPairInterface, sighashTypes: number[]): void;
60
66
  protected static calculateSignHash(sighashTypes: number[]): number;
67
+ isAddressRotationEnabled(): boolean;
61
68
  ignoreSignatureError(): void;
62
69
  getScriptAddress(): string;
63
70
  getTransaction(): Transaction;
@@ -65,6 +72,10 @@ export declare abstract class TweakedTransaction extends Logger {
65
72
  disableRBF(): void;
66
73
  getTweakerHash(): Buffer | undefined;
67
74
  preEstimateTransactionFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numSignatures: bigint, numPubkeys: bigint): bigint;
75
+ protected getSignerForInput(inputIndex: number): RotationSigner;
76
+ protected registerInputSigner(inputIndex: number, utxo: UTXO): void;
77
+ protected internalPubKeyToXOnlyForInput(inputIndex: number): Buffer;
78
+ protected getTweakedSignerForInput(inputIndex: number, useTweakedHash?: boolean): ECPairInterface | undefined;
68
79
  protected generateTapData(): P2TRPayment;
69
80
  protected generateScriptAddress(): P2TRPayment;
70
81
  protected getSignerKey(): Signer | ECPairInterface;
@@ -81,7 +92,7 @@ export declare abstract class TweakedTransaction extends Logger {
81
92
  redeemScript: Buffer;
82
93
  outputScript: Buffer;
83
94
  } | undefined;
84
- protected generateP2SHP2PKHRedeemScript(inputAddr: string): {
95
+ protected generateP2SHP2PKHRedeemScript(inputAddr: string, inputIndex?: number): {
85
96
  redeemScript: Buffer;
86
97
  outputScript: Buffer;
87
98
  } | undefined;
@@ -1,4 +1,4 @@
1
- import { Network } from '@btc-vision/bitcoin';
1
+ import { Network } from '../../node_modules/@btc-vision/bitcoin/build/index.js';
2
2
  import { Wallet } from '../opnet.js';
3
3
  import { BroadcastResponse } from './interfaces/BroadcastResponse.js';
4
4
  import { FetchUTXOParams, FetchUTXOParamsMultiAddress, RawUTXOResponse, UTXO } from './interfaces/IUTXO.js';
@@ -1,4 +1,5 @@
1
1
  import { ScriptPubKey } from '@btc-vision/bitcoin-rpc';
2
+ import { RotationSigner } from '../../signer/AddressRotation.js';
2
3
  export interface UTXO {
3
4
  readonly transactionId: string;
4
5
  readonly outputIndex: number;
@@ -7,6 +8,7 @@ export interface UTXO {
7
8
  redeemScript?: string | Buffer;
8
9
  witnessScript?: string | Buffer;
9
10
  nonWitnessUtxo?: string | Buffer;
11
+ signer?: RotationSigner;
10
12
  }
11
13
  export interface FetchUTXOParams {
12
14
  readonly address: string;