@metamask-previews/client-utils 2.1.1-preview-8bfa290fb → 3.0.0-preview-0a30e47
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 +12 -2
- package/dist/formatters/{create-formatters.d.mts → create-formatters.d.ts} +1 -1
- package/dist/formatters/create-formatters.d.ts.map +1 -0
- package/dist/formatters/{create-formatters.mjs → create-formatters.js} +4 -4
- package/dist/formatters/create-formatters.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/mappers/{api-transaction-mapper.d.cts → api-transaction-mapper.d.ts} +3 -3
- package/dist/mappers/api-transaction-mapper.d.ts.map +1 -0
- package/dist/mappers/{api-transaction-mapper.mjs → api-transaction-mapper.js} +6 -6
- package/dist/mappers/api-transaction-mapper.js.map +1 -0
- package/dist/mappers/constants.d.ts +26 -0
- package/dist/mappers/constants.d.ts.map +1 -0
- package/dist/mappers/{constants.mjs → constants.js} +1 -1
- package/dist/mappers/constants.js.map +1 -0
- package/dist/mappers/helpers/{caip.d.cts → caip.d.ts} +2 -2
- package/dist/mappers/helpers/caip.d.ts.map +1 -0
- package/dist/mappers/helpers/{caip.mjs → caip.js} +6 -6
- package/dist/mappers/helpers/caip.js.map +1 -0
- package/dist/mappers/helpers/{token-metadata.d.cts → token-metadata.d.ts} +2 -2
- package/dist/mappers/helpers/token-metadata.d.ts.map +1 -0
- package/dist/mappers/helpers/{token-metadata.mjs → token-metadata.js} +4 -11
- package/dist/mappers/helpers/token-metadata.js.map +1 -0
- package/dist/mappers/helpers/{transactions.d.mts → transactions.d.ts} +5 -5
- package/dist/mappers/helpers/transactions.d.ts.map +1 -0
- package/dist/mappers/helpers/{transactions.mjs → transactions.js} +6 -6
- package/dist/mappers/helpers/transactions.js.map +1 -0
- package/dist/mappers/{keyring-transaction-mapper.d.cts → keyring-transaction-mapper.d.ts} +3 -3
- package/dist/mappers/keyring-transaction-mapper.d.ts.map +1 -0
- package/dist/mappers/{keyring-transaction-mapper.mjs → keyring-transaction-mapper.js} +2 -2
- package/dist/mappers/keyring-transaction-mapper.js.map +1 -0
- package/dist/mappers/{local-transaction-mapper.d.cts → local-transaction-mapper.d.ts} +3 -3
- package/dist/mappers/local-transaction-mapper.d.ts.map +1 -0
- package/dist/mappers/{local-transaction-mapper.mjs → local-transaction-mapper.js} +8 -8
- package/dist/mappers/local-transaction-mapper.js.map +1 -0
- package/dist/mappers/{ramps-order-mapper.d.cts → ramps-order-mapper.d.ts} +2 -2
- package/dist/mappers/ramps-order-mapper.d.ts.map +1 -0
- package/dist/mappers/{ramps-order-mapper.mjs → ramps-order-mapper.js} +3 -3
- package/dist/mappers/ramps-order-mapper.js.map +1 -0
- package/dist/{types.d.cts → types.d.ts} +3 -3
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/package.json +15 -19
- package/dist/formatters/create-formatters.cjs +0 -238
- package/dist/formatters/create-formatters.cjs.map +0 -1
- package/dist/formatters/create-formatters.d.cts +0 -19
- package/dist/formatters/create-formatters.d.cts.map +0 -1
- package/dist/formatters/create-formatters.d.mts.map +0 -1
- package/dist/formatters/create-formatters.mjs.map +0 -1
- package/dist/index.cjs +0 -14
- package/dist/index.cjs.map +0 -1
- package/dist/index.d.cts +0 -9
- package/dist/index.d.cts.map +0 -1
- package/dist/index.d.mts +0 -9
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs +0 -6
- package/dist/index.mjs.map +0 -1
- package/dist/mappers/api-transaction-mapper.cjs +0 -316
- package/dist/mappers/api-transaction-mapper.cjs.map +0 -1
- 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.map +0 -1
- package/dist/mappers/constants.cjs +0 -47
- package/dist/mappers/constants.cjs.map +0 -1
- package/dist/mappers/constants.d.cts +0 -26
- package/dist/mappers/constants.d.cts.map +0 -1
- package/dist/mappers/constants.d.mts +0 -26
- package/dist/mappers/constants.d.mts.map +0 -1
- package/dist/mappers/constants.mjs.map +0 -1
- package/dist/mappers/helpers/caip.cjs +0 -140
- package/dist/mappers/helpers/caip.cjs.map +0 -1
- 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.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.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.map +0 -1
- package/dist/mappers/helpers/transactions.cjs +0 -254
- package/dist/mappers/helpers/transactions.cjs.map +0 -1
- package/dist/mappers/helpers/transactions.d.cts +0 -51
- package/dist/mappers/helpers/transactions.d.cts.map +0 -1
- package/dist/mappers/helpers/transactions.d.mts.map +0 -1
- package/dist/mappers/helpers/transactions.mjs.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.cjs +0 -201
- package/dist/mappers/keyring-transaction-mapper.cjs.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.d.cts.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.d.mts +0 -26
- package/dist/mappers/keyring-transaction-mapper.d.mts.map +0 -1
- package/dist/mappers/keyring-transaction-mapper.mjs.map +0 -1
- package/dist/mappers/local-transaction-mapper.cjs +0 -436
- package/dist/mappers/local-transaction-mapper.cjs.map +0 -1
- 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.map +0 -1
- package/dist/mappers/ramps-order-mapper.cjs +0 -145
- package/dist/mappers/ramps-order-mapper.cjs.map +0 -1
- package/dist/mappers/ramps-order-mapper.d.cts.map +0 -1
- package/dist/mappers/ramps-order-mapper.d.mts +0 -50
- package/dist/mappers/ramps-order-mapper.d.mts.map +0 -1
- package/dist/mappers/ramps-order-mapper.mjs.map +0 -1
- package/dist/types.cjs +0 -3
- package/dist/types.cjs.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts +0 -114
- package/dist/types.d.mts.map +0 -1
- package/dist/types.mjs +0 -2
- package/dist/types.mjs.map +0 -1
|
@@ -1,436 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mapLocalTransaction = void 0;
|
|
4
|
-
const controller_utils_1 = require("@metamask/controller-utils");
|
|
5
|
-
const transaction_controller_1 = require("@metamask/transaction-controller");
|
|
6
|
-
const utils_1 = require("@metamask/utils");
|
|
7
|
-
const constants_js_1 = require("./constants.cjs");
|
|
8
|
-
const caip_js_1 = require("./helpers/caip.cjs");
|
|
9
|
-
const token_metadata_js_1 = require("./helpers/token-metadata.cjs");
|
|
10
|
-
const transactions_js_1 = require("./helpers/transactions.cjs");
|
|
11
|
-
const evmNativeDecimals = 18;
|
|
12
|
-
/**
|
|
13
|
-
* Maps a local TransactionController group into the shared activity item shape.
|
|
14
|
-
*
|
|
15
|
-
* @param transactionGroup - The transaction group to map, optionally enriched by the client.
|
|
16
|
-
* @returns The normalized activity item.
|
|
17
|
-
*/
|
|
18
|
-
function mapLocalTransaction(transactionGroup) {
|
|
19
|
-
const { initialTransaction, primaryTransaction } = transactionGroup;
|
|
20
|
-
const chainId = (0, utils_1.toCaipChainId)(utils_1.KnownCaipNamespace.Eip155, Number.parseInt(initialTransaction.chainId, 16).toString());
|
|
21
|
-
const nativeSymbol = transactionGroup.nativeAssetSymbol;
|
|
22
|
-
const fees = transactionGroup.fees ?? (0, transactions_js_1.getLocalTransactionFees)(transactionGroup);
|
|
23
|
-
const { transferInformation, type: transactionType, simulationData, txReceipt, metamaskPay, txParams: { from = '', to = '', data: txData, value: txValue } = {}, } = initialTransaction;
|
|
24
|
-
const { time: primaryTime, hash: primaryHash, id: primaryId, } = primaryTransaction;
|
|
25
|
-
const methodId = txData?.slice(0, 10);
|
|
26
|
-
// Permit2 approvals use the Permit2 contract as `to`, not the approved token.
|
|
27
|
-
// Keep this mapper thin: still classify the activity as an approve, but omit
|
|
28
|
-
// the token rather than surfacing the wrong one — the API mapper provides
|
|
29
|
-
// accurate token data.
|
|
30
|
-
const isPermit2Approve = methodId === constants_js_1.permit2ApproveMethodId;
|
|
31
|
-
const tokenContractAddress = isPermit2Approve
|
|
32
|
-
? undefined
|
|
33
|
-
: (transferInformation?.contractAddress ?? (to || undefined));
|
|
34
|
-
const getNativeToken = (transaction, direction) => {
|
|
35
|
-
const rawAmount = transaction.txParams.value;
|
|
36
|
-
let amount;
|
|
37
|
-
if (rawAmount) {
|
|
38
|
-
try {
|
|
39
|
-
amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
amount = undefined;
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
if (!amount && nativeSymbol === undefined) {
|
|
46
|
-
return undefined;
|
|
47
|
-
}
|
|
48
|
-
const assetId = (0, caip_js_1.resolveNativeAssetId)(chainId, nativeSymbol);
|
|
49
|
-
return {
|
|
50
|
-
direction,
|
|
51
|
-
assetType: 'native',
|
|
52
|
-
decimals: evmNativeDecimals,
|
|
53
|
-
...(amount ? { amount } : {}),
|
|
54
|
-
...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),
|
|
55
|
-
...(assetId ? { assetId } : {}),
|
|
56
|
-
};
|
|
57
|
-
};
|
|
58
|
-
const getContractTokenFromTransaction = ({ contractAddress, direction, transaction, }) => {
|
|
59
|
-
if (!contractAddress) {
|
|
60
|
-
return undefined;
|
|
61
|
-
}
|
|
62
|
-
const symbol = transaction.transferInformation?.symbol ??
|
|
63
|
-
transactionGroup.contractTokenMetadata?.symbol;
|
|
64
|
-
const decimals = transaction.transferInformation?.decimals ??
|
|
65
|
-
transactionGroup.contractTokenMetadata?.decimals;
|
|
66
|
-
const amount = transaction.transferInformation?.amount;
|
|
67
|
-
const assetId = (0, caip_js_1.formatAddressToAssetId)(contractAddress, chainId);
|
|
68
|
-
return {
|
|
69
|
-
direction,
|
|
70
|
-
...(symbol ? { symbol } : {}),
|
|
71
|
-
...(assetId ? { assetId } : {}),
|
|
72
|
-
...(amount ? { amount } : {}),
|
|
73
|
-
...(decimals === undefined ? {} : { decimals }),
|
|
74
|
-
};
|
|
75
|
-
};
|
|
76
|
-
const getContractTokenWithKnownMetadata = ({ amount, contractAddress, direction, transaction, }) => {
|
|
77
|
-
if (!contractAddress) {
|
|
78
|
-
return undefined;
|
|
79
|
-
}
|
|
80
|
-
const tokenMetadata = (0, token_metadata_js_1.getKnownTokenMetadata)(chainId, contractAddress);
|
|
81
|
-
const isWrappedNativeToken = (0, controller_utils_1.isEqualCaseInsensitive)(contractAddress, constants_js_1.swapsWrappedTokensAddresses[initialTransaction.chainId] || '');
|
|
82
|
-
const wrappedNativeTokenDecimals = isWrappedNativeToken
|
|
83
|
-
? evmNativeDecimals
|
|
84
|
-
: undefined;
|
|
85
|
-
const decimals = transaction.transferInformation?.amount === undefined
|
|
86
|
-
? (tokenMetadata?.decimals ??
|
|
87
|
-
transactionGroup.contractTokenMetadata?.decimals ??
|
|
88
|
-
wrappedNativeTokenDecimals)
|
|
89
|
-
: transaction.transferInformation.decimals;
|
|
90
|
-
const tokenAmount = transaction.transferInformation?.amount ?? amount;
|
|
91
|
-
const symbol = transaction.transferInformation?.symbol ??
|
|
92
|
-
tokenMetadata?.symbol ??
|
|
93
|
-
transactionGroup.contractTokenMetadata?.symbol;
|
|
94
|
-
const assetId = (0, caip_js_1.formatAddressToAssetId)(contractAddress, chainId);
|
|
95
|
-
return {
|
|
96
|
-
direction,
|
|
97
|
-
...(symbol ? { symbol } : {}),
|
|
98
|
-
...(assetId ? { assetId } : {}),
|
|
99
|
-
...(tokenAmount ? { amount: tokenAmount } : {}),
|
|
100
|
-
...(decimals === undefined ? {} : { decimals }),
|
|
101
|
-
};
|
|
102
|
-
};
|
|
103
|
-
const status = transactionGroup.activityStatus ??
|
|
104
|
-
(0, transactions_js_1.getLocalTransactionStatus)({
|
|
105
|
-
primaryTransaction,
|
|
106
|
-
initialTransaction,
|
|
107
|
-
});
|
|
108
|
-
const timestamp = primaryTime ?? initialTransaction.time;
|
|
109
|
-
const hash = primaryHash ?? initialTransaction.hash ?? primaryId;
|
|
110
|
-
const common = { chainId, status, timestamp, hash };
|
|
111
|
-
switch (transactionType) {
|
|
112
|
-
case transaction_controller_1.TransactionType.simpleSend: {
|
|
113
|
-
return {
|
|
114
|
-
type: 'send',
|
|
115
|
-
...common,
|
|
116
|
-
data: {
|
|
117
|
-
from,
|
|
118
|
-
to,
|
|
119
|
-
token: getNativeToken(initialTransaction, 'out'),
|
|
120
|
-
},
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
case transaction_controller_1.TransactionType.swap:
|
|
124
|
-
case transaction_controller_1.TransactionType.swapAndSend:
|
|
125
|
-
case transaction_controller_1.TransactionType.bridge: {
|
|
126
|
-
const { sourceToken, destinationToken } = transactionGroup;
|
|
127
|
-
return {
|
|
128
|
-
type: transactionType === transaction_controller_1.TransactionType.bridge ? 'bridge' : 'swap',
|
|
129
|
-
...common,
|
|
130
|
-
data: {
|
|
131
|
-
from,
|
|
132
|
-
sourceToken,
|
|
133
|
-
destinationToken,
|
|
134
|
-
fees,
|
|
135
|
-
},
|
|
136
|
-
};
|
|
137
|
-
}
|
|
138
|
-
case transaction_controller_1.TransactionType.tokenMethodSafeTransferFrom:
|
|
139
|
-
case transaction_controller_1.TransactionType.tokenMethodTransfer:
|
|
140
|
-
case transaction_controller_1.TransactionType.tokenMethodTransferFrom: {
|
|
141
|
-
return {
|
|
142
|
-
type: 'send',
|
|
143
|
-
...common,
|
|
144
|
-
data: {
|
|
145
|
-
from,
|
|
146
|
-
to,
|
|
147
|
-
token: getContractTokenFromTransaction({
|
|
148
|
-
transaction: initialTransaction,
|
|
149
|
-
direction: 'out',
|
|
150
|
-
contractAddress: tokenContractAddress,
|
|
151
|
-
}),
|
|
152
|
-
},
|
|
153
|
-
};
|
|
154
|
-
}
|
|
155
|
-
case transaction_controller_1.TransactionType.lendingDeposit:
|
|
156
|
-
case transaction_controller_1.TransactionType.stakingDeposit:
|
|
157
|
-
return {
|
|
158
|
-
type: transactionType === transaction_controller_1.TransactionType.stakingDeposit
|
|
159
|
-
? 'deposit'
|
|
160
|
-
: 'lendingDeposit',
|
|
161
|
-
...common,
|
|
162
|
-
data: {
|
|
163
|
-
from,
|
|
164
|
-
},
|
|
165
|
-
};
|
|
166
|
-
case transaction_controller_1.TransactionType.incoming: {
|
|
167
|
-
return {
|
|
168
|
-
type: 'receive',
|
|
169
|
-
...common,
|
|
170
|
-
data: {
|
|
171
|
-
from,
|
|
172
|
-
to,
|
|
173
|
-
token: transferInformation?.contractAddress
|
|
174
|
-
? getContractTokenFromTransaction({
|
|
175
|
-
transaction: initialTransaction,
|
|
176
|
-
direction: 'in',
|
|
177
|
-
contractAddress: transferInformation.contractAddress,
|
|
178
|
-
})
|
|
179
|
-
: getNativeToken(initialTransaction, 'in'),
|
|
180
|
-
},
|
|
181
|
-
};
|
|
182
|
-
}
|
|
183
|
-
case transaction_controller_1.TransactionType.musdClaim:
|
|
184
|
-
return {
|
|
185
|
-
type: 'claimMusdBonus',
|
|
186
|
-
...common,
|
|
187
|
-
data: {
|
|
188
|
-
from,
|
|
189
|
-
},
|
|
190
|
-
};
|
|
191
|
-
case transaction_controller_1.TransactionType.musdConversion: {
|
|
192
|
-
let conversionAmount;
|
|
193
|
-
if (txData && txData.length >= 138) {
|
|
194
|
-
try {
|
|
195
|
-
conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();
|
|
196
|
-
}
|
|
197
|
-
catch {
|
|
198
|
-
conversionAmount = undefined;
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
return {
|
|
202
|
-
type: 'convert',
|
|
203
|
-
...common,
|
|
204
|
-
data: {
|
|
205
|
-
from,
|
|
206
|
-
sourceToken: transactionGroup.sourceToken,
|
|
207
|
-
destinationToken: getContractTokenWithKnownMetadata({
|
|
208
|
-
amount: conversionAmount,
|
|
209
|
-
transaction: initialTransaction,
|
|
210
|
-
direction: 'in',
|
|
211
|
-
contractAddress: to,
|
|
212
|
-
}),
|
|
213
|
-
},
|
|
214
|
-
};
|
|
215
|
-
}
|
|
216
|
-
case transaction_controller_1.TransactionType.bridgeApproval:
|
|
217
|
-
case transaction_controller_1.TransactionType.shieldSubscriptionApprove:
|
|
218
|
-
case transaction_controller_1.TransactionType.swapApproval:
|
|
219
|
-
case transaction_controller_1.TransactionType.tokenMethodSetApprovalForAll:
|
|
220
|
-
case transaction_controller_1.TransactionType.tokenMethodApprove:
|
|
221
|
-
case transaction_controller_1.TransactionType.tokenMethodIncreaseAllowance: {
|
|
222
|
-
const approvalToken = getContractTokenFromTransaction({
|
|
223
|
-
transaction: initialTransaction,
|
|
224
|
-
direction: 'out',
|
|
225
|
-
contractAddress: tokenContractAddress,
|
|
226
|
-
});
|
|
227
|
-
return {
|
|
228
|
-
type: transactionType === transaction_controller_1.TransactionType.tokenMethodIncreaseAllowance
|
|
229
|
-
? 'increaseSpendingCap'
|
|
230
|
-
: 'approveSpendingCap',
|
|
231
|
-
...common,
|
|
232
|
-
data: {
|
|
233
|
-
from,
|
|
234
|
-
token: approvalToken,
|
|
235
|
-
},
|
|
236
|
-
};
|
|
237
|
-
}
|
|
238
|
-
case transaction_controller_1.TransactionType.perpsDeposit:
|
|
239
|
-
case transaction_controller_1.TransactionType.perpsDepositAndOrder:
|
|
240
|
-
case transaction_controller_1.TransactionType.perpsWithdraw: {
|
|
241
|
-
const token = to
|
|
242
|
-
? {
|
|
243
|
-
direction: 'out',
|
|
244
|
-
assetId: (0, caip_js_1.formatAddressToAssetId)(to, chainId),
|
|
245
|
-
}
|
|
246
|
-
: undefined;
|
|
247
|
-
const fiat = metamaskPay?.targetFiat
|
|
248
|
-
? { amount: metamaskPay.targetFiat }
|
|
249
|
-
: undefined;
|
|
250
|
-
const networkFee = typeof metamaskPay?.networkFeeFiat === 'string'
|
|
251
|
-
? { amount: metamaskPay.networkFeeFiat }
|
|
252
|
-
: undefined;
|
|
253
|
-
return {
|
|
254
|
-
type: transactionType === transaction_controller_1.TransactionType.perpsWithdraw
|
|
255
|
-
? 'perpsWithdraw'
|
|
256
|
-
: 'perpsAddFunds',
|
|
257
|
-
...common,
|
|
258
|
-
data: {
|
|
259
|
-
from,
|
|
260
|
-
token,
|
|
261
|
-
fiat,
|
|
262
|
-
networkFee,
|
|
263
|
-
},
|
|
264
|
-
};
|
|
265
|
-
}
|
|
266
|
-
default: {
|
|
267
|
-
const isSupplyContractInteraction = transactionType === transaction_controller_1.TransactionType.contractInteraction &&
|
|
268
|
-
methodId &&
|
|
269
|
-
constants_js_1.supplyMethodIds.has(methodId.toLowerCase());
|
|
270
|
-
const isWithdrawContractInteraction = transactionType === transaction_controller_1.TransactionType.contractInteraction &&
|
|
271
|
-
methodId &&
|
|
272
|
-
constants_js_1.withdrawMethodIds.has(methodId.toLowerCase());
|
|
273
|
-
let hasNativeValue = false;
|
|
274
|
-
try {
|
|
275
|
-
hasNativeValue = BigInt(txValue ?? '0') > 0n;
|
|
276
|
-
}
|
|
277
|
-
catch {
|
|
278
|
-
hasNativeValue = false;
|
|
279
|
-
}
|
|
280
|
-
// Confirm an outflow before labelling a supply, mirroring the API mapper's
|
|
281
|
-
// `sentTransfer` guard: native stakes (e.g. Lido) decrease the native
|
|
282
|
-
// balance, while ERC-20 supplies (e.g. Aave) show a token decrease.
|
|
283
|
-
const isSupply = isSupplyContractInteraction &&
|
|
284
|
-
(simulationData?.nativeBalanceChange?.isDecrease === true ||
|
|
285
|
-
simulationData?.tokenBalanceChanges?.some(({ isDecrease, standard }) => isDecrease && standard === 'erc20') === true);
|
|
286
|
-
const incomingNftBalanceChange = transactionType === transaction_controller_1.TransactionType.contractInteraction &&
|
|
287
|
-
simulationData?.tokenBalanceChanges?.find(({ isDecrease, standard }) => !isDecrease && (0, transactions_js_1.isNftStandard)(standard));
|
|
288
|
-
if (incomingNftBalanceChange && hasNativeValue) {
|
|
289
|
-
// Keep this mapper thin: classify the activity as an NFT buy and let the
|
|
290
|
-
// API mapper provide the token/payment details.
|
|
291
|
-
return {
|
|
292
|
-
type: 'nftBuy',
|
|
293
|
-
...common,
|
|
294
|
-
data: {
|
|
295
|
-
from,
|
|
296
|
-
},
|
|
297
|
-
};
|
|
298
|
-
}
|
|
299
|
-
if (isSupply) {
|
|
300
|
-
return {
|
|
301
|
-
type: 'lendingDeposit',
|
|
302
|
-
...common,
|
|
303
|
-
data: {
|
|
304
|
-
from,
|
|
305
|
-
},
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
// lending withdrawal - applies to Earn features only
|
|
309
|
-
if (isWithdrawContractInteraction) {
|
|
310
|
-
const fromAddress = from.toLowerCase();
|
|
311
|
-
const receivedTokenLog = (txReceipt?.logs ?? []).find(({ topics: [eventTopic, , logTo] = [] }) => {
|
|
312
|
-
const toAddress = logTo
|
|
313
|
-
? `0x${logTo.slice(-40)}`.toLowerCase()
|
|
314
|
-
: undefined;
|
|
315
|
-
return (eventTopic?.toLowerCase() === constants_js_1.tokenTransferLogTopicHash &&
|
|
316
|
-
toAddress === fromAddress);
|
|
317
|
-
});
|
|
318
|
-
let receivedAmount;
|
|
319
|
-
if (receivedTokenLog) {
|
|
320
|
-
try {
|
|
321
|
-
receivedAmount = BigInt(String(receivedTokenLog.data)).toString();
|
|
322
|
-
}
|
|
323
|
-
catch {
|
|
324
|
-
receivedAmount = undefined;
|
|
325
|
-
}
|
|
326
|
-
}
|
|
327
|
-
const destinationToken = receivedTokenLog
|
|
328
|
-
? getContractTokenWithKnownMetadata({
|
|
329
|
-
amount: receivedAmount,
|
|
330
|
-
transaction: initialTransaction,
|
|
331
|
-
direction: 'in',
|
|
332
|
-
contractAddress: receivedTokenLog.address,
|
|
333
|
-
})
|
|
334
|
-
: undefined;
|
|
335
|
-
return {
|
|
336
|
-
type: 'lendingWithdrawal',
|
|
337
|
-
...common,
|
|
338
|
-
data: {
|
|
339
|
-
from,
|
|
340
|
-
destinationToken,
|
|
341
|
-
},
|
|
342
|
-
};
|
|
343
|
-
}
|
|
344
|
-
// wrap and unwrap
|
|
345
|
-
if (transactionType === transaction_controller_1.TransactionType.contractInteraction && methodId) {
|
|
346
|
-
const wrappedTokenAddress = constants_js_1.swapsWrappedTokensAddresses[initialTransaction.chainId];
|
|
347
|
-
if (wrappedTokenAddress && (0, controller_utils_1.isEqualCaseInsensitive)(to, wrappedTokenAddress)) {
|
|
348
|
-
const normalizedMethodId = methodId.toLowerCase();
|
|
349
|
-
if (constants_js_1.wrapMethodIds.has(normalizedMethodId)) {
|
|
350
|
-
try {
|
|
351
|
-
if (txValue && BigInt(txValue) > 0n) {
|
|
352
|
-
return {
|
|
353
|
-
type: 'wrap',
|
|
354
|
-
...common,
|
|
355
|
-
data: {
|
|
356
|
-
from,
|
|
357
|
-
sourceToken: getNativeToken(initialTransaction, 'out'),
|
|
358
|
-
destinationToken: getContractTokenWithKnownMetadata({
|
|
359
|
-
amount: txValue,
|
|
360
|
-
transaction: initialTransaction,
|
|
361
|
-
direction: 'in',
|
|
362
|
-
contractAddress: wrappedTokenAddress,
|
|
363
|
-
}),
|
|
364
|
-
},
|
|
365
|
-
};
|
|
366
|
-
}
|
|
367
|
-
}
|
|
368
|
-
catch {
|
|
369
|
-
// Invalid native value — fall through.
|
|
370
|
-
}
|
|
371
|
-
}
|
|
372
|
-
if (constants_js_1.unwrapMethodIds.has(normalizedMethodId)) {
|
|
373
|
-
let unwrapAmount;
|
|
374
|
-
if (txData && txData.length >= 74) {
|
|
375
|
-
try {
|
|
376
|
-
unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();
|
|
377
|
-
}
|
|
378
|
-
catch {
|
|
379
|
-
unwrapAmount = undefined;
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
const nativeToken = getNativeToken(initialTransaction, 'in');
|
|
383
|
-
return {
|
|
384
|
-
type: 'unwrap',
|
|
385
|
-
...common,
|
|
386
|
-
data: {
|
|
387
|
-
from,
|
|
388
|
-
sourceToken: getContractTokenWithKnownMetadata({
|
|
389
|
-
amount: unwrapAmount,
|
|
390
|
-
transaction: initialTransaction,
|
|
391
|
-
direction: 'out',
|
|
392
|
-
contractAddress: wrappedTokenAddress,
|
|
393
|
-
}),
|
|
394
|
-
destinationToken: unwrapAmount
|
|
395
|
-
? {
|
|
396
|
-
...(nativeToken ?? {
|
|
397
|
-
direction: 'in',
|
|
398
|
-
assetType: 'native',
|
|
399
|
-
decimals: evmNativeDecimals,
|
|
400
|
-
}),
|
|
401
|
-
amount: unwrapAmount,
|
|
402
|
-
}
|
|
403
|
-
: nativeToken,
|
|
404
|
-
},
|
|
405
|
-
};
|
|
406
|
-
}
|
|
407
|
-
}
|
|
408
|
-
}
|
|
409
|
-
const token = (() => {
|
|
410
|
-
if (txValue === undefined || txValue === '') {
|
|
411
|
-
return undefined;
|
|
412
|
-
}
|
|
413
|
-
try {
|
|
414
|
-
return BigInt(txValue) > 0n
|
|
415
|
-
? getNativeToken(initialTransaction, 'out')
|
|
416
|
-
: undefined;
|
|
417
|
-
}
|
|
418
|
-
catch {
|
|
419
|
-
return undefined;
|
|
420
|
-
}
|
|
421
|
-
})();
|
|
422
|
-
return {
|
|
423
|
-
type: 'contractInteraction',
|
|
424
|
-
...common,
|
|
425
|
-
data: {
|
|
426
|
-
from,
|
|
427
|
-
to,
|
|
428
|
-
...(token ? { token } : {}),
|
|
429
|
-
methodId,
|
|
430
|
-
},
|
|
431
|
-
};
|
|
432
|
-
}
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
exports.mapLocalTransaction = mapLocalTransaction;
|
|
436
|
-
//# sourceMappingURL=local-transaction-mapper.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transaction-mapper.cjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":";;;AAAA,iEAAwF;AACxF,6EAAmE;AACnE,2CAAoE;AAGpE,kDAQwB;AACxB,gDAG2B;AAC3B,oEAAoE;AACpE,gEAImC;AAGnC,MAAM,iBAAiB,GAAG,EAAE,CAAC;AAE7B;;;;;GAKG;AACH,SAAgB,mBAAmB,CACjC,gBAOC;IAED,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,GAAG,gBAAgB,CAAC;IACpE,MAAM,OAAO,GAAG,IAAA,qBAAa,EAC3B,0BAAkB,CAAC,MAAM,EACzB,MAAM,CAAC,QAAQ,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE,CAC3D,CAAC;IACF,MAAM,YAAY,GAAG,gBAAgB,CAAC,iBAAiB,CAAC;IACxD,MAAM,IAAI,GACR,gBAAgB,CAAC,IAAI,IAAI,IAAA,yCAAuB,EAAC,gBAAgB,CAAC,CAAC;IACrE,MAAM,EACJ,mBAAmB,EACnB,IAAI,EAAE,eAAe,EACrB,cAAc,EACd,SAAS,EACT,WAAW,EACX,QAAQ,EAAE,EAAE,IAAI,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,GACpE,GAAG,kBAAkB,CAAC;IACvB,MAAM,EACJ,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,WAAW,EACjB,EAAE,EAAE,SAAS,GACd,GAAG,kBAAkB,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACtC,8EAA8E;IAC9E,6EAA6E;IAC7E,0EAA0E;IAC1E,uBAAuB;IACvB,MAAM,gBAAgB,GAAG,QAAQ,KAAK,qCAAsB,CAAC;IAC7D,MAAM,oBAAoB,GAAG,gBAAgB;QAC3C,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,CAAC,mBAAmB,EAAE,eAAe,IAAI,CAAC,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC;IAEhE,MAAM,cAAc,GAAG,CACrB,WAAmD,EACnD,SAAmC,EACV,EAAE;QAC3B,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;QAC7C,IAAI,MAA0B,CAAC;QAC/B,IAAI,SAAS,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,GAAG,SAAS,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,CAAC,MAAM,IAAI,YAAY,KAAK,SAAS,EAAE,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,OAAO,GAAG,IAAA,8BAAoB,EAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAE5D,OAAO;YACL,SAAS;YACT,SAAS,EAAE,QAAQ;YACnB,QAAQ,EAAE,iBAAiB;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YAC/D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAChC,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,+BAA+B,GAAG,CAAC,EACvC,eAAe,EACf,SAAS,EACT,WAAW,GAKZ,EAA2B,EAAE;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,MAAM,GACV,WAAW,CAAC,mBAAmB,EAAE,MAAM;YACvC,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACjD,MAAM,QAAQ,GACZ,WAAW,CAAC,mBAAmB,EAAE,QAAQ;YACzC,gBAAgB,CAAC,qBAAqB,EAAE,QAAQ,CAAC;QACnD,MAAM,MAAM,GAAG,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;QACvD,MAAM,OAAO,GAAG,IAAA,gCAAsB,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAEjE,OAAO;YACL,SAAS;YACT,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,iCAAiC,GAAG,CAAC,EACzC,MAAM,EACN,eAAe,EACf,SAAS,EACT,WAAW,GAMZ,EAA2B,EAAE;QAC5B,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,aAAa,GAAG,IAAA,yCAAqB,EAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAEtE,MAAM,oBAAoB,GAAG,IAAA,yCAAgB,EAC3C,eAAe,EACf,0CAA2B,CACzB,kBAAkB,CAAC,OAAmD,CACvE,IAAI,EAAE,CACR,CAAC;QACF,MAAM,0BAA0B,GAAG,oBAAoB;YACrD,CAAC,CAAC,iBAAiB;YACnB,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,QAAQ,GACZ,WAAW,CAAC,mBAAmB,EAAE,MAAM,KAAK,SAAS;YACnD,CAAC,CAAC,CAAC,aAAa,EAAE,QAAQ;gBACxB,gBAAgB,CAAC,qBAAqB,EAAE,QAAQ;gBAChD,0BAA0B,CAAC;YAC7B,CAAC,CAAC,WAAW,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC/C,MAAM,WAAW,GAAG,WAAW,CAAC,mBAAmB,EAAE,MAAM,IAAI,MAAM,CAAC;QACtE,MAAM,MAAM,GACV,WAAW,CAAC,mBAAmB,EAAE,MAAM;YACvC,aAAa,EAAE,MAAM;YACrB,gBAAgB,CAAC,qBAAqB,EAAE,MAAM,CAAC;QACjD,MAAM,OAAO,GAAG,IAAA,gCAAsB,EAAC,eAAe,EAAE,OAAO,CAAC,CAAC;QAEjE,OAAO;YACL,SAAS;YACT,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;SAChD,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,MAAM,GACV,gBAAgB,CAAC,cAAc;QAC/B,IAAA,2CAAyB,EAAC;YACxB,kBAAkB;YAClB,kBAAkB;SACnB,CAAC,CAAC;IACL,MAAM,SAAS,GAAG,WAAW,IAAI,kBAAkB,CAAC,IAAI,CAAC;IACzD,MAAM,IAAI,GAAG,WAAW,IAAI,kBAAkB,CAAC,IAAI,IAAI,SAAS,CAAC;IACjE,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IAEpD,QAAQ,eAAe,EAAE,CAAC;QACxB,KAAK,wCAAe,CAAC,UAAU,CAAC,CAAC,CAAC;YAChC,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,EAAE;oBACF,KAAK,EAAE,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC;iBACjD;aACF,CAAC;QACJ,CAAC;QAED,KAAK,wCAAe,CAAC,IAAI,CAAC;QAC1B,KAAK,wCAAe,CAAC,WAAW,CAAC;QACjC,KAAK,wCAAe,CAAC,MAAM,CAAC,CAAC,CAAC;YAC5B,MAAM,EAAE,WAAW,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC;YAE3D,OAAO;gBACL,IAAI,EAAE,eAAe,KAAK,wCAAe,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;gBACpE,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,WAAW;oBACX,gBAAgB;oBAChB,IAAI;iBACL;aACF,CAAC;QACJ,CAAC;QAED,KAAK,wCAAe,CAAC,2BAA2B,CAAC;QACjD,KAAK,wCAAe,CAAC,mBAAmB,CAAC;QACzC,KAAK,wCAAe,CAAC,uBAAuB,CAAC,CAAC,CAAC;YAC7C,OAAO;gBACL,IAAI,EAAE,MAAM;gBACZ,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,EAAE;oBACF,KAAK,EAAE,+BAA+B,CAAC;wBACrC,WAAW,EAAE,kBAAkB;wBAC/B,SAAS,EAAE,KAAK;wBAChB,eAAe,EAAE,oBAAoB;qBACtC,CAAC;iBACH;aACF,CAAC;QACJ,CAAC;QAED,KAAK,wCAAe,CAAC,cAAc,CAAC;QACpC,KAAK,wCAAe,CAAC,cAAc;YACjC,OAAO;gBACL,IAAI,EACF,eAAe,KAAK,wCAAe,CAAC,cAAc;oBAChD,CAAC,CAAC,SAAS;oBACX,CAAC,CAAC,gBAAgB;gBACtB,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;iBACL;aACF,CAAC;QAEJ,KAAK,wCAAe,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC9B,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,EAAE;oBACF,KAAK,EAAE,mBAAmB,EAAE,eAAe;wBACzC,CAAC,CAAC,+BAA+B,CAAC;4BAC9B,WAAW,EAAE,kBAAkB;4BAC/B,SAAS,EAAE,IAAI;4BACf,eAAe,EAAE,mBAAmB,CAAC,eAAe;yBACrD,CAAC;wBACJ,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC;iBAC7C;aACF,CAAC;QACJ,CAAC;QACD,KAAK,wCAAe,CAAC,SAAS;YAC5B,OAAO;gBACL,IAAI,EAAE,gBAAgB;gBACtB,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;iBACL;aACF,CAAC;QAEJ,KAAK,wCAAe,CAAC,cAAc,CAAC,CAAC,CAAC;YACpC,IAAI,gBAAoC,CAAC;YAEzC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;gBACnC,IAAI,CAAC;oBACH,gBAAgB,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACrE,CAAC;gBAAC,MAAM,CAAC;oBACP,gBAAgB,GAAG,SAAS,CAAC;gBAC/B,CAAC;YACH,CAAC;YAED,OAAO;gBACL,IAAI,EAAE,SAAS;gBACf,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,WAAW,EAAE,gBAAgB,CAAC,WAAW;oBACzC,gBAAgB,EAAE,iCAAiC,CAAC;wBAClD,MAAM,EAAE,gBAAgB;wBACxB,WAAW,EAAE,kBAAkB;wBAC/B,SAAS,EAAE,IAAI;wBACf,eAAe,EAAE,EAAE;qBACpB,CAAC;iBACH;aACF,CAAC;QACJ,CAAC;QAED,KAAK,wCAAe,CAAC,cAAc,CAAC;QACpC,KAAK,wCAAe,CAAC,yBAAyB,CAAC;QAC/C,KAAK,wCAAe,CAAC,YAAY,CAAC;QAClC,KAAK,wCAAe,CAAC,4BAA4B,CAAC;QAClD,KAAK,wCAAe,CAAC,kBAAkB,CAAC;QACxC,KAAK,wCAAe,CAAC,4BAA4B,CAAC,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,+BAA+B,CAAC;gBACpD,WAAW,EAAE,kBAAkB;gBAC/B,SAAS,EAAE,KAAK;gBAChB,eAAe,EAAE,oBAAoB;aACtC,CAAC,CAAC;YAEH,OAAO;gBACL,IAAI,EACF,eAAe,KAAK,wCAAe,CAAC,4BAA4B;oBAC9D,CAAC,CAAC,qBAAqB;oBACvB,CAAC,CAAC,oBAAoB;gBAC1B,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK,EAAE,aAAa;iBACrB;aACF,CAAC;QACJ,CAAC;QAED,KAAK,wCAAe,CAAC,YAAY,CAAC;QAClC,KAAK,wCAAe,CAAC,oBAAoB,CAAC;QAC1C,KAAK,wCAAe,CAAC,aAAa,CAAC,CAAC,CAAC;YACnC,MAAM,KAAK,GAAG,EAAE;gBACd,CAAC,CAAC;oBACE,SAAS,EAAE,KAAc;oBACzB,OAAO,EAAE,IAAA,gCAAsB,EAAC,EAAE,EAAE,OAAO,CAAC;iBAC7C;gBACH,CAAC,CAAC,SAAS,CAAC;YAEd,MAAM,IAAI,GAAG,WAAW,EAAE,UAAU;gBAClC,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,UAAU,EAAE;gBACpC,CAAC,CAAC,SAAS,CAAC;YACd,MAAM,UAAU,GACd,OAAO,WAAW,EAAE,cAAc,KAAK,QAAQ;gBAC7C,CAAC,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,cAAc,EAAE;gBACxC,CAAC,CAAC,SAAS,CAAC;YAEhB,OAAO;gBACL,IAAI,EACF,eAAe,KAAK,wCAAe,CAAC,aAAa;oBAC/C,CAAC,CAAC,eAAe;oBACjB,CAAC,CAAC,eAAe;gBACrB,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,KAAK;oBACL,IAAI;oBACJ,UAAU;iBACX;aACF,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,2BAA2B,GAC/B,eAAe,KAAK,wCAAe,CAAC,mBAAmB;gBACvD,QAAQ;gBACR,8BAAe,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9C,MAAM,6BAA6B,GACjC,eAAe,KAAK,wCAAe,CAAC,mBAAmB;gBACvD,QAAQ;gBACR,gCAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;YAEhD,IAAI,cAAc,GAAG,KAAK,CAAC;YAE3B,IAAI,CAAC;gBACH,cAAc,GAAG,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,cAAc,GAAG,KAAK,CAAC;YACzB,CAAC;YAED,2EAA2E;YAC3E,sEAAsE;YACtE,oEAAoE;YACpE,MAAM,QAAQ,GACZ,2BAA2B;gBAC3B,CAAC,cAAc,EAAE,mBAAmB,EAAE,UAAU,KAAK,IAAI;oBACvD,cAAc,EAAE,mBAAmB,EAAE,IAAI,CACvC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,UAAU,IAAI,QAAQ,KAAK,OAAO,CACjE,KAAK,IAAI,CAAC,CAAC;YAChB,MAAM,wBAAwB,GAC5B,eAAe,KAAK,wCAAe,CAAC,mBAAmB;gBACvD,cAAc,EAAE,mBAAmB,EAAE,IAAI,CACvC,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,UAAU,IAAI,IAAA,+BAAa,EAAC,QAAQ,CAAC,CACrE,CAAC;YAEJ,IAAI,wBAAwB,IAAI,cAAc,EAAE,CAAC;gBAC/C,yEAAyE;gBACzE,gDAAgD;gBAChD,OAAO;oBACL,IAAI,EAAE,QAAQ;oBACd,GAAG,MAAM;oBACT,IAAI,EAAE;wBACJ,IAAI;qBACL;iBACF,CAAC;YACJ,CAAC;YAED,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO;oBACL,IAAI,EAAE,gBAAgB;oBACtB,GAAG,MAAM;oBACT,IAAI,EAAE;wBACJ,IAAI;qBACL;iBACF,CAAC;YACJ,CAAC;YAED,qDAAqD;YACrD,IAAI,6BAA6B,EAAE,CAAC;gBAClC,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;gBACvC,MAAM,gBAAgB,GAAG,CAAC,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CACnD,CAAC,EAAE,MAAM,EAAE,CAAC,UAAU,EAAE,AAAD,EAAG,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE;oBACzC,MAAM,SAAS,GAAG,KAAK;wBACrB,CAAC,CAAC,KAAK,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE;wBACvC,CAAC,CAAC,SAAS,CAAC;oBAEd,OAAO,CACL,UAAU,EAAE,WAAW,EAAE,KAAK,wCAAyB;wBACvD,SAAS,KAAK,WAAW,CAC1B,CAAC;gBACJ,CAAC,CACF,CAAC;gBACF,IAAI,cAAkC,CAAC;gBAEvC,IAAI,gBAAgB,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACH,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACpE,CAAC;oBAAC,MAAM,CAAC;wBACP,cAAc,GAAG,SAAS,CAAC;oBAC7B,CAAC;gBACH,CAAC;gBAED,MAAM,gBAAgB,GAAG,gBAAgB;oBACvC,CAAC,CAAC,iCAAiC,CAAC;wBAChC,MAAM,EAAE,cAAc;wBACtB,WAAW,EAAE,kBAAkB;wBAC/B,SAAS,EAAE,IAAI;wBACf,eAAe,EAAE,gBAAgB,CAAC,OAAO;qBAC1C,CAAC;oBACJ,CAAC,CAAC,SAAS,CAAC;gBAEd,OAAO;oBACL,IAAI,EAAE,mBAAmB;oBACzB,GAAG,MAAM;oBACT,IAAI,EAAE;wBACJ,IAAI;wBACJ,gBAAgB;qBACjB;iBACF,CAAC;YACJ,CAAC;YAED,kBAAkB;YAClB,IAAI,eAAe,KAAK,wCAAe,CAAC,mBAAmB,IAAI,QAAQ,EAAE,CAAC;gBACxE,MAAM,mBAAmB,GACvB,0CAA2B,CACzB,kBAAkB,CAAC,OAAmD,CACvE,CAAC;gBAEJ,IAAI,mBAAmB,IAAI,IAAA,yCAAgB,EAAC,EAAE,EAAE,mBAAmB,CAAC,EAAE,CAAC;oBACrE,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAElD,IAAI,4BAAa,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBAC1C,IAAI,CAAC;4BACH,IAAI,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;gCACpC,OAAO;oCACL,IAAI,EAAE,MAAM;oCACZ,GAAG,MAAM;oCACT,IAAI,EAAE;wCACJ,IAAI;wCACJ,WAAW,EAAE,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC;wCACtD,gBAAgB,EAAE,iCAAiC,CAAC;4CAClD,MAAM,EAAE,OAAO;4CACf,WAAW,EAAE,kBAAkB;4CAC/B,SAAS,EAAE,IAAI;4CACf,eAAe,EAAE,mBAAmB;yCACrC,CAAC;qCACH;iCACF,CAAC;4BACJ,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC;4BACP,uCAAuC;wBACzC,CAAC;oBACH,CAAC;oBAED,IAAI,8BAAe,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC;wBAC5C,IAAI,YAAgC,CAAC;wBAErC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,EAAE,EAAE,CAAC;4BAClC,IAAI,CAAC;gCACH,YAAY,GAAG,MAAM,CAAC,KAAK,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC;4BAChE,CAAC;4BAAC,MAAM,CAAC;gCACP,YAAY,GAAG,SAAS,CAAC;4BAC3B,CAAC;wBACH,CAAC;wBAED,MAAM,WAAW,GAAG,cAAc,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;wBAE7D,OAAO;4BACL,IAAI,EAAE,QAAQ;4BACd,GAAG,MAAM;4BACT,IAAI,EAAE;gCACJ,IAAI;gCACJ,WAAW,EAAE,iCAAiC,CAAC;oCAC7C,MAAM,EAAE,YAAY;oCACpB,WAAW,EAAE,kBAAkB;oCAC/B,SAAS,EAAE,KAAK;oCAChB,eAAe,EAAE,mBAAmB;iCACrC,CAAC;gCACF,gBAAgB,EAAE,YAAY;oCAC5B,CAAC,CAAC;wCACE,GAAG,CAAC,WAAW,IAAI;4CACjB,SAAS,EAAE,IAAa;4CACxB,SAAS,EAAE,QAAiB;4CAC5B,QAAQ,EAAE,iBAAiB;yCAC5B,CAAC;wCACF,MAAM,EAAE,YAAY;qCACrB;oCACH,CAAC,CAAC,WAAW;6BAChB;yBACF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,KAAK,GAAG,CAAC,GAA4B,EAAE;gBAC3C,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,EAAE,EAAE,CAAC;oBAC5C,OAAO,SAAS,CAAC;gBACnB,CAAC;gBAED,IAAI,CAAC;oBACH,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE;wBACzB,CAAC,CAAC,cAAc,CAAC,kBAAkB,EAAE,KAAK,CAAC;wBAC3C,CAAC,CAAC,SAAS,CAAC;gBAChB,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,SAAS,CAAC;gBACnB,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YAEL,OAAO;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,GAAG,MAAM;gBACT,IAAI,EAAE;oBACJ,IAAI;oBACJ,EAAE;oBACF,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBAC3B,QAAQ;iBACT;aACF,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAnhBD,kDAmhBC","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport {\n formatAddressToAssetId,\n resolveNativeAssetId,\n} from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeSymbol = transactionGroup.nativeAssetSymbol;\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n const rawAmount = transaction.txParams.value;\n let amount: string | undefined;\n if (rawAmount) {\n try {\n amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;\n } catch {\n amount = undefined;\n }\n }\n\n if (!amount && nativeSymbol === undefined) {\n return undefined;\n }\n\n const assetId = resolveNativeAssetId(chainId, nativeSymbol);\n\n return {\n direction,\n assetType: 'native',\n decimals: evmNativeDecimals,\n ...(amount ? { amount } : {}),\n ...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),\n ...(assetId ? { assetId } : {}),\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? evmNativeDecimals\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken: unwrapAmount\n ? {\n ...(nativeToken ?? {\n direction: 'in' as const,\n assetType: 'native' as const,\n decimals: evmNativeDecimals,\n }),\n amount: unwrapAmount,\n }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transaction-mapper.d.cts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAoBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CA0gBd"}
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
import type { Fee, ActivityItem, TokenAmount } from "../types.mjs";
|
|
2
|
-
import type { TransactionGroup } from "./helpers/transactions.mjs";
|
|
3
|
-
/**
|
|
4
|
-
* Maps a local TransactionController group into the shared activity item shape.
|
|
5
|
-
*
|
|
6
|
-
* @param transactionGroup - The transaction group to map, optionally enriched by the client.
|
|
7
|
-
* @returns The normalized activity item.
|
|
8
|
-
*/
|
|
9
|
-
export declare function mapLocalTransaction(transactionGroup: TransactionGroup & {
|
|
10
|
-
sourceToken?: TokenAmount;
|
|
11
|
-
destinationToken?: TokenAmount;
|
|
12
|
-
nativeAssetSymbol?: string;
|
|
13
|
-
contractTokenMetadata?: {
|
|
14
|
-
symbol?: string;
|
|
15
|
-
decimals?: number;
|
|
16
|
-
};
|
|
17
|
-
activityStatus?: ActivityItem['status'];
|
|
18
|
-
fees?: Fee[];
|
|
19
|
-
}): ActivityItem;
|
|
20
|
-
//# sourceMappingURL=local-transaction-mapper.d.mts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transaction-mapper.d.mts","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,GAAG,EAAE,YAAY,EAAE,WAAW,EAAE,qBAAoB;AAoBlE,OAAO,KAAK,EAAE,gBAAgB,EAAE,mCAAkC;AAIlE;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,gBAAgB,EAAE,gBAAgB,GAAG;IACnC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/D,cAAc,CAAC,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;CACd,GACA,YAAY,CA0gBd"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"local-transaction-mapper.mjs","sourceRoot":"","sources":["../../src/mappers/local-transaction-mapper.ts"],"names":[],"mappings":"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","sourcesContent":["import { isEqualCaseInsensitive as equalsIgnoreCase } from '@metamask/controller-utils';\nimport { TransactionType } from '@metamask/transaction-controller';\nimport { KnownCaipNamespace, toCaipChainId } from '@metamask/utils';\n\nimport type { Fee, ActivityItem, TokenAmount } from '../types.js';\nimport {\n permit2ApproveMethodId,\n swapsWrappedTokensAddresses,\n supplyMethodIds,\n tokenTransferLogTopicHash,\n unwrapMethodIds,\n withdrawMethodIds,\n wrapMethodIds,\n} from './constants.js';\nimport {\n formatAddressToAssetId,\n resolveNativeAssetId,\n} from './helpers/caip.js';\nimport { getKnownTokenMetadata } from './helpers/token-metadata.js';\nimport {\n getLocalTransactionFees,\n getLocalTransactionStatus,\n isNftStandard,\n} from './helpers/transactions.js';\nimport type { TransactionGroup } from './helpers/transactions.js';\n\nconst evmNativeDecimals = 18;\n\n/**\n * Maps a local TransactionController group into the shared activity item shape.\n *\n * @param transactionGroup - The transaction group to map, optionally enriched by the client.\n * @returns The normalized activity item.\n */\nexport function mapLocalTransaction(\n transactionGroup: TransactionGroup & {\n sourceToken?: TokenAmount;\n destinationToken?: TokenAmount;\n nativeAssetSymbol?: string;\n contractTokenMetadata?: { symbol?: string; decimals?: number };\n activityStatus?: ActivityItem['status'];\n fees?: Fee[];\n },\n): ActivityItem {\n const { initialTransaction, primaryTransaction } = transactionGroup;\n const chainId = toCaipChainId(\n KnownCaipNamespace.Eip155,\n Number.parseInt(initialTransaction.chainId, 16).toString(),\n );\n const nativeSymbol = transactionGroup.nativeAssetSymbol;\n const fees =\n transactionGroup.fees ?? getLocalTransactionFees(transactionGroup);\n const {\n transferInformation,\n type: transactionType,\n simulationData,\n txReceipt,\n metamaskPay,\n txParams: { from = '', to = '', data: txData, value: txValue } = {},\n } = initialTransaction;\n const {\n time: primaryTime,\n hash: primaryHash,\n id: primaryId,\n } = primaryTransaction;\n const methodId = txData?.slice(0, 10);\n // Permit2 approvals use the Permit2 contract as `to`, not the approved token.\n // Keep this mapper thin: still classify the activity as an approve, but omit\n // the token rather than surfacing the wrong one — the API mapper provides\n // accurate token data.\n const isPermit2Approve = methodId === permit2ApproveMethodId;\n const tokenContractAddress = isPermit2Approve\n ? undefined\n : (transferInformation?.contractAddress ?? (to || undefined));\n\n const getNativeToken = (\n transaction: TransactionGroup['initialTransaction'],\n direction: TokenAmount['direction'],\n ): TokenAmount | undefined => {\n const rawAmount = transaction.txParams.value;\n let amount: string | undefined;\n if (rawAmount) {\n try {\n amount = BigInt(rawAmount) > 0n ? rawAmount : undefined;\n } catch {\n amount = undefined;\n }\n }\n\n if (!amount && nativeSymbol === undefined) {\n return undefined;\n }\n\n const assetId = resolveNativeAssetId(chainId, nativeSymbol);\n\n return {\n direction,\n assetType: 'native',\n decimals: evmNativeDecimals,\n ...(amount ? { amount } : {}),\n ...(nativeSymbol === undefined ? {} : { symbol: nativeSymbol }),\n ...(assetId ? { assetId } : {}),\n };\n };\n\n const getContractTokenFromTransaction = ({\n contractAddress,\n direction,\n transaction,\n }: {\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const symbol =\n transaction.transferInformation?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const decimals =\n transaction.transferInformation?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals;\n const amount = transaction.transferInformation?.amount;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(amount ? { amount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const getContractTokenWithKnownMetadata = ({\n amount,\n contractAddress,\n direction,\n transaction,\n }: {\n amount?: string;\n contractAddress?: string;\n direction: TokenAmount['direction'];\n transaction: TransactionGroup['initialTransaction'];\n }): TokenAmount | undefined => {\n if (!contractAddress) {\n return undefined;\n }\n\n const tokenMetadata = getKnownTokenMetadata(chainId, contractAddress);\n\n const isWrappedNativeToken = equalsIgnoreCase(\n contractAddress,\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ] || '',\n );\n const wrappedNativeTokenDecimals = isWrappedNativeToken\n ? evmNativeDecimals\n : undefined;\n\n const decimals =\n transaction.transferInformation?.amount === undefined\n ? (tokenMetadata?.decimals ??\n transactionGroup.contractTokenMetadata?.decimals ??\n wrappedNativeTokenDecimals)\n : transaction.transferInformation.decimals;\n const tokenAmount = transaction.transferInformation?.amount ?? amount;\n const symbol =\n transaction.transferInformation?.symbol ??\n tokenMetadata?.symbol ??\n transactionGroup.contractTokenMetadata?.symbol;\n const assetId = formatAddressToAssetId(contractAddress, chainId);\n\n return {\n direction,\n ...(symbol ? { symbol } : {}),\n ...(assetId ? { assetId } : {}),\n ...(tokenAmount ? { amount: tokenAmount } : {}),\n ...(decimals === undefined ? {} : { decimals }),\n };\n };\n\n const status =\n transactionGroup.activityStatus ??\n getLocalTransactionStatus({\n primaryTransaction,\n initialTransaction,\n });\n const timestamp = primaryTime ?? initialTransaction.time;\n const hash = primaryHash ?? initialTransaction.hash ?? primaryId;\n const common = { chainId, status, timestamp, hash };\n\n switch (transactionType) {\n case TransactionType.simpleSend: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getNativeToken(initialTransaction, 'out'),\n },\n };\n }\n\n case TransactionType.swap:\n case TransactionType.swapAndSend:\n case TransactionType.bridge: {\n const { sourceToken, destinationToken } = transactionGroup;\n\n return {\n type: transactionType === TransactionType.bridge ? 'bridge' : 'swap',\n ...common,\n data: {\n from,\n sourceToken,\n destinationToken,\n fees,\n },\n };\n }\n\n case TransactionType.tokenMethodSafeTransferFrom:\n case TransactionType.tokenMethodTransfer:\n case TransactionType.tokenMethodTransferFrom: {\n return {\n type: 'send',\n ...common,\n data: {\n from,\n to,\n token: getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n }),\n },\n };\n }\n\n case TransactionType.lendingDeposit:\n case TransactionType.stakingDeposit:\n return {\n type:\n transactionType === TransactionType.stakingDeposit\n ? 'deposit'\n : 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.incoming: {\n return {\n type: 'receive',\n ...common,\n data: {\n from,\n to,\n token: transferInformation?.contractAddress\n ? getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: transferInformation.contractAddress,\n })\n : getNativeToken(initialTransaction, 'in'),\n },\n };\n }\n case TransactionType.musdClaim:\n return {\n type: 'claimMusdBonus',\n ...common,\n data: {\n from,\n },\n };\n\n case TransactionType.musdConversion: {\n let conversionAmount: string | undefined;\n\n if (txData && txData.length >= 138) {\n try {\n conversionAmount = BigInt(`0x${txData.slice(74, 138)}`).toString();\n } catch {\n conversionAmount = undefined;\n }\n }\n\n return {\n type: 'convert',\n ...common,\n data: {\n from,\n sourceToken: transactionGroup.sourceToken,\n destinationToken: getContractTokenWithKnownMetadata({\n amount: conversionAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: to,\n }),\n },\n };\n }\n\n case TransactionType.bridgeApproval:\n case TransactionType.shieldSubscriptionApprove:\n case TransactionType.swapApproval:\n case TransactionType.tokenMethodSetApprovalForAll:\n case TransactionType.tokenMethodApprove:\n case TransactionType.tokenMethodIncreaseAllowance: {\n const approvalToken = getContractTokenFromTransaction({\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: tokenContractAddress,\n });\n\n return {\n type:\n transactionType === TransactionType.tokenMethodIncreaseAllowance\n ? 'increaseSpendingCap'\n : 'approveSpendingCap',\n ...common,\n data: {\n from,\n token: approvalToken,\n },\n };\n }\n\n case TransactionType.perpsDeposit:\n case TransactionType.perpsDepositAndOrder:\n case TransactionType.perpsWithdraw: {\n const token = to\n ? {\n direction: 'out' as const,\n assetId: formatAddressToAssetId(to, chainId),\n }\n : undefined;\n\n const fiat = metamaskPay?.targetFiat\n ? { amount: metamaskPay.targetFiat }\n : undefined;\n const networkFee =\n typeof metamaskPay?.networkFeeFiat === 'string'\n ? { amount: metamaskPay.networkFeeFiat }\n : undefined;\n\n return {\n type:\n transactionType === TransactionType.perpsWithdraw\n ? 'perpsWithdraw'\n : 'perpsAddFunds',\n ...common,\n data: {\n from,\n token,\n fiat,\n networkFee,\n },\n };\n }\n\n default: {\n const isSupplyContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n supplyMethodIds.has(methodId.toLowerCase());\n const isWithdrawContractInteraction =\n transactionType === TransactionType.contractInteraction &&\n methodId &&\n withdrawMethodIds.has(methodId.toLowerCase());\n\n let hasNativeValue = false;\n\n try {\n hasNativeValue = BigInt(txValue ?? '0') > 0n;\n } catch {\n hasNativeValue = false;\n }\n\n // Confirm an outflow before labelling a supply, mirroring the API mapper's\n // `sentTransfer` guard: native stakes (e.g. Lido) decrease the native\n // balance, while ERC-20 supplies (e.g. Aave) show a token decrease.\n const isSupply =\n isSupplyContractInteraction &&\n (simulationData?.nativeBalanceChange?.isDecrease === true ||\n simulationData?.tokenBalanceChanges?.some(\n ({ isDecrease, standard }) => isDecrease && standard === 'erc20',\n ) === true);\n const incomingNftBalanceChange =\n transactionType === TransactionType.contractInteraction &&\n simulationData?.tokenBalanceChanges?.find(\n ({ isDecrease, standard }) => !isDecrease && isNftStandard(standard),\n );\n\n if (incomingNftBalanceChange && hasNativeValue) {\n // Keep this mapper thin: classify the activity as an NFT buy and let the\n // API mapper provide the token/payment details.\n return {\n type: 'nftBuy',\n ...common,\n data: {\n from,\n },\n };\n }\n\n if (isSupply) {\n return {\n type: 'lendingDeposit',\n ...common,\n data: {\n from,\n },\n };\n }\n\n // lending withdrawal - applies to Earn features only\n if (isWithdrawContractInteraction) {\n const fromAddress = from.toLowerCase();\n const receivedTokenLog = (txReceipt?.logs ?? []).find(\n ({ topics: [eventTopic, , logTo] = [] }) => {\n const toAddress = logTo\n ? `0x${logTo.slice(-40)}`.toLowerCase()\n : undefined;\n\n return (\n eventTopic?.toLowerCase() === tokenTransferLogTopicHash &&\n toAddress === fromAddress\n );\n },\n );\n let receivedAmount: string | undefined;\n\n if (receivedTokenLog) {\n try {\n receivedAmount = BigInt(String(receivedTokenLog.data)).toString();\n } catch {\n receivedAmount = undefined;\n }\n }\n\n const destinationToken = receivedTokenLog\n ? getContractTokenWithKnownMetadata({\n amount: receivedAmount,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: receivedTokenLog.address,\n })\n : undefined;\n\n return {\n type: 'lendingWithdrawal',\n ...common,\n data: {\n from,\n destinationToken,\n },\n };\n }\n\n // wrap and unwrap\n if (transactionType === TransactionType.contractInteraction && methodId) {\n const wrappedTokenAddress =\n swapsWrappedTokensAddresses[\n initialTransaction.chainId as keyof typeof swapsWrappedTokensAddresses\n ];\n\n if (wrappedTokenAddress && equalsIgnoreCase(to, wrappedTokenAddress)) {\n const normalizedMethodId = methodId.toLowerCase();\n\n if (wrapMethodIds.has(normalizedMethodId)) {\n try {\n if (txValue && BigInt(txValue) > 0n) {\n return {\n type: 'wrap',\n ...common,\n data: {\n from,\n sourceToken: getNativeToken(initialTransaction, 'out'),\n destinationToken: getContractTokenWithKnownMetadata({\n amount: txValue,\n transaction: initialTransaction,\n direction: 'in',\n contractAddress: wrappedTokenAddress,\n }),\n },\n };\n }\n } catch {\n // Invalid native value — fall through.\n }\n }\n\n if (unwrapMethodIds.has(normalizedMethodId)) {\n let unwrapAmount: string | undefined;\n\n if (txData && txData.length >= 74) {\n try {\n unwrapAmount = BigInt(`0x${txData.slice(10, 74)}`).toString();\n } catch {\n unwrapAmount = undefined;\n }\n }\n\n const nativeToken = getNativeToken(initialTransaction, 'in');\n\n return {\n type: 'unwrap',\n ...common,\n data: {\n from,\n sourceToken: getContractTokenWithKnownMetadata({\n amount: unwrapAmount,\n transaction: initialTransaction,\n direction: 'out',\n contractAddress: wrappedTokenAddress,\n }),\n destinationToken: unwrapAmount\n ? {\n ...(nativeToken ?? {\n direction: 'in' as const,\n assetType: 'native' as const,\n decimals: evmNativeDecimals,\n }),\n amount: unwrapAmount,\n }\n : nativeToken,\n },\n };\n }\n }\n }\n\n const token = ((): TokenAmount | undefined => {\n if (txValue === undefined || txValue === '') {\n return undefined;\n }\n\n try {\n return BigInt(txValue) > 0n\n ? getNativeToken(initialTransaction, 'out')\n : undefined;\n } catch {\n return undefined;\n }\n })();\n\n return {\n type: 'contractInteraction',\n ...common,\n data: {\n from,\n to,\n ...(token ? { token } : {}),\n methodId,\n },\n };\n }\n }\n}\n"]}
|