{
  "id": "aave-v4",
  "title": "Aave V4 Avalanche Core: native USDC supply and withdrawal",
  "chainId": 43114,
  "version": "V4 Hub/Spoke and ERC-4626 TokenizationSpoke",
  "sources": [
    "https://aave.com/blog/aave-v4-live-avalanche",
    "https://governance.aave.com/t/arfc-deploy-aave-v4-on-avalanche/25165",
    "https://github.com/aave-dao/aave-address-book/blob/5017db7e40ba290be681b3f51da59befda3f0688/src/AaveV4Avalanche.sol",
    "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/spoke/interfaces/ISpoke.sol"
  ],
  "contracts": [
    {
      "role": "core-hub",
      "address": "0xd07369fAE4A5BB13c9Ce446B052c7867B1AbDf6e",
      "abi": [
        "function getAssetCount() view returns(uint256)",
        "function getAssetId(address) view returns(uint256)",
        "function getAssetUnderlyingAndDecimals(uint256) view returns(address,uint8)",
        "function getSpokeConfig(uint256,address) view returns(tuple(uint40 addCap,uint40 drawCap,uint24 riskPremiumThreshold,bool active,bool halted))",
        "function getSpokeAddedAssets(uint256,address) view returns(uint256)",
        "function getAssetLiquidity(uint256) view returns(uint256)",
        "function MAX_ALLOWED_SPOKE_CAP() view returns(uint40)"
      ],
      "sources": [
        "https://github.com/aave-dao/aave-address-book/blob/5017db7e40ba290be681b3f51da59befda3f0688/src/AaveV4Avalanche.sol",
        "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/hub/interfaces/IHub.sol",
        "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/hub/interfaces/IHubBase.sol"
      ]
    },
    {
      "role": "main-spoke",
      "address": "0x435272CefF93a1E657E8ABfdf0A13e95900A3a56",
      "abi": [
        "function getReserveCount() view returns(uint256)",
        "function getReserveId(address,uint256) view returns(uint256)",
        "function getReserve(uint256) view returns(tuple(address underlying,address hub,uint16 assetId,uint8 decimals,uint24 collateralRisk,uint8 flags,uint32 dynamicConfigKey))",
        "function getReserveConfig(uint256) view returns(tuple(uint24 collateralRisk,bool paused,bool frozen,bool borrowable,bool receiveSharesEnabled))",
        "function supply(uint256,uint256,address) returns(uint256,uint256)",
        "function withdraw(uint256,uint256,address) returns(uint256,uint256)",
        "function getUserSuppliedAssets(uint256,address) view returns(uint256)",
        "function getUserAccountData(address) view returns(tuple(uint256 riskPremium,uint256 avgCollateralFactor,uint256 healthFactor,uint256 totalCollateralValue,uint256 totalDebtValueRay,uint256 activeCollateralCount,uint256 borrowCount))"
      ],
      "sources": [
        "https://github.com/aave-dao/aave-address-book/blob/5017db7e40ba290be681b3f51da59befda3f0688/src/AaveV4Avalanche.sol",
        "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/spoke/interfaces/ISpoke.sol"
      ]
    },
    {
      "role": "USDC-tokenization-spoke",
      "address": "0x01D7f7B7CE2123192fECC20bd1caF3e4d9e4C10D",
      "abi": [
        "function symbol() view returns(string)",
        "function decimals() view returns(uint8)",
        "function balanceOf(address) view returns(uint256)",
        "function allowance(address,address) view returns(uint256)",
        "function approve(address,uint256) returns(bool)",
        "function asset() view returns(address)",
        "function hub() view returns(address)",
        "function assetId() view returns(uint256)",
        "function totalAssets() view returns(uint256)",
        "function totalSupply() view returns(uint256)",
        "function maxDeposit(address) view returns(uint256)",
        "function maxWithdraw(address) view returns(uint256)",
        "function previewDeposit(uint256) view returns(uint256)",
        "function previewWithdraw(uint256) view returns(uint256)",
        "function deposit(uint256,address) returns(uint256)",
        "function withdraw(uint256,address,address) returns(uint256)"
      ],
      "sources": [
        "https://github.com/aave-dao/aave-address-book/blob/5017db7e40ba290be681b3f51da59befda3f0688/src/AaveV4Avalanche.sol",
        "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/spoke/interfaces/ITokenizationSpoke.sol",
        "https://github.com/aave/aave-v4/blob/4d86c2d391b039bf2d3909fb2299b69998d0b720/src/spoke/TokenizationSpoke.sol"
      ]
    },
    {
      "role": "native-USDC",
      "address": "0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E",
      "abi": [
        "function symbol() view returns(string)",
        "function decimals() view returns(uint8)",
        "function balanceOf(address) view returns(uint256)",
        "function allowance(address,address) view returns(uint256)",
        "function approve(address,uint256) returns(bool)"
      ],
      "sources": [
        "https://github.com/aave-dao/aave-address-book/blob/5017db7e40ba290be681b3f51da59befda3f0688/src/AaveV4Avalanche.sol"
      ]
    }
  ]
}