@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.
- package/CHANGELOG.md +0 -9
- package/dist/index.cjs +4 -7
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1 -4
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts +1 -4
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +3 -3
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -10
- package/dist/mappers/api-transaction-mapper.cjs +0 -300
- package/dist/mappers/api-transaction-mapper.cjs.map +0 -1
- package/dist/mappers/api-transaction-mapper.d.cts +0 -15
- package/dist/mappers/api-transaction-mapper.d.cts.map +0 -1
- package/dist/mappers/api-transaction-mapper.d.mts +0 -15
- package/dist/mappers/api-transaction-mapper.d.mts.map +0 -1
- package/dist/mappers/api-transaction-mapper.mjs +0 -296
- package/dist/mappers/api-transaction-mapper.mjs.map +0 -1
- package/dist/mappers/constants.cjs +0 -46
- package/dist/mappers/constants.cjs.map +0 -1
- package/dist/mappers/constants.d.cts +0 -25
- package/dist/mappers/constants.d.cts.map +0 -1
- package/dist/mappers/constants.d.mts +0 -25
- package/dist/mappers/constants.d.mts.map +0 -1
- package/dist/mappers/constants.mjs +0 -43
- package/dist/mappers/constants.mjs.map +0 -1
- package/dist/mappers/helpers/caip.cjs +0 -100
- package/dist/mappers/helpers/caip.cjs.map +0 -1
- package/dist/mappers/helpers/caip.d.cts +0 -32
- package/dist/mappers/helpers/caip.d.cts.map +0 -1
- package/dist/mappers/helpers/caip.d.mts +0 -32
- package/dist/mappers/helpers/caip.d.mts.map +0 -1
- package/dist/mappers/helpers/caip.mjs +0 -94
- package/dist/mappers/helpers/caip.mjs.map +0 -1
- package/dist/mappers/helpers/token-metadata.cjs +0 -31
- package/dist/mappers/helpers/token-metadata.cjs.map +0 -1
- package/dist/mappers/helpers/token-metadata.d.cts +0 -8
- package/dist/mappers/helpers/token-metadata.d.cts.map +0 -1
- package/dist/mappers/helpers/token-metadata.d.mts +0 -8
- package/dist/mappers/helpers/token-metadata.d.mts.map +0 -1
- package/dist/mappers/helpers/token-metadata.mjs +0 -31
- package/dist/mappers/helpers/token-metadata.mjs.map +0 -1
- package/dist/mappers/helpers/transactions.cjs +0 -240
- package/dist/mappers/helpers/transactions.cjs.map +0 -1
- package/dist/mappers/helpers/transactions.d.cts +0 -59
- package/dist/mappers/helpers/transactions.d.cts.map +0 -1
- package/dist/mappers/helpers/transactions.d.mts +0 -59
- package/dist/mappers/helpers/transactions.d.mts.map +0 -1
- package/dist/mappers/helpers/transactions.mjs +0 -228
- package/dist/mappers/helpers/transactions.mjs.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.cjs +0 -143
- package/dist/mappers/keyring-transaction-mapper.cjs.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.d.cts +0 -15
- package/dist/mappers/keyring-transaction-mapper.d.cts.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.d.mts +0 -15
- package/dist/mappers/keyring-transaction-mapper.d.mts.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.mjs +0 -139
- package/dist/mappers/keyring-transaction-mapper.mjs.map +0 -1
- package/dist/mappers/local-transaction-mapper.cjs +0 -420
- package/dist/mappers/local-transaction-mapper.cjs.map +0 -1
- package/dist/mappers/local-transaction-mapper.d.cts +0 -20
- package/dist/mappers/local-transaction-mapper.d.cts.map +0 -1
- package/dist/mappers/local-transaction-mapper.d.mts +0 -20
- package/dist/mappers/local-transaction-mapper.d.mts.map +0 -1
- package/dist/mappers/local-transaction-mapper.mjs +0 -416
- package/dist/mappers/local-transaction-mapper.mjs.map +0 -1
- package/dist/types.cjs +0 -3
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts +0 -73
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts +0 -73
- package/dist/types.d.mts.map +0 -1
- package/dist/types.mjs +0 -2
- 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":";;;AAAA,iEAAkE;AAElE,2CAKyB;AAEzB,gDAAkD;AAclD,MAAM,yBAAyB,GAAqC;IAClE,UAAU,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACvD,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACxD,WAAW,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IACzD,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE;IAC1D,YAAY,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IACzD,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE;IAChE,aAAa,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC1D,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;IAC3D,cAAc,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE;IAC9D,cAAc,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;CAC5D,CAAC;AAEF;;;;;;GAMG;AACH,SAAgB,mBAAmB,CACjC,OAAwB;IAExB,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;QAChC,OAAO,UAAU,OAAO,EAAE,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1B,OAAO,OAAsB,CAAC;IAChC,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;QAC/C,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC;IACrE,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;IAClC,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,SAAS,EAAE,CAAC;AACrE,CAAC;AAlBD,kDAkBC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAC5B,OAAwB;IAExB,MAAM,WAAW,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,KAAK,GAAG,yBAAyB,CAAC,WAAW,CAAC,CAAC;IAErD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,MAAM,EAAE,KAAK,CAAC,MAAM;QACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO,EAAE,GAAG,WAAW,WAAW,KAAK,CAAC,MAAM,EAAE;KACjD,CAAC;AACJ,CAAC;AApBD,wCAoBC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IACzC,OAAO,CACL,UAAU,KAAK,8BAAkB;QACjC,UAAU,KAAK,KAAK;QACpB,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAC3B,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CACpC,OAAqC,EACrC,OAA2B;IAE3B,IAAI,IAAA,uBAAe,EAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAEvE,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7B,MAAM,aAAa,GAAG,cAAc,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;QAE3D,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAA8B,CAAC;QACxC,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,IAAA,uCAAoB,EAAC,OAAO,CAAC,CAAC;IAEzD,IAAI,CAAC,IAAA,yBAAiB,EAAC,kBAAkB,CAAC,EAAE,CAAC;QAC3C,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,IAAA,wBAAgB,EAAC,WAAW,CAAC,CAAC;IAE/D,OAAO,IAAA,uBAAe,EAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;AAC5E,CAAC;AA/BD,wDA+BC","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"]}
|