UNPKG

@andrekorol/kollateral-contracts

Version:

Kollateral protocol, the flash loan building block

520 lines (519 loc) 330 kB
{ "contractName": "AaveLiquidityProxy", "abi": [ { "inputs": [ { "internalType": "contract ILendingPoolAddressesProvider", "name": "lendingPoolAddressProvider", "type": "address" } ], "stateMutability": "nonpayable", "type": "constructor" }, { "stateMutability": "payable", "type": "fallback" }, { "stateMutability": "payable", "type": "receive" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "getRepaymentAddress", "outputs": [ { "internalType": "address", "name": "", "type": "address" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" } ], "name": "getTotalReserve", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "getRepaymentAmount", "outputs": [ { "internalType": "uint256", "name": "", "type": "uint256" } ], "stateMutability": "view", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "tokenAddress", "type": "address" }, { "internalType": "uint256", "name": "tokenAmount", "type": "uint256" } ], "name": "borrow", "outputs": [], "stateMutability": "nonpayable", "type": "function" }, { "inputs": [ { "internalType": "address", "name": "_reserve", "type": "address" }, { "internalType": "uint256", "name": "_amount", "type": "uint256" }, { "internalType": "uint256", "name": "_fee", "type": "uint256" }, { "internalType": "bytes", "name": "_params", "type": "bytes" } ], "name": "executeOperation", "outputs": [], "stateMutability": "nonpayable", "type": "function" } ], "metadata": "{\"compiler\":{\"version\":\"0.7.3+commit.9bfce1f6\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"contract ILendingPoolAddressesProvider\",\"name\":\"lendingPoolAddressProvider\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"borrow\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_reserve\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_fee\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_params\",\"type\":\"bytes\"}],\"name\":\"executeOperation\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getRepaymentAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenAmount\",\"type\":\"uint256\"}],\"name\":\"getRepaymentAmount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenAddress\",\"type\":\"address\"}],\"name\":\"getTotalReserve\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol\":\"AaveLiquidityProxy\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":false,\"runs\":200},\"remappings\":[]},\"sources\":{\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvocationHook.sol\":{\"keccak256\":\"0x36fb31db8a8e7eed7038b37554582655826969a556005d8ee3ab5070fe034860\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://e0dde70be03ea1e086a5bce0d3a7bb1ac65549eab7ea2618343255332edddca7\",\"dweb:/ipfs/QmVaQG686g3tbgM3L3mtw4ei1WxzcDRcS9UxipSt4KCYs1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol\":{\"keccak256\":\"0x8a9fcbe16fdb00f3b5f32c528564cf4ba5c47ed9741a673973087d4d604e0b5a\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://b4af56bf9d2bd95bddca2156c6eea65c5caf0117d9a99d6cc575ac2c329bd672\",\"dweb:/ipfs/QmTxg3NpWNAxaVHKYU1cdVboo962auWmq5pmS9XvXcXNAF\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol\":{\"keccak256\":\"0x69e63e482d839c831c8c32f002e6454f6a8d9e602b39e9cdc1c0649451df3337\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://0a40661372b8f95cbed7714a16323b435ccbe85205178d32bc6012e47bfc0640\",\"dweb:/ipfs/QmTyHr1Ag4AkcyazzTT5GDcWabAMHPTrELoGhL85ZWDgBy\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/ExternalCaller.sol\":{\"keccak256\":\"0x54f88a1f0ac5dd7ab99a0519124cb09f1e19b4efb9baf240bc2500f8caa0b4ff\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://3170671378d20b47498224d065e33fccc223ae772d7f0af2c5ef314f94b75c98\",\"dweb:/ipfs/Qme8ZEEBnBG5Vvj8uyJCD2YVPcLx6funKsSSCpGkTyn1zi\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol\":{\"keccak256\":\"0xd463abb162d0ce2e2d1a5f80b6b1254857e8800b930b4d8d1c3557c444d6363d\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1c65c049566e4b8586ffb7ab62018d49f09d8f915450f6e79a0db84e4500fffb\",\"dweb:/ipfs/QmNSjMiWsY2Tt9eMYyNf3oGTFWDJjnWpgmVWTY6zKBAy3f\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol\":{\"keccak256\":\"0x9b821df2d33aba73b8e82e34f42a546d4251da3eaf2cfde456eaba76779028b9\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://d4d9f0dfdff1685b0b155223eefacf1b55524a050711922c5ce0ad334e2e5567\",\"dweb:/ipfs/QmQpjn3eP7ctXUqqcwe8vCLyqvfxmrT5vGsfy6A543oDAm\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPool.sol\":{\"keccak256\":\"0x9e97f4e47e98a1ade637d849dc0fd02e530a8bad4f80b41606bb4bb554484951\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://1e6a4d959bb2cc99001596ff02633c3c53a3eca753859d6c458abe40817738c8\",\"dweb:/ipfs/QmTEwfaKaf9tfAuEiqKLid1RtcrJY5sd5kCCgsnqBacTAM\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolAddressesProvider.sol\":{\"keccak256\":\"0xbadf15d542d9a305bd83bbf2ea5598bb8a4b51cc23dd3fb6884939fdf501be6f\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://69252ae62cca09c7d8341e637bf0c4fde7c6c8c3827456d8921ae0dbf95dfd8e\",\"dweb:/ipfs/QmU9JMmtZNbDveDCzgsTPsQkga4zhr8JAKbZchDvmcECkK\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolCore.sol\":{\"keccak256\":\"0x0a7a1d395d6ff90fe31aaaf58481d325581d74a9a143e027d2bba93e6efdd6ef\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://c8bcb84aa556a504882753e5a8eebabc0e90bf7e49527cbd2507a192e0d05ee5\",\"dweb:/ipfs/QmbgfHBVyw6ppaLiPXKV5bp3FxCYU6pxRxtQciVQEBEvc1\"]},\"/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolParametersProvider.sol\":{\"keccak256\":\"0x5e3cbf60f6b1d1707876c03194566b5b983fde316e5e2ea6bb462c8ccd1f9ba3\",\"license\":\"Apache-2.0\",\"urls\":[\"bzz-raw://5c87a747a9ad781091b9691bdae1916c21c86df798740f2e026b73ed3b69d814\",\"dweb:/ipfs/QmXyZQPyJhWvXPDWmAbZieDqBAzKsybDGbrjXQB6aydF3Z\"]},\"@openzeppelin/contracts/math/SafeMath.sol\":{\"keccak256\":\"0xba96bc371ba999f452985a98717cca1e4c4abb598dc038a9a9c3db08129b1ba4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://26e50e3f7b6482fb6f598f2e006994a74aa492687daa4b3eee7fd4fb5398ce7f\",\"dweb:/ipfs/QmZudqoPSkA4USLMFsBBmt19dDPZFS8aaAmL5R7pECXu6t\"]},\"@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xbd74f587ab9b9711801baf667db1426e4a03fd2d7f15af33e0e0d0394e7cef76\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2d0913dfbfce90d170df0d496ad7596c0778518e5fa7aba6c32562522546f66b\",\"dweb:/ipfs/QmR6B8nLj2PJf5e1JWD9Nk7ErkAwkqUwadCnvE82FJr1RU\"]}},\"version\":1}", "bytecode": "0x608060405273eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555034801561006557600080fd5b506040516113523803806113528339818101604052602081101561008857600080fd5b8101908080519060200190929190505050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506112048061014e6000396000f3fe60806040526004361061004e5760003560e01c80634b8a352914610057578063680c7b94146100b2578063aa8190571461012d578063c32dc3b61461019c578063ee8725581461020157610055565b3661005557005b005b34801561006357600080fd5b506100b06004803603604081101561007a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102bb565b005b3480156100be57600080fd5b50610101600480360360208110156100d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013957600080fd5b506101866004803603604081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b6040518082815260200191505060405180910390f35b3480156101a857600080fd5b506101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b6040518082815260200191505060405180910390f35b34801561020d57600080fd5b506102b96004803603608081101561022457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111640100000000831117156102a957600080fd5b9091929391929390505050610899565b005b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d602081101561039057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de306103c986610a52565b856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b81019080805190602001909291905050509050919050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d604081101561067357600080fd5b8101908080519060200190929190805190602001909291905050509150915060006106bb6127106106ad8589610ab990919063ffffffff16565b610b3f90919063ffffffff16565b90506106d08187610b8990919063ffffffff16565b94505050505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d602081101561077157600080fd5b8101908080519060200190929190505050905061078d83610c11565b1561088e57600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461086d578273ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b8101908080519060200190929190505050610886565b8073ffffffffffffffffffffffffffffffffffffffff16315b915050610894565b60009150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111356021913960400191505060405180910390fd5b61096e85600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610d6b565b6109c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611180602e913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8e5781610ab2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b600080831415610acc5760009050610b39565b6000828402905082848281610add57fe5b0414610b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111ae6021913960400191505060405180910390fd5b809150505b92915050565b6000610b8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e8b565b905092915050565b600080828401905083811015610c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166305075d6e610cde85610a52565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6020811015610d5257600080fd5b8101908080519060200190929190505050915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dd557610dcc8383610f51565b60019050610e84565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e4657600080fd5b505af1158015610e5a573d6000803e3d6000fd5b505050506040513d6020811015610e7057600080fd5b810190808051906020019092919050505090505b9392505050565b60008083118290610f37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efc578082015181840152602081019050610ee1565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f4357fe5b049050809150509392505050565b80471015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611156602a913960400191505060405180910390fd5b610fc4828260405180602001604052806000815250610fc8565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106110185780518252602082019150602081019050602083039250610ff5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461107a576040519150601f19603f3d011682016040523d82523d6000602084013e61107f565b606091505b509150915081819061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110f15780820151818401526020810190506110d6565b50505050905090810190601f16801561111e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe416176654c697175696469747950726f78793a206e6f74207363686564756c656445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017aa1e930efb28102c4e47be8bad5e5b62baa272edbc333b2a466541064bebb964736f6c63430007030033", "deployedBytecode": "0x60806040526004361061004e5760003560e01c80634b8a352914610057578063680c7b94146100b2578063aa8190571461012d578063c32dc3b61461019c578063ee8725581461020157610055565b3661005557005b005b34801561006357600080fd5b506100b06004803603604081101561007a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506102bb565b005b3480156100be57600080fd5b50610101600480360360208110156100d557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506104ad565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561013957600080fd5b506101866004803603604081101561015057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610559565b6040518082815260200191505060405180910390f35b3480156101a857600080fd5b506101eb600480360360208110156101bf57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506106dc565b6040518082815260200191505060405180910390f35b34801561020d57600080fd5b506102b96004803603608081101561022457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561027557600080fd5b82018360208201111561028757600080fd5b803590602001918460018302840111640100000000831117156102a957600080fd5b9091929391929390505050610899565b005b33600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630261bf8b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561036657600080fd5b505afa15801561037a573d6000803e3d6000fd5b505050506040513d602081101561039057600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff16635cffe9de306103c986610a52565b856040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200180602001828103825260008152602001602001945050505050600060405180830381600087803b15801561044e57600080fd5b505af1158015610462573d6000803e3d6000fd5b505050506000600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050565b6000600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561051757600080fd5b505afa15801561052b573d6000803e3d6000fd5b505050506040513d602081101561054157600080fd5b81019080805190602001909291905050509050919050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166304061d8e6040518163ffffffff1660e01b815260040160206040518083038186803b1580156105c457600080fd5b505afa1580156105d8573d6000803e3d6000fd5b505050506040513d60208110156105ee57600080fd5b810190808051906020019092919050505090506000808273ffffffffffffffffffffffffffffffffffffffff1663586feb406040518163ffffffff1660e01b8152600401604080518083038186803b15801561064957600080fd5b505afa15801561065d573d6000803e3d6000fd5b505050506040513d604081101561067357600080fd5b8101908080519060200190929190805190602001909291905050509150915060006106bb6127106106ad8589610ab990919063ffffffff16565b610b3f90919063ffffffff16565b90506106d08187610b8990919063ffffffff16565b94505050505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b15801561074757600080fd5b505afa15801561075b573d6000803e3d6000fd5b505050506040513d602081101561077157600080fd5b8101908080519060200190929190505050905061078d83610c11565b1561088e57600173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461086d578273ffffffffffffffffffffffffffffffffffffffff166370a08231826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561082d57600080fd5b505afa158015610841573d6000803e3d6000fd5b505050506040513d602081101561085757600080fd5b8101908080519060200190929190505050610886565b8073ffffffffffffffffffffffffffffffffffffffff16315b915050610894565b60009150505b919050565b600073ffffffffffffffffffffffffffffffffffffffff16600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610941576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111356021913960400191505060405180910390fd5b61096e85600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1686610d6b565b6109c3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e815260200180611180602e913960400191505060405180910390fd5b6000600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16630a5ca4e86040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610a3257600080fd5b505af1158015610a46573d6000803e3d6000fd5b50505050505050505050565b6000600173ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a8e5781610ab2565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff165b9050919050565b600080831415610acc5760009050610b39565b6000828402905082848281610add57fe5b0414610b34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806111ae6021913960400191505060405180910390fd5b809150505b92915050565b6000610b8183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610e8b565b905092915050565b600080828401905083811015610c07576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600080600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ed6ff7606040518163ffffffff1660e01b815260040160206040518083038186803b158015610c7c57600080fd5b505afa158015610c90573d6000803e3d6000fd5b505050506040513d6020811015610ca657600080fd5b810190808051906020019092919050505090508073ffffffffffffffffffffffffffffffffffffffff166305075d6e610cde85610a52565b6040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d2857600080fd5b505afa158015610d3c573d6000803e3d6000fd5b505050506040513d6020811015610d5257600080fd5b8101908080519060200190929190505050915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415610dd557610dcc8383610f51565b60019050610e84565b8373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610e4657600080fd5b505af1158015610e5a573d6000803e3d6000fd5b505050506040513d6020811015610e7057600080fd5b810190808051906020019092919050505090505b9392505050565b60008083118290610f37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610efc578082015181840152602081019050610ee1565b50505050905090810190601f168015610f295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581610f4357fe5b049050809150509392505050565b80471015610faa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a815260200180611156602a913960400191505060405180910390fd5b610fc4828260405180602001604052806000815250610fc8565b5050565b600060608473ffffffffffffffffffffffffffffffffffffffff1684846040518082805190602001908083835b602083106110185780518252602082019150602081019050602083039250610ff5565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461107a576040519150601f19603f3d011682016040523d82523d6000602084013e61107f565b606091505b509150915081819061112c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156110f15780820151818401526020810190506110d6565b50505050905090810190601f16801561111e5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505056fe416176654c697175696469747950726f78793a206e6f74207363686564756c656445787465726e616c43616c6c65723a20696e73756666696369656e742065746865722062616c616e6365416176654c697175696469747950726f78793a207472616e7366657220746f20696e766f6b6572206661696c6564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a264697066735822122017aa1e930efb28102c4e47be8bad5e5b62baa272edbc333b2a466541064bebb964736f6c63430007030033", "immutableReferences": {}, "generatedSources": [], "deployedGeneratedSources": [], "sourceMap": "1054:3250:16:-:0;;;1203:42;1156:89;;;;;;;;;;;;;;;;;;;;1380:191;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:19;;;;;;;;;;;916:15:7;897:16;;:34;;;;;;;;;;;;;;;;;;850:88;1538:26:16::1;1508:27;;:56;;;;;;;;;;;;;;;;;;1380:191:::0;1054:3250;;;;;;", "deployedSourceMap": "1054:3250:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2811:469;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1648:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;2293:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1854:433;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;3286:533;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;2811:469;2944:10;2918:23;;:36;;;;;;;;;;;;;;;;;;2965:24;3018:27;;;;;;;;;;;:42;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2965:107;;3082:11;:21;;;3125:4;3144:31;3162:12;3144:17;:31::i;:::-;3189:11;3082:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3271:1;3237:23;;:36;;;;;;;;;;;;;;;;;;2811:469;;;:::o;1648:200::-;1763:7;1793:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1786:55;;1648:200;;;:::o;2293:512::-;2428:7;2451:37;2535:27;;;;;;;;;;;:60;;;:62;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2451:156;;2618:20;2640:9;2653:6;:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2617:67;;;;2695:17;2715:40;2749:5;2715:29;2731:12;2715:11;:15;;:29;;;;:::i;:::-;:33;;:40;;;;:::i;:::-;2695:60;;2772:26;2788:9;2772:11;:15;;:26;;;;:::i;:::-;2765:33;;;;;;2293:512;;;;:::o;1854:433::-;1965:7;1988:12;2003:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1988:63;;2066:26;2079:12;2066;:26::i;:::-;2062:200;;;2155:1;2131:26;;:12;:26;;;:120;;2222:12;2215:30;;;2246:4;2215:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2131:120;;;2180:4;:12;;;2131:120;2108:143;;;;;2062:200;2279:1;2272:8;;;1854:433;;;;:::o;3286:533::-;3498:1;3463:37;;:23;;;;;;;;;;;:37;;;;3442:117;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3591:52;3600:8;3610:23;;;;;;;;;;;3635:7;3591:8;:52::i;:::-;3570:145;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3726:16;3754:23;;;;;;;;;;;3726:52;;3788:7;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3286:533;;;;;;:::o;4106:196::-;4202:7;4256:1;4232:26;;:12;:26;;;:63;;4283:12;4232:63;;;4261:19;;;;;;;;;;;4232:63;4225:70;;4106:196;;;:::o;2180:459:40:-;2238:7;2484:1;2479;:6;2475:45;;;2508:1;2501:8;;;;2475:45;2530:9;2546:1;2542;:5;2530:17;;2574:1;2569;2565;:5;;;;;;:10;2557:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2631:1;2624:8;;;2180:459;;;;;:::o;3101:130::-;3159:7;3185:39;3189:1;3192;3185:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3178:46;;3101:130;;;;:::o;874:176::-;932:7;951:9;967:1;963;:5;951:17;;991:1;986;:6;;978:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1042:1;1035:8;;;874:176;;;;:::o;3825:275:16:-;3892:4;3908:21;3962:27;;;;;;;;;;;:46;;;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3908:112;;4037:4;:23;;;4061:31;4079:12;4061:17;:31::i;:::-;4037:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4030:63;;;3825:275;;;:::o;944:333:7:-;1060:4;1096:16;;;;;;;;;;;1080:32;;:12;:32;;;1076:195;;;1128:28;1145:2;1149:6;1128:16;:28::i;:::-;1177:4;1170:11;;;;1076:195;1226:12;1219:29;;;1249:2;1253:6;1219:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1212:48;;944:333;;;;;;:::o;3713:272:40:-;3799:7;3830:1;3826;:5;3833:12;3818:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3856:9;3872:1;3868;:5;;;;;;3856:17;;3977:1;3970:8;;;3713:272;;;;;:::o;695:240:9:-;815:6;790:21;:31;;769:120;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;899:29;912:3;917:6;899:29;;;;;;;;;;;;:12;:29::i;:::-;695:240;;:::o;941:267::-;1062:12;1076:23;1103:3;:8;;1119:6;1140:5;1103:52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1061:94;;;;1173:7;1189:10;1165:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;941:267;;;;;:::o", "source": "/*\n\n Copyright 2020 Kollateral LLC.\n\n Licensed under the Apache License, Version 2.0 (the \"License\");\n you may not use this file except in compliance with the License.\n You may obtain a copy of the License at\n\n http://www.apache.org/licenses/LICENSE-2.0\n\n Unless required by applicable law or agreed to in writing, software\n distributed under the License is distributed on an \"AS IS\" BASIS,\n WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n See the License for the specific language governing permissions and\n limitations under the License.\n\n*/\n\n// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.7.0;\n\nimport \"@openzeppelin/contracts/math/SafeMath.sol\";\nimport \"@openzeppelin/contracts/token/ERC20/IERC20.sol\";\nimport \"../../common/utils/BalanceCarrier.sol\";\nimport \"../../common/invoke/IInvoker.sol\";\nimport \"../ILiquidityProxy.sol\";\nimport \"./ILendingPoolAddressesProvider.sol\";\nimport \"./ILendingPool.sol\";\nimport \"./ILendingPoolCore.sol\";\nimport \"./ILendingPoolParametersProvider.sol\";\n\ncontract AaveLiquidityProxy is ILiquidityProxy, BalanceCarrier {\n using SafeMath for uint256;\n\n address\n internal ETHER_TOKEN_ADDRESS = 0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE;\n\n ILendingPoolAddressesProvider internal _lendingPoolAddressProvider;\n\n address payable internal _scheduleInvokerAddress;\n\n constructor(ILendingPoolAddressesProvider lendingPoolAddressProvider)\n BalanceCarrier(ETHER_TOKEN_ADDRESS)\n {\n _lendingPoolAddressProvider = lendingPoolAddressProvider;\n }\n\n receive() external payable {}\n\n fallback() external payable {}\n\n function getRepaymentAddress(address tokenAddress)\n external\n view\n override\n returns (address)\n {\n return _lendingPoolAddressProvider.getLendingPoolCore();\n }\n\n function getTotalReserve(address tokenAddress)\n external\n view\n override\n returns (uint256)\n {\n address core = _lendingPoolAddressProvider.getLendingPoolCore();\n\n if (isRegistered(tokenAddress)) {\n return\n tokenAddress == address(1)\n ? core.balance\n : IERC20(tokenAddress).balanceOf(core);\n }\n\n return 0;\n }\n\n function getRepaymentAmount(address tokenAddress, uint256 tokenAmount)\n external\n view\n override\n returns (uint256)\n {\n ILendingPoolParametersProvider params = ILendingPoolParametersProvider(\n _lendingPoolAddressProvider.getLendingPoolParametersProvider()\n );\n (uint256 totalFeeBips, uint256 _) = params.getFlashLoanFeesInBips();\n\n uint256 amountFee = tokenAmount.mul(totalFeeBips).div(10000);\n return tokenAmount.add(amountFee);\n }\n\n function borrow(address tokenAddress, uint256 tokenAmount)\n external\n override\n {\n _scheduleInvokerAddress = msg.sender;\n\n ILendingPool lendingPool = ILendingPool(\n _lendingPoolAddressProvider.getLendingPool()\n );\n lendingPool.flashLoan(\n address(this),\n remapTokenAddress(tokenAddress),\n tokenAmount,\n \"\"\n );\n\n _scheduleInvokerAddress = address(0);\n }\n\n function executeOperation(\n address _reserve,\n uint256 _amount,\n uint256 _fee,\n bytes calldata _params\n ) external {\n require(\n _scheduleInvokerAddress != address(0),\n \"AaveLiquidityProxy: not scheduled\"\n );\n\n require(\n transfer(_reserve, _scheduleInvokerAddress, _amount),\n \"AaveLiquidityProxy: transfer to invoker failed\"\n );\n\n IInvoker invoker = IInvoker(_scheduleInvokerAddress);\n invoker.invokeCallback();\n }\n\n function isRegistered(address tokenAddress) internal view returns (bool) {\n ILendingPoolCore core = ILendingPoolCore(\n _lendingPoolAddressProvider.getLendingPoolCore()\n );\n return core.getReserveIsActive(remapTokenAddress(tokenAddress));\n }\n\n function remapTokenAddress(address tokenAddress)\n internal\n view\n returns (address)\n {\n return tokenAddress == address(1) ? ETHER_TOKEN_ADDRESS : tokenAddress;\n }\n}\n", "sourcePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol", "ast": { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/AaveLiquidityProxy.sol", "exportedSymbols": { "AaveLiquidityProxy": [ 2414 ], "BalanceCarrier": [ 1464 ], "ExternalCaller": [ 1563 ], "IERC20": [ 6165 ], "IInvocationHook": [ 1170 ], "IInvoker": [ 1234 ], "ILendingPool": [ 2428 ], "ILendingPoolAddressesProvider": [ 2446 ], "ILendingPoolCore": [ 2456 ], "ILendingPoolParametersProvider": [ 2466 ], "ILiquidityProxy": [ 2148 ], "SafeMath": [ 5584 ] }, "id": 2415, "license": "Apache-2.0", "nodeType": "SourceUnit", "nodes": [ { "id": 2150, "literals": [ "solidity", "^", "0.7", ".0" ], "nodeType": "PragmaDirective", "src": "640:23:16" }, { "absolutePath": "@openzeppelin/contracts/math/SafeMath.sol", "file": "@openzeppelin/contracts/math/SafeMath.sol", "id": 2151, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 5585, "src": "665:51:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "file": "@openzeppelin/contracts/token/ERC20/IERC20.sol", "id": 2152, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 6166, "src": "717:56:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/utils/BalanceCarrier.sol", "file": "../../common/utils/BalanceCarrier.sol", "id": 2153, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 1465, "src": "774:47:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/common/invoke/IInvoker.sol", "file": "../../common/invoke/IInvoker.sol", "id": 2154, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 1235, "src": "822:42:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/ILiquidityProxy.sol", "file": "../ILiquidityProxy.sol", "id": 2155, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 2149, "src": "865:32:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolAddressesProvider.sol", "file": "./ILendingPoolAddressesProvider.sol", "id": 2156, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 2447, "src": "898:45:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPool.sol", "file": "./ILendingPool.sol", "id": 2157, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 2429, "src": "944:28:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolCore.sol", "file": "./ILendingPoolCore.sol", "id": 2158, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 2457, "src": "973:32:16", "symbolAliases": [], "unitAlias": "" }, { "absolutePath": "/Users/andrekorol/src/kollateral/protocol/contracts/liquidity/aave/ILendingPoolParametersProvider.sol", "file": "./ILendingPoolParametersProvider.sol", "id": 2159, "nodeType": "ImportDirective", "scope": 2415, "sourceUnit": 2467, "src": "1006:46:16", "symbolAliases": [], "unitAlias": "" }, { "abstract": false, "baseContracts": [ { "baseName": { "id": 2160, "name": "ILiquidityProxy", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2148, "src": "1085:15:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ILiquidityProxy_$2148", "typeString": "contract ILiquidityProxy" } }, "id": 2161, "nodeType": "InheritanceSpecifier", "src": "1085:15:16" }, { "baseName": { "id": 2162, "name": "BalanceCarrier", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 1464, "src": "1102:14:16", "typeDescriptions": { "typeIdentifier": "t_contract$_BalanceCarrier_$1464", "typeString": "contract BalanceCarrier" } }, "id": 2163, "nodeType": "InheritanceSpecifier", "src": "1102:14:16" } ], "contractDependencies": [ 1464, 1563, 2148 ], "contractKind": "contract", "fullyImplemented": true, "id": 2414, "linearizedBaseContracts": [ 2414, 1464, 1563, 2148 ], "name": "AaveLiquidityProxy", "nodeType": "ContractDefinition", "nodes": [ { "id": 2166, "libraryName": { "id": 2164, "name": "SafeMath", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 5584, "src": "1129:8:16", "typeDescriptions": { "typeIdentifier": "t_contract$_SafeMath_$5584", "typeString": "library SafeMath" } }, "nodeType": "UsingForDirective", "src": "1123:27:16", "typeName": { "id": 2165, "name": "uint256", "nodeType": "ElementaryTypeName", "src": "1142:7:16", "typeDescriptions": { "typeIdentifier": "t_uint256", "typeString": "uint256" } } }, { "constant": false, "id": 2169, "mutability": "mutable", "name": "ETHER_TOKEN_ADDRESS", "nodeType": "VariableDeclaration", "scope": 2414, "src": "1156:89:16", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" }, "typeName": { "id": 2167, "name": "address", "nodeType": "ElementaryTypeName", "src": "1156:7:16", "stateMutability": "nonpayable", "typeDescriptions": { "typeIdentifier": "t_address", "typeString": "address" } }, "value": { "hexValue": "307845656565654565656545654565654565456545656545454565656565456565656565656545456545", "id": 2168, "isConstant": false, "isLValue": false, "isPure": true, "kind": "number", "lValueRequested": false, "nodeType": "Literal", "src": "1203:42:16", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "value": "0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE" }, "visibility": "internal" }, { "constant": false, "id": 2171, "mutability": "mutable", "name": "_lendingPoolAddressProvider", "nodeType": "VariableDeclaration", "scope": 2414, "src": "1252:66:16", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446", "typeString": "contract ILendingPoolAddressesProvider" }, "typeName": { "id": 2170, "name": "ILendingPoolAddressesProvider", "nodeType": "UserDefinedTypeName", "referencedDeclaration": 2446, "src": "1252:29:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446", "typeString": "contract ILendingPoolAddressesProvider" } }, "visibility": "internal" }, { "constant": false, "id": 2173, "mutability": "mutable", "name": "_scheduleInvokerAddress", "nodeType": "VariableDeclaration", "scope": 2414, "src": "1325:48:16", "stateVariable": true, "storageLocation": "default", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" }, "typeName": { "id": 2172, "name": "address", "nodeType": "ElementaryTypeName", "src": "1325:15:16", "stateMutability": "payable", "typeDescriptions": { "typeIdentifier": "t_address_payable", "typeString": "address payable" } }, "visibility": "internal" }, { "body": { "id": 2185, "nodeType": "Block", "src": "1498:73:16", "statements": [ { "expression": { "id": 2183, "isConstant": false, "isLValue": false, "isPure": false, "lValueRequested": false, "leftHandSide": { "id": 2181, "name": "_lendingPoolAddressProvider", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2171, "src": "1508:27:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446", "typeString": "contract ILendingPoolAddressesProvider" } }, "nodeType": "Assignment", "operator": "=", "rightHandSide": { "id": 2182, "name": "lendingPoolAddressProvider", "nodeType": "Identifier", "overloadedDeclarations": [], "referencedDeclaration": 2175, "src": "1538:26:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446", "typeString": "contract ILendingPoolAddressesProvider" } }, "src": "1508:56:16", "typeDescriptions": { "typeIdentifier": "t_contract$_ILendingPoolAddressesProvider_$2446", "typeString": "contract ILendingPoolAddressesProvider" } }, "id": 2184, "nodeType": "ExpressionStatement", "src": "1508:56:16"