mev-inspect
Version:
A JS port of 'mev-inspect-py' optimised for ease of use.
84 lines • 2.24 kB
JavaScript
import exchangeAbi from '../../abi/bancorV3.js';
function isValid(event) {
return event.name === 'TokensTraded';
}
function getPoolCalls() {
return [];
}
function processPoolCalls(_results, address) {
return {
factoryAddress: address.toLowerCase(),
assets: [],
};
}
function parse(pool, event) {
const { values, transactionFrom, transactionHash: hash, transactionIndex, gasUsed, logIndex, address, blockHash, blockNumber, } = event;
const sourceToken = normalizeAsset(values.sourceToken.toLowerCase());
const targetToken = normalizeAsset(values.targetToken.toLowerCase());
const sourceAmount = values.sourceAmount;
const targetAmount = values.targetAmount;
const trader = values.trader.toLowerCase();
const from = trader;
const to = trader;
const assetIn = sourceToken;
const assetOut = targetToken;
const amountIn = sourceAmount;
const amountOut = targetAmount;
return {
contract: {
address,
protocol: {
abi: 'BancorV3',
factory: pool.factory,
},
},
block: {
hash: blockHash,
number: blockNumber,
},
transaction: {
from: transactionFrom.toLowerCase(),
hash,
index: transactionIndex,
gasUsed,
},
event: {
address: address.toLowerCase(),
logIndex,
},
from,
to,
assetIn: {
type: 'erc20',
address: assetIn,
},
amountIn,
assetOut: {
type: 'erc20',
address: assetOut,
},
amountOut,
metadata: {},
};
}
function normalizeAsset(asset) {
if (asset == '0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee') {
return '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2';
}
return asset;
}
const CLASSIFIER = {
swap: {
type: 'swap',
protocol: 'BancorV3',
abi: exchangeAbi,
isValid,
parse,
pool: {
getCalls: getPoolCalls,
processCalls: processPoolCalls,
},
},
};
export default CLASSIFIER;
//# sourceMappingURL=bancorV3.js.map