dop-wallet-v6 1.1.7 → 1.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. package/dist/services/artifacts/artifact-downloader.d.ts +1 -1
  2. package/dist/services/artifacts/artifact-downloader.js +20 -20
  3. package/dist/services/artifacts/artifact-downloader.js.map +1 -1
  4. package/dist/services/artifacts/artifact-hash.d.ts +1 -1
  5. package/dist/services/artifacts/artifact-hash.js +8 -8
  6. package/dist/services/artifacts/artifact-hash.js.map +1 -1
  7. package/dist/services/artifacts/artifact-util.d.ts +1 -1
  8. package/dist/services/artifacts/artifact-util.js +26 -18
  9. package/dist/services/artifacts/artifact-util.js.map +1 -1
  10. package/dist/services/artifacts/json/artifact-v2-hashes.json +65 -0
  11. package/dist/services/dop/core/artifacts.d.ts +3 -3
  12. package/dist/services/dop/core/artifacts.js +8 -6
  13. package/dist/services/dop/core/artifacts.js.map +1 -1
  14. package/dist/services/dop/core/engine.d.ts +2 -2
  15. package/dist/services/dop/core/engine.js +16 -13
  16. package/dist/services/dop/core/engine.js.map +1 -1
  17. package/dist/services/dop/core/prover.d.ts +1 -1
  18. package/dist/services/dop/core/prover.js +2 -2
  19. package/dist/services/dop/core/prover.js.map +1 -1
  20. package/dist/services/dop/core/providers.d.ts +3 -3
  21. package/dist/services/dop/core/providers.js +16 -16
  22. package/dist/services/dop/core/providers.js.map +1 -1
  23. package/dist/services/dop/core/shields.d.ts +1 -1
  24. package/dist/services/dop/core/shields.js +2 -2
  25. package/dist/services/dop/core/shields.js.map +1 -1
  26. package/dist/services/dop/history/transaction-history.d.ts +2 -2
  27. package/dist/services/dop/history/transaction-history.js +14 -14
  28. package/dist/services/dop/history/transaction-history.js.map +1 -1
  29. package/dist/services/dop/process/extract-first-note.d.ts +2 -2
  30. package/dist/services/dop/process/extract-first-note.js +15 -15
  31. package/dist/services/dop/process/extract-first-note.js.map +1 -1
  32. package/dist/services/dop/quick-sync/empty-events.d.ts +1 -1
  33. package/dist/services/dop/quick-sync/empty-events.js.map +1 -1
  34. package/dist/services/dop/quick-sync/graph-type-formatters.d.ts +1 -1
  35. package/dist/services/dop/quick-sync/graph-type-formatters.js +15 -15
  36. package/dist/services/dop/quick-sync/graph-type-formatters.js.map +1 -1
  37. package/dist/services/dop/quick-sync/graphql/index.js +5 -5
  38. package/dist/services/dop/quick-sync/graphql/index.js.map +1 -1
  39. package/dist/services/dop/quick-sync/quick-sync-graph.d.ts +1 -1
  40. package/dist/services/dop/quick-sync/quick-sync-graph.js +17 -17
  41. package/dist/services/dop/quick-sync/quick-sync-graph.js.map +1 -1
  42. package/dist/services/dop/util/bytes.d.ts +1 -1
  43. package/dist/services/dop/util/bytes.js +7 -7
  44. package/dist/services/dop/util/bytes.js.map +1 -1
  45. package/dist/services/dop/util/commitment.d.ts +1 -2
  46. package/dist/services/dop/util/commitment.js +5 -4
  47. package/dist/services/dop/util/commitment.js.map +1 -1
  48. package/dist/services/dop/util/crypto.d.ts +2 -2
  49. package/dist/services/dop/util/crypto.js +15 -15
  50. package/dist/services/dop/util/crypto.js.map +1 -1
  51. package/dist/services/dop/util/db.d.ts +1 -1
  52. package/dist/services/dop/util/db.js +2 -2
  53. package/dist/services/dop/util/db.js.map +1 -1
  54. package/dist/services/dop/wallets/balance-update.d.ts +2 -2
  55. package/dist/services/dop/wallets/balance-update.js +6 -6
  56. package/dist/services/dop/wallets/balance-update.js.map +1 -1
  57. package/dist/services/dop/wallets/balances.d.ts +2 -2
  58. package/dist/services/dop/wallets/balances.js.map +1 -1
  59. package/dist/services/dop/wallets/wallets.d.ts +4 -2
  60. package/dist/services/dop/wallets/wallets.js +27 -12
  61. package/dist/services/dop/wallets/wallets.js.map +1 -1
  62. package/dist/services/ethers/ethers-util.js +2 -2
  63. package/dist/services/ethers/ethers-util.js.map +1 -1
  64. package/dist/services/transactions/proof-cache.d.ts +1 -1
  65. package/dist/services/transactions/proof-cache.js +16 -16
  66. package/dist/services/transactions/proof-cache.js.map +1 -1
  67. package/dist/services/transactions/tx-cross-contract-calls.d.ts +2 -4
  68. package/dist/services/transactions/tx-cross-contract-calls.js +269 -117
  69. package/dist/services/transactions/tx-cross-contract-calls.js.map +1 -1
  70. package/dist/services/transactions/tx-gas-details.d.ts +1 -1
  71. package/dist/services/transactions/tx-gas-details.js +36 -24
  72. package/dist/services/transactions/tx-gas-details.js.map +1 -1
  73. package/dist/services/transactions/tx-gas-relayer-fee-estimator.d.ts +1 -4
  74. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js +187 -88
  75. package/dist/services/transactions/tx-gas-relayer-fee-estimator.js.map +1 -1
  76. package/dist/services/transactions/tx-generator.d.ts +4 -5
  77. package/dist/services/transactions/tx-generator.js +71 -42
  78. package/dist/services/transactions/tx-generator.js.map +1 -1
  79. package/dist/services/transactions/tx-notes.d.ts +2 -2
  80. package/dist/services/transactions/tx-notes.js +13 -13
  81. package/dist/services/transactions/tx-notes.js.map +1 -1
  82. package/dist/services/transactions/tx-nullifiers.d.ts +1 -1
  83. package/dist/services/transactions/tx-nullifiers.js.map +1 -1
  84. package/dist/services/transactions/tx-proof-transfer.d.ts +4 -3
  85. package/dist/services/transactions/tx-proof-transfer.js +13 -19
  86. package/dist/services/transactions/tx-proof-transfer.js.map +1 -1
  87. package/dist/services/transactions/tx-proof-unshield.d.ts +3 -4
  88. package/dist/services/transactions/tx-proof-unshield.js +146 -87
  89. package/dist/services/transactions/tx-proof-unshield.js.map +1 -1
  90. package/dist/services/transactions/tx-shield-base-token.d.ts +2 -2
  91. package/dist/services/transactions/tx-shield-base-token.js +13 -10
  92. package/dist/services/transactions/tx-shield-base-token.js.map +1 -1
  93. package/dist/services/transactions/tx-shield.d.ts +1 -1
  94. package/dist/services/transactions/tx-shield.js +16 -12
  95. package/dist/services/transactions/tx-shield.js.map +1 -1
  96. package/dist/services/transactions/tx-transfer.d.ts +1 -2
  97. package/dist/services/transactions/tx-transfer.js +55 -16
  98. package/dist/services/transactions/tx-transfer.js.map +1 -1
  99. package/dist/services/transactions/tx-unshield.d.ts +1 -3
  100. package/dist/services/transactions/tx-unshield.js +119 -40
  101. package/dist/services/transactions/tx-unshield.js.map +1 -1
  102. package/dist/utils/blocked-address.js +3 -3
  103. package/dist/utils/blocked-address.js.map +1 -1
  104. package/dist/utils/error.js +2 -2
  105. package/dist/utils/error.js.map +1 -1
  106. package/dist/utils/gas-price.d.ts +1 -1
  107. package/dist/utils/gas-price.js +13 -13
  108. package/dist/utils/gas-price.js.map +1 -1
  109. package/package.json +3 -3
@@ -1,2 +1,2 @@
1
- import { AccumulatedEvents, Chain } from 'dop-engine';
1
+ import { AccumulatedEvents, Chain } from 'dop-engine-v5';
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_1 = require("dop-sharedmodel");
4
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
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_1.NetworkName.Ethereum:
15
+ case dop_sharedmodel_v5_1.NetworkName.Ethereum:
16
16
  return 'ethereum';
17
- case dop_sharedmodel_1.NetworkName.EthereumGoerli:
17
+ case dop_sharedmodel_v5_1.NetworkName.EthereumGoerli:
18
18
  return 'goerli';
19
- case dop_sharedmodel_1.NetworkName.BNBChain:
19
+ case dop_sharedmodel_v5_1.NetworkName.BNBChain:
20
20
  return 'bsc';
21
- case dop_sharedmodel_1.NetworkName.Polygon:
21
+ case dop_sharedmodel_v5_1.NetworkName.Polygon:
22
22
  return 'matic';
23
- case dop_sharedmodel_1.NetworkName.Arbitrum:
23
+ case dop_sharedmodel_v5_1.NetworkName.Arbitrum:
24
24
  return 'arbitrum-one';
25
- case dop_sharedmodel_1.NetworkName.ArbitrumGoerli:
25
+ case dop_sharedmodel_v5_1.NetworkName.ArbitrumGoerli:
26
26
  return 'arbitrum-goerli';
27
- case dop_sharedmodel_1.NetworkName.Xlayer:
27
+ case dop_sharedmodel_v5_1.NetworkName.Xlayer:
28
28
  return 'xlayer';
29
- case dop_sharedmodel_1.NetworkName.XlayerTestnet:
29
+ case dop_sharedmodel_v5_1.NetworkName.XlayerTestnet:
30
30
  return 'xlayer-testnet';
31
- case dop_sharedmodel_1.NetworkName.PolygonMumbai:
31
+ case dop_sharedmodel_v5_1.NetworkName.PolygonMumbai:
32
32
  return 'mumbai';
33
- case dop_sharedmodel_1.NetworkName.Dop:
34
- case dop_sharedmodel_1.NetworkName.EthereumRopsten_DEPRECATED:
35
- case dop_sharedmodel_1.NetworkName.Hardhat:
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:
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_1.networkForChain)(chain);
40
+ const network = (0, dop_sharedmodel_v5_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_1.isDefined)(existingBatch)) {
73
+ if ((0, dop_sharedmodel_v5_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_1.removeUndefineds)(Object.values(graphCommitmentMap));
86
+ return (0, dop_sharedmodel_v5_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_1.isDefined)(meshForNetwork)) {
127
+ if ((0, dop_sharedmodel_v5_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';\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
+ {"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,4 +1,4 @@
1
- import { hexlify, fromUTF8String, toUTF8String, hexStringToBytes } from 'dop-engine';
1
+ import { hexlify, fromUTF8String, toUTF8String, hexStringToBytes } from 'dop-engine-v5';
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_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; } });
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; } });
9
9
  const parseDopTokenAddress = (tokenAddress) => {
10
- return (0, dop_engine_1.formatToByteLength)(tokenAddress, dop_engine_1.ByteLength.Address, true);
10
+ return (0, dop_engine_v5_1.formatToByteLength)(tokenAddress, dop_engine_v5_1.ByteLength.Address, true);
11
11
  };
12
12
  exports.parseDopTokenAddress = parseDopTokenAddress;
13
13
  const getRandomBytes = (length) => {
14
- return (0, dop_engine_1.randomHex)(length);
14
+ return (0, dop_engine_v5_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,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
+ {"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,3 +1,2 @@
1
- import { TransactionStruct } from 'dop-engine';
2
- import { CommitmentSummary } from 'dop-sharedmodel';
1
+ import { TransactionStruct, CommitmentSummary } from 'dop-engine-v5';
3
2
  export declare const convertTransactionStructToCommitmentSummary: (transactionStruct: TransactionStruct, commitmentIndex: number) => CommitmentSummary;
@@ -1,15 +1,16 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.convertTransactionStructToCommitmentSummary = void 0;
4
- const dop_engine_1 = require("dop-engine");
4
+ const dop_engine_v5_1 = require("dop-engine-v5");
5
5
  const convertTransactionStructToCommitmentSummary = (transactionStruct, commitmentIndex) => {
6
6
  const commitmentCiphertextStruct = transactionStruct.boundParams
7
7
  .commitmentCiphertext[commitmentIndex];
8
- const commitmentCiphertext = (0, dop_engine_1.formatCommitmentCiphertext)(commitmentCiphertextStruct);
9
- const commitmentHash = transactionStruct.commitments[commitmentIndex];
8
+ const commitmentCiphertext = (0, dop_engine_v5_1.formatCommitmentCiphertext)(commitmentCiphertextStruct);
9
+ // const commitmentHash = transactionStruct.commitments[
10
+ // commitmentIndex
11
+ // ] as string;
10
12
  return {
11
13
  commitmentCiphertext,
12
- commitmentHash,
13
14
  };
14
15
  };
15
16
  exports.convertTransactionStructToCommitmentSummary = convertTransactionStructToCommitmentSummary;
@@ -1 +1 @@
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
+ {"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,5 +1,5 @@
1
- import { encryptJSONDataWithSharedKey, tryDecryptJSONDataWithSharedKey, getPublicViewingKey, EncryptedData, ViewingKeyPair } from 'dop-engine';
2
- import { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel';
1
+ import { encryptJSONDataWithSharedKey, tryDecryptJSONDataWithSharedKey, getPublicViewingKey, EncryptedData, ViewingKeyPair } from 'dop-engine-v5';
2
+ import { EncryptDataWithSharedKeyResponse } from 'dop-sharedmodel-v5';
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_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; } });
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; } });
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_1.verifyED25519)(data, signature, signingKey);
37
+ return (0, dop_engine_v5_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_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);
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);
44
44
  const sharedKey = await ed.getSharedSecret(randomPrivKey, externalPubKey);
45
- const encryptedData = (0, dop_engine_1.encryptJSONDataWithSharedKey)(data, sharedKey);
45
+ const encryptedData = (0, dop_engine_v5_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_1.tryDecryptJSONDataWithSharedKey)(encryptedData, sharedKey);
50
+ return (0, dop_engine_v5_1.tryDecryptJSONDataWithSharedKey)(encryptedData, sharedKey);
51
51
  };
52
52
  exports.decryptAESGCM256 = decryptAESGCM256;
53
53
  const encryptAESGCM256 = (data, sharedKey) => {
54
- return (0, dop_engine_1.encryptJSONDataWithSharedKey)(data, sharedKey);
54
+ return (0, dop_engine_v5_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_1.arrayify)(secretBuffer));
66
- const saltFormatted = new Uint8Array((0, dop_engine_1.arrayify)(salt));
65
+ const secretFormatted = new Uint8Array((0, dop_engine_v5_1.arrayify)(secretBuffer));
66
+ const saltFormatted = new Uint8Array((0, dop_engine_v5_1.arrayify)(salt));
67
67
  const keyLength = 32; // Bytes
68
68
  const digest = 'sha256';
69
69
  let key;
70
- if (dop_engine_1.isReactNative) {
70
+ if (dop_engine_v5_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_1.hexlify)(key);
76
+ return (0, dop_engine_v5_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,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
+ {"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,2 +1,2 @@
1
- import { Database } from 'dop-engine';
1
+ import { Database } from 'dop-engine-v5';
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_1 = require("dop-engine");
5
- Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return dop_engine_1.Database; } });
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; } });
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,2CAAsC;AAE7B,yFAFA,qBAAQ,OAEA","sourcesContent":["import { Database } from 'dop-engine';\n\nexport { Database };\n"]}
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,5 +1,5 @@
1
- import { Chain, AbstractWallet } from 'dop-engine';
2
- import { DopBalancesEvent, NetworkName } from 'dop-sharedmodel';
1
+ import { Chain, AbstractWallet } from 'dop-engine-v5';
2
+ import { DopBalancesEvent, NetworkName } from 'dop-sharedmodel-v5';
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_1 = require("dop-engine");
5
- const dop_sharedmodel_1 = require("dop-sharedmodel");
4
+ const dop_engine_v5_1 = require("dop-engine-v5");
5
+ const dop_sharedmodel_v5_1 = require("dop-sharedmodel-v5");
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_1.TokenType.ERC20;
18
+ return balances[tokenHash].tokenData.tokenType === dop_engine_v5_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_1.TokenType.ERC721, dop_engine_1.TokenType.ERC1155].includes(balances[tokenHash].tokenData.tokenType) && balances[tokenHash].balance > BigInt(0));
32
+ return ([dop_engine_v5_1.TokenType.ERC721, dop_engine_v5_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_1.NETWORK_CONFIG[networkName];
63
+ const { chain } = dop_sharedmodel_v5_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_1.EngineEvent.WalletScanComplete, ({ chain: returnedChain }) => returnedChain.type === chain.type && returnedChain.id === chain.id
75
+ return new Promise((resolve, reject) => wallet.once(dop_engine_v5_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":";;;AAAA,2CAOoB;AACpB,qDAMyB;AACzB,kDAAoD;AACpD,yCAAqD;AACrD,kCAAsC;AAMtC,IAAI,uBAA0D,CAAC;AAExD,MAAM,0BAA0B,GAAG,CACxC,QAAkC,EAClC,EAAE;IACF,uBAAuB,GAAG,QAAQ,CAAC;AACrC,CAAC,CAAC;AAJW,QAAA,0BAA0B,8BAIrC;AAEF,MAAM,0BAA0B,GAAG,CACjC,QAAkB,EACA,EAAE;IACpB,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,WAAW;SACf,MAAM,CAAC,SAAS,CAAC,EAAE;QAClB,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,KAAK,sBAAS,CAAC,KAAK,CAAC;IACrE,CAAC,CAAC;SACD,GAAG,CAAC,iBAAiB,CAAC,EAAE;QACvB,MAAM,YAAY,GAAmB;YACnC,YAAY,EAAE,IAAA,4BAAoB,EAChC,QAAQ,CAAC,iBAAiB,CAAC,CAAC,SAAS,CAAC,YAAY,CACnD,CAAC,WAAW,EAAE;YACf,MAAM,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAC,OAAO;SAC5C,CAAC;QACF,OAAO,YAAY,CAAC;IACtB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,QAAkB,EAAkB,EAAE;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAE1C,OAAO,WAAW;SACf,MAAM,CAAC,SAAS,CAAC,EAAE;QAClB,OAAO,CACL,CAAC,sBAAS,CAAC,MAAM,EAAE,sBAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAC5C,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC,SAAS,CACxC,IAAI,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,CAC7C,CAAC;IACJ,CAAC,CAAC;SACD,GAAG,CAAC,SAAS,CAAC,EAAE;QACf,MAAM,SAAS,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,SAAS,CAAC;QAEhD,MAAM,UAAU,GAAiB;YAC/B,UAAU,EAAE,IAAA,4BAAoB,EAC9B,SAAS,CAAC,YAAY,CACvB,CAAC,WAAW,EAAE;YACf,YAAY,EAAE,SAAS,CAAC,SAAkB;YAC1C,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,MAAM,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO;SACpC,CAAC;QACF,OAAO,UAAU,CAAC;IACpB,CAAC,CAAC,CAAC;AACP,CAAC,CAAC;AAEK,MAAM,gBAAgB,GAAG,KAAK,EACnC,MAAsB,EACtB,KAAY,EACG,EAAE;IACjB,IAAA,oBAAW,EACT,sDAAsD,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE,GAAG,CAChF,CAAC;IACF,IAAI,CAAC,uBAAuB,EAAE;QAC5B,OAAO;KACR;IAED,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,YAAY,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAqB;QACtC,KAAK;QACL,YAAY;QACZ,UAAU;QACV,WAAW,EAAE,MAAM,CAAC,EAAE;KACvB,CAAC;IAEF,uBAAuB,CAAC,aAAa,CAAC,CAAC;AACzC,CAAC,CAAC;AAvBW,QAAA,gBAAgB,oBAuB3B;AAEK,MAAM,oBAAoB,GAAG,KAAK,EACvC,MAAsB,EACtB,WAAwB,EACxB,YAAoB,EACH,EAAE;IACnB,MAAM,EAAE,KAAK,EAAE,GAAG,gCAAc,CAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9C,MAAM,aAAa,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAE3D,MAAM,oBAAoB,GAA6B,aAAa,CAAC,IAAI,CACvE,YAAY,CAAC,EAAE,CACb,YAAY,CAAC,YAAY,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CACzE,CAAC;IACF,IAAI,CAAC,oBAAoB,EAAE;QACzB,OAAO,EAAE,CAAC;KACX;IACD,OAAO,oBAAoB,CAAC,MAAM,CAAC;AACrC,CAAC,CAAC;AAjBW,QAAA,oBAAoB,wBAiB/B;AAEK,MAAM,eAAe,GAAG,CAAC,QAAgB,EAAE,KAAY,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,kBAAW,EAAC,QAAQ,CAAC,CAAC;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,CACrC,MAAM,CAAC,IAAI,CACT,wBAAW,CAAC,kBAAkB,EAC9B,CAAC,EAAE,KAAK,EAAE,aAAa,EAA0B,EAAE,EAAE,CACnD,aAAa,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,aAAa,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE;QAChE,CAAC,CAAC,OAAO,CAAC,aAAa,CAAC;QACxB,CAAC,CAAC,MAAM,EAAE,CACf,CACF,CAAC;AACJ,CAAC,CAAC;AAXW,QAAA,eAAe,mBAW1B;AAEK,MAAM,wBAAwB,GAAG,KAAK,EAC3C,QAAgB,EAChB,KAAY,EACZ,QAAgB,EAChB,EAAE;IACF,IAAI,CAAC,GAAG,CAAC,CAAC;IACV,OAAO,CAAC,GAAG,QAAQ,EAAE;QACnB,4CAA4C;QAC5C,MAAM,IAAA,uBAAe,EAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QACvC,CAAC,IAAI,CAAC,CAAC;KACR;IACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;AAC3B,CAAC,CAAC;AAZW,QAAA,wBAAwB,4BAYnC","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
+ {"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,5 +1,5 @@
1
- import { Chain } from 'dop-engine';
2
- import { DopBalanceRefreshTrigger } from 'dop-sharedmodel';
1
+ import { Chain } from 'dop-engine-v5';
2
+ import { DopBalanceRefreshTrigger } from 'dop-sharedmodel-v5';
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';\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
+ {"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,5 +1,7 @@
1
- import { AddressData } from 'dop-engine';
2
- import { DopWalletInfo } from 'dop-sharedmodel';
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>;
3
5
  export declare const createDopWallet: (encryptionKey: string, mnemonic: string, creationBlockNumbers: Optional<MapType<number>>) => Promise<DopWalletInfo>;
4
6
  export declare const createViewOnlyDopWallet: (encryptionKey: string, shareableViewingKey: string, creationBlockNumbers: Optional<MapType<number>>) => Promise<DopWalletInfo>;
5
7
  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 = void 0;
4
- const dop_engine_1 = require("dop-engine");
5
- const dop_sharedmodel_1 = require("dop-sharedmodel");
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");
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_1.EngineEvent.WalletScanComplete, ({ chain }) => {
11
+ wallet.on(dop_engine_v5_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,6 +48,20 @@ 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;
51
65
  const createWallet = async (encryptionKey, mnemonic, creationBlockNumbers) => {
52
66
  const formattedCreationBlockNumbers = formatCreationBlockNumbers(creationBlockNumbers);
53
67
  const engine = (0, engine_1.getEngine)();
@@ -62,6 +76,7 @@ const createViewOnlyWallet = async (encryptionKey, shareableViewingKey, creation
62
76
  subscribeToBalanceEvents(wallet);
63
77
  return infoForWallet(wallet);
64
78
  };
79
+ // here
65
80
  const createDopWallet = async (encryptionKey, mnemonic, creationBlockNumbers) => {
66
81
  try {
67
82
  return await createWallet(encryptionKey, mnemonic, creationBlockNumbers);
@@ -113,7 +128,7 @@ exports.deleteWalletByID = deleteWalletByID;
113
128
  const getWalletMnemonic = async (encryptionKey, dopWalletID) => {
114
129
  const { db } = (0, engine_1.getEngine)();
115
130
  // Reload wallet to ensure that encryption key is valid.
116
- const walletData = (await dop_engine_1.DopWallet.getEncryptedData(db, encryptionKey, dopWalletID));
131
+ const walletData = (await dop_engine_v5_1.DopWallet.getEncryptedData(db, encryptionKey, dopWalletID));
117
132
  if (!walletData.mnemonic) {
118
133
  throw new Error('No mnemonic for wallet.');
119
134
  }
@@ -122,7 +137,7 @@ const getWalletMnemonic = async (encryptionKey, dopWalletID) => {
122
137
  exports.getWalletMnemonic = getWalletMnemonic;
123
138
  const getDopWalletAddressData = (address) => {
124
139
  (0, exports.assertValidDopAddress)(address);
125
- return dop_engine_1.DopEngine.decodeAddress(address);
140
+ return dop_engine_v5_1.DopEngine.decodeAddress(address);
126
141
  };
127
142
  exports.getDopWalletAddressData = getDopWalletAddressData;
128
143
  const getDopWalletPrivateViewingKey = (dopWalletID) => {
@@ -132,8 +147,8 @@ const getDopWalletPrivateViewingKey = (dopWalletID) => {
132
147
  exports.getDopWalletPrivateViewingKey = getDopWalletPrivateViewingKey;
133
148
  const signWithWalletViewingKey = async (dopWalletID, message) => {
134
149
  const wallet = (0, engine_1.walletForID)(dopWalletID);
135
- const signature = await wallet.signWithViewingKey((0, dop_engine_1.hexStringToBytes)(message));
136
- return (0, dop_engine_1.hexlify)(signature);
150
+ const signature = await wallet.signWithViewingKey((0, dop_engine_v5_1.hexStringToBytes)(message));
151
+ return (0, dop_engine_v5_1.hexlify)(signature);
137
152
  };
138
153
  exports.signWithWalletViewingKey = signWithWalletViewingKey;
139
154
  const assertValidDopAddress = (address) => {
@@ -144,7 +159,7 @@ const assertValidDopAddress = (address) => {
144
159
  exports.assertValidDopAddress = assertValidDopAddress;
145
160
  const validateDopAddress = (address) => {
146
161
  try {
147
- return dop_engine_1.DopEngine.decodeAddress(address) != null;
162
+ return dop_engine_v5_1.DopEngine.decodeAddress(address) != null;
148
163
  }
149
164
  catch (err) {
150
165
  return false;
@@ -191,15 +206,15 @@ const getWalletShareableViewingKey = async (dopWalletID) => {
191
206
  exports.getWalletShareableViewingKey = getWalletShareableViewingKey;
192
207
  const formatCreationBlockNumbers = (creationBlockNumbers) => {
193
208
  var _a;
194
- // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine's number[][] type
209
+ // Format creationBlockNumbers from client side { <NetworkName>: <BlockNumber> } map to dop-engine-tranparency's number[][] type
195
210
  if (!creationBlockNumbers)
196
211
  return;
197
212
  const formattedCreationBlockNumbers = [];
198
213
  const networksNames = Object.keys(creationBlockNumbers);
199
214
  for (const networkName of networksNames) {
200
- const network = dop_sharedmodel_1.NETWORK_CONFIG[networkName];
215
+ const network = dop_sharedmodel_v5_1.NETWORK_CONFIG[networkName];
201
216
  const blockNumber = creationBlockNumbers[networkName];
202
- if (!(0, dop_sharedmodel_1.isDefined)(blockNumber)) {
217
+ if (!(0, dop_sharedmodel_v5_1.isDefined)(blockNumber)) {
203
218
  continue;
204
219
  }
205
220
  formattedCreationBlockNumbers[_a = network.chain.type] ?? (formattedCreationBlockNumbers[_a] = []);