11//SPDX-License-Identifier: GPL-3.0-or-later
22pragma solidity 0.8.19 ;
33
4+ import {BASE_CHAIN_ID} from "@utils/ChainIds.sol " ;
5+
46/// @notice Struct to represent a real liquidation event
57struct LiquidationData {
68 uint256 timestamp;
@@ -31,11 +33,13 @@ struct LiquidationState {
3133/// @notice Abstract contract to provide liquidation data from 10/10; used by ChainlinkOEVWrapperIntegration.t.sol
3234/// https://dune.com/queries/4326964/7267425
3335abstract contract Liquidations {
34- LiquidationData[] internal _liquidations;
36+ /// @notice Mapping from chainId to liquidation data array
37+ mapping (uint256 => LiquidationData[]) internal _liquidationsByChain;
3538
3639 constructor () {
40+ // Base chain liquidations (chainId: 8453)
3741 // https://basescan.org/tx/0x24782acfe7faef5bad1e4545a617c733a632e0aa20810f4500fbaf2c05354c7f
38- _liquidations .push (
42+ _liquidationsByChain[BASE_CHAIN_ID] .push (
3943 LiquidationData ({
4044 timestamp: 1760131433 ,
4145 blockNumber: 36671043 ,
@@ -50,26 +54,29 @@ abstract contract Liquidations {
5054 );
5155 }
5256
53- /// @notice Get all liquidation data
57+ /// @notice Get liquidation data for the current chain
5458 function getLiquidations () public view returns (LiquidationData[] memory ) {
59+ LiquidationData[] storage chainLiquidations = _liquidationsByChain[
60+ block .chainid
61+ ];
5562 LiquidationData[] memory liquidations = new LiquidationData [](
56- _liquidations .length
63+ chainLiquidations .length
5764 );
5865
5966 unchecked {
6067 uint256 liquidationsLength = liquidations.length ;
6168 for (uint256 i = 0 ; i < liquidationsLength; i++ ) {
6269 liquidations[i] = LiquidationData ({
63- timestamp: _liquidations [i].timestamp,
64- blockNumber: _liquidations [i].blockNumber,
65- borrowedToken: _liquidations [i].borrowedToken,
66- collateralToken: _liquidations [i].collateralToken,
67- borrower: _liquidations [i].borrower,
68- liquidator: _liquidations [i].liquidator,
69- repayAmount: _liquidations [i].repayAmount,
70- seizedCollateralAmount: _liquidations [i]
70+ timestamp: chainLiquidations [i].timestamp,
71+ blockNumber: chainLiquidations [i].blockNumber,
72+ borrowedToken: chainLiquidations [i].borrowedToken,
73+ collateralToken: chainLiquidations [i].collateralToken,
74+ borrower: chainLiquidations [i].borrower,
75+ liquidator: chainLiquidations [i].liquidator,
76+ repayAmount: chainLiquidations [i].repayAmount,
77+ seizedCollateralAmount: chainLiquidations [i]
7178 .seizedCollateralAmount,
72- liquidationSizeUSD: _liquidations [i].liquidationSizeUSD
79+ liquidationSizeUSD: chainLiquidations [i].liquidationSizeUSD
7380 });
7481 }
7582 }
0 commit comments