{
  "$schema": "../../../../contract.schema.json",
  "released": false,
  "contractName": "AavePooledRouter",
  "version": "2.0.1-0",
  "networkAddresses": {
    "80001": {
      "primaryAddress": "0x111ad246979350ACCa951DFF283f15eb016059e1",
      "allAddresses": [
        {
          "address": "0x111ad246979350ACCa951DFF283f15eb016059e1",
          "dependencies": [
            {
              "name": "Mangrove",
              "address": "0x80cd6Ef14c23dD3957FD5629141a9d7028557c39"
            }
          ]
        }
      ]
    }
  },
  "abi": [
    {
      "type": "constructor",
      "inputs": [
        {
          "name": "addressesProvider",
          "type": "address",
          "internalType": "contract IPoolAddressesProvider"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "ADDRESS_PROVIDER",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract IPoolAddressesProvider"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "OFFSET",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "POOL",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "contract IPool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "aaveManager",
      "inputs": [],
      "outputs": [
        {
          "name": "",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "admin",
      "inputs": [],
      "outputs": [
        {
          "name": "current",
          "type": "address",
          "internalType": "address"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "bind",
      "inputs": [
        {
          "name": "makerContract",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "checkAsset",
      "inputs": [
        {
          "name": "asset",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "claimRewards",
      "inputs": [
        {
          "name": "assets",
          "type": "address[]",
          "internalType": "address[]"
        }
      ],
      "outputs": [
        {
          "name": "rewardList",
          "type": "address[]",
          "internalType": "address[]"
        },
        {
          "name": "claimedAmounts",
          "type": "uint256[]",
          "internalType": "uint256[]"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "enterMarket",
      "inputs": [
        {
          "name": "tokens",
          "type": "address[]",
          "internalType": "contract IERC20[]"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "exitMarket",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "flush",
      "inputs": [
        {
          "name": "routingOrders",
          "type": "tuple[]",
          "internalType": "struct RoutingOrderLib.RoutingOrder[]",
          "components": [
            {
              "name": "token",
              "type": "address",
              "internalType": "contract IERC20"
            },
            {
              "name": "olKeyHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "offerId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "fundOwner",
              "type": "address",
              "internalType": "address"
            }
          ]
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "flushBuffer",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        },
        {
          "name": "noRevert",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "outputs": [
        {
          "name": "reason",
          "type": "bytes32",
          "internalType": "bytes32"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "isBound",
      "inputs": [
        {
          "name": "mkr",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "overlying",
      "inputs": [
        {
          "name": "asset",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "outputs": [
        {
          "name": "aToken",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "pull",
      "inputs": [
        {
          "name": "routingOrder",
          "type": "tuple",
          "internalType": "struct RoutingOrderLib.RoutingOrder",
          "components": [
            {
              "name": "token",
              "type": "address",
              "internalType": "contract IERC20"
            },
            {
              "name": "olKeyHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "offerId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "fundOwner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "name": "amount",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "strict",
          "type": "bool",
          "internalType": "bool"
        }
      ],
      "outputs": [
        {
          "name": "pulled",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "push",
      "inputs": [
        {
          "name": "routingOrder",
          "type": "tuple",
          "internalType": "struct RoutingOrderLib.RoutingOrder",
          "components": [
            {
              "name": "token",
              "type": "address",
              "internalType": "contract IERC20"
            },
            {
              "name": "olKeyHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "offerId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "fundOwner",
              "type": "address",
              "internalType": "address"
            }
          ]
        },
        {
          "name": "amount",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [
        {
          "name": "pushed",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "pushAndSupply",
      "inputs": [
        {
          "name": "token0",
          "type": "address",
          "internalType": "contract IERC20"
        },
        {
          "name": "amount0",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "token1",
          "type": "address",
          "internalType": "contract IERC20"
        },
        {
          "name": "amount1",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "fundOwner",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "pushed0",
          "type": "uint256",
          "internalType": "uint256"
        },
        {
          "name": "pushed1",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setAaveManager",
      "inputs": [
        {
          "name": "aaveManager_",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "setAdmin",
      "inputs": [
        {
          "name": "admin_",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "sharesOf",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        },
        {
          "name": "reserveId",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [
        {
          "name": "shares",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "tokenBalanceOf",
      "inputs": [
        {
          "name": "routingOrder",
          "type": "tuple",
          "internalType": "struct RoutingOrderLib.RoutingOrder",
          "components": [
            {
              "name": "token",
              "type": "address",
              "internalType": "contract IERC20"
            },
            {
              "name": "olKeyHash",
              "type": "bytes32",
              "internalType": "bytes32"
            },
            {
              "name": "offerId",
              "type": "uint256",
              "internalType": "uint256"
            },
            {
              "name": "fundOwner",
              "type": "address",
              "internalType": "address"
            }
          ]
        }
      ],
      "outputs": [
        {
          "name": "",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "totalBalance",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "outputs": [
        {
          "name": "balance",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "totalShares",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        }
      ],
      "outputs": [
        {
          "name": "total",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "stateMutability": "view"
    },
    {
      "type": "function",
      "name": "unbind",
      "inputs": [],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "unbind",
      "inputs": [
        {
          "name": "makerContract",
          "type": "address",
          "internalType": "address"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "function",
      "name": "withdraw",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "internalType": "contract IERC20"
        },
        {
          "name": "reserveId",
          "type": "address",
          "internalType": "address"
        },
        {
          "name": "amount",
          "type": "uint256",
          "internalType": "uint256"
        }
      ],
      "outputs": [],
      "stateMutability": "nonpayable"
    },
    {
      "type": "event",
      "name": "AaveIncident",
      "inputs": [
        {
          "name": "token",
          "type": "address",
          "indexed": true,
          "internalType": "contract IERC20"
        },
        {
          "name": "maker",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "reserveId",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        },
        {
          "name": "aaveReason",
          "type": "bytes32",
          "indexed": false,
          "internalType": "bytes32"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "MakerBind",
      "inputs": [
        {
          "name": "maker",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "MakerUnbind",
      "inputs": [
        {
          "name": "maker",
          "type": "address",
          "indexed": true,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetAaveManager",
      "inputs": [
        {
          "name": "manager",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    },
    {
      "type": "event",
      "name": "SetAdmin",
      "inputs": [
        {
          "name": "admin",
          "type": "address",
          "indexed": false,
          "internalType": "address"
        }
      ],
      "anonymous": false
    }
  ]
}
