@metamask-previews/client-utils 0.0.0-preview-3a27accda → 0.0.0-preview-6fc64deac

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 (74) hide show
  1. package/CHANGELOG.md +0 -9
  2. package/dist/index.cjs +4 -7
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +1 -4
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +1 -4
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +3 -3
  9. package/dist/index.mjs.map +1 -1
  10. package/package.json +1 -10
  11. package/dist/mappers/api-transaction-mapper.cjs +0 -300
  12. package/dist/mappers/api-transaction-mapper.cjs.map +0 -1
  13. package/dist/mappers/api-transaction-mapper.d.cts +0 -15
  14. package/dist/mappers/api-transaction-mapper.d.cts.map +0 -1
  15. package/dist/mappers/api-transaction-mapper.d.mts +0 -15
  16. package/dist/mappers/api-transaction-mapper.d.mts.map +0 -1
  17. package/dist/mappers/api-transaction-mapper.mjs +0 -296
  18. package/dist/mappers/api-transaction-mapper.mjs.map +0 -1
  19. package/dist/mappers/constants.cjs +0 -46
  20. package/dist/mappers/constants.cjs.map +0 -1
  21. package/dist/mappers/constants.d.cts +0 -25
  22. package/dist/mappers/constants.d.cts.map +0 -1
  23. package/dist/mappers/constants.d.mts +0 -25
  24. package/dist/mappers/constants.d.mts.map +0 -1
  25. package/dist/mappers/constants.mjs +0 -43
  26. package/dist/mappers/constants.mjs.map +0 -1
  27. package/dist/mappers/helpers/caip.cjs +0 -100
  28. package/dist/mappers/helpers/caip.cjs.map +0 -1
  29. package/dist/mappers/helpers/caip.d.cts +0 -32
  30. package/dist/mappers/helpers/caip.d.cts.map +0 -1
  31. package/dist/mappers/helpers/caip.d.mts +0 -32
  32. package/dist/mappers/helpers/caip.d.mts.map +0 -1
  33. package/dist/mappers/helpers/caip.mjs +0 -94
  34. package/dist/mappers/helpers/caip.mjs.map +0 -1
  35. package/dist/mappers/helpers/token-metadata.cjs +0 -31
  36. package/dist/mappers/helpers/token-metadata.cjs.map +0 -1
  37. package/dist/mappers/helpers/token-metadata.d.cts +0 -8
  38. package/dist/mappers/helpers/token-metadata.d.cts.map +0 -1
  39. package/dist/mappers/helpers/token-metadata.d.mts +0 -8
  40. package/dist/mappers/helpers/token-metadata.d.mts.map +0 -1
  41. package/dist/mappers/helpers/token-metadata.mjs +0 -31
  42. package/dist/mappers/helpers/token-metadata.mjs.map +0 -1
  43. package/dist/mappers/helpers/transactions.cjs +0 -240
  44. package/dist/mappers/helpers/transactions.cjs.map +0 -1
  45. package/dist/mappers/helpers/transactions.d.cts +0 -59
  46. package/dist/mappers/helpers/transactions.d.cts.map +0 -1
  47. package/dist/mappers/helpers/transactions.d.mts +0 -59
  48. package/dist/mappers/helpers/transactions.d.mts.map +0 -1
  49. package/dist/mappers/helpers/transactions.mjs +0 -228
  50. package/dist/mappers/helpers/transactions.mjs.map +0 -1
  51. package/dist/mappers/keyring-transaction-mapper.cjs +0 -143
  52. package/dist/mappers/keyring-transaction-mapper.cjs.map +0 -1
  53. package/dist/mappers/keyring-transaction-mapper.d.cts +0 -15
  54. package/dist/mappers/keyring-transaction-mapper.d.cts.map +0 -1
  55. package/dist/mappers/keyring-transaction-mapper.d.mts +0 -15
  56. package/dist/mappers/keyring-transaction-mapper.d.mts.map +0 -1
  57. package/dist/mappers/keyring-transaction-mapper.mjs +0 -139
  58. package/dist/mappers/keyring-transaction-mapper.mjs.map +0 -1
  59. package/dist/mappers/local-transaction-mapper.cjs +0 -420
  60. package/dist/mappers/local-transaction-mapper.cjs.map +0 -1
  61. package/dist/mappers/local-transaction-mapper.d.cts +0 -20
  62. package/dist/mappers/local-transaction-mapper.d.cts.map +0 -1
  63. package/dist/mappers/local-transaction-mapper.d.mts +0 -20
  64. package/dist/mappers/local-transaction-mapper.d.mts.map +0 -1
  65. package/dist/mappers/local-transaction-mapper.mjs +0 -416
  66. package/dist/mappers/local-transaction-mapper.mjs.map +0 -1
  67. package/dist/types.cjs +0 -3
  68. package/dist/types.cjs.map +0 -1
  69. package/dist/types.d.cts +0 -73
  70. package/dist/types.d.cts.map +0 -1
  71. package/dist/types.d.mts +0 -73
  72. package/dist/types.d.mts.map +0 -1
  73. package/dist/types.mjs +0 -2
  74. package/dist/types.mjs.map +0 -1
@@ -1,296 +0,0 @@
1
- import { isEqualCaseInsensitive as equalsIgnoreCase, isValidHexAddress } from "@metamask/controller-utils";
2
- import { KnownCaipNamespace, toCaipChainId } from "@metamask/utils";
3
- import { nativeTokenAddress, supplyMethodIds, swapsWrappedTokensAddresses, withdrawMethodIds, wrapMethodIds } from "./constants.mjs";
4
- import { formatAddressToAssetId, getNativeAsset } from "./helpers/caip.mjs";
5
- import { getFees, getNftPaymentTransfer, getTokenAmountFromTransfer, getTokenMetadataFromKnownToken, parseValueTransfers, withFallbackTokenAssetId } from "./helpers/transactions.mjs";
6
- /**
7
- * Maps an indexed API transaction into the shared activity item shape.
8
- *
9
- * @param options - The mapping options.
10
- * @param options.transaction - The indexed API transaction to map.
11
- * @param options.subjectAddress - The account the activity is being mapped for.
12
- * @returns The normalized activity item.
13
- */
14
- export function mapApiTransaction({ transaction, subjectAddress, }) {
15
- const { hash, transactionCategory, valueTransfers, from, methodId } = transaction;
16
- const normalizedMethodId = methodId?.toLowerCase() ?? '';
17
- const status = transaction.isError ? 'failed' : 'success';
18
- const timestamp = new Date(transaction.timestamp).getTime();
19
- const chainId = toCaipChainId(KnownCaipNamespace.Eip155, transaction.chainId.toString());
20
- const getToken = (transfer, direction) => getTokenAmountFromTransfer(transfer, direction, chainId);
21
- const { sentTransfer, receivedTransfer, sentNativeTransfer, sentNftTransfer, receivedNftTransfer, } = parseValueTransfers(valueTransfers, subjectAddress);
22
- const common = { chainId, status, timestamp, hash };
23
- if (transactionCategory === 'SWAP' || transactionCategory === 'EXCHANGE') {
24
- return {
25
- type: 'swap',
26
- ...common,
27
- data: {
28
- sourceToken: getToken(sentTransfer, 'out'),
29
- destinationToken: getToken(receivedTransfer, 'in'),
30
- fees: getFees(transaction, chainId),
31
- from,
32
- },
33
- };
34
- }
35
- if (transactionCategory === 'APPROVE') {
36
- // Note: Categorize REVOKE in the backend
37
- const direction = receivedTransfer && !sentTransfer ? 'in' : 'out';
38
- const valueTransferContractAddress = valueTransfers?.find(({ contractAddress, transferType }) => contractAddress &&
39
- transferType !== 'normal' &&
40
- transferType !== 'internal')?.contractAddress;
41
- const contractAddress = (isValidHexAddress(transaction.to, { allowNonPrefixed: false })
42
- ? transaction.to
43
- : undefined) ??
44
- (valueTransferContractAddress &&
45
- isValidHexAddress(valueTransferContractAddress, {
46
- allowNonPrefixed: false,
47
- })
48
- ? valueTransferContractAddress
49
- : undefined);
50
- const assetId = contractAddress
51
- ? formatAddressToAssetId(contractAddress, chainId)
52
- : undefined;
53
- const token = getTokenMetadataFromKnownToken(contractAddress, direction, chainId) ??
54
- (assetId ? { direction, assetId } : undefined);
55
- return {
56
- type: 'approveSpendingCap',
57
- ...common,
58
- data: {
59
- from,
60
- token,
61
- fees: getFees(transaction, chainId),
62
- },
63
- };
64
- }
65
- // Note: Categorize NFT in the backend
66
- if (sentNftTransfer || receivedNftTransfer) {
67
- const isNftExchange = transactionCategory === 'NFT_EXCHANGE';
68
- if (receivedNftTransfer) {
69
- if (receivedNftTransfer.from === nativeTokenAddress) {
70
- return {
71
- type: 'nftMint',
72
- ...common,
73
- data: {
74
- from: receivedNftTransfer.from,
75
- to: receivedNftTransfer.to,
76
- token: getToken(receivedNftTransfer, 'in'),
77
- },
78
- };
79
- }
80
- const purchasePaymentTransfer = getNftPaymentTransfer({
81
- side: 'buy',
82
- sentTransfer,
83
- sentNativeTransfer,
84
- nftCounterparty: receivedNftTransfer.from,
85
- transactionTo: transaction.to,
86
- subjectAddress,
87
- });
88
- if (isNftExchange || purchasePaymentTransfer) {
89
- return {
90
- type: 'nftBuy',
91
- ...common,
92
- data: {
93
- from: receivedNftTransfer.from,
94
- to: receivedNftTransfer.to,
95
- token: getToken(receivedNftTransfer, 'in'),
96
- paymentToken: getToken(purchasePaymentTransfer, 'out'),
97
- },
98
- };
99
- }
100
- return {
101
- type: 'receive',
102
- ...common,
103
- data: {
104
- from: receivedNftTransfer.from,
105
- to: receivedNftTransfer.to,
106
- token: getToken(receivedNftTransfer, 'in'),
107
- },
108
- };
109
- }
110
- if (sentNftTransfer) {
111
- const saleProceedsTransfer = getNftPaymentTransfer({
112
- side: 'sell',
113
- receivedTransfer,
114
- nftCounterparty: sentNftTransfer.to,
115
- transactionFrom: from,
116
- subjectAddress,
117
- });
118
- if (isNftExchange || saleProceedsTransfer) {
119
- return {
120
- type: 'nftSell',
121
- ...common,
122
- data: {
123
- from: sentNftTransfer.from,
124
- to: sentNftTransfer.to,
125
- token: getToken(sentNftTransfer, 'out'),
126
- paymentToken: getToken(saleProceedsTransfer, 'in'),
127
- },
128
- };
129
- }
130
- return {
131
- type: 'send',
132
- ...common,
133
- data: {
134
- from: sentNftTransfer.from,
135
- to: sentNftTransfer.to,
136
- token: getToken(sentNftTransfer, 'out'),
137
- },
138
- };
139
- }
140
- }
141
- const hasNativeTransferWithoutMethod = transactionCategory === 'CONTRACT_CALL' &&
142
- !methodId &&
143
- valueTransfers?.some(({ transferType }) => transferType === 'normal');
144
- if (transactionCategory === 'TRANSFER' ||
145
- transactionCategory === 'STANDARD' ||
146
- hasNativeTransferWithoutMethod) {
147
- const isReceive = Boolean(receivedTransfer && !sentTransfer) ||
148
- (equalsIgnoreCase(transaction.to, subjectAddress) &&
149
- !equalsIgnoreCase(from, subjectAddress));
150
- const transfer = isReceive ? receivedTransfer : sentTransfer;
151
- const direction = isReceive ? 'in' : 'out';
152
- const nativeAsset = getNativeAsset(chainId);
153
- const nativeToken = transactionCategory === 'STANDARD' && nativeAsset
154
- ? {
155
- ...nativeAsset,
156
- amount: transaction.value,
157
- direction,
158
- }
159
- : undefined;
160
- return {
161
- type: isReceive ? 'receive' : 'send',
162
- ...common,
163
- data: {
164
- from: transfer?.from ?? from,
165
- to: transfer?.to ?? transaction.to,
166
- token: withFallbackTokenAssetId(getToken(transfer, direction), transaction.to, transfer?.transferType, chainId) ?? nativeToken,
167
- fees: getFees(transaction, chainId),
168
- },
169
- };
170
- }
171
- if (transactionCategory === 'CLAIM_BONUS') {
172
- return {
173
- type: 'claimMusdBonus',
174
- ...common,
175
- data: {
176
- from,
177
- token: getToken(receivedTransfer, 'in'),
178
- },
179
- };
180
- }
181
- if (transactionCategory === 'CLAIM') {
182
- return {
183
- type: 'claim',
184
- ...common,
185
- data: {
186
- from,
187
- token: getToken(receivedTransfer ?? sentTransfer, receivedTransfer ? 'in' : 'out'),
188
- },
189
- };
190
- }
191
- if (transactionCategory === 'BRIDGE_WITHDRAW') {
192
- return {
193
- type: 'bridge',
194
- ...common,
195
- data: {
196
- from,
197
- sourceToken: getToken(sentTransfer, 'out'),
198
- fees: getFees(transaction, chainId),
199
- },
200
- };
201
- }
202
- if (transactionCategory === 'WITHDRAW' &&
203
- withdrawMethodIds.has(normalizedMethodId)) {
204
- return {
205
- type: 'lendingWithdrawal',
206
- ...common,
207
- data: {
208
- from,
209
- sourceToken: getToken(sentTransfer, 'out'),
210
- destinationToken: getToken(receivedTransfer, 'in'),
211
- fees: getFees(transaction, chainId),
212
- },
213
- };
214
- }
215
- // Note: Categorize Deposit/Stake in the backend
216
- if (sentTransfer && supplyMethodIds.has(normalizedMethodId)) {
217
- return {
218
- type: 'lendingDeposit',
219
- ...common,
220
- data: {
221
- from,
222
- sourceToken: getToken(sentTransfer, 'out'),
223
- destinationToken: getToken(receivedTransfer, 'in'),
224
- fees: getFees(transaction, chainId),
225
- },
226
- };
227
- }
228
- const wrappedNativeAddress = swapsWrappedTokensAddresses[`0x${transaction.chainId.toString(16)}`];
229
- if (receivedTransfer &&
230
- wrapMethodIds.has(normalizedMethodId) &&
231
- wrappedNativeAddress &&
232
- equalsIgnoreCase(transaction.to, wrappedNativeAddress)) {
233
- return {
234
- type: 'wrap',
235
- ...common,
236
- data: {
237
- from,
238
- sourceToken: getToken(sentTransfer, 'out'),
239
- destinationToken: getToken(receivedTransfer, 'in'),
240
- fees: getFees(transaction, chainId),
241
- },
242
- };
243
- }
244
- if (transactionCategory === 'UNWRAP') {
245
- return {
246
- type: 'unwrap',
247
- ...common,
248
- data: {
249
- from,
250
- sourceToken: getToken(sentTransfer, 'out'),
251
- destinationToken: getToken(receivedTransfer, 'in'),
252
- fees: getFees(transaction, chainId),
253
- },
254
- };
255
- }
256
- // Note: Categorize these Swaps in the backend
257
- if (transactionCategory === 'CONTRACT_CALL' &&
258
- sentTransfer?.symbol &&
259
- receivedTransfer?.symbol &&
260
- sentTransfer.symbol !== receivedTransfer.symbol) {
261
- return {
262
- type: 'swap',
263
- ...common,
264
- data: {
265
- from,
266
- sourceToken: getToken(sentTransfer, 'out'),
267
- destinationToken: getToken(receivedTransfer, 'in'),
268
- fees: getFees(transaction, chainId),
269
- },
270
- };
271
- }
272
- if (transactionCategory === 'DEPOSIT') {
273
- return {
274
- type: 'deposit',
275
- ...common,
276
- data: {
277
- from,
278
- token: getToken(sentTransfer, 'out'),
279
- },
280
- };
281
- }
282
- const token = getToken(sentTransfer ?? receivedTransfer, sentTransfer ? 'out' : 'in');
283
- return {
284
- type: 'contractInteraction',
285
- ...common,
286
- data: {
287
- methodId,
288
- from,
289
- to: transaction.to,
290
- transactionCategory,
291
- transactionProtocol: transaction.transactionProtocol,
292
- ...(token ? { token } : {}),
293
- },
294
- };
295
- }
296
- //# sourceMappingURL=api-transaction-mapper.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-transaction-mapper.mjs","sourceRoot":"","sources":["../../src/mappers/api-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isEqualCaseInsensitive as equalsIgnoreCase,\n isValidHexAddress,\n} from '@metamask/controller-utils';\nimport type { V1TransactionByHashResponse } from '@metamask/core-backend';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type {\n ActivityItem,\n Status,\n TokenAmount,\n ValueTransfer,\n} from '../types';\nimport {\n nativeTokenAddress,\n supplyMethodIds,\n swapsWrappedTokensAddresses,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants';\nimport { formatAddressToAssetId, getNativeAsset } from './helpers/caip';\nimport {\n getFees,\n getNftPaymentTransfer,\n getTokenAmountFromTransfer,\n getTokenMetadataFromKnownToken,\n parseValueTransfers,\n withFallbackTokenAssetId,\n} from './helpers/transactions';\n\n/**\n * Maps an indexed API transaction into the shared activity item shape.\n *\n * @param options - The mapping options.\n * @param options.transaction - The indexed API transaction to map.\n * @param options.subjectAddress - The account the activity is being mapped for.\n * @returns The normalized activity item.\n */\nexport function mapApiTransaction({\n transaction,\n subjectAddress,\n}: {\n transaction: V1TransactionByHashResponse;\n subjectAddress: string;\n}): ActivityItem {\n const { hash, transactionCategory, valueTransfers, from, methodId } =\n transaction;\n const normalizedMethodId = methodId?.toLowerCase() ?? '';\n const status: Status = transaction.isError ? 'failed' : 'success';\n const timestamp = new Date(transaction.timestamp).getTime();\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n transaction.chainId.toString(),\n );\n const getToken = (\n transfer: ValueTransfer | undefined,\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined =>\n getTokenAmountFromTransfer(transfer, direction, chainId);\n\n const {\n sentTransfer,\n receivedTransfer,\n sentNativeTransfer,\n sentNftTransfer,\n receivedNftTransfer,\n } = parseValueTransfers(valueTransfers, subjectAddress);\n\n const common = { chainId, status, timestamp, hash };\n\n if (transactionCategory === 'SWAP' || transactionCategory === 'EXCHANGE') {\n return {\n type: 'swap',\n ...common,\n data: {\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n from,\n },\n };\n }\n\n if (transactionCategory === 'APPROVE') {\n // Note: Categorize REVOKE in the backend\n const direction = receivedTransfer && !sentTransfer ? 'in' : 'out';\n const valueTransferContractAddress = valueTransfers?.find(\n ({ contractAddress, transferType }) =>\n contractAddress &&\n transferType !== 'normal' &&\n transferType !== 'internal',\n )?.contractAddress;\n const contractAddress =\n (isValidHexAddress(transaction.to, { allowNonPrefixed: false })\n ? transaction.to\n : undefined) ??\n (valueTransferContractAddress &&\n isValidHexAddress(valueTransferContractAddress, {\n allowNonPrefixed: false,\n })\n ? valueTransferContractAddress\n : undefined);\n const assetId = contractAddress\n ? formatAddressToAssetId(contractAddress, chainId)\n : undefined;\n const token =\n getTokenMetadataFromKnownToken(contractAddress, direction, chainId) ??\n (assetId ? { direction, assetId } : undefined);\n\n return {\n type: 'approveSpendingCap',\n ...common,\n data: {\n from,\n token,\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n // Note: Categorize NFT in the backend\n if (sentNftTransfer || receivedNftTransfer) {\n const isNftExchange = transactionCategory === 'NFT_EXCHANGE';\n\n if (receivedNftTransfer) {\n if (receivedNftTransfer.from === nativeTokenAddress) {\n return {\n type: 'nftMint',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n },\n };\n }\n\n const purchasePaymentTransfer = getNftPaymentTransfer({\n side: 'buy',\n sentTransfer,\n sentNativeTransfer,\n nftCounterparty: receivedNftTransfer.from,\n transactionTo: transaction.to,\n subjectAddress,\n });\n\n if (isNftExchange || purchasePaymentTransfer) {\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n paymentToken: getToken(purchasePaymentTransfer, 'out'),\n },\n };\n }\n\n return {\n type: 'receive',\n ...common,\n data: {\n from: receivedNftTransfer.from,\n to: receivedNftTransfer.to,\n token: getToken(receivedNftTransfer, 'in'),\n },\n };\n }\n\n if (sentNftTransfer) {\n const saleProceedsTransfer = getNftPaymentTransfer({\n side: 'sell',\n receivedTransfer,\n nftCounterparty: sentNftTransfer.to,\n transactionFrom: from,\n subjectAddress,\n });\n\n if (isNftExchange || saleProceedsTransfer) {\n return {\n type: 'nftSell',\n ...common,\n data: {\n from: sentNftTransfer.from,\n to: sentNftTransfer.to,\n token: getToken(sentNftTransfer, 'out'),\n paymentToken: getToken(saleProceedsTransfer, 'in'),\n },\n };\n }\n\n return {\n type: 'send',\n ...common,\n data: {\n from: sentNftTransfer.from,\n to: sentNftTransfer.to,\n token: getToken(sentNftTransfer, 'out'),\n },\n };\n }\n }\n\n const hasNativeTransferWithoutMethod =\n transactionCategory === 'CONTRACT_CALL' &&\n !methodId &&\n valueTransfers?.some(({ transferType }) => transferType === 'normal');\n\n if (\n transactionCategory === 'TRANSFER' ||\n transactionCategory === 'STANDARD' ||\n hasNativeTransferWithoutMethod\n ) {\n const isReceive =\n Boolean(receivedTransfer && !sentTransfer) ||\n (equalsIgnoreCase(transaction.to, subjectAddress) &&\n !equalsIgnoreCase(from, subjectAddress));\n\n const transfer = isReceive ? receivedTransfer : sentTransfer;\n const direction = isReceive ? 'in' : 'out';\n const nativeAsset = getNativeAsset(chainId);\n const nativeToken =\n transactionCategory === 'STANDARD' && nativeAsset\n ? ({\n ...nativeAsset,\n amount: transaction.value,\n direction,\n } as TokenAmount)\n : undefined;\n\n return {\n type: isReceive ? 'receive' : 'send',\n ...common,\n data: {\n from: transfer?.from ?? from,\n to: transfer?.to ?? transaction.to,\n token:\n withFallbackTokenAssetId(\n getToken(transfer, direction),\n transaction.to,\n transfer?.transferType,\n chainId,\n ) ?? nativeToken,\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n if (transactionCategory === 'CLAIM_BONUS') {\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n token: getToken(receivedTransfer, 'in'),\n },\n };\n }\n\n if (transactionCategory === 'CLAIM') {\n return {\n type: 'claim',\n ...common,\n data: {\n from,\n token: getToken(\n receivedTransfer ?? sentTransfer,\n receivedTransfer ? 'in' : 'out',\n ),\n },\n };\n }\n\n if (transactionCategory === 'BRIDGE_WITHDRAW') {\n return {\n type: 'bridge',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n if (\n transactionCategory === 'WITHDRAW' &&\n withdrawMethodIds.has(normalizedMethodId)\n ) {\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n // Note: Categorize Deposit/Stake in the backend\n if (sentTransfer && supplyMethodIds.has(normalizedMethodId)) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n const wrappedNativeAddress =\n swapsWrappedTokensAddresses[\n `0x${transaction.chainId.toString(\n 16,\n )}` as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (\n receivedTransfer &&\n wrapMethodIds.has(normalizedMethodId) &&\n wrappedNativeAddress &&\n equalsIgnoreCase(transaction.to, wrappedNativeAddress)\n ) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n if (transactionCategory === 'UNWRAP') {\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n // Note: Categorize these Swaps in the backend\n if (\n transactionCategory === 'CONTRACT_CALL' &&\n sentTransfer?.symbol &&\n receivedTransfer?.symbol &&\n sentTransfer.symbol !== receivedTransfer.symbol\n ) {\n return {\n type: 'swap',\n ...common,\n data: {\n from,\n sourceToken: getToken(sentTransfer, 'out'),\n destinationToken: getToken(receivedTransfer, 'in'),\n fees: getFees(transaction, chainId),\n },\n };\n }\n\n if (transactionCategory === 'DEPOSIT') {\n return {\n type: 'deposit',\n ...common,\n data: {\n from,\n token: getToken(sentTransfer, 'out'),\n },\n };\n }\n\n const token = getToken(\n sentTransfer ?? receivedTransfer,\n sentTransfer ? 'out' : 'in',\n );\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n methodId,\n from,\n to: transaction.to,\n transactionCategory,\n transactionProtocol: transaction.transactionProtocol,\n ...(token ? { token } : {}),\n },\n };\n}\n"]}
@@ -1,46 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.swapsWrappedTokensAddresses = exports.nativeTokenAddress = exports.tokenTransferLogTopicHash = exports.permit2ApproveMethodId = exports.unwrapMethodIds = exports.wrapMethodIds = exports.withdrawMethodIds = exports.supplyMethodIds = void 0;
4
- // Known method IDs for supply/deposit calls
5
- const aaveSupplyMethodId = '0x617ba037';
6
- const lidoSubmitMethodId = '0xa1903eab';
7
- const lidoDepositMethodId = '0x8a99b4f2'; // MM staking contract Lido deposit
8
- const rocketPoolDepositMethodId = '0xfa4bbb71'; // MM staking contract RP deposit
9
- exports.supplyMethodIds = new Set([
10
- aaveSupplyMethodId,
11
- lidoSubmitMethodId,
12
- lidoDepositMethodId,
13
- rocketPoolDepositMethodId,
14
- ]);
15
- // Known method IDs for withdraw calls
16
- const aaveWithdrawMethodId = '0x69328dec';
17
- const lidoClaimWithdrawMethodId = '0xf8444436';
18
- const rocketPoolBurnMethodId = '0x42966c68';
19
- exports.withdrawMethodIds = new Set([
20
- aaveWithdrawMethodId,
21
- lidoClaimWithdrawMethodId,
22
- rocketPoolBurnMethodId,
23
- ]);
24
- exports.wrapMethodIds = new Set(['0xd0e30db0']);
25
- exports.unwrapMethodIds = new Set(['0x2e1a7d4d']);
26
- exports.permit2ApproveMethodId = '0x87517c45';
27
- exports.tokenTransferLogTopicHash = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
28
- exports.nativeTokenAddress = '0x0000000000000000000000000000000000000000';
29
- exports.swapsWrappedTokensAddresses = {
30
- '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
31
- '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
32
- '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
33
- '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',
34
- '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',
35
- '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',
36
- '0xa': '0x4200000000000000000000000000000000000006',
37
- '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
38
- '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',
39
- '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',
40
- '0x2105': '0x4200000000000000000000000000000000000006',
41
- '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7',
42
- '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',
43
- '0x3e7': '0x5555555555555555555555555555555555555555',
44
- '0x10e6': '0x4200000000000000000000000000000000000006',
45
- };
46
- //# sourceMappingURL=constants.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.cjs","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":";;;AAAA,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,mCAAmC;AAC7E,MAAM,yBAAyB,GAAG,YAAY,CAAC,CAAC,iCAAiC;AAEpE,QAAA,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAC1C,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAC/C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE/B,QAAA,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC,CAAC;AAEU,QAAA,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACxC,QAAA,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAE1C,QAAA,sBAAsB,GAAG,YAAY,CAAC;AAEtC,QAAA,yBAAyB,GACpC,oEAAoE,CAAC;AAE1D,QAAA,kBAAkB,GAAG,4CAA4C,CAAC;AAElE,QAAA,2BAA2B,GAAG;IACzC,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;CAC9C,CAAC","sourcesContent":["// Known method IDs for supply/deposit calls\nconst aaveSupplyMethodId = '0x617ba037';\nconst lidoSubmitMethodId = '0xa1903eab';\nconst lidoDepositMethodId = '0x8a99b4f2'; // MM staking contract Lido deposit\nconst rocketPoolDepositMethodId = '0xfa4bbb71'; // MM staking contract RP deposit\n\nexport const supplyMethodIds = new Set([\n aaveSupplyMethodId,\n lidoSubmitMethodId,\n lidoDepositMethodId,\n rocketPoolDepositMethodId,\n]);\n\n// Known method IDs for withdraw calls\nconst aaveWithdrawMethodId = '0x69328dec';\nconst lidoClaimWithdrawMethodId = '0xf8444436';\nconst rocketPoolBurnMethodId = '0x42966c68';\n\nexport const withdrawMethodIds = new Set([\n aaveWithdrawMethodId,\n lidoClaimWithdrawMethodId,\n rocketPoolBurnMethodId,\n]);\n\nexport const wrapMethodIds = new Set(['0xd0e30db0']);\nexport const unwrapMethodIds = new Set(['0x2e1a7d4d']);\n\nexport const permit2ApproveMethodId = '0x87517c45';\n\nexport const tokenTransferLogTopicHash =\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n\nexport const nativeTokenAddress = '0x0000000000000000000000000000000000000000';\n\nexport const swapsWrappedTokensAddresses = {\n '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',\n '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',\n '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',\n '0xa': '0x4200000000000000000000000000000000000006',\n '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',\n '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n '0x2105': '0x4200000000000000000000000000000000000006',\n '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7',\n '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',\n '0x3e7': '0x5555555555555555555555555555555555555555',\n '0x10e6': '0x4200000000000000000000000000000000000006',\n} as const;\n"]}
@@ -1,25 +0,0 @@
1
- export declare const supplyMethodIds: Set<string>;
2
- export declare const withdrawMethodIds: Set<string>;
3
- export declare const wrapMethodIds: Set<string>;
4
- export declare const unwrapMethodIds: Set<string>;
5
- export declare const permit2ApproveMethodId = "0x87517c45";
6
- export declare const tokenTransferLogTopicHash = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
7
- export declare const nativeTokenAddress = "0x0000000000000000000000000000000000000000";
8
- export declare const swapsWrappedTokensAddresses: {
9
- readonly '0x1': "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
10
- readonly '0x539': "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
11
- readonly '0x38': "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c";
12
- readonly '0x89': "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270";
13
- readonly '0x5': "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6";
14
- readonly '0xa86a': "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7";
15
- readonly '0xa': "0x4200000000000000000000000000000000000006";
16
- readonly '0xa4b1': "0x82af49447d8a07e3bd95bd0d56f35241523fbab1";
17
- readonly '0x144': "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91";
18
- readonly '0xe708': "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f";
19
- readonly '0x2105': "0x4200000000000000000000000000000000000006";
20
- readonly '0x531': "0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7";
21
- readonly '0x8f': "0x3bd359c1119da7da1d913d1c4d2b7c461115433a";
22
- readonly '0x3e7': "0x5555555555555555555555555555555555555555";
23
- readonly '0x10e6': "0x4200000000000000000000000000000000000006";
24
- };
25
- //# sourceMappingURL=constants.d.cts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.cts","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,aAK1B,CAAC;AAOH,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,eAAO,MAAM,aAAa,aAA0B,CAAC;AACrD,eAAO,MAAM,eAAe,aAA0B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,eAAO,MAAM,yBAAyB,uEACgC,CAAC;AAEvE,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAE/E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;CAgB9B,CAAC"}
@@ -1,25 +0,0 @@
1
- export declare const supplyMethodIds: Set<string>;
2
- export declare const withdrawMethodIds: Set<string>;
3
- export declare const wrapMethodIds: Set<string>;
4
- export declare const unwrapMethodIds: Set<string>;
5
- export declare const permit2ApproveMethodId = "0x87517c45";
6
- export declare const tokenTransferLogTopicHash = "0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef";
7
- export declare const nativeTokenAddress = "0x0000000000000000000000000000000000000000";
8
- export declare const swapsWrappedTokensAddresses: {
9
- readonly '0x1': "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
10
- readonly '0x539': "0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2";
11
- readonly '0x38': "0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c";
12
- readonly '0x89': "0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270";
13
- readonly '0x5': "0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6";
14
- readonly '0xa86a': "0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7";
15
- readonly '0xa': "0x4200000000000000000000000000000000000006";
16
- readonly '0xa4b1': "0x82af49447d8a07e3bd95bd0d56f35241523fbab1";
17
- readonly '0x144': "0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91";
18
- readonly '0xe708': "0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f";
19
- readonly '0x2105': "0x4200000000000000000000000000000000000006";
20
- readonly '0x531': "0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7";
21
- readonly '0x8f': "0x3bd359c1119da7da1d913d1c4d2b7c461115433a";
22
- readonly '0x3e7': "0x5555555555555555555555555555555555555555";
23
- readonly '0x10e6': "0x4200000000000000000000000000000000000006";
24
- };
25
- //# sourceMappingURL=constants.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.d.mts","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,eAAe,aAK1B,CAAC;AAOH,eAAO,MAAM,iBAAiB,aAI5B,CAAC;AAEH,eAAO,MAAM,aAAa,aAA0B,CAAC;AACrD,eAAO,MAAM,eAAe,aAA0B,CAAC;AAEvD,eAAO,MAAM,sBAAsB,eAAe,CAAC;AAEnD,eAAO,MAAM,yBAAyB,uEACgC,CAAC;AAEvE,eAAO,MAAM,kBAAkB,+CAA+C,CAAC;AAE/E,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;CAgB9B,CAAC"}
@@ -1,43 +0,0 @@
1
- // Known method IDs for supply/deposit calls
2
- const aaveSupplyMethodId = '0x617ba037';
3
- const lidoSubmitMethodId = '0xa1903eab';
4
- const lidoDepositMethodId = '0x8a99b4f2'; // MM staking contract Lido deposit
5
- const rocketPoolDepositMethodId = '0xfa4bbb71'; // MM staking contract RP deposit
6
- export const supplyMethodIds = new Set([
7
- aaveSupplyMethodId,
8
- lidoSubmitMethodId,
9
- lidoDepositMethodId,
10
- rocketPoolDepositMethodId,
11
- ]);
12
- // Known method IDs for withdraw calls
13
- const aaveWithdrawMethodId = '0x69328dec';
14
- const lidoClaimWithdrawMethodId = '0xf8444436';
15
- const rocketPoolBurnMethodId = '0x42966c68';
16
- export const withdrawMethodIds = new Set([
17
- aaveWithdrawMethodId,
18
- lidoClaimWithdrawMethodId,
19
- rocketPoolBurnMethodId,
20
- ]);
21
- export const wrapMethodIds = new Set(['0xd0e30db0']);
22
- export const unwrapMethodIds = new Set(['0x2e1a7d4d']);
23
- export const permit2ApproveMethodId = '0x87517c45';
24
- export const tokenTransferLogTopicHash = '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';
25
- export const nativeTokenAddress = '0x0000000000000000000000000000000000000000';
26
- export const swapsWrappedTokensAddresses = {
27
- '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
28
- '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',
29
- '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',
30
- '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',
31
- '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',
32
- '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',
33
- '0xa': '0x4200000000000000000000000000000000000006',
34
- '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',
35
- '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',
36
- '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',
37
- '0x2105': '0x4200000000000000000000000000000000000006',
38
- '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7',
39
- '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',
40
- '0x3e7': '0x5555555555555555555555555555555555555555',
41
- '0x10e6': '0x4200000000000000000000000000000000000006',
42
- };
43
- //# sourceMappingURL=constants.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"constants.mjs","sourceRoot":"","sources":["../../src/mappers/constants.ts"],"names":[],"mappings":"AAAA,4CAA4C;AAC5C,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,kBAAkB,GAAG,YAAY,CAAC;AACxC,MAAM,mBAAmB,GAAG,YAAY,CAAC,CAAC,mCAAmC;AAC7E,MAAM,yBAAyB,GAAG,YAAY,CAAC,CAAC,iCAAiC;AAEjF,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IACrC,kBAAkB;IAClB,kBAAkB;IAClB,mBAAmB;IACnB,yBAAyB;CAC1B,CAAC,CAAC;AAEH,sCAAsC;AACtC,MAAM,oBAAoB,GAAG,YAAY,CAAC;AAC1C,MAAM,yBAAyB,GAAG,YAAY,CAAC;AAC/C,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAE5C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC;IACvC,oBAAoB;IACpB,yBAAyB;IACzB,sBAAsB;CACvB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AACrD,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,YAAY,CAAC;AAEnD,MAAM,CAAC,MAAM,yBAAyB,GACpC,oEAAoE,CAAC;AAEvE,MAAM,CAAC,MAAM,kBAAkB,GAAG,4CAA4C,CAAC;AAE/E,MAAM,CAAC,MAAM,2BAA2B,GAAG;IACzC,KAAK,EAAE,4CAA4C;IACnD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,MAAM,EAAE,4CAA4C;IACpD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,KAAK,EAAE,4CAA4C;IACnD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;IACtD,QAAQ,EAAE,4CAA4C;IACtD,OAAO,EAAE,4CAA4C;IACrD,MAAM,EAAE,4CAA4C;IACpD,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,4CAA4C;CAC9C,CAAC","sourcesContent":["// Known method IDs for supply/deposit calls\nconst aaveSupplyMethodId = '0x617ba037';\nconst lidoSubmitMethodId = '0xa1903eab';\nconst lidoDepositMethodId = '0x8a99b4f2'; // MM staking contract Lido deposit\nconst rocketPoolDepositMethodId = '0xfa4bbb71'; // MM staking contract RP deposit\n\nexport const supplyMethodIds = new Set([\n aaveSupplyMethodId,\n lidoSubmitMethodId,\n lidoDepositMethodId,\n rocketPoolDepositMethodId,\n]);\n\n// Known method IDs for withdraw calls\nconst aaveWithdrawMethodId = '0x69328dec';\nconst lidoClaimWithdrawMethodId = '0xf8444436';\nconst rocketPoolBurnMethodId = '0x42966c68';\n\nexport const withdrawMethodIds = new Set([\n aaveWithdrawMethodId,\n lidoClaimWithdrawMethodId,\n rocketPoolBurnMethodId,\n]);\n\nexport const wrapMethodIds = new Set(['0xd0e30db0']);\nexport const unwrapMethodIds = new Set(['0x2e1a7d4d']);\n\nexport const permit2ApproveMethodId = '0x87517c45';\n\nexport const tokenTransferLogTopicHash =\n '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef';\n\nexport const nativeTokenAddress = '0x0000000000000000000000000000000000000000';\n\nexport const swapsWrappedTokensAddresses = {\n '0x1': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x539': '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2',\n '0x38': '0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c',\n '0x89': '0x0d500b1d8e8ef31e21c99d1db9a6444d3adf1270',\n '0x5': '0xB4FBF271143F4FBf7B91A5ded31805e42b2208d6',\n '0xa86a': '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7',\n '0xa': '0x4200000000000000000000000000000000000006',\n '0xa4b1': '0x82af49447d8a07e3bd95bd0d56f35241523fbab1',\n '0x144': '0x5AEa5775959fBC2557Cc8789bC1bf90A239D9a91',\n '0xe708': '0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f',\n '0x2105': '0x4200000000000000000000000000000000000006',\n '0x531': '0xe30fedd158a2e3b13e9badaeabafc5516e95e8c7',\n '0x8f': '0x3bd359c1119da7da1d913d1c4d2b7c461115433a',\n '0x3e7': '0x5555555555555555555555555555555555555555',\n '0x10e6': '0x4200000000000000000000000000000000000006',\n} as const;\n"]}
@@ -1,100 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.formatAddressToAssetId = exports.getNativeAsset = exports.formatChainIdToCaip = void 0;
4
- const controller_utils_1 = require("@metamask/controller-utils");
5
- const utils_1 = require("@metamask/utils");
6
- const constants_1 = require("../constants.cjs");
7
- const nativeAssetsByCaipChainId = {
8
- 'eip155:1': { symbol: 'ETH', decimals: 18, slip44: 60 },
9
- 'eip155:10': { symbol: 'ETH', decimals: 18, slip44: 60 },
10
- 'eip155:56': { symbol: 'BNB', decimals: 18, slip44: 714 },
11
- 'eip155:137': { symbol: 'POL', decimals: 18, slip44: 966 },
12
- 'eip155:324': { symbol: 'ETH', decimals: 18, slip44: 60 },
13
- 'eip155:1329': { symbol: 'SEI', decimals: 18, slip44: 19000118 },
14
- 'eip155:8453': { symbol: 'ETH', decimals: 18, slip44: 60 },
15
- 'eip155:42161': { symbol: 'ETH', decimals: 18, slip44: 60 },
16
- 'eip155:43114': { symbol: 'AVAX', decimals: 18, slip44: 9005 },
17
- 'eip155:59144': { symbol: 'ETH', decimals: 18, slip44: 60 },
18
- };
19
- /**
20
- * Normalizes a hex, decimal, numeric, or CAIP chain id to its CAIP-2 form.
21
- * Only EVM (eip155) chains are normalized here; CAIP ids are returned as-is.
22
- *
23
- * @param chainId - Hex (`0x1`), numeric, decimal string, or CAIP chain id.
24
- * @returns The CAIP-2 chain id, or `undefined` when it can't be normalized.
25
- */
26
- function formatChainIdToCaip(chainId) {
27
- if (typeof chainId === 'number') {
28
- return `eip155:${chainId}`;
29
- }
30
- if (chainId.includes(':')) {
31
- return chainId;
32
- }
33
- if (chainId.startsWith('0x')) {
34
- const reference = Number.parseInt(chainId, 16);
35
- return Number.isNaN(reference) ? undefined : `eip155:${reference}`;
36
- }
37
- const reference = Number(chainId);
38
- return Number.isNaN(reference) ? undefined : `eip155:${reference}`;
39
- }
40
- exports.formatChainIdToCaip = formatChainIdToCaip;
41
- /**
42
- * Looks up the native asset metadata for a chain from the canonical table.
43
- * Returns `undefined` (never throws) for chains outside the table — callers
44
- * degrade gracefully, matching the previous bridge-controller behaviour.
45
- *
46
- * @param chainId - Hex, numeric, decimal, or CAIP chain id.
47
- * @returns Native asset symbol/decimals/assetId, or `undefined` if unsupported.
48
- */
49
- function getNativeAsset(chainId) {
50
- const caipChainId = formatChainIdToCaip(chainId);
51
- if (!caipChainId) {
52
- return undefined;
53
- }
54
- const entry = nativeAssetsByCaipChainId[caipChainId];
55
- if (!entry) {
56
- return undefined;
57
- }
58
- return {
59
- symbol: entry.symbol,
60
- decimals: entry.decimals,
61
- assetId: `${caipChainId}/slip44:${entry.slip44}`,
62
- };
63
- }
64
- exports.getNativeAsset = getNativeAsset;
65
- function isNativeAddress(address) {
66
- const normalized = address.toLowerCase();
67
- return (normalized === constants_1.nativeTokenAddress ||
68
- normalized === '0x0' ||
69
- /^0x0+$/u.test(normalized));
70
- }
71
- /**
72
- * Encodes an EVM token address + chain id into a CAIP-19 asset id.
73
- *
74
- * @param address - Hex contract address, native sentinel, or CAIP asset id.
75
- * @param chainId - CAIP-2 or hex chain id.
76
- * @returns The CAIP-19 asset id, or `undefined` when it can't be encoded.
77
- */
78
- function formatAddressToAssetId(address, chainId) {
79
- if ((0, utils_1.isCaipAssetType)(address)) {
80
- return address;
81
- }
82
- const caipChainId = chainId ? formatChainIdToCaip(chainId) : undefined;
83
- if (!caipChainId) {
84
- return undefined;
85
- }
86
- if (isNativeAddress(address)) {
87
- const nativeAssetId = getNativeAsset(caipChainId)?.assetId;
88
- if (nativeAssetId) {
89
- return nativeAssetId;
90
- }
91
- }
92
- const checksummedAddress = (0, controller_utils_1.toChecksumHexAddress)(address);
93
- if (!(0, utils_1.isStrictHexString)(checksummedAddress)) {
94
- return undefined;
95
- }
96
- const { namespace, reference } = (0, utils_1.parseCaipChainId)(caipChainId);
97
- return (0, utils_1.toCaipAssetType)(namespace, reference, 'erc20', checksummedAddress);
98
- }
99
- exports.formatAddressToAssetId = formatAddressToAssetId;
100
- //# sourceMappingURL=caip.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"caip.cjs","sourceRoot":"","sources":["../../../src/mappers/helpers/caip.ts"],"names":[],"mappings":"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","sourcesContent":["import { toChecksumHexAddress } from '@metamask/controller-utils';\nimport type { CaipAssetType, CaipChainId, Hex } from '@metamask/utils';\nimport {\n isCaipAssetType,\n isStrictHexString,\n parseCaipChainId,\n toCaipAssetType,\n} from '@metamask/utils';\n\nimport { nativeTokenAddress } from '../constants';\n\nexport type NativeAssetMetadata = {\n symbol: string;\n decimals: number;\n assetId: CaipChainId | string;\n};\n\ntype NativeAssetEntry = {\n symbol: string;\n decimals: number;\n slip44: number;\n};\n\nconst nativeAssetsByCaipChainId: Record<string, NativeAssetEntry> = {\n 'eip155:1': { symbol: 'ETH', decimals: 18, slip44: 60 },\n 'eip155:10': { symbol: 'ETH', decimals: 18, slip44: 60 },\n 'eip155:56': { symbol: 'BNB', decimals: 18, slip44: 714 },\n 'eip155:137': { symbol: 'POL', decimals: 18, slip44: 966 },\n 'eip155:324': { symbol: 'ETH', decimals: 18, slip44: 60 },\n 'eip155:1329': { symbol: 'SEI', decimals: 18, slip44: 19000118 },\n 'eip155:8453': { symbol: 'ETH', decimals: 18, slip44: 60 },\n 'eip155:42161': { symbol: 'ETH', decimals: 18, slip44: 60 },\n 'eip155:43114': { symbol: 'AVAX', decimals: 18, slip44: 9005 },\n 'eip155:59144': { symbol: 'ETH', decimals: 18, slip44: 60 },\n};\n\n/**\n * Normalizes a hex, decimal, numeric, or CAIP chain id to its CAIP-2 form.\n * Only EVM (eip155) chains are normalized here; CAIP ids are returned as-is.\n *\n * @param chainId - Hex (`0x1`), numeric, decimal string, or CAIP chain id.\n * @returns The CAIP-2 chain id, or `undefined` when it can't be normalized.\n */\nexport function formatChainIdToCaip(\n chainId: string | number,\n): CaipChainId | undefined {\n if (typeof chainId === 'number') {\n return `eip155:${chainId}`;\n }\n\n if (chainId.includes(':')) {\n return chainId as CaipChainId;\n }\n\n if (chainId.startsWith('0x')) {\n const reference = Number.parseInt(chainId, 16);\n return Number.isNaN(reference) ? undefined : `eip155:${reference}`;\n }\n\n const reference = Number(chainId);\n return Number.isNaN(reference) ? undefined : `eip155:${reference}`;\n}\n\n/**\n * Looks up the native asset metadata for a chain from the canonical table.\n * Returns `undefined` (never throws) for chains outside the table — callers\n * degrade gracefully, matching the previous bridge-controller behaviour.\n *\n * @param chainId - Hex, numeric, decimal, or CAIP chain id.\n * @returns Native asset symbol/decimals/assetId, or `undefined` if unsupported.\n */\nexport function getNativeAsset(\n chainId: string | number,\n): NativeAssetMetadata | undefined {\n const caipChainId = formatChainIdToCaip(chainId);\n\n if (!caipChainId) {\n return undefined;\n }\n\n const entry = nativeAssetsByCaipChainId[caipChainId];\n\n if (!entry) {\n return undefined;\n }\n\n return {\n symbol: entry.symbol,\n decimals: entry.decimals,\n assetId: `${caipChainId}/slip44:${entry.slip44}`,\n };\n}\n\nfunction isNativeAddress(address: string): boolean {\n const normalized = address.toLowerCase();\n return (\n normalized === nativeTokenAddress ||\n normalized === '0x0' ||\n /^0x0+$/u.test(normalized)\n );\n}\n\n/**\n * Encodes an EVM token address + chain id into a CAIP-19 asset id.\n *\n * @param address - Hex contract address, native sentinel, or CAIP asset id.\n * @param chainId - CAIP-2 or hex chain id.\n * @returns The CAIP-19 asset id, or `undefined` when it can't be encoded.\n */\nexport function formatAddressToAssetId(\n address: Hex | CaipAssetType | string,\n chainId?: CaipChainId | Hex,\n): CaipAssetType | undefined {\n if (isCaipAssetType(address)) {\n return address;\n }\n\n const caipChainId = chainId ? formatChainIdToCaip(chainId) : undefined;\n\n if (!caipChainId) {\n return undefined;\n }\n\n if (isNativeAddress(address)) {\n const nativeAssetId = getNativeAsset(caipChainId)?.assetId;\n\n if (nativeAssetId) {\n return nativeAssetId as CaipAssetType;\n }\n }\n\n const checksummedAddress = toChecksumHexAddress(address);\n\n if (!isStrictHexString(checksummedAddress)) {\n return undefined;\n }\n\n const { namespace, reference } = parseCaipChainId(caipChainId);\n\n return toCaipAssetType(namespace, reference, 'erc20', checksummedAddress);\n}\n"]}