42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from typing import List, Optional
|
|
|
|
from mev_inspect.classifiers.helpers import create_swap_from_recipient_transfers
|
|
from mev_inspect.schemas.classifiers import ClassifierSpec, SwapClassifier
|
|
from mev_inspect.schemas.swaps import Swap
|
|
from mev_inspect.schemas.traces import DecodedCallTrace, Protocol
|
|
from mev_inspect.schemas.transfers import Transfer
|
|
|
|
BANCOR_NETWORK_ABI_NAME = "BancorNetwork"
|
|
BANCOR_NETWORK_CONTRACT_ADDRESS = "0x2F9EC37d6CcFFf1caB21733BdaDEdE11c823cCB0"
|
|
|
|
|
|
class BancorSwapClassifier(SwapClassifier):
|
|
@staticmethod
|
|
def parse_swap(
|
|
trace: DecodedCallTrace,
|
|
prior_transfers: List[Transfer],
|
|
child_transfers: List[Transfer],
|
|
) -> Optional[Swap]:
|
|
recipient_address = trace.from_address
|
|
|
|
swap = create_swap_from_recipient_transfers(
|
|
trace,
|
|
BANCOR_NETWORK_CONTRACT_ADDRESS,
|
|
recipient_address,
|
|
prior_transfers,
|
|
child_transfers,
|
|
)
|
|
return swap
|
|
|
|
|
|
BANCOR_NETWORK_SPEC = ClassifierSpec(
|
|
abi_name=BANCOR_NETWORK_ABI_NAME,
|
|
protocol=Protocol.bancor,
|
|
classifiers={
|
|
"convertByPath(address[],uint256,uint256,address,address,uint256)": BancorSwapClassifier,
|
|
},
|
|
valid_contract_addresses=[BANCOR_NETWORK_CONTRACT_ADDRESS],
|
|
)
|
|
|
|
BANCOR_CLASSIFIER_SPECS = [BANCOR_NETWORK_SPEC]
|