dop-wallet-v6 1.3.2 → 1.3.32

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 (121) hide show
  1. package/.eslintrc.js +5 -0
  2. package/dist/services/dop/crypto/react-native-crypto-provider.js +4 -2
  3. package/dist/services/dop/crypto/react-native-crypto-provider.js.map +1 -1
  4. package/dist/services/dop/wallets/wallets.js +12 -17
  5. package/dist/services/dop/wallets/wallets.js.map +1 -1
  6. package/dist/services/transactions/tx-encrypt-relayer.d.ts +6 -0
  7. package/dist/services/transactions/tx-encrypt-relayer.js +80 -0
  8. package/dist/services/transactions/tx-encrypt-relayer.js.map +1 -0
  9. package/package.json +6 -1
  10. package/dist/__tests__/index.test.d.ts +0 -1
  11. package/dist/__tests__/index.test.js +0 -13
  12. package/dist/__tests__/index.test.js.map +0 -1
  13. package/dist/services/artifacts/__tests__/artifact-downloader.test.d.ts +0 -1
  14. package/dist/services/artifacts/__tests__/artifact-downloader.test.js +0 -70
  15. package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +0 -1
  16. package/dist/services/dop/__tests__/integration.test.d.ts +0 -1
  17. package/dist/services/dop/__tests__/integration.test.js +0 -378
  18. package/dist/services/dop/__tests__/integration.test.js.map +0 -1
  19. package/dist/services/dop/core/__tests__/engine.test.d.ts +0 -1
  20. package/dist/services/dop/core/__tests__/engine.test.js +0 -30
  21. package/dist/services/dop/core/__tests__/engine.test.js.map +0 -1
  22. package/dist/services/dop/core/__tests__/providers.test.d.ts +0 -1
  23. package/dist/services/dop/core/__tests__/providers.test.js +0 -69
  24. package/dist/services/dop/core/__tests__/providers.test.js.map +0 -1
  25. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.d.ts +0 -1
  26. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js +0 -168
  27. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +0 -1
  28. package/dist/services/dop/history/__tests__/transaction-history.test.d.ts +0 -0
  29. package/dist/services/dop/history/__tests__/transaction-history.test.js +0 -2
  30. package/dist/services/dop/history/__tests__/transaction-history.test.js.map +0 -1
  31. package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +0 -1
  32. package/dist/services/dop/profile/__tests__/profile-manager.test.js +0 -170
  33. package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +0 -1
  34. package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +0 -1
  35. package/dist/services/dop/profile/__tests__/selective-transparency.test.js +0 -256
  36. package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +0 -1
  37. package/dist/services/dop/profile/__tests__/storage.test.d.ts +0 -1
  38. package/dist/services/dop/profile/__tests__/storage.test.js +0 -174
  39. package/dist/services/dop/profile/__tests__/storage.test.js.map +0 -1
  40. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.d.ts +0 -1
  41. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js +0 -126
  42. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +0 -1
  43. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.d.ts +0 -1
  44. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +0 -63
  45. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +0 -1
  46. package/dist/services/dop/util/__tests__/bytes-util.test.d.ts +0 -1
  47. package/dist/services/dop/util/__tests__/bytes-util.test.js +0 -23
  48. package/dist/services/dop/util/__tests__/bytes-util.test.js.map +0 -1
  49. package/dist/services/dop/util/__tests__/crypto-util.test.d.ts +0 -1
  50. package/dist/services/dop/util/__tests__/crypto-util.test.js +0 -62
  51. package/dist/services/dop/util/__tests__/crypto-util.test.js.map +0 -1
  52. package/dist/services/dop/wallets/__tests__/balances-live.test.d.ts +0 -1
  53. package/dist/services/dop/wallets/__tests__/balances-live.test.js +0 -58
  54. package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +0 -1
  55. package/dist/services/dop/wallets/__tests__/balances-update.test.d.ts +0 -1
  56. package/dist/services/dop/wallets/__tests__/balances-update.test.js +0 -90
  57. package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +0 -1
  58. package/dist/services/dop/wallets/__tests__/balances.test.d.ts +0 -1
  59. package/dist/services/dop/wallets/__tests__/balances.test.js +0 -59
  60. package/dist/services/dop/wallets/__tests__/balances.test.js.map +0 -1
  61. package/dist/services/dop/wallets/__tests__/wallets.test.d.ts +0 -1
  62. package/dist/services/dop/wallets/__tests__/wallets.test.js +0 -80
  63. package/dist/services/dop/wallets/__tests__/wallets.test.js.map +0 -1
  64. package/dist/services/ethers/__tests__/ethers-util.test.d.ts +0 -1
  65. package/dist/services/ethers/__tests__/ethers-util.test.js +0 -19
  66. package/dist/services/ethers/__tests__/ethers-util.test.js.map +0 -1
  67. package/dist/services/transactions/__tests__/json/formatted-relay-adapt-error-logs.json +0 -216
  68. package/dist/services/transactions/__tests__/proof-cache.test.d.ts +0 -1
  69. package/dist/services/transactions/__tests__/proof-cache.test.js +0 -128
  70. package/dist/services/transactions/__tests__/proof-cache.test.js.map +0 -1
  71. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.d.ts +0 -1
  72. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +0 -385
  73. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +0 -1
  74. package/dist/services/transactions/__tests__/tx-decrypt.test.d.ts +0 -0
  75. package/dist/services/transactions/__tests__/tx-decrypt.test.js +0 -2
  76. package/dist/services/transactions/__tests__/tx-decrypt.test.js.map +0 -1
  77. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.d.ts +0 -1
  78. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js +0 -101
  79. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +0 -1
  80. package/dist/services/transactions/__tests__/tx-encrypt.test.d.ts +0 -0
  81. package/dist/services/transactions/__tests__/tx-encrypt.test.js +0 -2
  82. package/dist/services/transactions/__tests__/tx-encrypt.test.js.map +0 -1
  83. package/dist/services/transactions/__tests__/tx-gas-details.test.d.ts +0 -1
  84. package/dist/services/transactions/__tests__/tx-gas-details.test.js +0 -112
  85. package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +0 -1
  86. package/dist/services/transactions/__tests__/tx-notes.test.d.ts +0 -1
  87. package/dist/services/transactions/__tests__/tx-notes.test.js +0 -193
  88. package/dist/services/transactions/__tests__/tx-notes.test.js.map +0 -1
  89. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.d.ts +0 -1
  90. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js +0 -50
  91. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js.map +0 -1
  92. package/dist/services/transactions/__tests__/tx-transfer.test.d.ts +0 -1
  93. package/dist/services/transactions/__tests__/tx-transfer.test.js +0 -280
  94. package/dist/services/transactions/__tests__/tx-transfer.test.js.map +0 -1
  95. package/dist/tests/balances.test.d.ts +0 -1
  96. package/dist/tests/balances.test.js +0 -419
  97. package/dist/tests/balances.test.js.map +0 -1
  98. package/dist/tests/helper.test.d.ts +0 -3
  99. package/dist/tests/helper.test.js +0 -16
  100. package/dist/tests/helper.test.js.map +0 -1
  101. package/dist/tests/mocks.test.d.ts +0 -50
  102. package/dist/tests/mocks.test.js +0 -202
  103. package/dist/tests/mocks.test.js.map +0 -1
  104. package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +0 -10
  105. package/dist/tests/poi/test-wallet-poi-requester.test.js +0 -15
  106. package/dist/tests/poi/test-wallet-poi-requester.test.js.map +0 -1
  107. package/dist/tests/setup.test.d.ts +0 -9
  108. package/dist/tests/setup.test.js +0 -110
  109. package/dist/tests/setup.test.js.map +0 -1
  110. package/dist/tests/stubs/engine-stubs.test.d.ts +0 -7
  111. package/dist/tests/stubs/engine-stubs.test.js +0 -75
  112. package/dist/tests/stubs/engine-stubs.test.js.map +0 -1
  113. package/dist/utils/__tests__/blocked-address.test.d.ts +0 -1
  114. package/dist/utils/__tests__/blocked-address.test.js +0 -23
  115. package/dist/utils/__tests__/blocked-address.test.js.map +0 -1
  116. package/dist/utils/__tests__/logger.test.d.ts +0 -1
  117. package/dist/utils/__tests__/logger.test.js +0 -28
  118. package/dist/utils/__tests__/logger.test.js.map +0 -1
  119. package/dist/utils/__tests__/utils.test.d.ts +0 -1
  120. package/dist/utils/__tests__/utils.test.js +0 -21
  121. package/dist/utils/__tests__/utils.test.js.map +0 -1
@@ -1,112 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const chai_1 = __importDefault(require("chai"));
7
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
8
- const sinon_1 = __importDefault(require("sinon"));
9
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
10
- const mocks_test_1 = require("../../../tests/mocks.test");
11
- const tx_gas_details_1 = require("../tx-gas-details");
12
- const dop_1 = require("../../dop");
13
- const ethers_1 = require("ethers");
14
- const helper_test_1 = require("../../../tests/helper.test");
15
- let gasEstimateStub;
16
- const txidVersion = (0, helper_test_1.getTestTXIDVersion)();
17
- chai_1.default.use(chai_as_promised_1.default);
18
- const { expect } = chai_1.default;
19
- const stubGasEstimateSuccess = () => {
20
- gasEstimateStub = sinon_1.default.stub(ethers_1.FallbackProvider.prototype, 'estimateGas').resolves(BigInt('200'));
21
- };
22
- describe('tx-gas', () => {
23
- afterEach(() => {
24
- gasEstimateStub?.restore();
25
- });
26
- it('Should format gas estimate response', async () => {
27
- const transaction = {};
28
- const fallbackProvider = (0, dop_sharedmodels_v3_1.createFallbackProviderFromJsonConfig)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON);
29
- (0, dop_1.setFallbackProviderForNetwork)(dop_sharedmodels_v3_1.NetworkName.Polygon, fallbackProvider);
30
- const gasEstimate = await (0, tx_gas_details_1.getGasEstimate)(txidVersion, dop_sharedmodels_v3_1.NetworkName.Polygon, transaction, mocks_test_1.MOCK_ETH_WALLET_ADDRESS, true, // sendWithPublicWallet
31
- false);
32
- const isGasEstimateWithDummyProof = false;
33
- const rsp = (0, tx_gas_details_1.gasEstimateResponse)(gasEstimate, undefined, // broadcasterFeeCommitment
34
- isGasEstimateWithDummyProof);
35
- const expectedGas = 53000n; // This field may vary
36
- const variance = 0.05; // 5%
37
- const lowerBound = Number(expectedGas) * (1 - variance);
38
- const upperBound = Number(expectedGas) * (1 + variance);
39
- expect(Number(rsp.gasEstimate)).to.be.within(lowerBound, upperBound);
40
- }).timeout(6000);
41
- it('Should pull gas estimate for basic transaction - self-signed', async () => {
42
- stubGasEstimateSuccess();
43
- const fallbackProvider = (0, dop_sharedmodels_v3_1.createFallbackProviderFromJsonConfig)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON);
44
- (0, dop_1.setFallbackProviderForNetwork)(dop_sharedmodels_v3_1.NetworkName.Polygon, fallbackProvider);
45
- const tx = {
46
- chainId: 137n,
47
- to: mocks_test_1.MOCK_ETH_WALLET_ADDRESS,
48
- value: BigInt('100'),
49
- data: '0x',
50
- };
51
- const gasEstimate = await (0, tx_gas_details_1.getGasEstimate)(txidVersion, dop_sharedmodels_v3_1.NetworkName.Polygon, tx, mocks_test_1.MOCK_ETH_WALLET_ADDRESS, true, // sendWithPublicWallet
52
- false);
53
- const isGasEstimateWithDummyProof = true;
54
- const rsp = (0, tx_gas_details_1.gasEstimateResponse)(gasEstimate, undefined, // broadcasterFeeCommitment
55
- isGasEstimateWithDummyProof);
56
- expect(rsp.gasEstimate).to.not.be.undefined;
57
- }).timeout(60000);
58
- it('Should pull gas estimate for basic transaction - broadcaster', async () => {
59
- stubGasEstimateSuccess();
60
- const fallbackProvider = (0, dop_sharedmodels_v3_1.createFallbackProviderFromJsonConfig)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON);
61
- (0, dop_1.setFallbackProviderForNetwork)(dop_sharedmodels_v3_1.NetworkName.Polygon, fallbackProvider);
62
- const tx = {
63
- chainId: 137n,
64
- to: mocks_test_1.MOCK_ETH_WALLET_ADDRESS,
65
- value: BigInt('100'),
66
- data: '0x',
67
- };
68
- const gasEstimate = await (0, tx_gas_details_1.getGasEstimate)(txidVersion, dop_sharedmodels_v3_1.NetworkName.Polygon, tx, mocks_test_1.MOCK_ETH_WALLET_ADDRESS, false, // sendWithPublicWallet
69
- false);
70
- const isGasEstimateWithDummyProof = true;
71
- const rsp = (0, tx_gas_details_1.gasEstimateResponse)(gasEstimate, {}, isGasEstimateWithDummyProof);
72
- expect(rsp.gasEstimate).to.not.be.undefined;
73
- }).timeout(60000);
74
- it('Should set gas details for populated tx', () => {
75
- const transaction = {};
76
- const gasDetailsType0 = {
77
- evmGasType: dop_sharedmodels_v3_1.EVMGasType.Type0,
78
- gasEstimate: 100000n,
79
- gasPrice: 500n,
80
- };
81
- const gasDetailsType1 = {
82
- evmGasType: dop_sharedmodels_v3_1.EVMGasType.Type1,
83
- gasEstimate: 100000n,
84
- gasPrice: 500n,
85
- };
86
- const gasDetailsType2 = {
87
- evmGasType: dop_sharedmodels_v3_1.EVMGasType.Type2,
88
- gasEstimate: 120000n,
89
- maxFeePerGas: 10000n,
90
- maxPriorityFeePerGas: 500n,
91
- };
92
- // Polygon - self-sign
93
- (0, tx_gas_details_1.setGasDetailsForTransaction)(dop_sharedmodels_v3_1.NetworkName.Polygon, transaction, gasDetailsType2, true);
94
- expect(transaction.type).to.equal(2);
95
- expect(transaction.gasLimit).to.equal(144000n);
96
- expect(transaction.gasPrice).to.be.undefined;
97
- expect(transaction.maxFeePerGas).to.equal(10000n);
98
- expect(transaction.maxPriorityFeePerGas).to.equal(500n);
99
- // Polygon - Broadcaster
100
- (0, tx_gas_details_1.setGasDetailsForTransaction)(dop_sharedmodels_v3_1.NetworkName.Polygon, transaction, gasDetailsType1, false);
101
- // BNB - self-sign
102
- (0, tx_gas_details_1.setGasDetailsForTransaction)(dop_sharedmodels_v3_1.NetworkName.BNBChain, transaction, gasDetailsType0, true);
103
- // BNB - Broadcaster
104
- (0, tx_gas_details_1.setGasDetailsForTransaction)(dop_sharedmodels_v3_1.NetworkName.BNBChain, transaction, gasDetailsType0, false);
105
- expect(() => (0, tx_gas_details_1.setGasDetailsForTransaction)(dop_sharedmodels_v3_1.NetworkName.Polygon, transaction, gasDetailsType2, // mismatch
106
- true)).to.throw;
107
- expect(transaction.type).to.equal(0);
108
- expect(transaction.gasLimit).to.equal(120000n);
109
- expect(transaction.gasPrice).to.equal(500n);
110
- });
111
- });
112
- //# sourceMappingURL=tx-gas-details.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tx-gas-details.test.js","sourceRoot":"","sources":["../../../../src/services/transactions/__tests__/tx-gas-details.test.ts"],"names":[],"mappings":"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","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport Sinon, { SinonStub } from 'sinon';\nimport {\n CommitmentSummary,\n createFallbackProviderFromJsonConfig,\n EVMGasType,\n NetworkName,\n TransactionGasDetails,\n} from 'dop-sharedmodels-v3';\nimport {\n MOCK_ETH_WALLET_ADDRESS,\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON,\n} from '../../../tests/mocks.test';\nimport {\n gasEstimateResponse,\n getGasEstimate,\n setGasDetailsForTransaction,\n} from '../tx-gas-details';\nimport { setFallbackProviderForNetwork } from '../../dop';\nimport { ContractTransaction, FallbackProvider } from 'ethers';\nimport { getTestTXIDVersion } from '../../../tests/helper.test';\n\nlet gasEstimateStub: SinonStub;\n\nconst txidVersion = getTestTXIDVersion();\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\n\nconst stubGasEstimateSuccess = () => {\n gasEstimateStub = Sinon.stub(\n FallbackProvider.prototype,\n 'estimateGas',\n ).resolves(BigInt('200'));\n};\n\ndescribe('tx-gas', () => {\n afterEach(() => {\n gasEstimateStub?.restore();\n });\n\n it('Should format gas estimate response', async () => {\n const transaction = {} as ContractTransaction;\n const fallbackProvider = createFallbackProviderFromJsonConfig(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON,\n );\n\n setFallbackProviderForNetwork(\n NetworkName.Polygon,\n fallbackProvider as unknown as FallbackProvider,\n );\n\n const gasEstimate = await getGasEstimate(\n txidVersion,\n NetworkName.Polygon,\n transaction,\n MOCK_ETH_WALLET_ADDRESS,\n true, // sendWithPublicWallet\n false, // isCrossContractCall\n );\n\n const isGasEstimateWithDummyProof = false;\n const rsp = gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n\n const expectedGas = 53000n; // This field may vary\n const variance = 0.05; // 5%\n const lowerBound = Number(expectedGas) * (1 - variance);\n const upperBound = Number(expectedGas) * (1 + variance);\n\n expect(Number(rsp.gasEstimate)).to.be.within(lowerBound, upperBound);\n }).timeout(6000);\n\n it('Should pull gas estimate for basic transaction - self-signed', async () => {\n stubGasEstimateSuccess();\n const fallbackProvider = createFallbackProviderFromJsonConfig(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON,\n );\n setFallbackProviderForNetwork(\n NetworkName.Polygon,\n fallbackProvider as unknown as FallbackProvider,\n );\n const tx: ContractTransaction = {\n chainId: 137n,\n to: MOCK_ETH_WALLET_ADDRESS,\n value: BigInt('100'),\n data: '0x',\n };\n\n const gasEstimate = await getGasEstimate(\n txidVersion,\n NetworkName.Polygon,\n tx,\n MOCK_ETH_WALLET_ADDRESS,\n true, // sendWithPublicWallet\n false, // isCrossContractCall\n );\n const isGasEstimateWithDummyProof = true;\n const rsp = gasEstimateResponse(\n gasEstimate,\n undefined, // broadcasterFeeCommitment\n isGasEstimateWithDummyProof,\n );\n expect(rsp.gasEstimate).to.not.be.undefined;\n }).timeout(60_000);\n\n it('Should pull gas estimate for basic transaction - broadcaster', async () => {\n stubGasEstimateSuccess();\n const fallbackProvider = createFallbackProviderFromJsonConfig(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_POLYGON,\n );\n setFallbackProviderForNetwork(\n NetworkName.Polygon,\n fallbackProvider as unknown as FallbackProvider,\n );\n const tx: ContractTransaction = {\n chainId: 137n,\n to: MOCK_ETH_WALLET_ADDRESS,\n value: BigInt('100'),\n data: '0x',\n };\n const gasEstimate = await getGasEstimate(\n txidVersion,\n NetworkName.Polygon,\n tx,\n MOCK_ETH_WALLET_ADDRESS,\n false, // sendWithPublicWallet\n false, // isCrossContractCall\n );\n const isGasEstimateWithDummyProof = true;\n const rsp = gasEstimateResponse(\n gasEstimate,\n {} as CommitmentSummary,\n isGasEstimateWithDummyProof,\n );\n expect(rsp.gasEstimate).to.not.be.undefined;\n }).timeout(60_000);\n\n it('Should set gas details for populated tx', () => {\n const transaction = {} as ContractTransaction;\n const gasDetailsType0: TransactionGasDetails = {\n evmGasType: EVMGasType.Type0,\n gasEstimate: 100_000n,\n gasPrice: 500n,\n };\n const gasDetailsType1: TransactionGasDetails = {\n evmGasType: EVMGasType.Type1,\n gasEstimate: 100_000n,\n gasPrice: 500n,\n };\n const gasDetailsType2: TransactionGasDetails = {\n evmGasType: EVMGasType.Type2,\n gasEstimate: 120_000n,\n maxFeePerGas: 10_000n,\n maxPriorityFeePerGas: 500n,\n };\n // Polygon - self-sign\n setGasDetailsForTransaction(\n NetworkName.Polygon,\n transaction,\n gasDetailsType2,\n true, // sendWithPublicWallet\n );\n expect(transaction.type).to.equal(2);\n expect(transaction.gasLimit).to.equal(144_000n);\n expect(transaction.gasPrice).to.be.undefined;\n expect(transaction.maxFeePerGas).to.equal(10_000n);\n expect(transaction.maxPriorityFeePerGas).to.equal(500n);\n // Polygon - Broadcaster\n setGasDetailsForTransaction(\n NetworkName.Polygon,\n transaction,\n gasDetailsType1,\n false, // sendWithPublicWallet\n );\n // BNB - self-sign\n setGasDetailsForTransaction(\n NetworkName.BNBChain,\n transaction,\n gasDetailsType0,\n true, // sendWithPublicWallet\n );\n // BNB - Broadcaster\n setGasDetailsForTransaction(\n NetworkName.BNBChain,\n transaction,\n gasDetailsType0,\n false, // sendWithPublicWallet\n );\n expect(() =>\n setGasDetailsForTransaction(\n NetworkName.Polygon,\n transaction,\n gasDetailsType2, // mismatch\n true, // sendWithPublicWallet\n ),\n ).to.throw;\n expect(transaction.type).to.equal(0);\n expect(transaction.gasLimit).to.equal(120000n);\n expect(transaction.gasPrice).to.equal(500n);\n });\n});\n"]}
@@ -1,193 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- const dop_engine_v3_1 = require("dop-engine-v3");
7
- const chai_1 = __importDefault(require("chai"));
8
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
9
- const mocks_test_1 = require("../../../tests/mocks.test");
10
- const setup_test_1 = require("../../../tests/setup.test");
11
- const wallets_1 = require("../../dop/wallets/wallets");
12
- const tx_notes_1 = require("../tx-notes");
13
- const MOCK_TOKEN = '0x236c614a38362644deb15c9789779faf508bc6fe';
14
- chai_1.default.use(chai_as_promised_1.default);
15
- const { expect } = chai_1.default;
16
- const padTo32BytesUnHex = (str) => {
17
- return dop_engine_v3_1.ByteUtils.padToLength(dop_engine_v3_1.ByteUtils.strip0x(str), dop_engine_v3_1.ByteLength.UINT_256);
18
- };
19
- const formatAmountString = (erc20Amount) => {
20
- return BigInt(erc20Amount.amount);
21
- };
22
- let dopWalletID;
23
- describe('tx-notes', () => {
24
- before(async function run() {
25
- this.timeout(60000);
26
- await (0, setup_test_1.initTestEngine)();
27
- await (0, setup_test_1.initTestEngineNetworks)();
28
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC, undefined);
29
- dopWalletID = dopWalletInfo.id;
30
- });
31
- after(async () => {
32
- await (0, setup_test_1.closeTestEngine)();
33
- });
34
- it('Should test erc20 note creation', () => {
35
- const erc20AmountRecipient = {
36
- tokenAddress: MOCK_TOKEN,
37
- amount: BigInt(0x100),
38
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
39
- };
40
- const dopWallet = (0, wallets_1.fullWalletForID)(dopWalletID);
41
- const note = (0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, dopWallet, dop_engine_v3_1.OutputType.Transfer, true, // showSenderAddressToRecipient
42
- mocks_test_1.MOCK_MEMO);
43
- const addressData = dop_engine_v3_1.DopEngine.decodeAddress(mocks_test_1.MOCK_DOP_WALLET_ADDRESS);
44
- expect(note.value).to.equal(formatAmountString(erc20AmountRecipient));
45
- expect(note.receiverAddressData.masterPublicKey).to.equal(addressData.masterPublicKey);
46
- expect(note.tokenHash).to.equal(padTo32BytesUnHex(MOCK_TOKEN));
47
- });
48
- it('Should test NFT note creation', () => {
49
- const erc20AmountRecipient = {
50
- tokenAddress: MOCK_TOKEN,
51
- amount: BigInt(0x100),
52
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
53
- };
54
- const dopWallet = (0, wallets_1.fullWalletForID)(dopWalletID);
55
- const note = (0, tx_notes_1.erc20NoteFromERC20AmountRecipient)(erc20AmountRecipient, dopWallet, dop_engine_v3_1.OutputType.Transfer, true, // showSenderAddressToRecipient
56
- mocks_test_1.MOCK_MEMO);
57
- const addressData = dop_engine_v3_1.DopEngine.decodeAddress(mocks_test_1.MOCK_DOP_WALLET_ADDRESS);
58
- expect(note.value).to.equal(formatAmountString(erc20AmountRecipient));
59
- expect(note.receiverAddressData.masterPublicKey).to.equal(addressData.masterPublicKey);
60
- expect(note.tokenHash).to.equal(padTo32BytesUnHex(MOCK_TOKEN));
61
- });
62
- it('Should test token array comparisons', () => {
63
- const erc20AmountRecipients1 = [
64
- {
65
- tokenAddress: '1',
66
- amount: 100n,
67
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
68
- },
69
- {
70
- tokenAddress: '2',
71
- amount: BigInt(200),
72
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
73
- },
74
- {
75
- tokenAddress: '3',
76
- amount: 300n,
77
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
78
- },
79
- ];
80
- // Same same
81
- const erc20AmountRecipients2 = [
82
- {
83
- tokenAddress: '1',
84
- amount: 100n,
85
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
86
- },
87
- {
88
- tokenAddress: '2',
89
- amount: BigInt(200),
90
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
91
- },
92
- {
93
- tokenAddress: '3',
94
- amount: 300n,
95
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
96
- },
97
- ];
98
- // Different addresses
99
- const erc20AmountRecipients3 = [
100
- {
101
- tokenAddress: '1',
102
- amount: 100n,
103
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
104
- },
105
- {
106
- tokenAddress: '3',
107
- amount: BigInt(200),
108
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
109
- },
110
- {
111
- tokenAddress: '5',
112
- amount: 300n,
113
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
114
- },
115
- ];
116
- // Different amounts
117
- const erc20AmountRecipients4 = [
118
- {
119
- tokenAddress: '1',
120
- amount: 100n,
121
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
122
- },
123
- {
124
- tokenAddress: '2',
125
- amount: 300n,
126
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
127
- },
128
- {
129
- tokenAddress: '3',
130
- amount: BigInt(200),
131
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
132
- },
133
- ];
134
- // Different recipients
135
- const erc20AmountRecipients5 = [
136
- {
137
- tokenAddress: '1',
138
- amount: 100n,
139
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
140
- },
141
- {
142
- tokenAddress: '2',
143
- amount: BigInt(200),
144
- recipientAddress: mocks_test_1.MOCK_DOP_WALLET_ADDRESS,
145
- },
146
- {
147
- tokenAddress: '3',
148
- amount: 300n,
149
- recipientAddress: mocks_test_1.MOCK_ETH_WALLET_ADDRESS,
150
- },
151
- ];
152
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(erc20AmountRecipients1, erc20AmountRecipients2)).to.be.true;
153
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(erc20AmountRecipients1, erc20AmountRecipients3)).to.be.false;
154
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(erc20AmountRecipients1, erc20AmountRecipients4)).to.be.false;
155
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(erc20AmountRecipients1, erc20AmountRecipients5)).to.be.false;
156
- });
157
- it('Should compare erc20 amount recipients', () => {
158
- const sameA = [
159
- {
160
- tokenAddress: '0x1234',
161
- amount: 100n,
162
- recipientAddress: 'hello',
163
- },
164
- {
165
- tokenAddress: '0x1234',
166
- amount: BigInt(200),
167
- recipientAddress: 'hello2',
168
- },
169
- ];
170
- const sameB = [
171
- {
172
- tokenAddress: '0x1234',
173
- amount: BigInt(200),
174
- recipientAddress: 'hello2',
175
- },
176
- {
177
- tokenAddress: '0x1234',
178
- amount: 100n,
179
- recipientAddress: 'hello',
180
- },
181
- ];
182
- const differentC = [
183
- {
184
- tokenAddress: '0x1234',
185
- amount: 100n,
186
- recipientAddress: 'hello',
187
- },
188
- ];
189
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(sameA, sameB)).to.be.true;
190
- expect((0, tx_notes_1.compareERC20AmountRecipientArrays)(sameA, differentC)).to.be.false;
191
- });
192
- });
193
- //# sourceMappingURL=tx-notes.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tx-notes.test.js","sourceRoot":"","sources":["../../../../src/services/transactions/__tests__/tx-notes.test.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n OutputType,\n ByteLength,\n ByteUtils,\n DopEngine,\n} from 'dop-engine-v3';\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {\n DopERC20Amount,\n DopERC20AmountRecipient,\n} from 'dop-sharedmodels-v3';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_ETH_WALLET_ADDRESS,\n MOCK_MEMO,\n MOCK_MNEMONIC,\n MOCK_DOP_WALLET_ADDRESS,\n} from '../../../tests/mocks.test';\nimport {\n closeTestEngine,\n initTestEngine,\n initTestEngineNetworks,\n} from '../../../tests/setup.test';\nimport {\n createDopWallet,\n fullWalletForID,\n} from '../../dop/wallets/wallets';\nimport {\n compareERC20AmountRecipientArrays,\n erc20NoteFromERC20AmountRecipient,\n} from '../tx-notes';\n\nconst MOCK_TOKEN = '0x236c614a38362644deb15c9789779faf508bc6fe';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nconst padTo32BytesUnHex = (str: string) => {\n return ByteUtils.padToLength(ByteUtils.strip0x(str), ByteLength.UINT_256);\n};\n\nconst formatAmountString = (erc20Amount: DopERC20Amount) => {\n return BigInt(erc20Amount.amount);\n};\n\nlet dopWalletID: string;\n\ndescribe('tx-notes', () => {\n before(async function run() {\n this.timeout(60_000);\n await initTestEngine();\n await initTestEngineNetworks();\n const dopWalletInfo = await createDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC,\n undefined, // creationBlockNumbers\n );\n dopWalletID = dopWalletInfo.id;\n });\n after(async () => {\n await closeTestEngine();\n });\n\n it('Should test erc20 note creation', () => {\n const erc20AmountRecipient: DopERC20AmountRecipient = {\n tokenAddress: MOCK_TOKEN,\n amount: BigInt(0x100),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n };\n const dopWallet = fullWalletForID(dopWalletID);\n const note = erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n true, // showSenderAddressToRecipient\n MOCK_MEMO,\n );\n\n const addressData = DopEngine.decodeAddress(\n MOCK_DOP_WALLET_ADDRESS,\n );\n\n expect(note.value).to.equal(formatAmountString(erc20AmountRecipient));\n expect(note.receiverAddressData.masterPublicKey).to.equal(\n addressData.masterPublicKey,\n );\n expect(note.tokenHash).to.equal(padTo32BytesUnHex(MOCK_TOKEN));\n });\n\n it('Should test NFT note creation', () => {\n const erc20AmountRecipient: DopERC20AmountRecipient = {\n tokenAddress: MOCK_TOKEN,\n amount: BigInt(0x100),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n };\n const dopWallet = fullWalletForID(dopWalletID);\n const note = erc20NoteFromERC20AmountRecipient(\n erc20AmountRecipient,\n dopWallet,\n OutputType.Transfer,\n true, // showSenderAddressToRecipient\n MOCK_MEMO,\n );\n\n const addressData = DopEngine.decodeAddress(\n MOCK_DOP_WALLET_ADDRESS,\n );\n\n expect(note.value).to.equal(formatAmountString(erc20AmountRecipient));\n expect(note.receiverAddressData.masterPublicKey).to.equal(\n addressData.masterPublicKey,\n );\n expect(note.tokenHash).to.equal(padTo32BytesUnHex(MOCK_TOKEN));\n });\n\n it('Should test token array comparisons', () => {\n const erc20AmountRecipients1: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '1',\n amount: 100n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '2',\n amount: BigInt(200),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '3',\n amount: 300n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n ];\n\n // Same same\n const erc20AmountRecipients2: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '1',\n amount: 100n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '2',\n amount: BigInt(200),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '3',\n amount: 300n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n ];\n\n // Different addresses\n const erc20AmountRecipients3: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '1',\n amount: 100n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '3',\n amount: BigInt(200),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '5',\n amount: 300n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n ];\n\n // Different amounts\n const erc20AmountRecipients4: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '1',\n amount: 100n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '2',\n amount: 300n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '3',\n amount: BigInt(200),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n ];\n\n // Different recipients\n const erc20AmountRecipients5: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '1',\n amount: 100n,\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '2',\n amount: BigInt(200),\n recipientAddress: MOCK_DOP_WALLET_ADDRESS,\n },\n {\n tokenAddress: '3',\n amount: 300n,\n recipientAddress: MOCK_ETH_WALLET_ADDRESS,\n },\n ];\n\n expect(\n compareERC20AmountRecipientArrays(\n erc20AmountRecipients1,\n erc20AmountRecipients2,\n ),\n ).to.be.true;\n expect(\n compareERC20AmountRecipientArrays(\n erc20AmountRecipients1,\n erc20AmountRecipients3,\n ),\n ).to.be.false;\n expect(\n compareERC20AmountRecipientArrays(\n erc20AmountRecipients1,\n erc20AmountRecipients4,\n ),\n ).to.be.false;\n expect(\n compareERC20AmountRecipientArrays(\n erc20AmountRecipients1,\n erc20AmountRecipients5,\n ),\n ).to.be.false;\n });\n\n it('Should compare erc20 amount recipients', () => {\n const sameA: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '0x1234',\n amount: 100n,\n recipientAddress: 'hello',\n },\n {\n tokenAddress: '0x1234',\n amount: BigInt(200),\n recipientAddress: 'hello2',\n },\n ];\n const sameB: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '0x1234',\n amount: BigInt(200),\n recipientAddress: 'hello2',\n },\n {\n tokenAddress: '0x1234',\n amount: 100n,\n recipientAddress: 'hello',\n },\n ];\n const differentC: DopERC20AmountRecipient[] = [\n {\n tokenAddress: '0x1234',\n amount: 100n,\n recipientAddress: 'hello',\n },\n ];\n\n expect(compareERC20AmountRecipientArrays(sameA, sameB)).to.be.true;\n expect(compareERC20AmountRecipientArrays(sameA, differentC)).to.be.false;\n });\n});\n"]}
@@ -1,50 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const chai_1 = require("chai");
4
- const tx_proof_transfer_with_data_1 = require("../tx-proof-transfer-with-data");
5
- describe('tx-proof-transfer-with-data', () => {
6
- describe('Function exports and signatures', () => {
7
- it('should export generateTransferProof function that returns proved transactions array', () => {
8
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProof).to.be.a('function');
9
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProof.length).to.equal(12); // Should have 12 parameters
10
- });
11
- it('should export generateTransferProofForExplorer function that returns Promise<void>', () => {
12
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProofForExplorer).to.be.a('function');
13
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProofForExplorer.length).to.equal(12); // Should have 12 parameters
14
- });
15
- it('should maintain naming consistency for frontend developers', () => {
16
- // The main function that frontend developers will use should be generateTransferProof
17
- // and it should return the proved transactions array (not void)
18
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProof).to.be.a('function');
19
- (0, chai_1.expect)(tx_proof_transfer_with_data_1.generateTransferProofForExplorer).to.be.a('function');
20
- // Both functions should exist and be callable
21
- // generateTransferProof is the one that returns proved transactions array
22
- // generateTransferProofForExplorer is the internal one that returns void
23
- });
24
- });
25
- describe('Integration behavior (may fail in test environment)', () => {
26
- it('should attempt to call generateTransferProof and handle expected failures gracefully', async () => {
27
- // This test expects to fail due to missing DOP engine initialization
28
- // But it verifies the function structure and error handling
29
- try {
30
- // This will likely fail, but that's expected in test environment
31
- const result = await (0, tx_proof_transfer_with_data_1.generateTransferProof)('V3_PoseidonMerkle', // Using string to avoid import issues
32
- 'Polygon', 'test-wallet-id', 'test-encryption-key', true, 'test memo', [], [], undefined, false, undefined, () => { });
33
- // If we get here, the function worked (unlikely in test env)
34
- console.log('✅ generateTransferProof executed successfully');
35
- // Verify it returns an array (proved transactions)
36
- (0, chai_1.expect)(result).to.be.an('array');
37
- }
38
- catch (error) {
39
- // This is expected in test environment
40
- console.log('⚠️ Expected failure in test environment:', error.message);
41
- // Verify the error is what we expect (DOP engine not initialized)
42
- (0, chai_1.expect)(error.message).to.satisfy((msg) => msg.includes('not yet initialized') ||
43
- msg.includes('No cached proof') ||
44
- msg.includes('MOCK_DB_ENCRYPTION_KEY') ||
45
- msg.includes('DOP Engine'));
46
- }
47
- });
48
- });
49
- });
50
- //# sourceMappingURL=tx-proof-transfer-with-data.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tx-proof-transfer-with-data.test.js","sourceRoot":"","sources":["../../../../src/services/transactions/__tests__/tx-proof-transfer-with-data.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAC9B,gFAGwC;AAExC,QAAQ,CAAC,6BAA6B,EAAE,GAAG,EAAE;IAC3C,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;QAC/C,EAAE,CAAC,qFAAqF,EAAE,GAAG,EAAE;YAC7F,IAAA,aAAM,EAAC,mDAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAClD,IAAA,aAAM,EAAC,mDAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;QACjF,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oFAAoF,EAAE,GAAG,EAAE;YAC5F,IAAA,aAAM,EAAC,8DAAgC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAA,aAAM,EAAC,8DAAgC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,4BAA4B;QAC5F,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,sFAAsF;YACtF,gEAAgE;YAChE,IAAA,aAAM,EAAC,mDAAqB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAClD,IAAA,aAAM,EAAC,8DAAgC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YAE7D,8CAA8C;YAC9C,0EAA0E;YAC1E,yEAAyE;QAC3E,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,qDAAqD,EAAE,GAAG,EAAE;QACnE,EAAE,CAAC,sFAAsF,EAAE,KAAK,IAAI,EAAE;YACpG,qEAAqE;YACrE,4DAA4D;YAE5D,IAAI;gBACF,iEAAiE;gBACjE,MAAM,MAAM,GAAG,MAAM,IAAA,mDAAqB,EACxC,mBAA0B,EAAE,sCAAsC;gBAClE,SAAgB,EAChB,gBAAgB,EAChB,qBAAqB,EACrB,IAAI,EACJ,WAAW,EACX,EAAE,EACF,EAAE,EACF,SAAS,EACT,KAAK,EACL,SAAS,EACT,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;gBAEF,6DAA6D;gBAC7D,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;gBAE7D,mDAAmD;gBACnD,IAAA,aAAM,EAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;aAElC;YAAC,OAAO,KAAK,EAAE;gBACd,uCAAuC;gBACvC,OAAO,CAAC,GAAG,CAAC,2CAA2C,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;gBAExE,kEAAkE;gBAClE,IAAA,aAAM,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,GAAW,EAAE,EAAE,CAC/C,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC;oBACnC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC;oBAC/B,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC;oBACtC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC3B,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { expect } from 'chai';\nimport { \n generateTransferProof, \n generateTransferProofForExplorer\n} from '../tx-proof-transfer-with-data';\n\ndescribe('tx-proof-transfer-with-data', () => {\n describe('Function exports and signatures', () => {\n it('should export generateTransferProof function that returns proved transactions array', () => {\n expect(generateTransferProof).to.be.a('function');\n expect(generateTransferProof.length).to.equal(12); // Should have 12 parameters\n });\n\n it('should export generateTransferProofForExplorer function that returns Promise<void>', () => {\n expect(generateTransferProofForExplorer).to.be.a('function');\n expect(generateTransferProofForExplorer.length).to.equal(12); // Should have 12 parameters\n });\n\n it('should maintain naming consistency for frontend developers', () => {\n // The main function that frontend developers will use should be generateTransferProof\n // and it should return the proved transactions array (not void)\n expect(generateTransferProof).to.be.a('function');\n expect(generateTransferProofForExplorer).to.be.a('function');\n \n // Both functions should exist and be callable\n // generateTransferProof is the one that returns proved transactions array\n // generateTransferProofForExplorer is the internal one that returns void\n });\n });\n\n describe('Integration behavior (may fail in test environment)', () => {\n it('should attempt to call generateTransferProof and handle expected failures gracefully', async () => {\n // This test expects to fail due to missing DOP engine initialization\n // But it verifies the function structure and error handling\n \n try {\n // This will likely fail, but that's expected in test environment\n const result = await generateTransferProof(\n 'V3_PoseidonMerkle' as any, // Using string to avoid import issues\n 'Polygon' as any,\n 'test-wallet-id',\n 'test-encryption-key',\n true,\n 'test memo',\n [],\n [],\n undefined,\n false,\n undefined,\n () => {},\n );\n \n // If we get here, the function worked (unlikely in test env)\n console.log('✅ generateTransferProof executed successfully');\n \n // Verify it returns an array (proved transactions)\n expect(result).to.be.an('array');\n \n } catch (error) {\n // This is expected in test environment\n console.log('⚠️ Expected failure in test environment:', error.message);\n \n // Verify the error is what we expect (DOP engine not initialized)\n expect(error.message).to.satisfy((msg: string) => \n msg.includes('not yet initialized') || \n msg.includes('No cached proof') ||\n msg.includes('MOCK_DB_ENCRYPTION_KEY') ||\n msg.includes('DOP Engine')\n );\n }\n });\n });\n});\n"]}