dop-wallet-v6 1.2.7 → 1.2.9

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.
@@ -2,7 +2,37 @@ import { NetworkName, DopERC20AmountRecipient, DopNFTAmountRecipient, TXIDVersio
2
2
  import { GenerateTransactionsProgressCallback } from './tx-generator';
3
3
  export declare const generateTransferProofForExplorer: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<void>;
4
4
  /**
5
- * Generate transfer proof and return the raw proved transactions for explorer verification
5
+ * Generate transfer proof and return the proved transactions in the format expected by verification
6
6
  * This function generates the proof and returns the complete proved transaction data
7
+ * matching the format used in the example verification code
7
8
  */
8
9
  export declare const generateTransferProof: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<(import("dop-engine-v3").TransactionStructV2 | import("dop-engine-v3").TransactionStructV3)[]>;
10
+ /**
11
+ * Generate transfer proof and return a custom formatted version for explorer/UI purposes
12
+ * This function transforms the proved transactions into a simplified format
13
+ */
14
+ export declare const generateTransferProofForUI: (txidVersion: TXIDVersion, networkName: NetworkName, dopWalletID: string, encryptionKey: string, showSenderAddressToRecipient: boolean, memoText: Optional<string>, erc20AmountRecipients: DopERC20AmountRecipient[], nftAmountRecipients: DopNFTAmountRecipient[], broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>, sendWithPublicWallet: boolean, overallBatchMinGasPrice: Optional<bigint>, progressCallback: GenerateTransactionsProgressCallback) => Promise<{
15
+ memo: never[];
16
+ memoText: string;
17
+ serializedCommitment: {
18
+ [key: string]: unknown;
19
+ blindedReceiverViewingKey?: string | undefined;
20
+ } | null;
21
+ commitmentTreeIndex: number;
22
+ hash: import("ethers").BytesLike;
23
+ shieldKeyHash: string;
24
+ boundParams: {
25
+ adaptContract: string;
26
+ adaptParams: string;
27
+ chainID: string | bigint;
28
+ commitmentCiphertext: {
29
+ [key: string]: unknown;
30
+ blindedReceiverViewingKey?: string | undefined;
31
+ }[];
32
+ decrypt: bigint;
33
+ };
34
+ merkleRoot: import("ethers").BytesLike;
35
+ nullifiers: import("ethers").BytesLike[];
36
+ proof: import("dop-engine-v3/dist/abi/typechain/DopSmartWallet").SnarkProofStruct;
37
+ txidVersion: import("dop-engine-v3").TXIDVersion;
38
+ }[]>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
3
+ exports.generateTransferProofForUI = exports.generateTransferProof = exports.generateTransferProofForExplorer = void 0;
4
4
  const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
5
5
  const tx_generator_1 = require("./tx-generator");
6
6
  const proof_cache_1 = require("./proof-cache");
@@ -39,8 +39,9 @@ const generateTransferProofForExplorer = async (txidVersion, networkName, dopWal
39
39
  };
40
40
  exports.generateTransferProofForExplorer = generateTransferProofForExplorer;
41
41
  /**
42
- * Generate transfer proof and return the raw proved transactions for explorer verification
42
+ * Generate transfer proof and return the proved transactions in the format expected by verification
43
43
  * This function generates the proof and returns the complete proved transaction data
44
+ * matching the format used in the example verification code
44
45
  */
45
46
  const generateTransferProof = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
46
47
  try {
@@ -48,7 +49,9 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
48
49
  const { provedTransactions } = await (0, tx_generator_1.generateProofTransactions)(dop_sharedmodels_v3_1.ProofType.Transfer, networkName, dopWalletID, txidVersion, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, undefined, // relayAdaptID
49
50
  false, // useDummyProof
50
51
  overallBatchMinGasPrice, progressCallback);
51
- // Return the raw proved transactions array as expected
52
+ // Return the proved transactions directly without transformation
53
+ // This matches the format expected by the verification example code
54
+ // The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion
52
55
  return provedTransactions;
53
56
  }
54
57
  catch (err) {
@@ -56,4 +59,65 @@ const generateTransferProof = async (txidVersion, networkName, dopWalletID, encr
56
59
  }
57
60
  };
58
61
  exports.generateTransferProof = generateTransferProof;
62
+ /**
63
+ * Generate transfer proof and return a custom formatted version for explorer/UI purposes
64
+ * This function transforms the proved transactions into a simplified format
65
+ */
66
+ const generateTransferProofForUI = async (txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback) => {
67
+ try {
68
+ // Get the standard proof format first
69
+ const provedTransactions = await (0, exports.generateTransferProof)(txidVersion, networkName, dopWalletID, encryptionKey, showSenderAddressToRecipient, memoText, erc20AmountRecipients, nftAmountRecipients, broadcasterFeeERC20AmountRecipient, sendWithPublicWallet, overallBatchMinGasPrice, progressCallback);
70
+ // Transform the proved transactions to a custom format for UI/explorer
71
+ const transformedTransactions = provedTransactions.map((transaction) => {
72
+ // Type-safe access to boundParams properties with proper type checking
73
+ const boundParams = transaction.boundParams;
74
+ // Calculate commitment tree index and other derived fields
75
+ let commitmentTreeIndex = 0;
76
+ if (typeof boundParams.treeNumber === 'number') {
77
+ commitmentTreeIndex = boundParams.treeNumber;
78
+ }
79
+ else if (typeof boundParams.treeNumber === 'bigint') {
80
+ commitmentTreeIndex = Number(boundParams.treeNumber);
81
+ }
82
+ // Extract hash from the transaction
83
+ const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0
84
+ ? transaction.commitments[0]
85
+ : transaction.merkleRoot;
86
+ // Create shield key hash from the bound params
87
+ const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];
88
+ const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';
89
+ // Get serialized commitment from the bound params
90
+ const serializedCommitment = firstCommitmentCiphertext ?? null;
91
+ return {
92
+ // Add the wanted fields for UI/explorer
93
+ memo: [],
94
+ memoText: memoText ?? '',
95
+ serializedCommitment,
96
+ commitmentTreeIndex,
97
+ hash,
98
+ shieldKeyHash,
99
+ // Keep essential transaction data from boundParams
100
+ boundParams: {
101
+ adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',
102
+ adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',
103
+ chainID: boundParams.chainID ?? '0x0000000000000089',
104
+ commitmentCiphertext: boundParams.commitmentCiphertext ?? [],
105
+ decrypt: 0n,
106
+ },
107
+ // Keep core proof data
108
+ merkleRoot: transaction.merkleRoot,
109
+ nullifiers: transaction.nullifiers,
110
+ proof: transaction.proof,
111
+ txidVersion: transaction.txidVersion,
112
+ // Remove the unwanted fields by not including them:
113
+ // decryptPreimage, minGasPrice, treeNumber, commitments are not included
114
+ };
115
+ });
116
+ return transformedTransactions;
117
+ }
118
+ catch (err) {
119
+ throw (0, error_1.reportAndSanitizeError)(exports.generateTransferProofForUI.name, err);
120
+ }
121
+ };
122
+ exports.generateTransferProofForUI = generateTransferProofForUI;
59
123
  //# sourceMappingURL=tx-proof-transfer-with-data.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":";;;AAAA,6DAM6B;AAC7B,iDAKwB;AACxB,+CAA2D;AAC3D,6CAA2D;AAEpD,MAAM,gCAAgC,GAAG,KAAK,EACnD,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACvC,EAAE;IACjB,IAAI;QACF,IAAA,wCAA0B,EAAC,SAAS,CAAC,CAAC;QAEtC,MAAM,EAAE,kBAAkB,EAAE,GAC1B,MAAM,IAAA,wCAAyB,EAC7B,+BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QACJ,MAAM,WAAW,GAAG,MAAM,IAAA,+BAAgB,EACxC,WAAW,EACX,kBAAkB,EAClB,WAAW,EACX,EAAE,CACH,CAAC;QAEF,MAAM,UAAU,GAAG,IAAA,wCAAyB,EAAC,kBAAkB,CAAC,CAAC;QAEjE,IAAA,wCAA0B,EAAC;YACzB,SAAS,EAAE,+BAAS,CAAC,QAAQ;YAC7B,WAAW;YACX,WAAW;YACX,4BAA4B;YAC5B,QAAQ;YACR,qBAAqB;YACrB,mBAAmB;YACnB,6BAA6B,EAAE,SAAS;YACxC,2BAA2B,EAAE,SAAS;YACtC,gCAAgC,EAAE,SAAS;YAC3C,8BAA8B,EAAE,SAAS;YACzC,kBAAkB,EAAE,SAAS;YAC7B,kCAAkC;YAClC,oBAAoB;YACpB,WAAW;YACX,uBAAuB;YACvB,UAAU;SACX,CAAC,CAAC;KACJ;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,wCAAgC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC1E;AACH,CAAC,CAAC;AAlEW,QAAA,gCAAgC,oCAkE3C;AAEF;;;GAGG;AACI,MAAM,qBAAqB,GAAG,KAAK,EACxC,WAAwB,EACxB,WAAwB,EACxB,WAAmB,EACnB,aAAqB,EACrB,4BAAqC,EACrC,QAA0B,EAC1B,qBAAgD,EAChD,mBAA4C,EAC5C,kCAAqE,EACrE,oBAA6B,EAC7B,uBAAyC,EACzC,gBAAsD,EACtD,EAAE;IACF,IAAI;QACF,2CAA2C;QAC3C,MAAM,EAAE,kBAAkB,EAAE,GAAG,MAAM,IAAA,wCAAyB,EAC5D,+BAAS,CAAC,QAAQ,EAClB,WAAW,EACX,WAAW,EACX,WAAW,EACX,aAAa,EACb,4BAA4B,EAC5B,QAAQ,EACR,qBAAqB,EACrB,mBAAmB,EACnB,kCAAkC,EAClC,oBAAoB,EACpB,SAAS,EAAE,eAAe;QAC1B,KAAK,EAAE,gBAAgB;QACvB,uBAAuB,EACvB,gBAAgB,CACjB,CAAC;QAEF,uDAAuD;QACvD,OAAO,kBAAkB,CAAC;KAC3B;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,6BAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC/D;AACH,CAAC,CAAC;AAvCW,QAAA,qBAAqB,yBAuChC","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the raw proved transactions for explorer verification\n * This function generates the proof and returns the complete proved transaction data\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Return the raw proved transactions array as expected\n return provedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n"]}
1
+ {"version":3,"file":"tx-proof-transfer-with-data.js","sourceRoot":"","sources":["../../../src/services/transactions/tx-proof-transfer-with-data.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n NetworkName,\n ProofType,\n DopERC20AmountRecipient,\n DopNFTAmountRecipient,\n TXIDVersion,\n} from 'dop-sharedmodels-v3';\nimport {\n GenerateTransactionsProgressCallback,\n generateProofTransactions,\n generateTransact,\n nullifiersForTransactions,\n} from './tx-generator';\nimport { setCachedProvedTransaction } from './proof-cache';\nimport { reportAndSanitizeError } from '../../utils/error';\n\nexport const generateTransferProofForExplorer = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n): Promise<void> => {\n try {\n setCachedProvedTransaction(undefined);\n\n const { provedTransactions } =\n await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n const transaction = await generateTransact(\n txidVersion,\n provedTransactions,\n networkName,\n 0n\n );\n\n const nullifiers = nullifiersForTransactions(provedTransactions);\n\n setCachedProvedTransaction({\n proofType: ProofType.Transfer,\n txidVersion,\n dopWalletID,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n relayAdaptDecryptERC20Amounts: undefined,\n relayAdaptDecryptNFTAmounts: undefined,\n relayAdaptEncryptERC20Recipients: undefined,\n relayAdaptEncryptNFTRecipients: undefined,\n crossContractCalls: undefined,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n transaction,\n overallBatchMinGasPrice,\n nullifiers,\n });\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForExplorer.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return the proved transactions in the format expected by verification\n * This function generates the proof and returns the complete proved transaction data\n * matching the format used in the example verification code\n */\nexport const generateTransferProof = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Generate the proof transactions directly\n const { provedTransactions } = await generateProofTransactions(\n ProofType.Transfer,\n networkName,\n dopWalletID,\n txidVersion,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n undefined, // relayAdaptID\n false, // useDummyProof\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Return the proved transactions directly without transformation\n // This matches the format expected by the verification example code\n // The structure should include: boundParams, decryptPreimage, merkleRoot, nullifiers, proof, txidVersion\n return provedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProof.name, err);\n }\n};\n\n/**\n * Generate transfer proof and return a custom formatted version for explorer/UI purposes\n * This function transforms the proved transactions into a simplified format\n */\nexport const generateTransferProofForUI = async (\n txidVersion: TXIDVersion,\n networkName: NetworkName,\n dopWalletID: string,\n encryptionKey: string,\n showSenderAddressToRecipient: boolean,\n memoText: Optional<string>,\n erc20AmountRecipients: DopERC20AmountRecipient[],\n nftAmountRecipients: DopNFTAmountRecipient[],\n broadcasterFeeERC20AmountRecipient: Optional<DopERC20AmountRecipient>,\n sendWithPublicWallet: boolean,\n overallBatchMinGasPrice: Optional<bigint>,\n progressCallback: GenerateTransactionsProgressCallback,\n) => {\n try {\n // Get the standard proof format first\n const provedTransactions = await generateTransferProof(\n txidVersion,\n networkName,\n dopWalletID,\n encryptionKey,\n showSenderAddressToRecipient,\n memoText,\n erc20AmountRecipients,\n nftAmountRecipients,\n broadcasterFeeERC20AmountRecipient,\n sendWithPublicWallet,\n overallBatchMinGasPrice,\n progressCallback,\n );\n\n // Transform the proved transactions to a custom format for UI/explorer\n const transformedTransactions = provedTransactions.map((transaction) => {\n // Type-safe access to boundParams properties with proper type checking\n const boundParams = transaction.boundParams as {\n treeNumber?: number | bigint;\n adaptContract?: string;\n adaptParams?: string;\n chainID?: string | bigint;\n commitmentCiphertext?: Array<{\n blindedReceiverViewingKey?: string;\n [key: string]: unknown;\n }>;\n [key: string]: unknown;\n };\n \n // Calculate commitment tree index and other derived fields\n let commitmentTreeIndex = 0;\n if (typeof boundParams.treeNumber === 'number') {\n commitmentTreeIndex = boundParams.treeNumber;\n } else if (typeof boundParams.treeNumber === 'bigint') {\n commitmentTreeIndex = Number(boundParams.treeNumber);\n }\n \n // Extract hash from the transaction\n const hash = Array.isArray(transaction.commitments) && transaction.commitments.length > 0 \n ? transaction.commitments[0] \n : transaction.merkleRoot;\n \n // Create shield key hash from the bound params\n const firstCommitmentCiphertext = boundParams.commitmentCiphertext?.[0];\n const shieldKeyHash = firstCommitmentCiphertext?.blindedReceiverViewingKey ?? '0x0';\n \n // Get serialized commitment from the bound params\n const serializedCommitment = firstCommitmentCiphertext ?? null;\n\n return {\n // Add the wanted fields for UI/explorer\n memo: [], // Empty array as requested\n memoText: memoText ?? '', // Use the provided memo text\n serializedCommitment,\n commitmentTreeIndex,\n hash,\n shieldKeyHash,\n \n // Keep essential transaction data from boundParams\n boundParams: {\n adaptContract: boundParams.adaptContract ?? '0x0000000000000000000000000000000000000000',\n adaptParams: boundParams.adaptParams ?? '0x0000000000000000000000000000000000000000000000000000000000000000',\n chainID: boundParams.chainID ?? '0x0000000000000089',\n commitmentCiphertext: boundParams.commitmentCiphertext ?? [],\n decrypt: 0n,\n },\n \n // Keep core proof data\n merkleRoot: transaction.merkleRoot,\n nullifiers: transaction.nullifiers,\n proof: transaction.proof,\n txidVersion: transaction.txidVersion,\n \n // Remove the unwanted fields by not including them:\n // decryptPreimage, minGasPrice, treeNumber, commitments are not included\n };\n });\n\n return transformedTransactions;\n } catch (err) {\n throw reportAndSanitizeError(generateTransferProofForUI.name, err);\n }\n};\n"]}
File without changes
File without changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dop-wallet-v6",
3
- "version": "1.2.7",
3
+ "version": "1.2.9",
4
4
  "description": "DOP Wallet SDK, compatible with mobile, browser and nodejs environments.",
5
5
  "main": "dist/index.js",
6
6
  "license": "MIT",