mev-inspect
Version:
A JS port of 'mev-inspect-py' optimised for ease of use.
120 lines • 3.33 kB
JavaScript
import poolAbi from '../../abi/aaveV1Pool.js';
import { isValidPool } from '../index.js';
function isValid(event, address, chainId) {
return (event.name === 'LiquidationCall' &&
isValidPool(chainId, 'AaveV1', address.toLowerCase()));
}
function getMarketCalls() {
return [];
}
function processMarketCalls(_chainId, address) {
return {
poolAddress: address.toLowerCase(),
};
}
function parseRepayment(market, event) {
const { values, transactionFrom, transactionHash: hash, transactionIndex, gasUsed, logIndex, address, blockHash, blockNumber, } = event;
const asset = normalizeAsset(values.reserve.toLowerCase());
const borrower = values.user.toLowerCase();
const amount = values.purchaseAmount;
const payer = values.liquidator.toLowerCase();
return {
contract: {
address: market.address,
protocol: {
abi: 'AaveV1',
pool: market.pool,
},
},
block: {
hash: blockHash,
number: blockNumber,
},
transaction: {
from: transactionFrom.toLowerCase(),
hash,
index: transactionIndex,
gasUsed,
},
event: {
logIndex,
address: address.toLowerCase(),
},
payer,
borrower,
asset: {
type: 'erc20',
address: asset,
},
amount,
};
}
function parseSeizure(market, event) {
const { values, transactionFrom, transactionHash: hash, transactionIndex, gasUsed, logIndex, address, blockHash, blockNumber, } = event;
const asset = normalizeAsset(values.collateral.toLowerCase());
const borrower = values.user.toLowerCase();
const amount = values.liquidatedCollateralAmount;
const seizor = values.liquidator.toLowerCase();
return {
contract: {
address: market.address,
protocol: {
abi: 'AaveV1',
pool: market.pool,
},
},
block: {
hash: blockHash,
number: blockNumber,
},
transaction: {
from: transactionFrom.toLowerCase(),
hash,
index: transactionIndex,
gasUsed,
},
event: {
logIndex,
address: address.toLowerCase(),
},
seizor,
borrower,
asset: {
type: 'erc20',
address: asset,
},
amount,
};
}
function normalizeAsset(asset) {
if (asset == '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') {
return '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
}
return asset;
}
const CLASSIFIERS = {
repayment: {
type: 'repayment',
protocol: 'AaveV1',
abi: poolAbi,
isValid,
parse: parseRepayment,
market: {
getCalls: getMarketCalls,
processCalls: processMarketCalls,
},
},
seizure: {
type: 'seizure',
protocol: 'AaveV1',
abi: poolAbi,
isValid,
parse: parseSeizure,
market: {
getCalls: getMarketCalls,
processCalls: processMarketCalls,
},
},
};
export default CLASSIFIERS;
//# sourceMappingURL=aaveV1.js.map