dop-wallet-v6 1.1.5 → 1.1.7

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 (111) hide show
  1. package/README.md +0 -2
  2. package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
  3. package/dist/services/artifacts/artifact-downloader.js +20 -20
  4. package/dist/services/artifacts/artifact-downloader.js.map +1 -1
  5. package/dist/services/artifacts/artifact-hash.d.ts +1 -2
  6. package/dist/services/artifacts/artifact-hash.js +8 -8
  7. package/dist/services/artifacts/artifact-hash.js.map +1 -1
  8. package/dist/services/artifacts/artifact-store.d.ts +0 -1
  9. package/dist/services/artifacts/artifact-util.d.ts +1 -1
  10. package/dist/services/artifacts/artifact-util.js +18 -26
  11. package/dist/services/artifacts/artifact-util.js.map +1 -1
  12. package/dist/services/artifacts/json/artifact-v2-hashes.json +0 -65
  13. package/dist/services/dop/core/artifacts.d.ts +3 -3
  14. package/dist/services/dop/core/artifacts.js +6 -8
  15. package/dist/services/dop/core/artifacts.js.map +1 -1
  16. package/dist/services/dop/core/engine.d.ts +2 -2
  17. package/dist/services/dop/core/engine.js +13 -16
  18. package/dist/services/dop/core/engine.js.map +1 -1
  19. package/dist/services/dop/core/prover.d.ts +1 -1
  20. package/dist/services/dop/core/prover.js +2 -2
  21. package/dist/services/dop/core/prover.js.map +1 -1
  22. package/dist/services/dop/core/providers.d.ts +3 -3
  23. package/dist/services/dop/core/providers.js +16 -16
  24. package/dist/services/dop/core/providers.js.map +1 -1
  25. package/dist/services/dop/core/shields.d.ts +1 -1
  26. package/dist/services/dop/core/shields.js +2 -2
  27. package/dist/services/dop/core/shields.js.map +1 -1
  28. package/dist/services/dop/history/transaction-history.d.ts +2 -2
  29. package/dist/services/dop/history/transaction-history.js +14 -14
  30. package/dist/services/dop/history/transaction-history.js.map +1 -1
  31. package/dist/services/dop/process/extract-first-note.d.ts +2 -2
  32. package/dist/services/dop/process/extract-first-note.js +15 -15
  33. package/dist/services/dop/process/extract-first-note.js.map +1 -1
  34. package/dist/services/dop/quick-sync/empty-events.d.ts +1 -1
  35. package/dist/services/dop/quick-sync/empty-events.js.map +1 -1
  36. package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +1 -1
  37. package/dist/services/dop/quick-sync/graph-type-formatters.js +15 -15
  38. package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -1
  39. package/dist/services/dop/quick-sync/graphql/index.js +5 -5
  40. package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
  41. package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +1 -1
  42. package/dist/services/dop/quick-sync/quick-sync-graph.js +17 -17
  43. package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -1
  44. package/dist/services/dop/util/bytes.d.ts +1 -1
  45. package/dist/services/dop/util/bytes.js +7 -7
  46. package/dist/services/dop/util/bytes.js.map +1 -1
  47. package/dist/services/dop/util/commitment.d.ts +2 -1
  48. package/dist/services/dop/util/commitment.js +4 -5
  49. package/dist/services/dop/util/commitment.js.map +1 -1
  50. package/dist/services/dop/util/crypto.d.ts +2 -2
  51. package/dist/services/dop/util/crypto.js +15 -15
  52. package/dist/services/dop/util/crypto.js.map +1 -1
  53. package/dist/services/dop/util/db.d.ts +1 -1
  54. package/dist/services/dop/util/db.js +2 -2
  55. package/dist/services/dop/util/db.js.map +1 -1
  56. package/dist/services/dop/wallets/balance-update.d.ts +2 -2
  57. package/dist/services/dop/wallets/balance-update.js +6 -6
  58. package/dist/services/dop/wallets/balance-update.js.map +1 -1
  59. package/dist/services/dop/wallets/balances.d.ts +2 -2
  60. package/dist/services/dop/wallets/balances.js.map +1 -1
  61. package/dist/services/dop/wallets/wallets.d.ts +2 -4
  62. package/dist/services/dop/wallets/wallets.js +12 -27
  63. package/dist/services/dop/wallets/wallets.js.map +1 -1
  64. package/dist/services/ethers/ethers-util.js +2 -2
  65. package/dist/services/ethers/ethers-util.js.map +1 -1
  66. package/dist/services/transactions/proof-cache.d.ts +1 -1
  67. package/dist/services/transactions/proof-cache.js +16 -16
  68. package/dist/services/transactions/proof-cache.js.map +1 -1
  69. package/dist/services/transactions/tx-cross-contract-calls.d.ts +4 -2
  70. package/dist/services/transactions/tx-cross-contract-calls.js +117 -269
  71. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
  72. package/dist/services/transactions/tx-gas-details.d.ts +1 -1
  73. package/dist/services/transactions/tx-gas-details.js +24 -36
  74. package/dist/services/transactions/tx-gas-details.js.map +1 -1
  75. package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +4 -1
  76. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +88 -187
  77. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
  78. package/dist/services/transactions/tx-generator.d.ts +5 -4
  79. package/dist/services/transactions/tx-generator.js +42 -71
  80. package/dist/services/transactions/tx-generator.js.map +1 -1
  81. package/dist/services/transactions/tx-notes.d.ts +2 -2
  82. package/dist/services/transactions/tx-notes.js +13 -13
  83. package/dist/services/transactions/tx-notes.js.map +1 -1
  84. package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
  85. package/dist/services/transactions/tx-nullifiers.js.map +1 -1
  86. package/dist/services/transactions/tx-proof-transfer.d.ts +3 -4
  87. package/dist/services/transactions/tx-proof-transfer.js +19 -13
  88. package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
  89. package/dist/services/transactions/tx-proof-unshield.d.ts +4 -3
  90. package/dist/services/transactions/tx-proof-unshield.js +87 -146
  91. package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
  92. package/dist/services/transactions/tx-shield-base-token.d.ts +2 -2
  93. package/dist/services/transactions/tx-shield-base-token.js +10 -13
  94. package/dist/services/transactions/tx-shield-base-token.js.map +1 -1
  95. package/dist/services/transactions/tx-shield.d.ts +1 -1
  96. package/dist/services/transactions/tx-shield.js +12 -16
  97. package/dist/services/transactions/tx-shield.js.map +1 -1
  98. package/dist/services/transactions/tx-transfer.d.ts +2 -1
  99. package/dist/services/transactions/tx-transfer.js +16 -55
  100. package/dist/services/transactions/tx-transfer.js.map +1 -1
  101. package/dist/services/transactions/tx-unshield.d.ts +3 -1
  102. package/dist/services/transactions/tx-unshield.js +40 -119
  103. package/dist/services/transactions/tx-unshield.js.map +1 -1
  104. package/dist/utils/blocked-address.js +3 -3
  105. package/dist/utils/blocked-address.js.map +1 -1
  106. package/dist/utils/error.js +2 -2
  107. package/dist/utils/error.js.map +1 -1
  108. package/dist/utils/gas-price.d.ts +1 -1
  109. package/dist/utils/gas-price.js +13 -13
  110. package/dist/utils/gas-price.js.map +1 -1
  111. package/package.json +3 -3
@@ -1,2 +1,2 @@
1
- import { AccumulatedEvents, Chain } from 'dop-engine-v5';
1
+ import { AccumulatedEvents, Chain } from 'dop-engine';
2
2
  export declare const quickSyncGraph: (chain: Chain, startingBlock: number) => Promise<AccumulatedEvents>;
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.quickSyncGraph = void 0;
4
- const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
4
+ const dop_sharedmodel_1 = require("dop-sharedmodel");
5
5
  const empty_events_1 = require("./empty-events");
6
6
  const graphql_1 = require("./graphql");
7
7
  const runtime_1 = require("@graphql-mesh/runtime");
@@ -12,32 +12,32 @@ const meshes = {};
12
12
  const MAX_QUERY_RESULTS = 100000;
13
13
  const sourceNameForNetwork = (networkName) => {
14
14
  switch (networkName) {
15
- case dop_sharedmodel_v5_1.NetworkName.Ethereum:
15
+ case dop_sharedmodel_1.NetworkName.Ethereum:
16
16
  return 'ethereum';
17
- case dop_sharedmodel_v5_1.NetworkName.EthereumGoerli:
17
+ case dop_sharedmodel_1.NetworkName.EthereumGoerli:
18
18
  return 'goerli';
19
- case dop_sharedmodel_v5_1.NetworkName.BNBChain:
19
+ case dop_sharedmodel_1.NetworkName.BNBChain:
20
20
  return 'bsc';
21
- case dop_sharedmodel_v5_1.NetworkName.Polygon:
21
+ case dop_sharedmodel_1.NetworkName.Polygon:
22
22
  return 'matic';
23
- case dop_sharedmodel_v5_1.NetworkName.Arbitrum:
23
+ case dop_sharedmodel_1.NetworkName.Arbitrum:
24
24
  return 'arbitrum-one';
25
- case dop_sharedmodel_v5_1.NetworkName.ArbitrumGoerli:
25
+ case dop_sharedmodel_1.NetworkName.ArbitrumGoerli:
26
26
  return 'arbitrum-goerli';
27
- case dop_sharedmodel_v5_1.NetworkName.Xlayer:
27
+ case dop_sharedmodel_1.NetworkName.Xlayer:
28
28
  return 'xlayer';
29
- case dop_sharedmodel_v5_1.NetworkName.XlayerTestnet:
29
+ case dop_sharedmodel_1.NetworkName.XlayerTestnet:
30
30
  return 'xlayer-testnet';
31
- case dop_sharedmodel_v5_1.NetworkName.PolygonMumbai:
31
+ case dop_sharedmodel_1.NetworkName.PolygonMumbai:
32
32
  return 'mumbai';
33
- case dop_sharedmodel_v5_1.NetworkName.Dop:
34
- case dop_sharedmodel_v5_1.NetworkName.EthereumRopsten_DEPRECATED:
35
- case dop_sharedmodel_v5_1.NetworkName.Hardhat:
33
+ case dop_sharedmodel_1.NetworkName.Dop:
34
+ case dop_sharedmodel_1.NetworkName.EthereumRopsten_DEPRECATED:
35
+ case dop_sharedmodel_1.NetworkName.Hardhat:
36
36
  throw new Error('No Graph API hosted service for this network');
37
37
  }
38
38
  };
39
39
  const quickSyncGraph = async (chain, startingBlock) => {
40
- const network = (0, dop_sharedmodel_v5_1.networkForChain)(chain);
40
+ const network = (0, dop_sharedmodel_1.networkForChain)(chain);
41
41
  if (!network || !network.shouldQuickSync) {
42
42
  // Return empty logs, Engine will default to full scan.
43
43
  return empty_events_1.EMPTY_EVENTS;
@@ -70,7 +70,7 @@ const createGraphCommitmentBatches = (flattenedCommitments) => {
70
70
  for (const commitment of flattenedCommitments) {
71
71
  const startPosition = commitment.batchStartTreePosition;
72
72
  const existingBatch = graphCommitmentMap[startPosition];
73
- if ((0, dop_sharedmodel_v5_1.isDefined)(existingBatch)) {
73
+ if ((0, dop_sharedmodel_1.isDefined)(existingBatch)) {
74
74
  existingBatch.commitments.push(commitment);
75
75
  }
76
76
  else {
@@ -83,7 +83,7 @@ const createGraphCommitmentBatches = (flattenedCommitments) => {
83
83
  };
84
84
  }
85
85
  }
86
- return (0, dop_sharedmodel_v5_1.removeUndefineds)(Object.values(graphCommitmentMap));
86
+ return (0, dop_sharedmodel_1.removeUndefineds)(Object.values(graphCommitmentMap));
87
87
  };
88
88
  const autoPaginatingQuery = async (query, blockNumber, prevResults = []) => {
89
89
  const newResults = await query(blockNumber);
@@ -124,7 +124,7 @@ const sortByTreeNumberAndStartPosition = (a, b) => {
124
124
  };
125
125
  const getBuiltGraphClient = async (networkName) => {
126
126
  const meshForNetwork = meshes[networkName];
127
- if ((0, dop_sharedmodel_v5_1.isDefined)(meshForNetwork)) {
127
+ if ((0, dop_sharedmodel_1.isDefined)(meshForNetwork)) {
128
128
  return meshForNetwork;
129
129
  }
130
130
  const sourceName = sourceNameForNetwork(networkName);
@@ -1 +1 @@
1
- {"version":3,"file":"quick-sync-graph.js","sourceRoot":"","sources":["../../../../src/services/dop/quick-sync/quick-sync-graph.ts"],"names":[],"mappings":"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","sourcesContent":["import { AccumulatedEvents, Chain } from 'dop-engine-v5';\nimport {\n NetworkName,\n isDefined,\n networkForChain,\n removeUndefineds,\n} from 'dop-sharedmodel-v5';\nimport { EMPTY_EVENTS } from './empty-events';\nimport { getMeshOptions, getSdk } from './graphql';\nimport { MeshInstance, getMesh } from '@graphql-mesh/runtime';\nimport {\n GraphCommitment,\n GraphCommitmentBatch,\n formatGraphCommitmentEvents,\n formatGraphNullifierEvents,\n formatGraphUnshieldEvents,\n} from './graph-type-formatters';\n\nconst meshes: MapType<MeshInstance> = {};\n\n// 1.5 full trees of commitments\n// TODO: This will have to change when we have more than 100k commitments.\nconst MAX_QUERY_RESULTS = 100000;\n\nconst sourceNameForNetwork = (networkName: NetworkName): string => {\n switch (networkName) {\n case NetworkName.Ethereum:\n return 'ethereum';\n case NetworkName.EthereumGoerli:\n return 'goerli';\n case NetworkName.BNBChain:\n return 'bsc';\n case NetworkName.Polygon:\n return 'matic';\n case NetworkName.Arbitrum:\n return 'arbitrum-one';\n case NetworkName.ArbitrumGoerli:\n return 'arbitrum-goerli';\n case NetworkName.Xlayer:\n return 'xlayer';\n case NetworkName.XlayerTestnet:\n return 'xlayer-testnet';\n case NetworkName.PolygonMumbai:\n return 'mumbai';\n case NetworkName.Dop:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.Hardhat:\n throw new Error('No Graph API hosted service for this network');\n }\n};\n\nexport const quickSyncGraph = async (\n chain: Chain,\n startingBlock: number,\n): Promise<AccumulatedEvents> => {\n const network = networkForChain(chain);\n if (!network || !network.shouldQuickSync) {\n // Return empty logs, Engine will default to full scan.\n return EMPTY_EVENTS;\n }\n\n const sdk = getBuiltGraphSDK(network.name);\n\n const [nullifiers, unshields, commitments] = await Promise.all([\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Nullifiers({\n blockNumber,\n })\n ).nullifiers,\n startingBlock.toString(),\n ),\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Unshields({\n blockNumber,\n })\n ).unshields,\n startingBlock.toString(),\n ),\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Commitments({\n blockNumber,\n })\n ).commitments,\n startingBlock.toString(),\n ),\n ]);\n\n const filteredNullifiers = removeDuplicatesByID(nullifiers);\n const filteredUnshields = removeDuplicatesByID(unshields);\n const filteredCommitments = removeDuplicatesByID(commitments);\n const graphCommitmentBatches =\n createGraphCommitmentBatches(filteredCommitments);\n\n graphCommitmentBatches.sort(sortByTreeNumberAndStartPosition);\n\n const nullifierEvents = formatGraphNullifierEvents(filteredNullifiers);\n const unshieldEvents = formatGraphUnshieldEvents(filteredUnshields);\n const commitmentEvents = formatGraphCommitmentEvents(graphCommitmentBatches);\n\n return { nullifierEvents, unshieldEvents, commitmentEvents };\n};\n\nconst createGraphCommitmentBatches = (\n flattenedCommitments: GraphCommitment[],\n): GraphCommitmentBatch[] => {\n const graphCommitmentMap: MapType<GraphCommitmentBatch> = {};\n for (const commitment of flattenedCommitments) {\n const startPosition = commitment.batchStartTreePosition;\n const existingBatch = graphCommitmentMap[startPosition];\n if (isDefined(existingBatch)) {\n existingBatch.commitments.push(commitment);\n } else {\n graphCommitmentMap[commitment.batchStartTreePosition] = {\n commitments: [commitment],\n transactionHash: commitment.transactionHash,\n treeNumber: commitment.treeNumber,\n startPosition: commitment.batchStartTreePosition,\n blockNumber: Number(commitment.blockNumber),\n };\n }\n }\n return removeUndefineds(Object.values(graphCommitmentMap));\n};\n\nconst autoPaginatingQuery = async <ReturnType extends { blockNumber: string }>(\n query: (blockNumber: string) => Promise<ReturnType[]>,\n blockNumber: string,\n prevResults: ReturnType[] = [],\n): Promise<ReturnType[]> => {\n const newResults = await query(blockNumber);\n if (newResults.length === 0) {\n return prevResults;\n }\n\n const totalResults = prevResults.concat(newResults);\n\n const overLimit = totalResults.length >= MAX_QUERY_RESULTS;\n const lastResult = totalResults[totalResults.length - 1];\n\n const shouldQueryMore = newResults.length === 1000;\n if (!overLimit && shouldQueryMore) {\n return autoPaginatingQuery(query, lastResult.blockNumber, totalResults);\n }\n\n return totalResults;\n};\n\nconst removeDuplicatesByID = <T extends { id: string }>(array: T[]): T[] => {\n const seen = new Set();\n return array.filter((item: T) => {\n const duplicate = seen.has(item.id);\n seen.add(item.id);\n return !duplicate;\n });\n};\n\nconst sortByTreeNumberAndStartPosition = (\n a: GraphCommitmentBatch,\n b: GraphCommitmentBatch,\n) => {\n if (a.treeNumber < b.treeNumber) {\n return -1;\n }\n if (a.treeNumber > b.treeNumber) {\n return 1;\n }\n if (a.startPosition < b.startPosition) {\n return -1;\n }\n if (a.startPosition > b.startPosition) {\n return 1;\n }\n return 0;\n};\n\nconst getBuiltGraphClient = async (\n networkName: NetworkName,\n): Promise<MeshInstance> => {\n const meshForNetwork = meshes[networkName];\n if (isDefined(meshForNetwork)) {\n return meshForNetwork;\n }\n const sourceName = sourceNameForNetwork(networkName);\n const meshOptions = await getMeshOptions();\n const filteredSources = meshOptions.sources.filter(source => {\n return source.name === sourceName;\n });\n if (filteredSources.length !== 1) {\n throw new Error(\n `Expected exactly one source for network ${networkName}, found ${filteredSources.length}`,\n );\n }\n meshOptions.sources = [filteredSources[0]];\n const mesh = await getMesh(meshOptions);\n meshes[networkName] = mesh;\n const id = mesh.pubsub.subscribe('destroy', () => {\n mesh.pubsub.unsubscribe(id);\n });\n return mesh;\n};\n\nconst getBuiltGraphSDK = <TGlobalContext, TOperationContext>(\n networkName: NetworkName,\n globalContext?: TGlobalContext,\n) => {\n const sdkRequester$ = getBuiltGraphClient(networkName).then(\n ({ sdkRequesterFactory }) => sdkRequesterFactory(globalContext),\n );\n return getSdk<TOperationContext, TGlobalContext>((...args) =>\n sdkRequester$.then(sdkRequester => sdkRequester(...args)),\n );\n};\n"]}
1
+ {"version":3,"file":"quick-sync-graph.js","sourceRoot":"","sources":["../../../../src/services/dop/quick-sync/quick-sync-graph.ts"],"names":[],"mappings":";;;AACA,qDAKyB;AACzB,iDAA8C;AAC9C,uCAAmD;AACnD,mDAA8D;AAC9D,mEAMiC;AAEjC,MAAM,MAAM,GAA0B,EAAE,CAAC;AAEzC,gCAAgC;AAChC,0EAA0E;AAC1E,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,MAAM,oBAAoB,GAAG,CAAC,WAAwB,EAAU,EAAE;IAChE,QAAQ,WAAW,EAAE;QACnB,KAAK,6BAAW,CAAC,QAAQ;YACvB,OAAO,UAAU,CAAC;QACpB,KAAK,6BAAW,CAAC,cAAc;YAC7B,OAAO,QAAQ,CAAC;QAClB,KAAK,6BAAW,CAAC,QAAQ;YACvB,OAAO,KAAK,CAAC;QACf,KAAK,6BAAW,CAAC,OAAO;YACtB,OAAO,OAAO,CAAC;QACjB,KAAK,6BAAW,CAAC,QAAQ;YACvB,OAAO,cAAc,CAAC;QACxB,KAAK,6BAAW,CAAC,cAAc;YAC7B,OAAO,iBAAiB,CAAC;QAC3B,KAAK,6BAAW,CAAC,MAAM;YACrB,OAAO,QAAQ,CAAC;QAClB,KAAK,6BAAW,CAAC,aAAa;YAC5B,OAAO,gBAAgB,CAAC;QAC1B,KAAK,6BAAW,CAAC,aAAa;YAC5B,OAAO,QAAQ,CAAC;QAClB,KAAK,6BAAW,CAAC,GAAG,CAAC;QACrB,KAAK,6BAAW,CAAC,0BAA0B,CAAC;QAC5C,KAAK,6BAAW,CAAC,OAAO;YACtB,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;KACnE;AACH,CAAC,CAAC;AAEK,MAAM,cAAc,GAAG,KAAK,EACjC,KAAY,EACZ,aAAqB,EACO,EAAE;IAC9B,MAAM,OAAO,GAAG,IAAA,iCAAe,EAAC,KAAK,CAAC,CAAC;IACvC,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;QACxC,uDAAuD;QACvD,OAAO,2BAAY,CAAC;KACrB;IAED,MAAM,GAAG,GAAG,gBAAgB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3C,MAAM,CAAC,UAAU,EAAE,SAAS,EAAE,WAAW,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7D,mBAAmB,CACjB,KAAK,EAAE,WAAmB,EAAE,EAAE,CAC5B,CACE,MAAM,GAAG,CAAC,UAAU,CAAC;YACnB,WAAW;SACZ,CAAC,CACH,CAAC,UAAU,EACd,aAAa,CAAC,QAAQ,EAAE,CACzB;QACD,mBAAmB,CACjB,KAAK,EAAE,WAAmB,EAAE,EAAE,CAC5B,CACE,MAAM,GAAG,CAAC,SAAS,CAAC;YAClB,WAAW;SACZ,CAAC,CACH,CAAC,SAAS,EACb,aAAa,CAAC,QAAQ,EAAE,CACzB;QACD,mBAAmB,CACjB,KAAK,EAAE,WAAmB,EAAE,EAAE,CAC5B,CACE,MAAM,GAAG,CAAC,WAAW,CAAC;YACpB,WAAW;SACZ,CAAC,CACH,CAAC,WAAW,EACf,aAAa,CAAC,QAAQ,EAAE,CACzB;KACF,CAAC,CAAC;IAEH,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IAC5D,MAAM,iBAAiB,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAC1D,MAAM,mBAAmB,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAC9D,MAAM,sBAAsB,GAC1B,4BAA4B,CAAC,mBAAmB,CAAC,CAAC;IAEpD,sBAAsB,CAAC,IAAI,CAAC,gCAAgC,CAAC,CAAC;IAE9D,MAAM,eAAe,GAAG,IAAA,kDAA0B,EAAC,kBAAkB,CAAC,CAAC;IACvE,MAAM,cAAc,GAAG,IAAA,iDAAyB,EAAC,iBAAiB,CAAC,CAAC;IACpE,MAAM,gBAAgB,GAAG,IAAA,mDAA2B,EAAC,sBAAsB,CAAC,CAAC;IAE7E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAC/D,CAAC,CAAC;AAvDW,QAAA,cAAc,kBAuDzB;AAEF,MAAM,4BAA4B,GAAG,CACnC,oBAAuC,EACf,EAAE;IAC1B,MAAM,kBAAkB,GAAkC,EAAE,CAAC;IAC7D,KAAK,MAAM,UAAU,IAAI,oBAAoB,EAAE;QAC7C,MAAM,aAAa,GAAG,UAAU,CAAC,sBAAsB,CAAC;QACxD,MAAM,aAAa,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,IAAA,2BAAS,EAAC,aAAa,CAAC,EAAE;YAC5B,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAC5C;aAAM;YACL,kBAAkB,CAAC,UAAU,CAAC,sBAAsB,CAAC,GAAG;gBACtD,WAAW,EAAE,CAAC,UAAU,CAAC;gBACzB,eAAe,EAAE,UAAU,CAAC,eAAe;gBAC3C,UAAU,EAAE,UAAU,CAAC,UAAU;gBACjC,aAAa,EAAE,UAAU,CAAC,sBAAsB;gBAChD,WAAW,EAAE,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;aAC5C,CAAC;SACH;KACF;IACD,OAAO,IAAA,kCAAgB,EAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC7D,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,KAAqD,EACrD,WAAmB,EACnB,cAA4B,EAAE,EACP,EAAE;IACzB,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;QAC3B,OAAO,WAAW,CAAC;KACpB;IAED,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEpD,MAAM,SAAS,GAAG,YAAY,CAAC,MAAM,IAAI,iBAAiB,CAAC;IAC3D,MAAM,UAAU,GAAG,YAAY,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAEzD,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,KAAK,IAAI,CAAC;IACnD,IAAI,CAAC,SAAS,IAAI,eAAe,EAAE;QACjC,OAAO,mBAAmB,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;KACzE;IAED,OAAO,YAAY,CAAC;AACtB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAA2B,KAAU,EAAO,EAAE;IACzE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;IACvB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAO,EAAE,EAAE;QAC9B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,SAAS,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gCAAgC,GAAG,CACvC,CAAuB,EACvB,CAAuB,EACvB,EAAE;IACF,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE;QAC/B,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAAE;QAC/B,OAAO,CAAC,CAAC;KACV;IACD,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,EAAE;QACrC,OAAO,CAAC,CAAC,CAAC;KACX;IACD,IAAI,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,EAAE;QACrC,OAAO,CAAC,CAAC;KACV;IACD,OAAO,CAAC,CAAC;AACX,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,WAAwB,EACD,EAAE;IACzB,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;IAC3C,IAAI,IAAA,2BAAS,EAAC,cAAc,CAAC,EAAE;QAC7B,OAAO,cAAc,CAAC;KACvB;IACD,MAAM,UAAU,GAAG,oBAAoB,CAAC,WAAW,CAAC,CAAC;IACrD,MAAM,WAAW,GAAG,MAAM,IAAA,wBAAc,GAAE,CAAC;IAC3C,MAAM,eAAe,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;QAC1D,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE;QAChC,MAAM,IAAI,KAAK,CACb,2CAA2C,WAAW,WAAW,eAAe,CAAC,MAAM,EAAE,CAC1F,CAAC;KACH;IACD,WAAW,CAAC,OAAO,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,IAAA,iBAAO,EAAC,WAAW,CAAC,CAAC;IACxC,MAAM,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,EAAE;QAC/C,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,WAAwB,EACxB,aAA8B,EAC9B,EAAE;IACF,MAAM,aAAa,GAAG,mBAAmB,CAAC,WAAW,CAAC,CAAC,IAAI,CACzD,CAAC,EAAE,mBAAmB,EAAE,EAAE,EAAE,CAAC,mBAAmB,CAAC,aAAa,CAAC,CAChE,CAAC;IACF,OAAO,IAAA,gBAAM,EAAoC,CAAC,GAAG,IAAI,EAAE,EAAE,CAC3D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,CAAC,CAC1D,CAAC;AACJ,CAAC,CAAC","sourcesContent":["import { AccumulatedEvents, Chain } from 'dop-engine';\nimport {\n NetworkName,\n isDefined,\n networkForChain,\n removeUndefineds,\n} from 'dop-sharedmodel';\nimport { EMPTY_EVENTS } from './empty-events';\nimport { getMeshOptions, getSdk } from './graphql';\nimport { MeshInstance, getMesh } from '@graphql-mesh/runtime';\nimport {\n GraphCommitment,\n GraphCommitmentBatch,\n formatGraphCommitmentEvents,\n formatGraphNullifierEvents,\n formatGraphUnshieldEvents,\n} from './graph-type-formatters';\n\nconst meshes: MapType<MeshInstance> = {};\n\n// 1.5 full trees of commitments\n// TODO: This will have to change when we have more than 100k commitments.\nconst MAX_QUERY_RESULTS = 100000;\n\nconst sourceNameForNetwork = (networkName: NetworkName): string => {\n switch (networkName) {\n case NetworkName.Ethereum:\n return 'ethereum';\n case NetworkName.EthereumGoerli:\n return 'goerli';\n case NetworkName.BNBChain:\n return 'bsc';\n case NetworkName.Polygon:\n return 'matic';\n case NetworkName.Arbitrum:\n return 'arbitrum-one';\n case NetworkName.ArbitrumGoerli:\n return 'arbitrum-goerli';\n case NetworkName.Xlayer:\n return 'xlayer';\n case NetworkName.XlayerTestnet:\n return 'xlayer-testnet';\n case NetworkName.PolygonMumbai:\n return 'mumbai';\n case NetworkName.Dop:\n case NetworkName.EthereumRopsten_DEPRECATED:\n case NetworkName.Hardhat:\n throw new Error('No Graph API hosted service for this network');\n }\n};\n\nexport const quickSyncGraph = async (\n chain: Chain,\n startingBlock: number,\n): Promise<AccumulatedEvents> => {\n const network = networkForChain(chain);\n if (!network || !network.shouldQuickSync) {\n // Return empty logs, Engine will default to full scan.\n return EMPTY_EVENTS;\n }\n\n const sdk = getBuiltGraphSDK(network.name);\n\n const [nullifiers, unshields, commitments] = await Promise.all([\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Nullifiers({\n blockNumber,\n })\n ).nullifiers,\n startingBlock.toString(),\n ),\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Unshields({\n blockNumber,\n })\n ).unshields,\n startingBlock.toString(),\n ),\n autoPaginatingQuery(\n async (blockNumber: string) =>\n (\n await sdk.Commitments({\n blockNumber,\n })\n ).commitments,\n startingBlock.toString(),\n ),\n ]);\n\n const filteredNullifiers = removeDuplicatesByID(nullifiers);\n const filteredUnshields = removeDuplicatesByID(unshields);\n const filteredCommitments = removeDuplicatesByID(commitments);\n const graphCommitmentBatches =\n createGraphCommitmentBatches(filteredCommitments);\n\n graphCommitmentBatches.sort(sortByTreeNumberAndStartPosition);\n\n const nullifierEvents = formatGraphNullifierEvents(filteredNullifiers);\n const unshieldEvents = formatGraphUnshieldEvents(filteredUnshields);\n const commitmentEvents = formatGraphCommitmentEvents(graphCommitmentBatches);\n\n return { nullifierEvents, unshieldEvents, commitmentEvents };\n};\n\nconst createGraphCommitmentBatches = (\n flattenedCommitments: GraphCommitment[],\n): GraphCommitmentBatch[] => {\n const graphCommitmentMap: MapType<GraphCommitmentBatch> = {};\n for (const commitment of flattenedCommitments) {\n const startPosition = commitment.batchStartTreePosition;\n const existingBatch = graphCommitmentMap[startPosition];\n if (isDefined(existingBatch)) {\n existingBatch.commitments.push(commitment);\n } else {\n graphCommitmentMap[commitment.batchStartTreePosition] = {\n commitments: [commitment],\n transactionHash: commitment.transactionHash,\n treeNumber: commitment.treeNumber,\n startPosition: commitment.batchStartTreePosition,\n blockNumber: Number(commitment.blockNumber),\n };\n }\n }\n return removeUndefineds(Object.values(graphCommitmentMap));\n};\n\nconst autoPaginatingQuery = async <ReturnType extends { blockNumber: string }>(\n query: (blockNumber: string) => Promise<ReturnType[]>,\n blockNumber: string,\n prevResults: ReturnType[] = [],\n): Promise<ReturnType[]> => {\n const newResults = await query(blockNumber);\n if (newResults.length === 0) {\n return prevResults;\n }\n\n const totalResults = prevResults.concat(newResults);\n\n const overLimit = totalResults.length >= MAX_QUERY_RESULTS;\n const lastResult = totalResults[totalResults.length - 1];\n\n const shouldQueryMore = newResults.length === 1000;\n if (!overLimit && shouldQueryMore) {\n return autoPaginatingQuery(query, lastResult.blockNumber, totalResults);\n }\n\n return totalResults;\n};\n\nconst removeDuplicatesByID = <T extends { id: string }>(array: T[]): T[] => {\n const seen = new Set();\n return array.filter((item: T) => {\n const duplicate = seen.has(item.id);\n seen.add(item.id);\n return !duplicate;\n });\n};\n\nconst sortByTreeNumberAndStartPosition = (\n a: GraphCommitmentBatch,\n b: GraphCommitmentBatch,\n) => {\n if (a.treeNumber < b.treeNumber) {\n return -1;\n }\n if (a.treeNumber > b.treeNumber) {\n return 1;\n }\n if (a.startPosition < b.startPosition) {\n return -1;\n }\n if (a.startPosition > b.startPosition) {\n return 1;\n }\n return 0;\n};\n\nconst getBuiltGraphClient = async (\n networkName: NetworkName,\n): Promise<MeshInstance> => {\n const meshForNetwork = meshes[networkName];\n if (isDefined(meshForNetwork)) {\n return meshForNetwork;\n }\n const sourceName = sourceNameForNetwork(networkName);\n const meshOptions = await getMeshOptions();\n const filteredSources = meshOptions.sources.filter(source => {\n return source.name === sourceName;\n });\n if (filteredSources.length !== 1) {\n throw new Error(\n `Expected exactly one source for network ${networkName}, found ${filteredSources.length}`,\n );\n }\n meshOptions.sources = [filteredSources[0]];\n const mesh = await getMesh(meshOptions);\n meshes[networkName] = mesh;\n const id = mesh.pubsub.subscribe('destroy', () => {\n mesh.pubsub.unsubscribe(id);\n });\n return mesh;\n};\n\nconst getBuiltGraphSDK = <TGlobalContext, TOperationContext>(\n networkName: NetworkName,\n globalContext?: TGlobalContext,\n) => {\n const sdkRequester$ = getBuiltGraphClient(networkName).then(\n ({ sdkRequesterFactory }) => sdkRequesterFactory(globalContext),\n );\n return getSdk<TOperationContext, TGlobalContext>((...args) =>\n sdkRequester$.then(sdkRequester => sdkRequester(...args)),\n );\n};\n"]}
@@ -1,4 +1,4 @@
1
- import { hexlify, fromUTF8String, toUTF8String, hexStringToBytes } from 'dop-engine-v5';
1
+ import { hexlify, fromUTF8String, toUTF8String, hexStringToBytes } from 'dop-engine';
2
2
  export declare const parseDopTokenAddress: (tokenAddress: string) => string;
3
3
  export declare const getRandomBytes: (length: number) => string;
4
4
  export declare const bytesToHex: (bytes: Uint8Array) => string;
@@ -1,17 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.hexStringToBytes = exports.toUTF8String = exports.fromUTF8String = exports.hexlify = exports.bytesToHex = exports.getRandomBytes = exports.parseDopTokenAddress = void 0;
4
- const dop_engine_v5_1 = require("dop-engine-v5");
5
- Object.defineProperty(exports, "hexlify", { enumerable: true, get: function () { return dop_engine_v5_1.hexlify; } });
6
- Object.defineProperty(exports, "fromUTF8String", { enumerable: true, get: function () { return dop_engine_v5_1.fromUTF8String; } });
7
- Object.defineProperty(exports, "toUTF8String", { enumerable: true, get: function () { return dop_engine_v5_1.toUTF8String; } });
8
- Object.defineProperty(exports, "hexStringToBytes", { enumerable: true, get: function () { return dop_engine_v5_1.hexStringToBytes; } });
4
+ const dop_engine_1 = require("dop-engine");
5
+ Object.defineProperty(exports, "hexlify", { enumerable: true, get: function () { return dop_engine_1.hexlify; } });
6
+ Object.defineProperty(exports, "fromUTF8String", { enumerable: true, get: function () { return dop_engine_1.fromUTF8String; } });
7
+ Object.defineProperty(exports, "toUTF8String", { enumerable: true, get: function () { return dop_engine_1.toUTF8String; } });
8
+ Object.defineProperty(exports, "hexStringToBytes", { enumerable: true, get: function () { return dop_engine_1.hexStringToBytes; } });
9
9
  const parseDopTokenAddress = (tokenAddress) => {
10
- return (0, dop_engine_v5_1.formatToByteLength)(tokenAddress, dop_engine_v5_1.ByteLength.Address, true);
10
+ return (0, dop_engine_1.formatToByteLength)(tokenAddress, dop_engine_1.ByteLength.Address, true);
11
11
  };
12
12
  exports.parseDopTokenAddress = parseDopTokenAddress;
13
13
  const getRandomBytes = (length) => {
14
- return (0, dop_engine_v5_1.randomHex)(length);
14
+ return (0, dop_engine_1.randomHex)(length);
15
15
  };
16
16
  exports.getRandomBytes = getRandomBytes;
17
17
  const bytesToHex = (bytes) => {
@@ -1 +1 @@
1
- {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../../src/services/dop/util/bytes.ts"],"names":[],"mappings":";;;AAAA,iDAQuB;AAcd,wFAlBP,uBAAO,OAkBO;AAAE,+FAjBhB,8BAAc,OAiBgB;AAAE,6FAhBhC,4BAAY,OAgBgC;AAAE,iGAf9C,gCAAgB,OAe8C;AAZzD,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACnE,OAAO,IAAA,kCAAkB,EAAC,YAAY,EAAE,0BAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEK,MAAM,cAAc,GAAG,CAAC,MAAc,EAAU,EAAE;IACvD,OAAO,IAAA,yBAAS,EAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEK,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB","sourcesContent":["import {\n randomHex,\n formatToByteLength,\n ByteLength,\n hexlify,\n fromUTF8String,\n toUTF8String,\n hexStringToBytes,\n} from 'dop-engine-v5';\n\nexport const parseDopTokenAddress = (tokenAddress: string): string => {\n return formatToByteLength(tokenAddress, ByteLength.Address, true);\n};\n\nexport const getRandomBytes = (length: number): string => {\n return randomHex(length);\n};\n\nexport const bytesToHex = (bytes: Uint8Array): string => {\n return Buffer.from(bytes).toString('hex');\n};\n\nexport { hexlify, fromUTF8String, toUTF8String, hexStringToBytes };\n"]}
1
+ {"version":3,"file":"bytes.js","sourceRoot":"","sources":["../../../../src/services/dop/util/bytes.ts"],"names":[],"mappings":";;;AAAA,2CAQoB;AAcX,wFAlBP,oBAAO,OAkBO;AAAE,+FAjBhB,2BAAc,OAiBgB;AAAE,6FAhBhC,yBAAY,OAgBgC;AAAE,iGAf9C,6BAAgB,OAe8C;AAZzD,MAAM,oBAAoB,GAAG,CAAC,YAAoB,EAAU,EAAE;IACnE,OAAO,IAAA,+BAAkB,EAAC,YAAY,EAAE,uBAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACpE,CAAC,CAAC;AAFW,QAAA,oBAAoB,wBAE/B;AAEK,MAAM,cAAc,GAAG,CAAC,MAAc,EAAU,EAAE;IACvD,OAAO,IAAA,sBAAS,EAAC,MAAM,CAAC,CAAC;AAC3B,CAAC,CAAC;AAFW,QAAA,cAAc,kBAEzB;AAEK,MAAM,UAAU,GAAG,CAAC,KAAiB,EAAU,EAAE;IACtD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;AAC5C,CAAC,CAAC;AAFW,QAAA,UAAU,cAErB","sourcesContent":["import {\n randomHex,\n formatToByteLength,\n ByteLength,\n hexlify,\n fromUTF8String,\n toUTF8String,\n hexStringToBytes,\n} from 'dop-engine';\n\nexport const parseDopTokenAddress = (tokenAddress: string): string => {\n return formatToByteLength(tokenAddress, ByteLength.Address, true);\n};\n\nexport const getRandomBytes = (length: number): string => {\n return randomHex(length);\n};\n\nexport const bytesToHex = (bytes: Uint8Array): string => {\n return Buffer.from(bytes).toString('hex');\n};\n\nexport { hexlify, fromUTF8String, toUTF8String, hexStringToBytes };\n"]}
@@ -1,2 +1,3 @@
1
- import { TransactionStruct, CommitmentSummary } from 'dop-engine-v5';
1
+ import { TransactionStruct } from 'dop-engine';
2
+ import { CommitmentSummary } from 'dop-sharedmodel';
2
3
  export declare const convertTransactionStructToCommitmentSummary: (transactionStruct: TransactionStruct, commitmentIndex: number) => CommitmentSummary;
@@ -1,16 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertTransactionStructToCommitmentSummary = void 0;
4
- const dop_engine_v5_1 = require("dop-engine-v5");
4
+ const dop_engine_1 = require("dop-engine");
5
5
  const convertTransactionStructToCommitmentSummary = (transactionStruct, commitmentIndex) => {
6
6
  const commitmentCiphertextStruct = transactionStruct.boundParams
7
7
  .commitmentCiphertext[commitmentIndex];
8
- const commitmentCiphertext = (0, dop_engine_v5_1.formatCommitmentCiphertext)(commitmentCiphertextStruct);
9
- // const commitmentHash = transactionStruct.commitments[
10
- // commitmentIndex
11
- // ] as string;
8
+ const commitmentCiphertext = (0, dop_engine_1.formatCommitmentCiphertext)(commitmentCiphertextStruct);
9
+ const commitmentHash = transactionStruct.commitments[commitmentIndex];
12
10
  return {
13
11
  commitmentCiphertext,
12
+ commitmentHash,
14
13
  };
15
14
  };
16
15
  exports.convertTransactionStructToCommitmentSummary = convertTransactionStructToCommitmentSummary;
@@ -1 +1 @@
1
- {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../../src/services/dop/util/commitment.ts"],"names":[],"mappings":";;;AAAA,iDAKuB;AAMhB,MAAM,2CAA2C,GAAG,CACzD,iBAAoC,EACpC,eAAuB,EACJ,EAAE;IACrB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,WAAW;SAC7D,oBAAoB,CAAC,eAAe,CAAqC,CAAC;IAE7E,MAAM,oBAAoB,GAAyB,IAAA,0CAA0B,EAC3E,0BAA0B,CAC3B,CAAC;IACF,wDAAwD;IACxD,oBAAoB;IACpB,eAAe;IAEf,OAAO;QACL,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC;AAjBW,QAAA,2CAA2C,+CAiBtD","sourcesContent":["import {\n CommitmentCiphertextStructOutput,\n TransactionStruct,\n formatCommitmentCiphertext,\n CommitmentSummary,\n} from 'dop-engine-v5';\n\nimport {\n CommitmentCiphertext,\n} from 'dop-sharedmodel-v5';\n\nexport const convertTransactionStructToCommitmentSummary = (\n transactionStruct: TransactionStruct,\n commitmentIndex: number,\n): CommitmentSummary => {\n const commitmentCiphertextStruct = transactionStruct.boundParams\n .commitmentCiphertext[commitmentIndex] as CommitmentCiphertextStructOutput;\n\n const commitmentCiphertext: CommitmentCiphertext = formatCommitmentCiphertext(\n commitmentCiphertextStruct,\n );\n // const commitmentHash = transactionStruct.commitments[\n // commitmentIndex\n // ] as string;\n\n return {\n commitmentCiphertext,\n };\n};\n"]}
1
+ {"version":3,"file":"commitment.js","sourceRoot":"","sources":["../../../../src/services/dop/util/commitment.ts"],"names":[],"mappings":";;;AAAA,2CAIoB;AAMb,MAAM,2CAA2C,GAAG,CACzD,iBAAoC,EACpC,eAAuB,EACJ,EAAE;IACrB,MAAM,0BAA0B,GAAG,iBAAiB,CAAC,WAAW;SAC7D,oBAAoB,CAAC,eAAe,CAAqC,CAAC;IAE7E,MAAM,oBAAoB,GAAyB,IAAA,uCAA0B,EAC3E,0BAA0B,CAC3B,CAAC;IACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,CAClD,eAAe,CACN,CAAC;IAEZ,OAAO;QACL,oBAAoB;QACpB,cAAc;KACf,CAAC;AACJ,CAAC,CAAC;AAlBW,QAAA,2CAA2C,+CAkBtD","sourcesContent":["import {\n CommitmentCiphertextStructOutput,\n TransactionStruct,\n formatCommitmentCiphertext,\n} from 'dop-engine';\nimport {\n CommitmentCiphertext,\n CommitmentSummary,\n} from 'dop-sharedmodel';\n\nexport const convertTransactionStructToCommitmentSummary = (\n transactionStruct: TransactionStruct,\n commitmentIndex: number,\n): CommitmentSummary => {\n const commitmentCiphertextStruct = transactionStruct.boundParams\n .commitmentCiphertext[commitmentIndex] as CommitmentCiphertextStructOutput;\n\n const commitmentCiphertext: CommitmentCiphertext = formatCommitmentCiphertext(\n commitmentCiphertextStruct,\n );\n const commitmentHash = transactionStruct.commitments[\n commitmentIndex\n ] as string;\n\n return {\n commitmentCiphertext,\n commitmentHash,\n };\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { encryptJSONDataWithSharedKey, tryDecryptJSONDataWithSharedKey, getPublicViewingKey, EncryptedData, ViewingKeyPair } from 'dop-engine-v5';
2
- import { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel-v5';
1
+ import { encryptJSONDataWithSharedKey, tryDecryptJSONDataWithSharedKey, getPublicViewingKey, EncryptedData, ViewingKeyPair } from 'dop-engine';
2
+ import { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel';
3
3
  export declare const verifyRelayerSignature: (signature: string | Uint8Array, data: string | Uint8Array, signingKey: Uint8Array) => Promise<boolean>;
4
4
  export declare const encryptDataWithSharedKey: (data: object, externalPubKey: Uint8Array) => Promise<EncryptDataWithSharedKeyResponse>;
5
5
  export declare const decryptAESGCM256: (encryptedData: EncryptedData, sharedKey: Uint8Array) => object | null;
@@ -25,33 +25,33 @@ var __importStar = (this && this.__importStar) || function (mod) {
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
26
  exports.getPublicViewingKey = exports.tryDecryptJSONDataWithSharedKey = exports.encryptJSONDataWithSharedKey = exports.pbkdf2 = exports.encryptAESGCM256 = exports.decryptAESGCM256 = exports.encryptDataWithSharedKey = exports.verifyRelayerSignature = void 0;
27
27
  const ed = __importStar(require("@noble/ed25519"));
28
- const dop_engine_v5_1 = require("dop-engine-v5");
29
- Object.defineProperty(exports, "encryptJSONDataWithSharedKey", { enumerable: true, get: function () { return dop_engine_v5_1.encryptJSONDataWithSharedKey; } });
30
- Object.defineProperty(exports, "tryDecryptJSONDataWithSharedKey", { enumerable: true, get: function () { return dop_engine_v5_1.tryDecryptJSONDataWithSharedKey; } });
31
- Object.defineProperty(exports, "getPublicViewingKey", { enumerable: true, get: function () { return dop_engine_v5_1.getPublicViewingKey; } });
28
+ const dop_engine_1 = require("dop-engine");
29
+ Object.defineProperty(exports, "encryptJSONDataWithSharedKey", { enumerable: true, get: function () { return dop_engine_1.encryptJSONDataWithSharedKey; } });
30
+ Object.defineProperty(exports, "tryDecryptJSONDataWithSharedKey", { enumerable: true, get: function () { return dop_engine_1.tryDecryptJSONDataWithSharedKey; } });
31
+ Object.defineProperty(exports, "getPublicViewingKey", { enumerable: true, get: function () { return dop_engine_1.getPublicViewingKey; } });
32
32
  const bytes_1 = require("./bytes");
33
33
  const util_1 = require("util");
34
34
  const crypto_1 = require("crypto");
35
35
  const pbkdf2_1 = require("ethereum-cryptography/pbkdf2");
36
36
  const verifyRelayerSignature = (signature, data, signingKey) => {
37
- return (0, dop_engine_v5_1.verifyED25519)(data, signature, signingKey);
37
+ return (0, dop_engine_1.verifyED25519)(data, signature, signingKey);
38
38
  };
39
39
  exports.verifyRelayerSignature = verifyRelayerSignature;
40
40
  const encryptDataWithSharedKey = async (data, externalPubKey) => {
41
- const randomPrivKey = (0, dop_engine_v5_1.hexStringToBytes)((0, bytes_1.getRandomBytes)(32));
42
- const randomPubKeyUint8Array = await (0, dop_engine_v5_1.getPublicViewingKey)(randomPrivKey);
43
- const randomPubKey = (0, dop_engine_v5_1.hexlify)(randomPubKeyUint8Array);
41
+ const randomPrivKey = (0, dop_engine_1.hexStringToBytes)((0, bytes_1.getRandomBytes)(32));
42
+ const randomPubKeyUint8Array = await (0, dop_engine_1.getPublicViewingKey)(randomPrivKey);
43
+ const randomPubKey = (0, dop_engine_1.hexlify)(randomPubKeyUint8Array);
44
44
  const sharedKey = await ed.getSharedSecret(randomPrivKey, externalPubKey);
45
- const encryptedData = (0, dop_engine_v5_1.encryptJSONDataWithSharedKey)(data, sharedKey);
45
+ const encryptedData = (0, dop_engine_1.encryptJSONDataWithSharedKey)(data, sharedKey);
46
46
  return { encryptedData, randomPubKey, sharedKey };
47
47
  };
48
48
  exports.encryptDataWithSharedKey = encryptDataWithSharedKey;
49
49
  const decryptAESGCM256 = (encryptedData, sharedKey) => {
50
- return (0, dop_engine_v5_1.tryDecryptJSONDataWithSharedKey)(encryptedData, sharedKey);
50
+ return (0, dop_engine_1.tryDecryptJSONDataWithSharedKey)(encryptedData, sharedKey);
51
51
  };
52
52
  exports.decryptAESGCM256 = decryptAESGCM256;
53
53
  const encryptAESGCM256 = (data, sharedKey) => {
54
- return (0, dop_engine_v5_1.encryptJSONDataWithSharedKey)(data, sharedKey);
54
+ return (0, dop_engine_1.encryptJSONDataWithSharedKey)(data, sharedKey);
55
55
  };
56
56
  exports.encryptAESGCM256 = encryptAESGCM256;
57
57
  /**
@@ -62,18 +62,18 @@ exports.encryptAESGCM256 = encryptAESGCM256;
62
62
  */
63
63
  const pbkdf2 = async (secret, salt, iterations) => {
64
64
  const secretBuffer = Buffer.from(secret, 'utf-8');
65
- const secretFormatted = new Uint8Array((0, dop_engine_v5_1.arrayify)(secretBuffer));
66
- const saltFormatted = new Uint8Array((0, dop_engine_v5_1.arrayify)(salt));
65
+ const secretFormatted = new Uint8Array((0, dop_engine_1.arrayify)(secretBuffer));
66
+ const saltFormatted = new Uint8Array((0, dop_engine_1.arrayify)(salt));
67
67
  const keyLength = 32; // Bytes
68
68
  const digest = 'sha256';
69
69
  let key;
70
- if (dop_engine_v5_1.isReactNative) {
70
+ if (dop_engine_1.isReactNative) {
71
71
  key = await (0, pbkdf2_1.pbkdf2)(secretFormatted, saltFormatted, iterations, keyLength, digest);
72
72
  }
73
73
  else {
74
74
  key = await (0, util_1.promisify)(crypto_1.pbkdf2)(secretFormatted, saltFormatted, iterations, keyLength, digest);
75
75
  }
76
- return (0, dop_engine_v5_1.hexlify)(key);
76
+ return (0, dop_engine_1.hexlify)(key);
77
77
  };
78
78
  exports.pbkdf2 = pbkdf2;
79
79
  //# sourceMappingURL=crypto.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/services/dop/util/crypto.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAqC;AACrC,iDAWuB;AAiFrB,6GAxFA,4CAA4B,OAwFA;AAC5B,gHAxFA,+CAA+B,OAwFA;AAE/B,oGAzFA,mCAAmB,OAyFA;AAlFrB,mCAAyC;AACzC,+BAAiC;AACjC,mCAA8C;AAC9C,yDAAkE;AAE3D,MAAM,sBAAsB,GAAG,CACpC,SAA8B,EAC9B,IAAyB,EACzB,UAAsB,EACJ,EAAE;IACpB,OAAO,IAAA,6BAAa,EAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,IAAY,EACZ,cAA0B,EACiB,EAAE;IAC7C,MAAM,aAAa,GAAG,IAAA,gCAAgB,EAAC,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,sBAAsB,GAAG,MAAM,IAAA,mCAAmB,EAAC,aAAa,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAA,uBAAO,EAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAA,4CAA4B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC,CAAC;AAVW,QAAA,wBAAwB,4BAUnC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,aAA4B,EAC5B,SAAqB,EACN,EAAE;IACjB,OAAO,IAAA,+CAA+B,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,SAAqB,EACN,EAAE;IACjB,OAAO,IAAA,4CAA4B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEF;;;;;GAKG;AACI,MAAM,MAAM,GAAG,KAAK,EACzB,MAAc,EACd,IAAY,EACZ,UAAkB,EACD,EAAE;IACnB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,IAAA,wBAAQ,EAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,IAAA,wBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,QAAQ;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC;IAExB,IAAI,GAAwB,CAAC;IAC7B,IAAI,6BAAa,EAAE;QACjB,GAAG,GAAG,MAAM,IAAA,eAAQ,EAClB,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAC;KACH;SAAM;QACL,GAAG,GAAG,MAAM,IAAA,gBAAS,EAAC,eAAU,CAAC,CAC/B,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAC;KACH;IACD,OAAO,IAAA,uBAAO,EAAC,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AA/BW,QAAA,MAAM,UA+BjB","sourcesContent":["import * as ed from '@noble/ed25519';\nimport {\n arrayify,\n hexlify,\n hexStringToBytes,\n encryptJSONDataWithSharedKey,\n tryDecryptJSONDataWithSharedKey,\n getPublicViewingKey,\n verifyED25519,\n EncryptedData,\n ViewingKeyPair,\n isReactNative,\n} from 'dop-engine-v5';\nimport { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel-v5';\nimport { getRandomBytes } from './bytes';\nimport { promisify } from 'util';\nimport { pbkdf2 as NodePbkdf2 } from 'crypto';\nimport { pbkdf2 as JSpbkdf2 } from 'ethereum-cryptography/pbkdf2';\n\nexport const verifyRelayerSignature = (\n signature: string | Uint8Array,\n data: string | Uint8Array,\n signingKey: Uint8Array,\n): Promise<boolean> => {\n return verifyED25519(data, signature, signingKey);\n};\n\nexport const encryptDataWithSharedKey = async (\n data: object,\n externalPubKey: Uint8Array,\n): Promise<EncryptDataWithSharedKeyResponse> => {\n const randomPrivKey = hexStringToBytes(getRandomBytes(32));\n const randomPubKeyUint8Array = await getPublicViewingKey(randomPrivKey);\n const randomPubKey = hexlify(randomPubKeyUint8Array);\n const sharedKey = await ed.getSharedSecret(randomPrivKey, externalPubKey);\n const encryptedData = encryptJSONDataWithSharedKey(data, sharedKey);\n return { encryptedData, randomPubKey, sharedKey };\n};\n\nexport const decryptAESGCM256 = (\n encryptedData: EncryptedData,\n sharedKey: Uint8Array,\n): object | null => {\n return tryDecryptJSONDataWithSharedKey(encryptedData, sharedKey);\n};\n\nexport const encryptAESGCM256 = (\n data: object,\n sharedKey: Uint8Array,\n): EncryptedData => {\n return encryptJSONDataWithSharedKey(data, sharedKey);\n};\n\n/**\n * Calculates PBKDF2 hash\n * @param secret - input\n * @param salt - salt\n * @param iterations - rounds\n */\nexport const pbkdf2 = async (\n secret: string,\n salt: string,\n iterations: number,\n): Promise<string> => {\n const secretBuffer = Buffer.from(secret, 'utf-8');\n const secretFormatted = new Uint8Array(arrayify(secretBuffer));\n const saltFormatted = new Uint8Array(arrayify(salt));\n\n const keyLength = 32; // Bytes\n const digest = 'sha256';\n\n let key: Uint8Array | Buffer;\n if (isReactNative) {\n key = await JSpbkdf2(\n secretFormatted,\n saltFormatted,\n iterations,\n keyLength,\n digest,\n );\n } else {\n key = await promisify(NodePbkdf2)(\n secretFormatted,\n saltFormatted,\n iterations,\n keyLength,\n digest,\n );\n }\n return hexlify(key);\n};\n\nexport {\n encryptJSONDataWithSharedKey,\n tryDecryptJSONDataWithSharedKey,\n EncryptedData,\n getPublicViewingKey,\n ViewingKeyPair,\n};\n"]}
1
+ {"version":3,"file":"crypto.js","sourceRoot":"","sources":["../../../../src/services/dop/util/crypto.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,mDAAqC;AACrC,2CAWoB;AAiFlB,6GAxFA,yCAA4B,OAwFA;AAC5B,gHAxFA,4CAA+B,OAwFA;AAE/B,oGAzFA,gCAAmB,OAyFA;AAlFrB,mCAAyC;AACzC,+BAAiC;AACjC,mCAA8C;AAC9C,yDAAkE;AAE3D,MAAM,sBAAsB,GAAG,CACpC,SAA8B,EAC9B,IAAyB,EACzB,UAAsB,EACJ,EAAE;IACpB,OAAO,IAAA,0BAAa,EAAC,IAAI,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AACpD,CAAC,CAAC;AANW,QAAA,sBAAsB,0BAMjC;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,IAAY,EACZ,cAA0B,EACiB,EAAE;IAC7C,MAAM,aAAa,GAAG,IAAA,6BAAgB,EAAC,IAAA,sBAAc,EAAC,EAAE,CAAC,CAAC,CAAC;IAC3D,MAAM,sBAAsB,GAAG,MAAM,IAAA,gCAAmB,EAAC,aAAa,CAAC,CAAC;IACxE,MAAM,YAAY,GAAG,IAAA,oBAAO,EAAC,sBAAsB,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,eAAe,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;IAC1E,MAAM,aAAa,GAAG,IAAA,yCAA4B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IACpE,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,CAAC;AACpD,CAAC,CAAC;AAVW,QAAA,wBAAwB,4BAUnC;AAEK,MAAM,gBAAgB,GAAG,CAC9B,aAA4B,EAC5B,SAAqB,EACN,EAAE;IACjB,OAAO,IAAA,4CAA+B,EAAC,aAAa,EAAE,SAAS,CAAC,CAAC;AACnE,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEK,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,SAAqB,EACN,EAAE;IACjB,OAAO,IAAA,yCAA4B,EAAC,IAAI,EAAE,SAAS,CAAC,CAAC;AACvD,CAAC,CAAC;AALW,QAAA,gBAAgB,oBAK3B;AAEF;;;;;GAKG;AACI,MAAM,MAAM,GAAG,KAAK,EACzB,MAAc,EACd,IAAY,EACZ,UAAkB,EACD,EAAE;IACnB,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,eAAe,GAAG,IAAI,UAAU,CAAC,IAAA,qBAAQ,EAAC,YAAY,CAAC,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,IAAI,UAAU,CAAC,IAAA,qBAAQ,EAAC,IAAI,CAAC,CAAC,CAAC;IAErD,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC,QAAQ;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC;IAExB,IAAI,GAAwB,CAAC;IAC7B,IAAI,0BAAa,EAAE;QACjB,GAAG,GAAG,MAAM,IAAA,eAAQ,EAClB,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAC;KACH;SAAM;QACL,GAAG,GAAG,MAAM,IAAA,gBAAS,EAAC,eAAU,CAAC,CAC/B,eAAe,EACf,aAAa,EACb,UAAU,EACV,SAAS,EACT,MAAM,CACP,CAAC;KACH;IACD,OAAO,IAAA,oBAAO,EAAC,GAAG,CAAC,CAAC;AACtB,CAAC,CAAC;AA/BW,QAAA,MAAM,UA+BjB","sourcesContent":["import * as ed from '@noble/ed25519';\nimport {\n arrayify,\n hexlify,\n hexStringToBytes,\n encryptJSONDataWithSharedKey,\n tryDecryptJSONDataWithSharedKey,\n getPublicViewingKey,\n verifyED25519,\n EncryptedData,\n ViewingKeyPair,\n isReactNative,\n} from 'dop-engine';\nimport { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel';\nimport { getRandomBytes } from './bytes';\nimport { promisify } from 'util';\nimport { pbkdf2 as NodePbkdf2 } from 'crypto';\nimport { pbkdf2 as JSpbkdf2 } from 'ethereum-cryptography/pbkdf2';\n\nexport const verifyRelayerSignature = (\n signature: string | Uint8Array,\n data: string | Uint8Array,\n signingKey: Uint8Array,\n): Promise<boolean> => {\n return verifyED25519(data, signature, signingKey);\n};\n\nexport const encryptDataWithSharedKey = async (\n data: object,\n externalPubKey: Uint8Array,\n): Promise<EncryptDataWithSharedKeyResponse> => {\n const randomPrivKey = hexStringToBytes(getRandomBytes(32));\n const randomPubKeyUint8Array = await getPublicViewingKey(randomPrivKey);\n const randomPubKey = hexlify(randomPubKeyUint8Array);\n const sharedKey = await ed.getSharedSecret(randomPrivKey, externalPubKey);\n const encryptedData = encryptJSONDataWithSharedKey(data, sharedKey);\n return { encryptedData, randomPubKey, sharedKey };\n};\n\nexport const decryptAESGCM256 = (\n encryptedData: EncryptedData,\n sharedKey: Uint8Array,\n): object | null => {\n return tryDecryptJSONDataWithSharedKey(encryptedData, sharedKey);\n};\n\nexport const encryptAESGCM256 = (\n data: object,\n sharedKey: Uint8Array,\n): EncryptedData => {\n return encryptJSONDataWithSharedKey(data, sharedKey);\n};\n\n/**\n * Calculates PBKDF2 hash\n * @param secret - input\n * @param salt - salt\n * @param iterations - rounds\n */\nexport const pbkdf2 = async (\n secret: string,\n salt: string,\n iterations: number,\n): Promise<string> => {\n const secretBuffer = Buffer.from(secret, 'utf-8');\n const secretFormatted = new Uint8Array(arrayify(secretBuffer));\n const saltFormatted = new Uint8Array(arrayify(salt));\n\n const keyLength = 32; // Bytes\n const digest = 'sha256';\n\n let key: Uint8Array | Buffer;\n if (isReactNative) {\n key = await JSpbkdf2(\n secretFormatted,\n saltFormatted,\n iterations,\n keyLength,\n digest,\n );\n } else {\n key = await promisify(NodePbkdf2)(\n secretFormatted,\n saltFormatted,\n iterations,\n keyLength,\n digest,\n );\n }\n return hexlify(key);\n};\n\nexport {\n encryptJSONDataWithSharedKey,\n tryDecryptJSONDataWithSharedKey,\n EncryptedData,\n getPublicViewingKey,\n ViewingKeyPair,\n};\n"]}
@@ -1,2 +1,2 @@
1
- import { Database } from 'dop-engine-v5';
1
+ import { Database } from 'dop-engine';
2
2
  export { Database };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Database = void 0;
4
- const dop_engine_v5_1 = require("dop-engine-v5");
5
- Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return dop_engine_v5_1.Database; } });
4
+ const dop_engine_1 = require("dop-engine");
5
+ Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return dop_engine_1.Database; } });
6
6
  //# sourceMappingURL=db.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/services/dop/util/db.ts"],"names":[],"mappings":";;;AAAA,iDAAyC;AAEhC,yFAFA,wBAAQ,OAEA","sourcesContent":["import { Database } from 'dop-engine-v5';\n\nexport { Database };\n"]}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../../../src/services/dop/util/db.ts"],"names":[],"mappings":";;;AAAA,2CAAsC;AAE7B,yFAFA,qBAAQ,OAEA","sourcesContent":["import { Database } from 'dop-engine';\n\nexport { Database };\n"]}
@@ -1,5 +1,5 @@
1
- import { Chain, AbstractWallet } from 'dop-engine-v5';
2
- import { DopBalancesEvent, NetworkName } from 'dop-sharedmodel-v5';
1
+ import { Chain, AbstractWallet } from 'dop-engine';
2
+ import { DopBalancesEvent, NetworkName } from 'dop-sharedmodel';
3
3
  export type BalancesUpdatedCallback = (balancesEvent: DopBalancesEvent) => void;
4
4
  export declare const setOnBalanceUpdateCallback: (callback?: BalancesUpdatedCallback) => void;
5
5
  export declare const onBalancesUpdate: (wallet: AbstractWallet, chain: Chain) => Promise<void>;
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.awaitMultipleWalletScans = exports.awaitWalletScan = exports.balanceForERC20Token = exports.onBalancesUpdate = exports.setOnBalanceUpdateCallback = void 0;
4
- const dop_engine_v5_1 = require("dop-engine-v5");
5
- const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
4
+ const dop_engine_1 = require("dop-engine");
5
+ const dop_sharedmodel_1 = require("dop-sharedmodel");
6
6
  const logger_1 = require("../../../utils/logger");
7
7
  const bytes_1 = require("../util/bytes");
8
8
  const core_1 = require("../core");
@@ -15,7 +15,7 @@ const getSerializedERC20Balances = (balances) => {
15
15
  const tokenHashes = Object.keys(balances);
16
16
  return tokenHashes
17
17
  .filter(tokenHash => {
18
- return balances[tokenHash].tokenData.tokenType === dop_engine_v5_1.TokenType.ERC20;
18
+ return balances[tokenHash].tokenData.tokenType === dop_engine_1.TokenType.ERC20;
19
19
  })
20
20
  .map(dopBalanceAddress => {
21
21
  const erc20Balance = {
@@ -29,7 +29,7 @@ const getNFTBalances = (balances) => {
29
29
  const tokenHashes = Object.keys(balances);
30
30
  return tokenHashes
31
31
  .filter(tokenHash => {
32
- return ([dop_engine_v5_1.TokenType.ERC721, dop_engine_v5_1.TokenType.ERC1155].includes(balances[tokenHash].tokenData.tokenType) && balances[tokenHash].balance > BigInt(0));
32
+ return ([dop_engine_1.TokenType.ERC721, dop_engine_1.TokenType.ERC1155].includes(balances[tokenHash].tokenData.tokenType) && balances[tokenHash].balance > BigInt(0));
33
33
  })
34
34
  .map(tokenHash => {
35
35
  const tokenData = balances[tokenHash].tokenData;
@@ -60,7 +60,7 @@ const onBalancesUpdate = async (wallet, chain) => {
60
60
  };
61
61
  exports.onBalancesUpdate = onBalancesUpdate;
62
62
  const balanceForERC20Token = async (wallet, networkName, tokenAddress) => {
63
- const { chain } = dop_sharedmodel_v5_1.NETWORK_CONFIG[networkName];
63
+ const { chain } = dop_sharedmodel_1.NETWORK_CONFIG[networkName];
64
64
  const balances = await wallet.balances(chain);
65
65
  const tokenBalances = getSerializedERC20Balances(balances);
66
66
  const matchingTokenBalance = tokenBalances.find(tokenBalance => tokenBalance.tokenAddress.toLowerCase() === tokenAddress.toLowerCase());
@@ -72,7 +72,7 @@ const balanceForERC20Token = async (wallet, networkName, tokenAddress) => {
72
72
  exports.balanceForERC20Token = balanceForERC20Token;
73
73
  const awaitWalletScan = (walletID, chain) => {
74
74
  const wallet = (0, core_1.walletForID)(walletID);
75
- return new Promise((resolve, reject) => wallet.once(dop_engine_v5_1.EngineEvent.WalletScanComplete, ({ chain: returnedChain }) => returnedChain.type === chain.type && returnedChain.id === chain.id
75
+ return new Promise((resolve, reject) => wallet.once(dop_engine_1.EngineEvent.WalletScanComplete, ({ chain: returnedChain }) => returnedChain.type === chain.type && returnedChain.id === chain.id
76
76
  ? resolve(returnedChain)
77
77
  : reject()));
78
78
  };
@@ -1 +1 @@
1
- {"version":3,"file":"balance-update.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/balance-update.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Chain,\n AbstractWallet,\n TokenType,\n Balances,\n EngineEvent,\n WalletScannedEventData,\n} from 'dop-engine-v5';\nimport {\n DopBalancesEvent,\n DopNFTAmount,\n DopERC20Amount,\n NetworkName,\n NETWORK_CONFIG,\n} from 'dop-sharedmodel-v5';\nimport { sendMessage } from '../../../utils/logger';\nimport { parseDopTokenAddress } from '../util/bytes';\nimport { walletForID } from '../core';\n\nexport type BalancesUpdatedCallback = (\n balancesEvent: DopBalancesEvent,\n) => void;\n\nlet onBalanceUpdateCallback: Optional<BalancesUpdatedCallback>;\n\nexport const setOnBalanceUpdateCallback = (\n callback?: BalancesUpdatedCallback,\n) => {\n onBalanceUpdateCallback = callback;\n};\n\nconst getSerializedERC20Balances = (\n balances: Balances,\n): DopERC20Amount[] => {\n const tokenHashes = Object.keys(balances);\n\n return tokenHashes\n .filter(tokenHash => {\n return balances[tokenHash].tokenData.tokenType === TokenType.ERC20;\n })\n .map(dopBalanceAddress => {\n const erc20Balance: DopERC20Amount = {\n tokenAddress: parseDopTokenAddress(\n balances[dopBalanceAddress].tokenData.tokenAddress,\n ).toLowerCase(),\n amount: balances[dopBalanceAddress].balance,\n };\n return erc20Balance;\n });\n};\n\nconst getNFTBalances = (balances: Balances): DopNFTAmount[] => {\n const tokenHashes = Object.keys(balances);\n\n return tokenHashes\n .filter(tokenHash => {\n return (\n [TokenType.ERC721, TokenType.ERC1155].includes(\n balances[tokenHash].tokenData.tokenType,\n ) && balances[tokenHash].balance > BigInt(0)\n );\n })\n .map(tokenHash => {\n const tokenData = balances[tokenHash].tokenData;\n\n const nftBalance: DopNFTAmount = {\n nftAddress: parseDopTokenAddress(\n tokenData.tokenAddress,\n ).toLowerCase(),\n nftTokenType: tokenData.tokenType as 1 | 2,\n tokenSubID: tokenData.tokenSubID,\n amount: balances[tokenHash].balance,\n };\n return nftBalance;\n });\n};\n\nexport const onBalancesUpdate = async (\n wallet: AbstractWallet,\n chain: Chain,\n): Promise<void> => {\n sendMessage(\n `Wallet balance SCANNED. Getting balances for chain ${chain.type}:${chain.id}.`,\n );\n if (!onBalanceUpdateCallback) {\n return;\n }\n\n const balances = await wallet.balances(chain);\n const erc20Amounts = getSerializedERC20Balances(balances);\n const nftAmounts = getNFTBalances(balances);\n\n const balancesEvent: DopBalancesEvent = {\n chain,\n erc20Amounts,\n nftAmounts,\n dopWalletID: wallet.id,\n };\n\n onBalanceUpdateCallback(balancesEvent);\n};\n\nexport const balanceForERC20Token = async (\n wallet: AbstractWallet,\n networkName: NetworkName,\n tokenAddress: string,\n): Promise<bigint> => {\n const { chain } = NETWORK_CONFIG[networkName];\n const balances = await wallet.balances(chain);\n const tokenBalances = getSerializedERC20Balances(balances);\n\n const matchingTokenBalance: Optional<DopERC20Amount> = tokenBalances.find(\n tokenBalance =>\n tokenBalance.tokenAddress.toLowerCase() === tokenAddress.toLowerCase(),\n );\n if (!matchingTokenBalance) {\n return 0n;\n }\n return matchingTokenBalance.amount;\n};\n\nexport const awaitWalletScan = (walletID: string, chain: Chain) => {\n const wallet = walletForID(walletID);\n return new Promise((resolve, reject) =>\n wallet.once(\n EngineEvent.WalletScanComplete,\n ({ chain: returnedChain }: WalletScannedEventData) =>\n returnedChain.type === chain.type && returnedChain.id === chain.id\n ? resolve(returnedChain)\n : reject(),\n ),\n );\n};\n\nexport const awaitMultipleWalletScans = async (\n walletID: string,\n chain: Chain,\n numScans: number,\n) => {\n let i = 0;\n while (i < numScans) {\n // eslint-disable-next-line no-await-in-loop\n await awaitWalletScan(walletID, chain);\n i += 1;\n }\n return Promise.resolve();\n};\n"]}
1
+ {"version":3,"file":"balance-update.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/balance-update.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n Chain,\n AbstractWallet,\n TokenType,\n Balances,\n EngineEvent,\n WalletScannedEventData,\n} from 'dop-engine';\nimport {\n DopBalancesEvent,\n DopNFTAmount,\n DopERC20Amount,\n NetworkName,\n NETWORK_CONFIG,\n} from 'dop-sharedmodel';\nimport { sendMessage } from '../../../utils/logger';\nimport { parseDopTokenAddress } from '../util/bytes';\nimport { walletForID } from '../core';\n\nexport type BalancesUpdatedCallback = (\n balancesEvent: DopBalancesEvent,\n) => void;\n\nlet onBalanceUpdateCallback: Optional<BalancesUpdatedCallback>;\n\nexport const setOnBalanceUpdateCallback = (\n callback?: BalancesUpdatedCallback,\n) => {\n onBalanceUpdateCallback = callback;\n};\n\nconst getSerializedERC20Balances = (\n balances: Balances,\n): DopERC20Amount[] => {\n const tokenHashes = Object.keys(balances);\n\n return tokenHashes\n .filter(tokenHash => {\n return balances[tokenHash].tokenData.tokenType === TokenType.ERC20;\n })\n .map(dopBalanceAddress => {\n const erc20Balance: DopERC20Amount = {\n tokenAddress: parseDopTokenAddress(\n balances[dopBalanceAddress].tokenData.tokenAddress,\n ).toLowerCase(),\n amount: balances[dopBalanceAddress].balance,\n };\n return erc20Balance;\n });\n};\n\nconst getNFTBalances = (balances: Balances): DopNFTAmount[] => {\n const tokenHashes = Object.keys(balances);\n\n return tokenHashes\n .filter(tokenHash => {\n return (\n [TokenType.ERC721, TokenType.ERC1155].includes(\n balances[tokenHash].tokenData.tokenType,\n ) && balances[tokenHash].balance > BigInt(0)\n );\n })\n .map(tokenHash => {\n const tokenData = balances[tokenHash].tokenData;\n\n const nftBalance: DopNFTAmount = {\n nftAddress: parseDopTokenAddress(\n tokenData.tokenAddress,\n ).toLowerCase(),\n nftTokenType: tokenData.tokenType as 1 | 2,\n tokenSubID: tokenData.tokenSubID,\n amount: balances[tokenHash].balance,\n };\n return nftBalance;\n });\n};\n\nexport const onBalancesUpdate = async (\n wallet: AbstractWallet,\n chain: Chain,\n): Promise<void> => {\n sendMessage(\n `Wallet balance SCANNED. Getting balances for chain ${chain.type}:${chain.id}.`,\n );\n if (!onBalanceUpdateCallback) {\n return;\n }\n\n const balances = await wallet.balances(chain);\n const erc20Amounts = getSerializedERC20Balances(balances);\n const nftAmounts = getNFTBalances(balances);\n\n const balancesEvent: DopBalancesEvent = {\n chain,\n erc20Amounts,\n nftAmounts,\n dopWalletID: wallet.id,\n };\n\n onBalanceUpdateCallback(balancesEvent);\n};\n\nexport const balanceForERC20Token = async (\n wallet: AbstractWallet,\n networkName: NetworkName,\n tokenAddress: string,\n): Promise<bigint> => {\n const { chain } = NETWORK_CONFIG[networkName];\n const balances = await wallet.balances(chain);\n const tokenBalances = getSerializedERC20Balances(balances);\n\n const matchingTokenBalance: Optional<DopERC20Amount> = tokenBalances.find(\n tokenBalance =>\n tokenBalance.tokenAddress.toLowerCase() === tokenAddress.toLowerCase(),\n );\n if (!matchingTokenBalance) {\n return 0n;\n }\n return matchingTokenBalance.amount;\n};\n\nexport const awaitWalletScan = (walletID: string, chain: Chain) => {\n const wallet = walletForID(walletID);\n return new Promise((resolve, reject) =>\n wallet.once(\n EngineEvent.WalletScanComplete,\n ({ chain: returnedChain }: WalletScannedEventData) =>\n returnedChain.type === chain.type && returnedChain.id === chain.id\n ? resolve(returnedChain)\n : reject(),\n ),\n );\n};\n\nexport const awaitMultipleWalletScans = async (\n walletID: string,\n chain: Chain,\n numScans: number,\n) => {\n let i = 0;\n while (i < numScans) {\n // eslint-disable-next-line no-await-in-loop\n await awaitWalletScan(walletID, chain);\n i += 1;\n }\n return Promise.resolve();\n};\n"]}
@@ -1,5 +1,5 @@
1
- import { Chain } from 'dop-engine-v5';
2
- import { DopBalanceRefreshTrigger } from 'dop-sharedmodel-v5';
1
+ import { Chain } from 'dop-engine';
2
+ import { DopBalanceRefreshTrigger } from 'dop-sharedmodel';
3
3
  export declare const refreshDopBalances: DopBalanceRefreshTrigger;
4
4
  export declare const scanUpdatesForMerkletreeAndWallets: (chain: Chain) => Promise<void>;
5
5
  export declare const rescanFullMerkletreesAndWallets: (chain: Chain) => Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/balances.ts"],"names":[],"mappings":";;;AAEA,gDAA8D;AAC9D,2CAAwD;AAEjD,MAAM,kBAAkB,GAA6B,KAAK,EAC/D,KAAY,EACZ,WAAmB,EACnB,UAAmB,EACnB,gBAA6C,EAC9B,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAC;QACxC,IAAI,UAAU,EAAE;YAEd,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SAC1D;aAAM;YACL,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACpD;QAED,qEAAqE;QACrE,sDAAsD;QAEtD,8CAA8C;QAC9C,+EAA+E;QAC/E,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,0BAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC5D;AACH,CAAC,CAAC;AA1BW,QAAA,kBAAkB,sBA0B7B;AAEK,MAAM,kCAAkC,GAAG,KAAK,EACrD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEhC,qEAAqE;QACrE,sDAAsD;KACvD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,0CAAkC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC5E;AACH,CAAC,CAAC;AAZW,QAAA,kCAAkC,sCAY7C;AAEK,MAAM,+BAA+B,GAAG,KAAK,EAClD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAEpD,qEAAqE;QACrE,sDAAsD;KACvD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,uCAA+B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzE;AACH,CAAC,CAAC;AAZW,QAAA,+BAA+B,mCAY1C;AAEK,MAAM,4BAA4B,GAAG,KAAK,EAC/C,KAAY,EACZ,gBAA6C,EAC9B,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC,CAAC;AANW,QAAA,4BAA4B,gCAMvC","sourcesContent":["import { Chain } from 'dop-engine-v5';\nimport { DopBalanceRefreshTrigger } from 'dop-sharedmodel-v5';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getEngine, walletForID } from '../core/engine';\n\nexport const refreshDopBalances: DopBalanceRefreshTrigger = async (\n chain: Chain,\n dopWalletID: string,\n fullRescan: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<void> => {\n try {\n const wallet = walletForID(dopWalletID);\n if (fullRescan) {\n\n await wallet.fullRescanBalances(chain, progressCallback);\n } else {\n await wallet.scanBalances(chain, progressCallback);\n }\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n\n // Also kick off a background merkletree scan.\n // This will also call wallet.scanBalances when it's done, but may take longer.\n // So the user will see balances refresh from existing merkletree first.\n const engine = getEngine();\n await engine.scanHistory(chain);\n } catch (err) {\n throw reportAndSanitizeError(refreshDopBalances.name, err);\n }\n};\n\nexport const scanUpdatesForMerkletreeAndWallets = async (\n chain: Chain,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.scanHistory(chain);\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n } catch (err) {\n throw reportAndSanitizeError(scanUpdatesForMerkletreeAndWallets.name, err);\n }\n};\n\nexport const rescanFullMerkletreesAndWallets = async (\n chain: Chain,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.fullRescanMerkletreesAndWallets(chain);\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n } catch (err) {\n throw reportAndSanitizeError(rescanFullMerkletreesAndWallets.name, err);\n }\n};\n\nexport const fullRescanBalancesAllWallets = async (\n chain: Chain,\n progressCallback?: (progress: number) => void,\n): Promise<void> => {\n const engine = getEngine();\n await engine.scanAllWallets(chain, progressCallback);\n};\n"]}
1
+ {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/services/dop/wallets/balances.ts"],"names":[],"mappings":";;;AAEA,gDAA8D;AAC9D,2CAAwD;AAEjD,MAAM,kBAAkB,GAA6B,KAAK,EAC/D,KAAY,EACZ,WAAmB,EACnB,UAAmB,EACnB,gBAA6C,EAC9B,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,oBAAW,EAAC,WAAW,CAAC,CAAC;QACxC,IAAI,UAAU,EAAE;YAEd,MAAM,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SAC1D;aAAM;YACL,MAAM,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;SACpD;QAED,qEAAqE;QACrE,sDAAsD;QAEtD,8CAA8C;QAC9C,+EAA+E;QAC/E,wEAAwE;QACxE,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;KACjC;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,0BAAkB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC5D;AACH,CAAC,CAAC;AA1BW,QAAA,kBAAkB,sBA0B7B;AAEK,MAAM,kCAAkC,GAAG,KAAK,EACrD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAEhC,qEAAqE;QACrE,sDAAsD;KACvD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,0CAAkC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KAC5E;AACH,CAAC,CAAC;AAZW,QAAA,kCAAkC,sCAY7C;AAEK,MAAM,+BAA+B,GAAG,KAAK,EAClD,KAAY,EACG,EAAE;IACjB,IAAI;QACF,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;QAC3B,MAAM,MAAM,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAEpD,qEAAqE;QACrE,sDAAsD;KACvD;IAAC,OAAO,GAAG,EAAE;QACZ,MAAM,IAAA,8BAAsB,EAAC,uCAA+B,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;KACzE;AACH,CAAC,CAAC;AAZW,QAAA,+BAA+B,mCAY1C;AAEK,MAAM,4BAA4B,GAAG,KAAK,EAC/C,KAAY,EACZ,gBAA6C,EAC9B,EAAE;IACjB,MAAM,MAAM,GAAG,IAAA,kBAAS,GAAE,CAAC;IAC3B,MAAM,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;AACvD,CAAC,CAAC;AANW,QAAA,4BAA4B,gCAMvC","sourcesContent":["import { Chain } from 'dop-engine';\nimport { DopBalanceRefreshTrigger } from 'dop-sharedmodel';\nimport { reportAndSanitizeError } from '../../../utils/error';\nimport { getEngine, walletForID } from '../core/engine';\n\nexport const refreshDopBalances: DopBalanceRefreshTrigger = async (\n chain: Chain,\n dopWalletID: string,\n fullRescan: boolean,\n progressCallback?: (progress: number) => void,\n): Promise<void> => {\n try {\n const wallet = walletForID(dopWalletID);\n if (fullRescan) {\n\n await wallet.fullRescanBalances(chain, progressCallback);\n } else {\n await wallet.scanBalances(chain, progressCallback);\n }\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n\n // Also kick off a background merkletree scan.\n // This will also call wallet.scanBalances when it's done, but may take longer.\n // So the user will see balances refresh from existing merkletree first.\n const engine = getEngine();\n await engine.scanHistory(chain);\n } catch (err) {\n throw reportAndSanitizeError(refreshDopBalances.name, err);\n }\n};\n\nexport const scanUpdatesForMerkletreeAndWallets = async (\n chain: Chain,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.scanHistory(chain);\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n } catch (err) {\n throw reportAndSanitizeError(scanUpdatesForMerkletreeAndWallets.name, err);\n }\n};\n\nexport const rescanFullMerkletreesAndWallets = async (\n chain: Chain,\n): Promise<void> => {\n try {\n const engine = getEngine();\n await engine.fullRescanMerkletreesAndWallets(chain);\n\n // Wallet will trigger .emit('scanned', {chain}) event when finished,\n // which calls `onBalancesUpdate` (balance-update.ts).\n } catch (err) {\n throw reportAndSanitizeError(rescanFullMerkletreesAndWallets.name, err);\n }\n};\n\nexport const fullRescanBalancesAllWallets = async (\n chain: Chain,\n progressCallback?: (progress: number) => void,\n): Promise<void> => {\n const engine = getEngine();\n await engine.scanAllWallets(chain, progressCallback);\n};\n"]}
@@ -1,7 +1,5 @@
1
- import { AddressData } from 'dop-engine-v5';
2
- import { DopWalletInfo } from 'dop-sharedmodel-v5';
3
- export declare const createWalletFromTransaction: (leaf: any, viewingPrivateKey: Uint8Array, chain: any, encryptionKey: string, mnemonic: string, index?: number) => Promise<any>;
4
- export declare const createUserWalletWithID: (encryptionKey: string, id: string, leaf: any, viewingPrivateKey: Uint8Array, chain: any) => Promise<any>;
1
+ import { AddressData } from 'dop-engine';
2
+ import { DopWalletInfo } from 'dop-sharedmodel';
5
3
  export declare const createDopWallet: (encryptionKey: string, mnemonic: string, creationBlockNumbers: Optional<MapType<number>>) => Promise<DopWalletInfo>;
6
4
  export declare const createViewOnlyDopWallet: (encryptionKey: string, shareableViewingKey: string, creationBlockNumbers: Optional<MapType<number>>) => Promise<DopWalletInfo>;
7
5
  export declare const loadWalletByID: (encryptionKey: string, dopWalletID: string, isViewOnlyWallet: boolean) => Promise<DopWalletInfo>;
@@ -1,14 +1,14 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getWalletShareableViewingKey = exports.getDopAddress = exports.validateEthAddress = exports.assertValidEthAddress = exports.validateDopAddress = exports.assertValidDopAddress = exports.signWithWalletViewingKey = exports.getDopWalletPrivateViewingKey = exports.getDopWalletAddressData = exports.getWalletMnemonic = exports.deleteWalletByID = exports.unloadWalletByID = exports.loadWalletByID = exports.createViewOnlyDopWallet = exports.createDopWallet = exports.createUserWalletWithID = exports.createWalletFromTransaction = void 0;
4
- const dop_engine_v5_1 = require("dop-engine-v5");
5
- const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
3
+ exports.getWalletShareableViewingKey = exports.getDopAddress = exports.validateEthAddress = exports.assertValidEthAddress = exports.validateDopAddress = exports.assertValidDopAddress = exports.signWithWalletViewingKey = exports.getDopWalletPrivateViewingKey = exports.getDopWalletAddressData = exports.getWalletMnemonic = exports.deleteWalletByID = exports.unloadWalletByID = exports.loadWalletByID = exports.createViewOnlyDopWallet = exports.createDopWallet = void 0;
4
+ const dop_engine_1 = require("dop-engine");
5
+ const dop_sharedmodel_1 = require("dop-sharedmodel");
6
6
  const engine_1 = require("../core/engine");
7
7
  const balance_update_1 = require("./balance-update");
8
8
  const error_1 = require("../../../utils/error");
9
9
  const ethers_1 = require("ethers");
10
10
  const subscribeToBalanceEvents = (wallet) => {
11
- wallet.on(dop_engine_v5_1.EngineEvent.WalletScanComplete, ({ chain }) => {
11
+ wallet.on(dop_engine_1.EngineEvent.WalletScanComplete, ({ chain }) => {
12
12
  // eslint-disable-next-line @typescript-eslint/no-floating-promises
13
13
  (0, balance_update_1.onBalancesUpdate)(wallet, chain);
14
14
  });
@@ -48,20 +48,6 @@ const loadExistingWallet = async (encryptionKey, dopWalletID, isViewOnlyWallet)
48
48
  subscribeToBalanceEvents(wallet);
49
49
  return infoForWallet(wallet);
50
50
  };
51
- // here
52
- const createWalletFromTransaction = async (leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index = 0) => {
53
- const engine = (0, engine_1.getEngine)();
54
- const res = engine.createUserWalletFromTransaction(leaf, viewingPrivateKey, chain, encryptionKey, mnemonic, index);
55
- return res;
56
- };
57
- exports.createWalletFromTransaction = createWalletFromTransaction;
58
- // here
59
- const createUserWalletWithID = async (encryptionKey, id, leaf, viewingPrivateKey, chain) => {
60
- const engine = (0, engine_1.getEngine)();
61
- const res = engine.createUserWalletWithID(encryptionKey, id, leaf, viewingPrivateKey, chain);
62
- return res;
63
- };
64
- exports.createUserWalletWithID = createUserWalletWithID;
65
51
  const createWallet = async (encryptionKey, mnemonic, creationBlockNumbers) => {
66
52
  const formattedCreationBlockNumbers = formatCreationBlockNumbers(creationBlockNumbers);
67
53
  const engine = (0, engine_1.getEngine)();
@@ -76,7 +62,6 @@ const createViewOnlyWallet = async (encryptionKey, shareableViewingKey, creation
76
62
  subscribeToBalanceEvents(wallet);
77
63
  return infoForWallet(wallet);
78
64
  };
79
- // here
80
65
  const createDopWallet = async (encryptionKey, mnemonic, creationBlockNumbers) => {
81
66
  try {
82
67
  return await createWallet(encryptionKey, mnemonic, creationBlockNumbers);
@@ -128,7 +113,7 @@ exports.deleteWalletByID = deleteWalletByID;
128
113
  const getWalletMnemonic = async (encryptionKey, dopWalletID) => {
129
114
  const { db } = (0, engine_1.getEngine)();
130
115
  // Reload wallet to ensure that encryption key is valid.
131
- const walletData = (await dop_engine_v5_1.DopWallet.getEncryptedData(db, encryptionKey, dopWalletID));
116
+ const walletData = (await dop_engine_1.DopWallet.getEncryptedData(db, encryptionKey, dopWalletID));
132
117
  if (!walletData.mnemonic) {
133
118
  throw new Error('No mnemonic for wallet.');
134
119
  }
@@ -137,7 +122,7 @@ const getWalletMnemonic = async (encryptionKey, dopWalletID) => {
137
122
  exports.getWalletMnemonic = getWalletMnemonic;
138
123
  const getDopWalletAddressData = (address) => {
139
124
  (0, exports.assertValidDopAddress)(address);
140
- return dop_engine_v5_1.DopEngine.decodeAddress(address);
125
+ return dop_engine_1.DopEngine.decodeAddress(address);
141
126
  };
142
127
  exports.getDopWalletAddressData = getDopWalletAddressData;
143
128
  const getDopWalletPrivateViewingKey = (dopWalletID) => {
@@ -147,8 +132,8 @@ const getDopWalletPrivateViewingKey = (dopWalletID) => {
147
132
  exports.getDopWalletPrivateViewingKey = getDopWalletPrivateViewingKey;
148
133
  const signWithWalletViewingKey = async (dopWalletID, message) => {
149
134
  const wallet = (0, engine_1.walletForID)(dopWalletID);
150
- const signature = await wallet.signWithViewingKey((0, dop_engine_v5_1.hexStringToBytes)(message));
151
- return (0, dop_engine_v5_1.hexlify)(signature);
135
+ const signature = await wallet.signWithViewingKey((0, dop_engine_1.hexStringToBytes)(message));
136
+ return (0, dop_engine_1.hexlify)(signature);
152
137
  };
153
138
  exports.signWithWalletViewingKey = signWithWalletViewingKey;
154
139
  const assertValidDopAddress = (address) => {
@@ -159,7 +144,7 @@ const assertValidDopAddress = (address) => {
159
144
  exports.assertValidDopAddress = assertValidDopAddress;
160
145
  const validateDopAddress = (address) => {
161
146
  try {
162
- return dop_engine_v5_1.DopEngine.decodeAddress(address) != null;
147
+ return dop_engine_1.DopEngine.decodeAddress(address) != null;
163
148
  }
164
149
  catch (err) {
165
150
  return false;
@@ -206,15 +191,15 @@ const getWalletShareableViewingKey = async (dopWalletID) => {
206
191
  exports.getWalletShareableViewingKey = getWalletShareableViewingKey;
207
192
  const formatCreationBlockNumbers = (creationBlockNumbers) => {
208
193
  var _a;
209
- // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-v5's number[][] type
194
+ // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine's number[][] type
210
195
  if (!creationBlockNumbers)
211
196
  return;
212
197
  const formattedCreationBlockNumbers = [];
213
198
  const networksNames = Object.keys(creationBlockNumbers);
214
199
  for (const networkName of networksNames) {
215
- const network = dop_sharedmodel_v5_1.NETWORK_CONFIG[networkName];
200
+ const network = dop_sharedmodel_1.NETWORK_CONFIG[networkName];
216
201
  const blockNumber = creationBlockNumbers[networkName];
217
- if (!(0, dop_sharedmodel_v5_1.isDefined)(blockNumber)) {
202
+ if (!(0, dop_sharedmodel_1.isDefined)(blockNumber)) {
218
203
  continue;
219
204
  }
220
205
  formattedCreationBlockNumbers[_a = network.chain.type] ?? (formattedCreationBlockNumbers[_a] = []);