dop-wallet-v6 1.3.1 → 1.3.31

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 (124) hide show
  1. package/.eslintrc.js +5 -0
  2. package/dist/services/dop/core/react-native-init.d.ts +2 -2
  3. package/dist/services/dop/core/react-native-init.js +36 -15
  4. package/dist/services/dop/core/react-native-init.js.map +1 -1
  5. package/dist/services/dop/crypto/react-native-crypto-provider.js +4 -2
  6. package/dist/services/dop/crypto/react-native-crypto-provider.js.map +1 -1
  7. package/dist/services/dop/wallets/balances.js +49 -2
  8. package/dist/services/dop/wallets/balances.js.map +1 -1
  9. package/dist/services/dop/wallets/wallets.js +12 -17
  10. package/dist/services/dop/wallets/wallets.js.map +1 -1
  11. package/package.json +6 -1
  12. package/patches/dop-engine-v3+1.4.9.patch +55 -33
  13. package/dist/__tests__/index.test.d.ts +0 -1
  14. package/dist/__tests__/index.test.js +0 -13
  15. package/dist/__tests__/index.test.js.map +0 -1
  16. package/dist/services/artifacts/__tests__/artifact-downloader.test.d.ts +0 -1
  17. package/dist/services/artifacts/__tests__/artifact-downloader.test.js +0 -70
  18. package/dist/services/artifacts/__tests__/artifact-downloader.test.js.map +0 -1
  19. package/dist/services/dop/__tests__/integration.test.d.ts +0 -1
  20. package/dist/services/dop/__tests__/integration.test.js +0 -378
  21. package/dist/services/dop/__tests__/integration.test.js.map +0 -1
  22. package/dist/services/dop/core/__tests__/engine.test.d.ts +0 -1
  23. package/dist/services/dop/core/__tests__/engine.test.js +0 -30
  24. package/dist/services/dop/core/__tests__/engine.test.js.map +0 -1
  25. package/dist/services/dop/core/__tests__/providers.test.d.ts +0 -1
  26. package/dist/services/dop/core/__tests__/providers.test.js +0 -69
  27. package/dist/services/dop/core/__tests__/providers.test.js.map +0 -1
  28. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.d.ts +0 -1
  29. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js +0 -168
  30. package/dist/services/dop/dop-txids/__tests__/dop-txid-sync-graph-v2.test.js.map +0 -1
  31. package/dist/services/dop/history/__tests__/transaction-history.test.d.ts +0 -0
  32. package/dist/services/dop/history/__tests__/transaction-history.test.js +0 -2
  33. package/dist/services/dop/history/__tests__/transaction-history.test.js.map +0 -1
  34. package/dist/services/dop/profile/__tests__/profile-manager.test.d.ts +0 -1
  35. package/dist/services/dop/profile/__tests__/profile-manager.test.js +0 -170
  36. package/dist/services/dop/profile/__tests__/profile-manager.test.js.map +0 -1
  37. package/dist/services/dop/profile/__tests__/selective-transparency.test.d.ts +0 -1
  38. package/dist/services/dop/profile/__tests__/selective-transparency.test.js +0 -256
  39. package/dist/services/dop/profile/__tests__/selective-transparency.test.js.map +0 -1
  40. package/dist/services/dop/profile/__tests__/storage.test.d.ts +0 -1
  41. package/dist/services/dop/profile/__tests__/storage.test.js +0 -174
  42. package/dist/services/dop/profile/__tests__/storage.test.js.map +0 -1
  43. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.d.ts +0 -1
  44. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js +0 -126
  45. package/dist/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.js.map +0 -1
  46. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.d.ts +0 -1
  47. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js +0 -63
  48. package/dist/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.js.map +0 -1
  49. package/dist/services/dop/util/__tests__/bytes-util.test.d.ts +0 -1
  50. package/dist/services/dop/util/__tests__/bytes-util.test.js +0 -23
  51. package/dist/services/dop/util/__tests__/bytes-util.test.js.map +0 -1
  52. package/dist/services/dop/util/__tests__/crypto-util.test.d.ts +0 -1
  53. package/dist/services/dop/util/__tests__/crypto-util.test.js +0 -62
  54. package/dist/services/dop/util/__tests__/crypto-util.test.js.map +0 -1
  55. package/dist/services/dop/wallets/__tests__/balances-live.test.d.ts +0 -1
  56. package/dist/services/dop/wallets/__tests__/balances-live.test.js +0 -58
  57. package/dist/services/dop/wallets/__tests__/balances-live.test.js.map +0 -1
  58. package/dist/services/dop/wallets/__tests__/balances-update.test.d.ts +0 -1
  59. package/dist/services/dop/wallets/__tests__/balances-update.test.js +0 -90
  60. package/dist/services/dop/wallets/__tests__/balances-update.test.js.map +0 -1
  61. package/dist/services/dop/wallets/__tests__/balances.test.d.ts +0 -1
  62. package/dist/services/dop/wallets/__tests__/balances.test.js +0 -59
  63. package/dist/services/dop/wallets/__tests__/balances.test.js.map +0 -1
  64. package/dist/services/dop/wallets/__tests__/wallets.test.d.ts +0 -1
  65. package/dist/services/dop/wallets/__tests__/wallets.test.js +0 -80
  66. package/dist/services/dop/wallets/__tests__/wallets.test.js.map +0 -1
  67. package/dist/services/ethers/__tests__/ethers-util.test.d.ts +0 -1
  68. package/dist/services/ethers/__tests__/ethers-util.test.js +0 -19
  69. package/dist/services/ethers/__tests__/ethers-util.test.js.map +0 -1
  70. package/dist/services/transactions/__tests__/json/formatted-relay-adapt-error-logs.json +0 -216
  71. package/dist/services/transactions/__tests__/proof-cache.test.d.ts +0 -1
  72. package/dist/services/transactions/__tests__/proof-cache.test.js +0 -128
  73. package/dist/services/transactions/__tests__/proof-cache.test.js.map +0 -1
  74. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.d.ts +0 -1
  75. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js +0 -385
  76. package/dist/services/transactions/__tests__/tx-cross-contract-calls.test.js.map +0 -1
  77. package/dist/services/transactions/__tests__/tx-decrypt.test.d.ts +0 -0
  78. package/dist/services/transactions/__tests__/tx-decrypt.test.js +0 -2
  79. package/dist/services/transactions/__tests__/tx-decrypt.test.js.map +0 -1
  80. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.d.ts +0 -1
  81. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js +0 -101
  82. package/dist/services/transactions/__tests__/tx-encrypt-base-token.test.js.map +0 -1
  83. package/dist/services/transactions/__tests__/tx-encrypt.test.d.ts +0 -0
  84. package/dist/services/transactions/__tests__/tx-encrypt.test.js +0 -2
  85. package/dist/services/transactions/__tests__/tx-encrypt.test.js.map +0 -1
  86. package/dist/services/transactions/__tests__/tx-gas-details.test.d.ts +0 -1
  87. package/dist/services/transactions/__tests__/tx-gas-details.test.js +0 -112
  88. package/dist/services/transactions/__tests__/tx-gas-details.test.js.map +0 -1
  89. package/dist/services/transactions/__tests__/tx-notes.test.d.ts +0 -1
  90. package/dist/services/transactions/__tests__/tx-notes.test.js +0 -193
  91. package/dist/services/transactions/__tests__/tx-notes.test.js.map +0 -1
  92. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.d.ts +0 -1
  93. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js +0 -50
  94. package/dist/services/transactions/__tests__/tx-proof-transfer-with-data.test.js.map +0 -1
  95. package/dist/services/transactions/__tests__/tx-transfer.test.d.ts +0 -1
  96. package/dist/services/transactions/__tests__/tx-transfer.test.js +0 -280
  97. package/dist/services/transactions/__tests__/tx-transfer.test.js.map +0 -1
  98. package/dist/tests/balances.test.d.ts +0 -1
  99. package/dist/tests/balances.test.js +0 -419
  100. package/dist/tests/balances.test.js.map +0 -1
  101. package/dist/tests/helper.test.d.ts +0 -3
  102. package/dist/tests/helper.test.js +0 -16
  103. package/dist/tests/helper.test.js.map +0 -1
  104. package/dist/tests/mocks.test.d.ts +0 -50
  105. package/dist/tests/mocks.test.js +0 -202
  106. package/dist/tests/mocks.test.js.map +0 -1
  107. package/dist/tests/poi/test-wallet-poi-requester.test.d.ts +0 -10
  108. package/dist/tests/poi/test-wallet-poi-requester.test.js +0 -15
  109. package/dist/tests/poi/test-wallet-poi-requester.test.js.map +0 -1
  110. package/dist/tests/setup.test.d.ts +0 -9
  111. package/dist/tests/setup.test.js +0 -110
  112. package/dist/tests/setup.test.js.map +0 -1
  113. package/dist/tests/stubs/engine-stubs.test.d.ts +0 -7
  114. package/dist/tests/stubs/engine-stubs.test.js +0 -75
  115. package/dist/tests/stubs/engine-stubs.test.js.map +0 -1
  116. package/dist/utils/__tests__/blocked-address.test.d.ts +0 -1
  117. package/dist/utils/__tests__/blocked-address.test.js +0 -23
  118. package/dist/utils/__tests__/blocked-address.test.js.map +0 -1
  119. package/dist/utils/__tests__/logger.test.d.ts +0 -1
  120. package/dist/utils/__tests__/logger.test.js +0 -28
  121. package/dist/utils/__tests__/logger.test.js.map +0 -1
  122. package/dist/utils/__tests__/utils.test.d.ts +0 -1
  123. package/dist/utils/__tests__/utils.test.js +0 -21
  124. package/dist/utils/__tests__/utils.test.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-sync-events-graph-v2.test.js","sourceRoot":"","sources":["../../../../../../src/services/dop/quick-sync/V2/__tests__/quick-sync-events-graph-v2.test.ts"],"names":[],"mappings":"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","sourcesContent":["/* eslint-disable no-bitwise */\nimport { Chain, CommitmentEvent, TXIDVersion } from 'dop-engine-v3';\nimport { NetworkName, NETWORK_CONFIG } from 'dop-sharedmodels-v3';\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { quickSyncEventsGraph } from '../../quick-sync-events';\nimport { isV2Test } from '../../../../../tests/helper.test';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nconst txidVersion = TXIDVersion.V2_PoseidonMerkle;\n\nconst ETH_CHAIN: Chain = NETWORK_CONFIG[NetworkName.Ethereum].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_ETH = 20_000;\nconst EXPECTED_NULLIFIER_EVENTS_ETH = 27_000;\nconst EXPECTED_DECRYPT_EVENTS_ETH = 10_000;\n\nconst POLYGON_CHAIN: Chain = NETWORK_CONFIG[NetworkName.Polygon].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON = 20_000;\nconst EXPECTED_NULLIFIER_EVENTS_POLYGON = 30_000;\nconst EXPECTED_DECRYPT_EVENTS_POLYGON = 10_000;\n\nconst BNB_CHAIN: Chain = NETWORK_CONFIG[NetworkName.BNBChain].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_BNB = 9_000;\nconst EXPECTED_NULLIFIER_EVENTS_BNB = 12_000;\nconst EXPECTED_DECRYPT_EVENTS_BNB = 4_000;\n\nconst ARBITRUM_CHAIN: Chain = NETWORK_CONFIG[NetworkName.Arbitrum].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_ARBITRUM = 17_000;\nconst EXPECTED_NULLIFIER_EVENTS_ARBITRUM = 22_000;\nconst EXPECTED_DECRYPT_EVENTS_ARBITRUM = 9_000;\n\nconst SEPOLIA_CHAIN: Chain = NETWORK_CONFIG[NetworkName.EthereumSepolia].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_SEPOLIA = 1;\nconst EXPECTED_NULLIFIER_EVENTS_SEPOLIA = 1;\nconst EXPECTED_DECRYPT_EVENTS_SEPOLIA = 1;\n\nconst assertContiguousCommitmentEvents = (\n commitmentEvents: CommitmentEvent[],\n shouldThrow: boolean,\n) => {\n // Track unique events by their actual start positions\n const positionMap = new Map<number, Set<number>>();\n};\n\ndescribe('quick-sync-events-graph-v2', () => {\n it('[V2] Should make sure Graph V2 query has no data gaps in commitments - Ethereum', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n const eventLog = await quickSyncEventsGraph(\n txidVersion,\n ETH_CHAIN,\n 14858124,\n );\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_ETH,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_ETH,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_ETH,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(200_000);\n\n it('[V2] Should make sure Graph V2 query has no data gaps in commitments - Polygon', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(txidVersion, POLYGON_CHAIN, 0);\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_POLYGON,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_POLYGON,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_POLYGON,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(200_000);\n\n it('[V2] Should make sure Graph V2 query has no data gaps in commitments - BNB Smart Chain', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(txidVersion, BNB_CHAIN, 0);\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_BNB,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_BNB,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_BNB,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(200_000);\n\n it('[V2] Should make sure Graph V2 query has no data gaps in commitments - Arbitrum', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(txidVersion, ARBITRUM_CHAIN, 0);\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_ARBITRUM,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_ARBITRUM,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_ARBITRUM,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(200_000);\n\n it('[V2] Should make sure Graph V2 query has no data gaps in commitments - Sepolia', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(txidVersion, SEPOLIA_CHAIN, 0);\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_SEPOLIA,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_SEPOLIA,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_SEPOLIA,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(90_000);\n\n it('[V2] Should run live Dop Event Log fetch for Polygon with high starting block', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(\n txidVersion,\n POLYGON_CHAIN,\n 100000000,\n );\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.nullifierEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.equal(0);\n expect(eventLog.nullifierEvents.length).to.equal(0);\n expect(eventLog.decryptEvents.length).to.equal(0);\n }).timeout(200_000);\n});\n"]}
@@ -1,63 +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 dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
8
- const chai_1 = __importDefault(require("chai"));
9
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
10
- const quick_sync_events_1 = require("../../quick-sync-events");
11
- const helper_test_1 = require("../../../../../tests/helper.test");
12
- chai_1.default.use(chai_as_promised_1.default);
13
- const { expect } = chai_1.default;
14
- const txidVersion = dop_engine_v3_1.TXIDVersion.V3_PoseidonMerkle;
15
- const POLYGON_MUMBAI_CHAIN = dop_sharedmodels_v3_1.NETWORK_CONFIG[dop_sharedmodels_v3_1.NetworkName.PolygonMumbai_DEPRECATED].chain;
16
- const EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON_MUMBAI = 1;
17
- const EXPECTED_NULLIFIER_EVENTS_POLYGON_MUMBAI = 1;
18
- const EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI = 1;
19
- const EXPECTED_DOP_TRANSACTION_EVENTS_POLYGON_MUMBAI = 1;
20
- const assertContiguousCommitmentEvents = (commitmentEvents, shouldThrow) => {
21
- let nextTreeNumber = commitmentEvents[0].treeNumber;
22
- let nextStartPosition = commitmentEvents[0].startPosition;
23
- for (const event of commitmentEvents) {
24
- if (event.treeNumber !== nextTreeNumber ||
25
- event.startPosition !== nextStartPosition) {
26
- if (shouldThrow) {
27
- throw new Error(`Could not find treeNumber ${nextTreeNumber}, startPosition ${nextStartPosition}`);
28
- }
29
- else {
30
- // eslint-disable-next-line no-console
31
- console.log(`Could not find treeNumber ${nextTreeNumber}, startPosition ${nextStartPosition}`);
32
- nextStartPosition = event.startPosition + event.commitments.length;
33
- }
34
- }
35
- else {
36
- nextStartPosition += event.commitments.length;
37
- }
38
- // TODO: This logic may need an update if the tree is less than 65536 commitments.
39
- if (nextStartPosition >= 65536) {
40
- // Roll over to next tree.
41
- nextTreeNumber += 1;
42
- nextStartPosition = 0;
43
- }
44
- }
45
- };
46
- describe('quick-sync-events-graph-v3', () => {
47
- it('[V3] Should make sure Graph V3 query has no data gaps in commitments - Polygon Mumbai', async function run() {
48
- if ((0, helper_test_1.isV2Test)()) {
49
- this.skip();
50
- return;
51
- }
52
- const eventLog = await (0, quick_sync_events_1.quickSyncEventsGraph)(txidVersion, POLYGON_MUMBAI_CHAIN, 0);
53
- expect(eventLog).to.be.an('object');
54
- expect(eventLog.commitmentEvents).to.be.an('array');
55
- expect(eventLog.commitmentEvents.length).to.be.at.least(EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON_MUMBAI);
56
- expect(eventLog.nullifierEvents.length).to.be.at.least(EXPECTED_NULLIFIER_EVENTS_POLYGON_MUMBAI);
57
- expect(eventLog.decryptEvents.length).to.be.at.least(EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI);
58
- expect(eventLog.dopTransactionEvents?.length).to.be.at.least(EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI);
59
- const shouldThrow = true;
60
- assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);
61
- }).timeout(45000);
62
- });
63
- //# sourceMappingURL=quick-sync-events-graph-v3.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"quick-sync-events-graph-v3.test.js","sourceRoot":"","sources":["../../../../../../src/services/dop/quick-sync/V3/__tests__/quick-sync-events-graph-v3.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { Chain, CommitmentEvent, TXIDVersion } from 'dop-engine-v3';\nimport { NetworkName, NETWORK_CONFIG } from 'dop-sharedmodels-v3';\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { quickSyncEventsGraph } from '../../quick-sync-events';\nimport { isV2Test } from '../../../../../tests/helper.test';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nconst txidVersion = TXIDVersion.V3_PoseidonMerkle;\n\nconst POLYGON_MUMBAI_CHAIN: Chain =\n NETWORK_CONFIG[NetworkName.PolygonMumbai_DEPRECATED].chain;\nconst EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON_MUMBAI = 1;\nconst EXPECTED_NULLIFIER_EVENTS_POLYGON_MUMBAI = 1;\nconst EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI = 1;\nconst EXPECTED_DOP_TRANSACTION_EVENTS_POLYGON_MUMBAI = 1;\n\nconst assertContiguousCommitmentEvents = (\n commitmentEvents: CommitmentEvent[],\n shouldThrow: boolean,\n) => {\n let nextTreeNumber = commitmentEvents[0].treeNumber;\n let nextStartPosition = commitmentEvents[0].startPosition;\n for (const event of commitmentEvents) {\n if (\n event.treeNumber !== nextTreeNumber ||\n event.startPosition !== nextStartPosition\n ) {\n if (shouldThrow) {\n throw new Error(\n `Could not find treeNumber ${nextTreeNumber}, startPosition ${nextStartPosition}`,\n );\n } else {\n // eslint-disable-next-line no-console\n console.log(\n `Could not find treeNumber ${nextTreeNumber}, startPosition ${nextStartPosition}`,\n );\n nextStartPosition = event.startPosition + event.commitments.length;\n }\n } else {\n nextStartPosition += event.commitments.length;\n }\n\n // TODO: This logic may need an update if the tree is less than 65536 commitments.\n if (nextStartPosition >= 65536) {\n // Roll over to next tree.\n nextTreeNumber += 1;\n nextStartPosition = 0;\n }\n }\n};\n\ndescribe('quick-sync-events-graph-v3', () => {\n it('[V3] Should make sure Graph V3 query has no data gaps in commitments - Polygon Mumbai', async function run() {\n if (isV2Test()) {\n this.skip();\n return;\n }\n\n const eventLog = await quickSyncEventsGraph(\n txidVersion,\n POLYGON_MUMBAI_CHAIN,\n 0,\n );\n expect(eventLog).to.be.an('object');\n expect(eventLog.commitmentEvents).to.be.an('array');\n expect(eventLog.commitmentEvents.length).to.be.at.least(\n EXPECTED_COMMITMENT_GROUP_EVENTS_POLYGON_MUMBAI,\n );\n expect(eventLog.nullifierEvents.length).to.be.at.least(\n EXPECTED_NULLIFIER_EVENTS_POLYGON_MUMBAI,\n );\n expect(eventLog.decryptEvents.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI,\n );\n expect(eventLog.dopTransactionEvents?.length).to.be.at.least(\n EXPECTED_DECRYPT_EVENTS_POLYGON_MUMBAI,\n );\n\n const shouldThrow = true;\n assertContiguousCommitmentEvents(eventLog.commitmentEvents, shouldThrow);\n }).timeout(45_000);\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,23 +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 bytes_1 = require("../bytes");
9
- chai_1.default.use(chai_as_promised_1.default);
10
- const { expect } = chai_1.default;
11
- describe('bytes-util', () => {
12
- it('Should parse dop balance addresses', () => {
13
- expect((0, bytes_1.parseDopTokenAddress)('00')).to.equal('0x0000000000000000000000000000000000000000');
14
- expect((0, bytes_1.parseDopTokenAddress)('123456789012345678901234567890')).to.equal('0x0000000000123456789012345678901234567890');
15
- });
16
- it('Should return random bytes of length', () => {
17
- expect((0, bytes_1.getRandomBytes)(1).length).to.equal(2);
18
- expect((0, bytes_1.getRandomBytes)(16).length).to.equal(32);
19
- expect((0, bytes_1.getRandomBytes)(32).length).to.equal(64);
20
- expect((0, bytes_1.getRandomBytes)(80).length).to.equal(160);
21
- });
22
- });
23
- //# sourceMappingURL=bytes-util.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"bytes-util.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/util/__tests__/bytes-util.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wEAA8C;AAC9C,oCAAgE;AAEhE,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC;AAExB,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;QAC5C,MAAM,CAAC,IAAA,4BAAoB,EAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACzC,4CAA4C,CAC7C,CAAC;QACF,MAAM,CAAC,IAAA,4BAAoB,EAAC,gCAAgC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACrE,4CAA4C,CAC7C,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,IAAA,sBAAc,EAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7C,MAAM,CAAC,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC/C,MAAM,CAAC,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { getRandomBytes, parseDopTokenAddress } from '../bytes';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\ndescribe('bytes-util', () => {\n it('Should parse dop balance addresses', () => {\n expect(parseDopTokenAddress('00')).to.equal(\n '0x0000000000000000000000000000000000000000',\n );\n expect(parseDopTokenAddress('123456789012345678901234567890')).to.equal(\n '0x0000000000123456789012345678901234567890',\n );\n });\n\n it('Should return random bytes of length', () => {\n expect(getRandomBytes(1).length).to.equal(2);\n expect(getRandomBytes(16).length).to.equal(32);\n expect(getRandomBytes(32).length).to.equal(64);\n expect(getRandomBytes(80).length).to.equal(160);\n });\n});\n"]}
@@ -1,62 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const chai_1 = __importDefault(require("chai"));
30
- const chai_as_promised_1 = __importDefault(require("chai-as-promised"));
31
- const ed = __importStar(require("@noble/ed25519"));
32
- const crypto_1 = require("../crypto");
33
- const bytes_1 = require("../bytes");
34
- chai_1.default.use(chai_as_promised_1.default);
35
- const { expect } = chai_1.default;
36
- describe('crypto-util', () => {
37
- it('Should verify signature', async () => {
38
- const privateKey = ed.utils.randomPrivateKey();
39
- const data = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);
40
- const publicKey = await ed.getPublicKey(privateKey);
41
- const signature = await ed.sign(data, privateKey);
42
- const isValidBytes = await (0, crypto_1.verifyBroadcasterSignature)(signature, data, publicKey);
43
- expect(isValidBytes).to.be.true;
44
- const isValidHex = await (0, crypto_1.verifyBroadcasterSignature)((0, bytes_1.bytesToHex)(signature), (0, bytes_1.bytesToHex)(data), publicKey);
45
- expect(isValidHex).to.be.true;
46
- });
47
- it('Should encrypt and decrypt data with shareable random pubkey', async () => {
48
- const privateKey = ed.utils.randomPrivateKey();
49
- const externalPubKey = await ed.getPublicKey(privateKey);
50
- const data = { test: '123', value: 678 };
51
- const { encryptedData, randomPubKey } = await (0, crypto_1.encryptDataWithSharedKey)(data, externalPubKey);
52
- expect(randomPubKey.length).to.equal(64);
53
- const sharedKey = await ed.getSharedSecret(privateKey, randomPubKey);
54
- const decrypted = (0, crypto_1.decryptAESGCM256)(encryptedData, sharedKey);
55
- expect(decrypted).to.deep.equal(data);
56
- });
57
- it('Should calculate PBKDF2 hash', async () => {
58
- const hash = await (0, crypto_1.pbkdf2)('secret', '0c6c732c2b03dfb6cf5f5893', 1000000);
59
- expect(hash).to.equal('ac0323bc154cc4b7ac0440eee6414356801faa198bb635d0b60441e3a043a706');
60
- });
61
- });
62
- //# sourceMappingURL=crypto-util.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"crypto-util.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/util/__tests__/crypto-util.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gDAAwB;AACxB,wEAA8C;AAC9C,mDAAqC;AACrC,sCAKmB;AACnB,oCAAsC;AAEtC,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC;AAExB,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,yBAAyB,EAAE,KAAK,IAAI,EAAE;QACvC,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACpD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;QAElD,MAAM,YAAY,GAAG,MAAM,IAAA,mCAA0B,EACnD,SAAS,EACT,IAAI,EACJ,SAAS,CACV,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;QAEhC,MAAM,UAAU,GAAG,MAAM,IAAA,mCAA0B,EACjD,IAAA,kBAAU,EAAC,SAAS,CAAC,EACrB,IAAA,kBAAU,EAAC,IAAI,CAAC,EAChB,SAAS,CACV,CAAC;QACF,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,KAAK,IAAI,EAAE;QAC5E,MAAM,UAAU,GAAG,EAAE,CAAC,KAAK,CAAC,gBAAgB,EAAE,CAAC;QAC/C,MAAM,cAAc,GAAG,MAAM,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAEzC,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,iCAAwB,EACpE,IAAI,EACJ,cAAc,CACf,CAAC;QACF,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAEzC,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACrE,MAAM,SAAS,GAAG,IAAA,yBAAgB,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QAE7D,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,KAAK,IAAI,EAAE;QAC5C,MAAM,IAAI,GAAG,MAAM,IAAA,eAAM,EAAC,QAAQ,EAAE,0BAA0B,EAAE,OAAO,CAAC,CAAC;QACzE,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CACnB,kEAAkE,CACnE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport * as ed from '@noble/ed25519';\nimport {\n decryptAESGCM256,\n encryptDataWithSharedKey,\n pbkdf2,\n verifyBroadcasterSignature,\n} from '../crypto';\nimport { bytesToHex } from '../bytes';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\ndescribe('crypto-util', () => {\n it('Should verify signature', async () => {\n const privateKey = ed.utils.randomPrivateKey();\n const data = Uint8Array.from([0xab, 0xbc, 0xcd, 0xde]);\n const publicKey = await ed.getPublicKey(privateKey);\n const signature = await ed.sign(data, privateKey);\n\n const isValidBytes = await verifyBroadcasterSignature(\n signature,\n data,\n publicKey,\n );\n expect(isValidBytes).to.be.true;\n\n const isValidHex = await verifyBroadcasterSignature(\n bytesToHex(signature),\n bytesToHex(data),\n publicKey,\n );\n expect(isValidHex).to.be.true;\n });\n\n it('Should encrypt and decrypt data with shareable random pubkey', async () => {\n const privateKey = ed.utils.randomPrivateKey();\n const externalPubKey = await ed.getPublicKey(privateKey);\n const data = { test: '123', value: 678 };\n\n const { encryptedData, randomPubKey } = await encryptDataWithSharedKey(\n data,\n externalPubKey,\n );\n expect(randomPubKey.length).to.equal(64);\n\n const sharedKey = await ed.getSharedSecret(privateKey, randomPubKey);\n const decrypted = decryptAESGCM256(encryptedData, sharedKey);\n\n expect(decrypted).to.deep.equal(data);\n });\n\n it('Should calculate PBKDF2 hash', async () => {\n const hash = await pbkdf2('secret', '0c6c732c2b03dfb6cf5f5893', 1000000);\n expect(hash).to.equal(\n 'ac0323bc154cc4b7ac0440eee6414356801faa198bb635d0b60441e3a043a706',\n );\n });\n});\n"]}
@@ -1,58 +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 mocks_test_1 = require("../../../../tests/mocks.test");
9
- const setup_test_1 = require("../../../../tests/setup.test");
10
- const wallets_1 = require("../wallets");
11
- const balances_1 = require("../balances");
12
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
13
- const load_provider_1 = require("../../core/load-provider");
14
- const helper_test_1 = require("../../../../tests/helper.test");
15
- const engine_1 = require("../../core/engine");
16
- chai_1.default.use(chai_as_promised_1.default);
17
- const { expect } = chai_1.default;
18
- let dopWalletID;
19
- const txidVersion = (0, helper_test_1.getTestTXIDVersion)();
20
- const networkName = dop_sharedmodels_v3_1.NetworkName.EthereumSepolia;
21
- const chain = dop_sharedmodels_v3_1.NETWORK_CONFIG[networkName].chain;
22
- describe('balances-live', () => {
23
- before(async function run() {
24
- this.timeout(360000);
25
- await (0, setup_test_1.initTestEngine)();
26
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC, undefined);
27
- if (!(0, dop_sharedmodels_v3_1.isDefined)(dopWalletInfo)) {
28
- throw new Error('Expected dopWalletInfo');
29
- }
30
- dopWalletID = dopWalletInfo.id;
31
- await (0, load_provider_1.loadProvider)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA, networkName, 10000);
32
- const { chain } = dop_sharedmodels_v3_1.NETWORK_CONFIG[networkName];
33
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
34
- (0, engine_1.getEngine)().scanContractHistory(chain, undefined);
35
- await Promise.all([
36
- (0, setup_test_1.pollUntilUTXOMerkletreeScanned)(),
37
- // Enable this when running on a network supporting PPOI:
38
- (0, setup_test_1.pollUntilTXIDMerkletreeScanned)(),
39
- ]);
40
- });
41
- after(async () => {
42
- await (0, setup_test_1.closeTestEngine)();
43
- });
44
- it('[V2] Should run live balance fetch, transaction history scan, and POI status info scan', async function run() {
45
- if (!(0, helper_test_1.isV2Test)()) {
46
- this.skip();
47
- return;
48
- }
49
- await (0, balances_1.rescanFullUTXOMerkletreesAndWallets)(chain, [dopWalletID]);
50
- const wallet = (0, wallets_1.fullWalletForID)(dopWalletID);
51
- const balances = await wallet.getTokenBalances(txidVersion, chain, false);
52
- // Note: dopWallet above needs to perform transactions on above network to have balances
53
- expect(Object.keys(balances).length).to.be.greaterThanOrEqual(1);
54
- const transactionHistory = await wallet.getTransactionHistory(chain, undefined);
55
- expect(transactionHistory.length).to.be.greaterThanOrEqual(2);
56
- }).timeout(90000);
57
- });
58
- //# sourceMappingURL=balances-live.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balances-live.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/wallets/__tests__/balances-live.test.ts"],"names":[],"mappings":";;;;;AAAA,gDAAwB;AACxB,wEAA8C;AAC9C,6DAIsC;AACtC,6DAKsC;AACtC,wCAA8D;AAC9D,0CAAkE;AAClE,6DAK6B;AAC7B,4DAAwD;AAExD,+DAA6E;AAC7E,8CAA8C;AAE9C,cAAI,CAAC,GAAG,CAAC,0BAAc,CAAC,CAAC;AACzB,MAAM,EAAE,MAAM,EAAE,GAAG,cAAI,CAAC;AAExB,IAAI,WAAmB,CAAC;AAExB,MAAM,WAAW,GAAG,IAAA,gCAAkB,GAAE,CAAC;AAEzC,MAAM,WAAW,GAAG,iCAAW,CAAC,eAAe,CAAC;AAChD,MAAM,KAAK,GAAU,oCAAc,CAAC,WAAW,CAAC,CAAC,KAAK,CAAC;AAEvD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,MAAM,CAAC,KAAK,UAAU,GAAG;QACvB,IAAI,CAAC,OAAO,CAAC,MAAO,CAAC,CAAC;QACtB,MAAM,IAAA,2BAAc,GAAE,CAAC;QACvB,MAAM,aAAa,GAAG,MAAM,IAAA,yBAAe,EACzC,mCAAsB,EACtB,0BAAa,EACb,SAAS,CACV,CAAC;QACF,IAAI,CAAC,IAAA,+BAAS,EAAC,aAAa,CAAC,EAAE;YAC7B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;SAC3C;QACD,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC;QAE/B,MAAM,IAAA,4BAAY,EAChB,uDAA0C,EAC1C,WAAW,EACX,KAAM,CACP,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,GAAG,oCAAc,CAAC,WAAW,CAAC,CAAC;QAC9C,mEAAmE;QACnE,IAAA,kBAAS,GAAE,CAAC,mBAAmB,CAC7B,KAAK,EACL,SAAS,CACV,CAAC;QACF,MAAM,OAAO,CAAC,GAAG,CAAC;YAChB,IAAA,2CAA8B,GAAE;YAChC,yDAAyD;YACzD,IAAA,2CAA8B,GAAE;SACjC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,KAAK,IAAI,EAAE;QACf,MAAM,IAAA,4BAAe,GAAE,CAAC;IAC1B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wFAAwF,EAAE,KAAK,UAAU,GAAG;QAC7G,IAAI,CAAC,IAAA,sBAAQ,GAAE,EAAE;YACf,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO;SACR;QAED,MAAM,IAAA,8CAAmC,EAAC,KAAK,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;QAEhE,MAAM,MAAM,GAAG,IAAA,yBAAe,EAAC,WAAW,CAAC,CAAC;QAC5C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAC5C,WAAW,EACX,KAAK,EACL,KAAK,CACN,CAAC;QAEF,wFAAwF;QACxF,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;QAEjE,MAAM,kBAAkB,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAC3D,KAAK,EACL,SAAS,CACV,CAAC;QACF,MAAM,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC,OAAO,CAAC,KAAM,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n MOCK_MNEMONIC,\n} from '../../../../tests/mocks.test';\nimport {\n closeTestEngine,\n initTestEngine,\n pollUntilTXIDMerkletreeScanned,\n pollUntilUTXOMerkletreeScanned,\n} from '../../../../tests/setup.test';\nimport { createDopWallet, fullWalletForID } from '../wallets';\nimport { rescanFullUTXOMerkletreesAndWallets } from '../balances';\nimport {\n Chain,\n NETWORK_CONFIG,\n NetworkName,\n isDefined,\n} from 'dop-sharedmodels-v3';\nimport { loadProvider } from '../../core/load-provider';\nimport { getTXIDMerkletreeForNetwork } from '../../core/merkletree';\nimport { getTestTXIDVersion, isV2Test } from '../../../../tests/helper.test';\nimport { getEngine } from '../../core/engine';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nlet dopWalletID: string;\n\nconst txidVersion = getTestTXIDVersion();\n\nconst networkName = NetworkName.EthereumSepolia;\nconst chain: Chain = NETWORK_CONFIG[networkName].chain;\n\ndescribe('balances-live', () => {\n before(async function run() {\n this.timeout(360_000);\n await initTestEngine();\n const dopWalletInfo = await createDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC,\n undefined, // creationBlockNumbers\n );\n if (!isDefined(dopWalletInfo)) {\n throw new Error('Expected dopWalletInfo');\n }\n dopWalletID = dopWalletInfo.id;\n\n await loadProvider(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n networkName,\n 10_000, // pollingInterval\n );\n const { chain } = NETWORK_CONFIG[networkName];\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getEngine().scanContractHistory(\n chain,\n undefined, // walletIdFilter\n );\n await Promise.all([\n pollUntilUTXOMerkletreeScanned(),\n // Enable this when running on a network supporting PPOI:\n pollUntilTXIDMerkletreeScanned(),\n ]);\n });\n\n after(async () => {\n await closeTestEngine();\n });\n\n it('[V2] Should run live balance fetch, transaction history scan, and POI status info scan', async function run() {\n if (!isV2Test()) {\n this.skip();\n return;\n }\n\n await rescanFullUTXOMerkletreesAndWallets(chain, [dopWalletID]);\n\n const wallet = fullWalletForID(dopWalletID);\n const balances = await wallet.getTokenBalances(\n txidVersion,\n chain,\n false, // onlySpendable\n );\n\n // Note: dopWallet above needs to perform transactions on above network to have balances\n expect(Object.keys(balances).length).to.be.greaterThanOrEqual(1);\n\n const transactionHistory = await wallet.getTransactionHistory(\n chain,\n undefined,\n );\n expect(transactionHistory.length).to.be.greaterThanOrEqual(2);\n }).timeout(90_000);\n});\n"]}
@@ -1,90 +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 dop_engine_v3_1 = require("dop-engine-v3");
9
- const sinon_1 = __importDefault(require("sinon"));
10
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
11
- const balance_update_1 = require("../balance-update");
12
- const wallets_1 = require("../wallets");
13
- const mocks_test_1 = require("../../../../tests/mocks.test");
14
- const setup_test_1 = require("../../../../tests/setup.test");
15
- const load_provider_1 = require("../../core/load-provider");
16
- const helper_test_1 = require("../../../../tests/helper.test");
17
- const engine_1 = require("../../core/engine");
18
- chai_1.default.use(chai_as_promised_1.default);
19
- const { expect } = chai_1.default;
20
- const MOCK_TOKEN_ADDRESS = '0x012536';
21
- const txidVersion = (0, helper_test_1.getTestTXIDVersion)();
22
- let wallet;
23
- let walletBalanceStub;
24
- let walletBalancesByBucketStub;
25
- let walletTokenBalanceStub;
26
- describe('balances-update', () => {
27
- before(async function run() {
28
- this.timeout(60000);
29
- await (0, setup_test_1.initTestEngine)();
30
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC, undefined);
31
- if (!(0, dop_sharedmodels_v3_1.isDefined)(dopWalletInfo)) {
32
- throw new Error('Expected dopWalletInfo');
33
- }
34
- await (0, load_provider_1.loadProvider)(mocks_test_1.MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA, dop_sharedmodels_v3_1.NetworkName.EthereumSepolia, 10000);
35
- const { chain } = dop_sharedmodels_v3_1.NETWORK_CONFIG[dop_sharedmodels_v3_1.NetworkName.EthereumSepolia];
36
- // eslint-disable-next-line @typescript-eslint/no-floating-promises
37
- (0, engine_1.getEngine)().scanContractHistory(chain, undefined);
38
- wallet = (0, wallets_1.fullWalletForID)(dopWalletInfo.id);
39
- const tokenAddress = MOCK_TOKEN_ADDRESS.replace('0x', '');
40
- const tokenData = (0, dop_engine_v3_1.getTokenDataERC20)(tokenAddress);
41
- const balances = {
42
- [tokenAddress]: {
43
- balance: BigInt(10),
44
- utxos: [],
45
- tokenData,
46
- },
47
- };
48
- walletBalanceStub = sinon_1.default.stub(dop_engine_v3_1.DopWallet, 'getTokenBalancesByTxidVersion').resolves(balances);
49
- walletBalancesByBucketStub = sinon_1.default.stub(dop_engine_v3_1.DopWallet.prototype, 'getTokenBalancesByBucket').resolves({ Spendable: balances });
50
- walletTokenBalanceStub = sinon_1.default.stub(dop_engine_v3_1.DopWallet.prototype, 'getTokenBalances').resolves(balances);
51
- });
52
- afterEach(() => {
53
- walletBalanceStub.resetHistory();
54
- walletBalancesByBucketStub.resetHistory();
55
- walletTokenBalanceStub.resetHistory();
56
- });
57
- after(async () => {
58
- walletBalanceStub.restore();
59
- walletBalancesByBucketStub.restore();
60
- walletTokenBalanceStub.restore();
61
- await (0, setup_test_1.closeTestEngine)();
62
- });
63
- it('Should not pull balances without callback', async () => {
64
- (0, balance_update_1.setOnBalanceUpdateCallback)(undefined);
65
- const chain = { type: dop_engine_v3_1.ChainType.EVM, id: 1 };
66
- await expect((0, balance_update_1.onBalancesUpdate)(txidVersion, wallet, chain)).to.be.fulfilled;
67
- expect(walletBalanceStub.notCalled).to.be.true;
68
- expect(walletBalancesByBucketStub.notCalled).to.be.true;
69
- });
70
- it('Should parse wallet balances response', async () => {
71
- let formattedBalances;
72
- const callback = (balancesFormatted) => {
73
- formattedBalances = balancesFormatted;
74
- };
75
- (0, balance_update_1.setOnBalanceUpdateCallback)(callback);
76
- const chain = { type: dop_engine_v3_1.ChainType.EVM, id: 80001 };
77
- await expect((0, balance_update_1.onBalancesUpdate)(txidVersion, wallet, chain)).to.be.fulfilled;
78
- // TODO: enable this assertion once we have PPOI on PolygonMumbai
79
- // because `onBalancesUpdate` only runs it if PPOI is required:
80
- // expect(walletBalancesByBucketStub.calledOnce).to.be.true;
81
- expect(formattedBalances.balanceBucket).to.deep.equal(dop_sharedmodels_v3_1.DopWalletBalanceBucket.Spendable);
82
- expect(formattedBalances.chain).to.deep.equal(chain);
83
- expect(formattedBalances.erc20Amounts.length).to.equal(1);
84
- expect(formattedBalances.erc20Amounts[0]).to.deep.equal({
85
- tokenAddress: '0x0000000000000000000000000000000000012536',
86
- amount: 10n,
87
- });
88
- });
89
- });
90
- //# sourceMappingURL=balances-update.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balances-update.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/wallets/__tests__/balances-update.test.ts"],"names":[],"mappings":"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","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport {\n DopWallet,\n TokenBalances,\n Chain,\n ChainType,\n getTokenDataERC20,\n} from 'dop-engine-v3';\nimport Sinon, { SinonStub } from 'sinon';\nimport {\n NETWORK_CONFIG,\n NetworkName,\n DopBalancesEvent,\n DopWalletBalanceBucket,\n isDefined,\n} from 'dop-sharedmodels-v3';\nimport {\n onBalancesUpdate,\n setOnBalanceUpdateCallback,\n} from '../balance-update';\nimport { createDopWallet, fullWalletForID } from '../wallets';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n MOCK_MNEMONIC,\n} from '../../../../tests/mocks.test';\nimport { closeTestEngine, initTestEngine } from '../../../../tests/setup.test';\nimport { loadProvider } from '../../core/load-provider';\nimport { getTestTXIDVersion } from '../../../../tests/helper.test';\nimport { getEngine } from '../../core/engine';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nconst MOCK_TOKEN_ADDRESS = '0x012536';\n\nconst txidVersion = getTestTXIDVersion();\n\nlet wallet: DopWallet;\n\nlet walletBalanceStub: SinonStub;\nlet walletBalancesByBucketStub: SinonStub;\nlet walletTokenBalanceStub: SinonStub;\n\ndescribe('balances-update', () => {\n before(async function run() {\n this.timeout(60_000);\n await initTestEngine();\n const dopWalletInfo = await createDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC,\n undefined, // creationBlockNumbers\n );\n if (!isDefined(dopWalletInfo)) {\n throw new Error('Expected dopWalletInfo');\n }\n await loadProvider(\n MOCK_FALLBACK_PROVIDER_JSON_CONFIG_SEPOLIA,\n NetworkName.EthereumSepolia,\n 10_000, // pollingInterval\n );\n const { chain } = NETWORK_CONFIG[NetworkName.EthereumSepolia];\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\n getEngine().scanContractHistory(\n chain,\n undefined, // walletIdFilter\n );\n wallet = fullWalletForID(dopWalletInfo.id);\n const tokenAddress = MOCK_TOKEN_ADDRESS.replace('0x', '');\n const tokenData = getTokenDataERC20(tokenAddress);\n const balances: TokenBalances = {\n [tokenAddress]: {\n balance: BigInt(10),\n utxos: [],\n tokenData,\n },\n };\n walletBalanceStub = Sinon.stub(\n DopWallet,\n 'getTokenBalancesByTxidVersion',\n ).resolves(balances);\n walletBalancesByBucketStub = Sinon.stub(\n DopWallet.prototype,\n 'getTokenBalancesByBucket',\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\n ).resolves({ Spendable: balances } as any);\n walletTokenBalanceStub = Sinon.stub(\n DopWallet.prototype,\n 'getTokenBalances',\n ).resolves(balances);\n });\n\n afterEach(() => {\n walletBalanceStub.resetHistory();\n walletBalancesByBucketStub.resetHistory();\n walletTokenBalanceStub.resetHistory();\n });\n after(async () => {\n walletBalanceStub.restore();\n walletBalancesByBucketStub.restore();\n walletTokenBalanceStub.restore();\n await closeTestEngine();\n });\n\n it('Should not pull balances without callback', async () => {\n setOnBalanceUpdateCallback(undefined);\n const chain: Chain = { type: ChainType.EVM, id: 1 };\n await expect(onBalancesUpdate(txidVersion, wallet, chain)).to.be.fulfilled;\n expect(walletBalanceStub.notCalled).to.be.true;\n expect(walletBalancesByBucketStub.notCalled).to.be.true;\n });\n\n it('Should parse wallet balances response', async () => {\n let formattedBalances!: DopBalancesEvent;\n const callback = (balancesFormatted: DopBalancesEvent) => {\n formattedBalances = balancesFormatted;\n };\n setOnBalanceUpdateCallback(callback);\n const chain: Chain = { type: ChainType.EVM, id: 80001 };\n await expect(onBalancesUpdate(txidVersion, wallet, chain)).to.be.fulfilled;\n // TODO: enable this assertion once we have PPOI on PolygonMumbai\n // because `onBalancesUpdate` only runs it if PPOI is required:\n // expect(walletBalancesByBucketStub.calledOnce).to.be.true;\n expect(formattedBalances.balanceBucket).to.deep.equal(\n DopWalletBalanceBucket.Spendable,\n );\n expect(formattedBalances.chain).to.deep.equal(chain);\n expect(formattedBalances.erc20Amounts.length).to.equal(1);\n expect(formattedBalances.erc20Amounts[0]).to.deep.equal({\n tokenAddress: '0x0000000000000000000000000000000000012536',\n amount: 10n,\n });\n });\n\n});\n"]}
@@ -1,59 +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 sinon_1 = __importDefault(require("sinon"));
10
- const mocks_test_1 = require("../../../../tests/mocks.test");
11
- const setup_test_1 = require("../../../../tests/setup.test");
12
- const wallets_1 = require("../wallets");
13
- const balances_1 = require("../balances");
14
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
15
- chai_1.default.use(chai_as_promised_1.default);
16
- const { expect } = chai_1.default;
17
- let walletScanStub;
18
- let walletFullScanStub;
19
- let engineScanStub;
20
- let engineFullScanStub;
21
- describe('balances', () => {
22
- before(async () => {
23
- await (0, setup_test_1.initTestEngine)();
24
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC, undefined);
25
- if (!(0, dop_sharedmodels_v3_1.isDefined)(dopWalletInfo)) {
26
- return;
27
- }
28
- walletScanStub = sinon_1.default.stub(dop_engine_v3_1.DopWallet.prototype, 'decryptBalances').resolves();
29
- engineScanStub = sinon_1.default.stub(dop_engine_v3_1.DopEngine.prototype, 'scanContractHistory').resolves();
30
- walletFullScanStub = sinon_1.default.stub(dop_engine_v3_1.DopWallet.prototype, 'fullRedecryptBalancesAllTXIDVersions').resolves();
31
- engineFullScanStub = sinon_1.default.stub(dop_engine_v3_1.DopEngine.prototype, 'fullRescanUTXOMerkletreesAndWallets').resolves();
32
- });
33
- afterEach(() => {
34
- walletScanStub.resetHistory();
35
- engineScanStub.resetHistory();
36
- walletFullScanStub.resetHistory();
37
- engineFullScanStub.resetHistory();
38
- });
39
- after(async () => {
40
- walletScanStub.restore();
41
- engineScanStub.restore();
42
- walletFullScanStub.restore();
43
- engineFullScanStub.restore();
44
- await (0, setup_test_1.closeTestEngine)();
45
- });
46
- it('Should scan for updates to merkletree and wallets', async () => {
47
- const chain = { type: dop_sharedmodels_v3_1.ChainType.EVM, id: 1 };
48
- const response = await (0, balances_1.refreshBalances)(chain, undefined);
49
- expect(response).to.be.undefined;
50
- expect(engineScanStub.calledOnce).to.be.true;
51
- });
52
- it('Should run full rescan of merkletree and wallets', async () => {
53
- const chain = { type: dop_sharedmodels_v3_1.ChainType.EVM, id: 1 };
54
- const response = await (0, balances_1.rescanFullUTXOMerkletreesAndWallets)(chain, undefined);
55
- expect(response).to.be.undefined;
56
- expect(engineFullScanStub.calledOnce).to.be.true;
57
- });
58
- });
59
- //# sourceMappingURL=balances.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"balances.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/wallets/__tests__/balances.test.ts"],"names":[],"mappings":"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","sourcesContent":["import { DopEngine, DopWallet } from 'dop-engine-v3';\nimport chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport Sinon, { SinonStub } from 'sinon';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC,\n} from '../../../../tests/mocks.test';\nimport { closeTestEngine, initTestEngine } from '../../../../tests/setup.test';\nimport { createDopWallet } from '../wallets';\nimport {\n refreshBalances,\n rescanFullUTXOMerkletreesAndWallets,\n} from '../balances';\nimport { Chain, ChainType, isDefined } from 'dop-sharedmodels-v3';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nlet walletScanStub: SinonStub;\nlet walletFullScanStub: SinonStub;\nlet engineScanStub: SinonStub;\nlet engineFullScanStub: SinonStub;\n\ndescribe('balances', () => {\n before(async () => {\n await initTestEngine();\n const dopWalletInfo = await createDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC,\n undefined, // creationBlockNumbers\n );\n if (!isDefined(dopWalletInfo)) {\n return;\n }\n walletScanStub = Sinon.stub(\n DopWallet.prototype,\n 'decryptBalances',\n ).resolves();\n\n engineScanStub = Sinon.stub(\n DopEngine.prototype,\n 'scanContractHistory',\n ).resolves();\n\n walletFullScanStub = Sinon.stub(\n DopWallet.prototype,\n 'fullRedecryptBalancesAllTXIDVersions',\n ).resolves();\n\n engineFullScanStub = Sinon.stub(\n DopEngine.prototype,\n 'fullRescanUTXOMerkletreesAndWallets',\n ).resolves();\n });\n afterEach(() => {\n walletScanStub.resetHistory();\n engineScanStub.resetHistory();\n walletFullScanStub.resetHistory();\n engineFullScanStub.resetHistory();\n });\n after(async () => {\n walletScanStub.restore();\n engineScanStub.restore();\n walletFullScanStub.restore();\n engineFullScanStub.restore();\n await closeTestEngine();\n });\n\n it('Should scan for updates to merkletree and wallets', async () => {\n const chain: Chain = { type: ChainType.EVM, id: 1 };\n const response = await refreshBalances(\n chain,\n undefined, // walletIdFilter\n );\n expect(response).to.be.undefined;\n expect(engineScanStub.calledOnce).to.be.true;\n });\n\n it('Should run full rescan of merkletree and wallets', async () => {\n const chain: Chain = { type: ChainType.EVM, id: 1 };\n const response = await rescanFullUTXOMerkletreesAndWallets(\n chain,\n undefined, // walletIdFilter\n );\n expect(response).to.be.undefined;\n expect(engineFullScanStub.calledOnce).to.be.true;\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};
@@ -1,80 +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 engine_1 = require("../../core/engine");
9
- const wallets_1 = require("../wallets");
10
- const mocks_test_1 = require("../../../../tests/mocks.test");
11
- const setup_test_1 = require("../../../../tests/setup.test");
12
- const dop_sharedmodels_v3_1 = require("dop-sharedmodels-v3");
13
- chai_1.default.use(chai_as_promised_1.default);
14
- const { expect } = chai_1.default;
15
- let wallet;
16
- describe('wallets', () => {
17
- before(async function run() {
18
- this.timeout(60000);
19
- await (0, setup_test_1.initTestEngine)();
20
- await (0, setup_test_1.initTestEngineNetworks)();
21
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC_2, { [dop_sharedmodels_v3_1.NetworkName.Ethereum]: 0, [dop_sharedmodels_v3_1.NetworkName.Polygon]: 2 });
22
- if (!(0, dop_sharedmodels_v3_1.isDefined)(dopWalletInfo)) {
23
- throw new Error(`Could not create wallet`);
24
- }
25
- wallet = (0, wallets_1.fullWalletForID)(dopWalletInfo.id);
26
- });
27
- after(async () => {
28
- await (0, setup_test_1.closeTestEngine)();
29
- });
30
- it('Should create view only wallet', async () => {
31
- const dopWalletInfo = await (0, wallets_1.createViewOnlyDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, wallet.generateShareableViewingKey(), undefined);
32
- if (!(0, dop_sharedmodels_v3_1.isDefined)(dopWalletInfo)) {
33
- throw new Error('Could not create view-only wallet');
34
- }
35
- const viewOnlyWallet = (0, wallets_1.viewOnlyWalletForID)(dopWalletInfo.id);
36
- expect(viewOnlyWallet).to.not.be.undefined;
37
- expect(dopWalletInfo.dopAddress).to.equal(wallet.getAddress());
38
- }).timeout(60000);
39
- it('Should get wallet address', () => {
40
- const addressAny = (0, wallets_1.getDopAddress)(wallet.id);
41
- expect(addressAny).to.equal('0zk1qykzjxctynyz4z43pukckpv43jyzhyvy0ehrd5wuc54l5enqf9qfrrv7j6fe3z53la7enqphqvxys9aqyp9xx0km95ehqslx8apmu8l7anc7emau4tvsultrkvd');
42
- });
43
- it('Should get wallet shareable viewing key', async () => {
44
- const shareableKey = await (0, wallets_1.getWalletShareableViewingKey)(wallet.id);
45
- expect(shareableKey).to.equal('82a57670726976d94032643030623234396632646337313236303565336263653364373665376631313931373933363436393365333931666566643963323764303161396262336433a473707562d94030633661376436386331663437303262613764666134613361353236323035303765386637366632393139326363666637653861366231303637393062316165');
46
- });
47
- it('Should get wallet mnemonic', async () => {
48
- const mnemonic = await (0, wallets_1.getWalletMnemonic)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, wallet.id);
49
- expect(mnemonic).to.equal(mocks_test_1.MOCK_MNEMONIC_2);
50
- });
51
- it('Should create and load wallet from valid mnemonic', async () => {
52
- const dopWalletInfo = await (0, wallets_1.createDopWallet)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, mocks_test_1.MOCK_MNEMONIC_2, undefined);
53
- expect(dopWalletInfo.dopAddress).to.be.a('string');
54
- expect(dopWalletInfo.id).to.equal(wallet.id);
55
- const loadWalletInfo = await (0, wallets_1.loadWalletByID)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, dopWalletInfo.id, false);
56
- expect(loadWalletInfo.dopAddress).to.be.a('string');
57
- expect(loadWalletInfo.id).to.equal(wallet.id);
58
- });
59
- it('Should load wallet from db after Engine wallet unload', async () => {
60
- expect(Object.keys((0, engine_1.getEngine)().wallets)).to.include(wallet.id);
61
- (0, wallets_1.unloadWalletByID)(wallet.id);
62
- expect(Object.keys((0, engine_1.getEngine)().wallets)).to.not.include(wallet.id);
63
- const dopWalletInfo = await (0, wallets_1.loadWalletByID)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, wallet.id, false);
64
- expect(dopWalletInfo.id).to.equal(wallet.id);
65
- expect(dopWalletInfo.dopAddress).to.equal(wallet.getAddress(undefined));
66
- });
67
- it('Should error for unknown load wallet', async () => {
68
- await expect((0, wallets_1.loadWalletByID)(mocks_test_1.MOCK_DB_ENCRYPTION_KEY, 'unknown', false)).rejectedWith('Could not load DOP wallet');
69
- });
70
- it('Should validate DOP addresses', async () => {
71
- expect((0, wallets_1.validateDopAddress)('0x9E9F988356f46744Ee0374A17a5Fa1a3A3cC3777'))
72
- .to.be.false;
73
- expect((0, wallets_1.validateDopAddress)('9E9F988356f46744Ee0374A17a5Fa1a3A3cC3777'))
74
- .to.be.false;
75
- expect((0, wallets_1.validateDopAddress)('rgtestropsten1qyglk9smgj240x2xmj2laj7p5hexw0a30vvdqnv9gk020nsd7yzgwkgce9x')).to.be.false;
76
- expect((0, wallets_1.validateDopAddress)('0zk1q8hxknrs97q8pjxaagwthzc0df99rzmhl2xnlxmgv9akv32sua0kfrv7j6fe3z53llhxknrs97q8pjxaagwthzc0df99rzmhl2xnlxmgv9akv32sua0kg0zpzts')).to.be.true;
77
- expect((0, wallets_1.validateDopAddress)('0zk1qyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqunpd9kxwatwqyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhshkca')).to.be.true;
78
- });
79
- });
80
- //# sourceMappingURL=wallets.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wallets.test.js","sourceRoot":"","sources":["../../../../../src/services/dop/wallets/__tests__/wallets.test.ts"],"names":[],"mappings":"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","sourcesContent":["import chai from 'chai';\nimport chaiAsPromised from 'chai-as-promised';\nimport { getEngine } from '../../core/engine';\nimport {\n createDopWallet,\n createViewOnlyDopWallet,\n fullWalletForID,\n getDopAddress,\n getWalletMnemonic,\n getWalletShareableViewingKey,\n loadWalletByID,\n unloadWalletByID,\n validateDopAddress,\n viewOnlyWalletForID,\n} from '../wallets';\nimport {\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC_2,\n} from '../../../../tests/mocks.test';\nimport {\n closeTestEngine,\n initTestEngine,\n initTestEngineNetworks,\n} from '../../../../tests/setup.test';\nimport { DopWallet } from 'dop-engine-v3';\nimport { NetworkName, isDefined } from 'dop-sharedmodels-v3';\n\nchai.use(chaiAsPromised);\nconst { expect } = chai;\n\nlet wallet: DopWallet;\n\ndescribe('wallets', () => {\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_2,\n { [NetworkName.Ethereum]: 0, [NetworkName.Polygon]: 2 }, // creationBlockNumbers\n );\n if (!isDefined(dopWalletInfo)) {\n throw new Error(`Could not create wallet`);\n }\n wallet = fullWalletForID(dopWalletInfo.id);\n });\n after(async () => {\n await closeTestEngine();\n });\n\n it('Should create view only wallet', async () => {\n const dopWalletInfo = await createViewOnlyDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n wallet.generateShareableViewingKey(),\n undefined, // creationBlockNumbers\n );\n if (!isDefined(dopWalletInfo)) {\n throw new Error('Could not create view-only wallet');\n }\n const viewOnlyWallet = viewOnlyWalletForID(dopWalletInfo.id);\n expect(viewOnlyWallet).to.not.be.undefined;\n expect(dopWalletInfo.dopAddress).to.equal(wallet.getAddress());\n }).timeout(60_000);\n\n it('Should get wallet address', () => {\n const addressAny = getDopAddress(wallet.id);\n expect(addressAny).to.equal(\n '0zk1qykzjxctynyz4z43pukckpv43jyzhyvy0ehrd5wuc54l5enqf9qfrrv7j6fe3z53la7enqphqvxys9aqyp9xx0km95ehqslx8apmu8l7anc7emau4tvsultrkvd',\n );\n });\n\n it('Should get wallet shareable viewing key', async () => {\n const shareableKey = await getWalletShareableViewingKey(wallet.id);\n expect(shareableKey).to.equal(\n '82a57670726976d94032643030623234396632646337313236303565336263653364373665376631313931373933363436393365333931666566643963323764303161396262336433a473707562d94030633661376436386331663437303262613764666134613361353236323035303765386637366632393139326363666637653861366231303637393062316165',\n );\n });\n\n it('Should get wallet mnemonic', async () => {\n const mnemonic = await getWalletMnemonic(MOCK_DB_ENCRYPTION_KEY, wallet.id);\n expect(mnemonic).to.equal(MOCK_MNEMONIC_2);\n });\n\n it('Should create and load wallet from valid mnemonic', async () => {\n const dopWalletInfo = await createDopWallet(\n MOCK_DB_ENCRYPTION_KEY,\n MOCK_MNEMONIC_2,\n undefined, // creationBlockNumbers\n );\n expect(dopWalletInfo.dopAddress).to.be.a('string');\n expect(dopWalletInfo.id).to.equal(wallet.id);\n\n const loadWalletInfo = await loadWalletByID(\n MOCK_DB_ENCRYPTION_KEY,\n dopWalletInfo.id,\n false, // isViewOnlyWallet\n );\n expect(loadWalletInfo.dopAddress).to.be.a('string');\n expect(loadWalletInfo.id).to.equal(wallet.id);\n });\n\n it('Should load wallet from db after Engine wallet unload', async () => {\n expect(Object.keys(getEngine().wallets)).to.include(wallet.id);\n unloadWalletByID(wallet.id);\n expect(Object.keys(getEngine().wallets)).to.not.include(wallet.id);\n const dopWalletInfo = await loadWalletByID(\n MOCK_DB_ENCRYPTION_KEY,\n wallet.id,\n false, // isViewOnlyWallet\n );\n expect(dopWalletInfo.id).to.equal(wallet.id);\n expect(dopWalletInfo.dopAddress).to.equal(\n wallet.getAddress(undefined),\n );\n });\n\n it('Should error for unknown load wallet', async () => {\n await expect(\n loadWalletByID(\n MOCK_DB_ENCRYPTION_KEY,\n 'unknown',\n false, // isViewOnlyWallet\n ),\n ).rejectedWith('Could not load DOP wallet');\n });\n\n it('Should validate DOP addresses', async () => {\n expect(validateDopAddress('0x9E9F988356f46744Ee0374A17a5Fa1a3A3cC3777'))\n .to.be.false;\n expect(validateDopAddress('9E9F988356f46744Ee0374A17a5Fa1a3A3cC3777'))\n .to.be.false;\n expect(\n validateDopAddress(\n 'rgtestropsten1qyglk9smgj240x2xmj2laj7p5hexw0a30vvdqnv9gk020nsd7yzgwkgce9x',\n ),\n ).to.be.false;\n expect(\n validateDopAddress(\n '0zk1q8hxknrs97q8pjxaagwthzc0df99rzmhl2xnlxmgv9akv32sua0kfrv7j6fe3z53llhxknrs97q8pjxaagwthzc0df99rzmhl2xnlxmgv9akv32sua0kg0zpzts',\n ),\n ).to.be.true;\n expect(\n validateDopAddress(\n '0zk1qyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqunpd9kxwatwqyqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqhshkca',\n ),\n ).to.be.true;\n });\n});\n"]}
@@ -1 +0,0 @@
1
- export {};