{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Approval",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "BalanceTransfer",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "target",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Burn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "pool",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "Transfer",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "UNDERLYING_ASSET_ADDRESS",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "owner",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        }
      ],
      "name": "allowance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "spender",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "approve",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "receiverOfUnderlying",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "burn",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getIncentivesController",
      "outputs": [
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "getScaledUserBalanceAndSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "handleRepayment",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "contract ILendingPool",
          "name": "pool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "treasury",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "aTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "aTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "aTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mint",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "mintToTreasury",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "scaledBalanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "scaledTotalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "totalSupply",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transfer",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "sender",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "recipient",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferFrom",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        }
      ],
      "name": "transferOnLiquidation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "transferUnderlyingTo",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "41": "node_modules/@aave/protocol-v2/contracts/dependencies/openzeppelin/contracts/IERC20.sol",
    "43": "node_modules/@aave/protocol-v2/contracts/interfaces/IAToken.sol",
    "44": "node_modules/@aave/protocol-v2/contracts/interfaces/IAaveIncentivesController.sol",
    "45": "node_modules/@aave/protocol-v2/contracts/interfaces/IInitializableAToken.sol",
    "49": "node_modules/@aave/protocol-v2/contracts/interfaces/IScaledBalanceToken.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IAToken.sol",
    "exportedSymbols": {
      "IAToken": [
        14913
      ],
      "IAaveIncentivesController": [
        22724
      ],
      "IERC20": [
        22568
      ],
      "IInitializableAToken": [
        22773
      ],
      "IScaledBalanceToken": [
        22800
      ]
    },
    "id": 14914,
    "license": "agpl-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 14794,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:23:43"
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/dependencies/openzeppelin/contracts/IERC20.sol",
        "file": "../dependencies/openzeppelin/contracts/IERC20.sol",
        "id": 14796,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 14914,
        "sourceUnit": 22569,
        "src": "62:73:43",
        "symbolAliases": [
          {
            "foreign": {
              "id": 14795,
              "name": "IERC20",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "70:6:43",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IScaledBalanceToken.sol",
        "file": "./IScaledBalanceToken.sol",
        "id": 14798,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 14914,
        "sourceUnit": 22801,
        "src": "136:62:43",
        "symbolAliases": [
          {
            "foreign": {
              "id": 14797,
              "name": "IScaledBalanceToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "144:19:43",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IInitializableAToken.sol",
        "file": "./IInitializableAToken.sol",
        "id": 14800,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 14914,
        "sourceUnit": 22774,
        "src": "199:64:43",
        "symbolAliases": [
          {
            "foreign": {
              "id": 14799,
              "name": "IInitializableAToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "207:20:43",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IAaveIncentivesController.sol",
        "file": "./IAaveIncentivesController.sol",
        "id": 14802,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 14914,
        "sourceUnit": 22725,
        "src": "264:74:43",
        "symbolAliases": [
          {
            "foreign": {
              "id": 14801,
              "name": "IAaveIncentivesController",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "272:25:43",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 14803,
              "name": "IERC20",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 22568,
              "src": "361:6:43"
            },
            "id": 14804,
            "nodeType": "InheritanceSpecifier",
            "src": "361:6:43"
          },
          {
            "baseName": {
              "id": 14805,
              "name": "IScaledBalanceToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 22800,
              "src": "369:19:43"
            },
            "id": 14806,
            "nodeType": "InheritanceSpecifier",
            "src": "369:19:43"
          },
          {
            "baseName": {
              "id": 14807,
              "name": "IInitializableAToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 22773,
              "src": "390:20:43"
            },
            "id": 14808,
            "nodeType": "InheritanceSpecifier",
            "src": "390:20:43"
          }
        ],
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 14913,
        "linearizedBaseContracts": [
          14913,
          22773,
          22800,
          22568
        ],
        "name": "IAToken",
        "nameLocation": "350:7:43",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 14809,
              "nodeType": "StructuredDocumentation",
              "src": "415:191:43",
              "text": " @dev Emitted after the mint action\n @param from The address performing the mint\n @param value The amount being\n @param index The new liquidity index of the reserve*"
            },
            "id": 14817,
            "name": "Mint",
            "nameLocation": "615:4:43",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14816,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14811,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "636:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14817,
                  "src": "620:20:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14810,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "620:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14813,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "650:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14817,
                  "src": "642:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14812,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "642:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14815,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "665:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14817,
                  "src": "657:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14814,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "657:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "619:52:43"
            },
            "src": "609:63:43"
          },
          {
            "documentation": {
              "id": 14818,
              "nodeType": "StructuredDocumentation",
              "src": "676:287:43",
              "text": " @dev Mints `amount` aTokens to `user`\n @param user The address receiving the minted tokens\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve\n @return `true` if the the previous balance of the user was 0"
            },
            "functionSelector": "156e29f6",
            "id": 14829,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nameLocation": "975:4:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14825,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14820,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "993:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14829,
                  "src": "985:12:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14819,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "985:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14822,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1011:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14829,
                  "src": "1003:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14821,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1003:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14824,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1031:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14829,
                  "src": "1023:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14823,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1023:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "979:61:43"
            },
            "returnParameters": {
              "id": 14828,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14827,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14829,
                  "src": "1059:4:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 14826,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1059:4:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1058:6:43"
            },
            "scope": 14913,
            "src": "966:99:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 14830,
              "nodeType": "StructuredDocumentation",
              "src": "1069:279:43",
              "text": " @dev Emitted after aTokens are burned\n @param from The owner of the aTokens, getting them burned\n @param target The address that will receive the underlying\n @param value The amount being burned\n @param index The new liquidity index of the reserve*"
            },
            "id": 14840,
            "name": "Burn",
            "nameLocation": "1357:4:43",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14839,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14832,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1378:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14840,
                  "src": "1362:20:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14831,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1362:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14834,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "target",
                  "nameLocation": "1400:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14840,
                  "src": "1384:22:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14833,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1384:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14836,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1416:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14840,
                  "src": "1408:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14835,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1408:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14838,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1431:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14840,
                  "src": "1423:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14837,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1423:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1361:76:43"
            },
            "src": "1351:87:43"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 14841,
              "nodeType": "StructuredDocumentation",
              "src": "1442:249:43",
              "text": " @dev Emitted during the transfer action\n @param from The user whose tokens are being transferred\n @param to The recipient\n @param value The amount being transferred\n @param index The new liquidity index of the reserve*"
            },
            "id": 14851,
            "name": "BalanceTransfer",
            "nameLocation": "1700:15:43",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 14850,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14843,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "1732:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14851,
                  "src": "1716:20:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14842,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1716:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14845,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "1754:2:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14851,
                  "src": "1738:18:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14844,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1738:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14847,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1766:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14851,
                  "src": "1758:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14846,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1758:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14849,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1781:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14851,
                  "src": "1773:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14848,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1773:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1715:72:43"
            },
            "src": "1694:94:43"
          },
          {
            "documentation": {
              "id": 14852,
              "nodeType": "StructuredDocumentation",
              "src": "1792:359:43",
              "text": " @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n @param user The owner of the aTokens, getting them burned\n @param receiverOfUnderlying The address that will receive the underlying\n @param amount The amount being burned\n @param index The new liquidity index of the reserve*"
            },
            "functionSelector": "d7020d0a",
            "id": 14863,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nameLocation": "2163:4:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14861,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14854,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "2181:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14863,
                  "src": "2173:12:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14853,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2173:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14856,
                  "mutability": "mutable",
                  "name": "receiverOfUnderlying",
                  "nameLocation": "2199:20:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14863,
                  "src": "2191:28:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14855,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2191:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14858,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2233:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14863,
                  "src": "2225:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14857,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2225:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14860,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "2253:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14863,
                  "src": "2245:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14859,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2245:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2167:95:43"
            },
            "returnParameters": {
              "id": 14862,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2271:0:43"
            },
            "scope": 14913,
            "src": "2154:118:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14864,
              "nodeType": "StructuredDocumentation",
              "src": "2276:169:43",
              "text": " @dev Mints aTokens to the reserve treasury\n @param amount The amount of tokens getting minted\n @param index The new liquidity index of the reserve"
            },
            "functionSelector": "7df5bd3b",
            "id": 14871,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mintToTreasury",
            "nameLocation": "2457:14:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14869,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14866,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "2480:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14871,
                  "src": "2472:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14865,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2472:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14868,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "2496:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14871,
                  "src": "2488:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14867,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2488:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2471:31:43"
            },
            "returnParameters": {
              "id": 14870,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2511:0:43"
            },
            "scope": 14913,
            "src": "2448:64:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14872,
              "nodeType": "StructuredDocumentation",
              "src": "2516:291:43",
              "text": " @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n @param from The address getting liquidated, current owner of the aTokens\n @param to The recipient\n @param value The amount of tokens getting transferred*"
            },
            "functionSelector": "f866c319",
            "id": 14881,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferOnLiquidation",
            "nameLocation": "2819:21:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14879,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14874,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "2854:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14881,
                  "src": "2846:12:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14873,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2846:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14876,
                  "mutability": "mutable",
                  "name": "to",
                  "nameLocation": "2872:2:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14881,
                  "src": "2864:10:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14875,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "2864:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14878,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "2888:5:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14881,
                  "src": "2880:13:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14877,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "2880:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2840:57:43"
            },
            "returnParameters": {
              "id": 14880,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2906:0:43"
            },
            "scope": 14913,
            "src": "2810:97:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14882,
              "nodeType": "StructuredDocumentation",
              "src": "2911:287:43",
              "text": " @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n assets in borrow(), withdraw() and flashLoan()\n @param user The recipient of the underlying\n @param amount The amount getting transferred\n @return The amount transferred*"
            },
            "functionSelector": "4efecaa5",
            "id": 14891,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "transferUnderlyingTo",
            "nameLocation": "3210:20:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14887,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14884,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "3239:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14891,
                  "src": "3231:12:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14883,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3231:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14886,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "3253:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14891,
                  "src": "3245:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14885,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3245:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3230:30:43"
            },
            "returnParameters": {
              "id": 14890,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14889,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14891,
                  "src": "3279:7:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14888,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3279:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3278:9:43"
            },
            "scope": 14913,
            "src": "3201:87:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14892,
              "nodeType": "StructuredDocumentation",
              "src": "3292:180:43",
              "text": " @dev Invoked to execute actions on the aToken side after a repayment.\n @param user The user executing the repayment\n @param amount The amount getting repaid*"
            },
            "functionSelector": "88dd91a1",
            "id": 14899,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "handleRepayment",
            "nameLocation": "3484:15:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14897,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14894,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "3508:4:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "3500:12:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14893,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3500:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 14896,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "3522:6:43",
                  "nodeType": "VariableDeclaration",
                  "scope": 14899,
                  "src": "3514:14:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 14895,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "3514:7:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3499:30:43"
            },
            "returnParameters": {
              "id": 14898,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3538:0:43"
            },
            "scope": 14913,
            "src": "3475:64:43",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14900,
              "nodeType": "StructuredDocumentation",
              "src": "3543:78:43",
              "text": " @dev Returns the address of the incentives controller contract*"
            },
            "functionSelector": "75d26413",
            "id": 14906,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getIncentivesController",
            "nameLocation": "3633:23:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14901,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3656:2:43"
            },
            "returnParameters": {
              "id": 14905,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14904,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14906,
                  "src": "3682:25:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$22724",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "id": 14903,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 14902,
                      "name": "IAaveIncentivesController",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22724,
                      "src": "3682:25:43"
                    },
                    "referencedDeclaration": 22724,
                    "src": "3682:25:43",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$22724",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3681:27:43"
            },
            "scope": 14913,
            "src": "3624:85:43",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 14907,
              "nodeType": "StructuredDocumentation",
              "src": "3713:101:43",
              "text": " @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
            },
            "functionSelector": "b16a19de",
            "id": 14912,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "UNDERLYING_ASSET_ADDRESS",
            "nameLocation": "3826:24:43",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 14908,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "3850:2:43"
            },
            "returnParameters": {
              "id": 14911,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 14910,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 14912,
                  "src": "3876:7:43",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 14909,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "3876:7:43",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "3875:9:43"
            },
            "scope": 14913,
            "src": "3817:68:43",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 14914,
        "src": "340:3547:43",
        "usedErrors": []
      }
    ],
    "src": "37:3851:43"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "IAToken",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "IAaveIncentivesController",
    "IERC20",
    "IInitializableAToken",
    "IScaledBalanceToken"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "events": {
      "BalanceTransfer(address,address,uint256,uint256)": {
        "details": "Emitted during the transfer action",
        "params": {
          "from": "The user whose tokens are being transferred",
          "index": "The new liquidity index of the reserve*",
          "to": "The recipient",
          "value": "The amount being transferred"
        }
      },
      "Burn(address,address,uint256,uint256)": {
        "details": "Emitted after aTokens are burned",
        "params": {
          "from": "The owner of the aTokens, getting them burned",
          "index": "The new liquidity index of the reserve*",
          "target": "The address that will receive the underlying",
          "value": "The amount being burned"
        }
      },
      "Mint(address,uint256,uint256)": {
        "details": "Emitted after the mint action",
        "params": {
          "from": "The address performing the mint",
          "index": "The new liquidity index of the reserve*",
          "value": "The amount being"
        }
      }
    },
    "kind": "dev",
    "methods": {
      "UNDERLYING_ASSET_ADDRESS()": {
        "details": "Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)*"
      },
      "allowance(address,address)": {
        "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
      },
      "approve(address,uint256)": {
        "details": "Sets `amount` as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
      },
      "balanceOf(address)": {
        "details": "Returns the amount of tokens owned by `account`."
      },
      "burn(address,address,uint256,uint256)": {
        "details": "Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`",
        "params": {
          "amount": "The amount being burned",
          "index": "The new liquidity index of the reserve*",
          "receiverOfUnderlying": "The address that will receive the underlying",
          "user": "The owner of the aTokens, getting them burned"
        }
      },
      "getIncentivesController()": {
        "details": "Returns the address of the incentives controller contract*"
      },
      "getScaledUserBalanceAndSupply(address)": {
        "details": "Returns the scaled balance of the user and the scaled total supply.",
        "params": {
          "user": "The address of the user"
        },
        "returns": {
          "_0": "The scaled balance of the user",
          "_1": "The scaled balance and the scaled total supply*"
        }
      },
      "handleRepayment(address,uint256)": {
        "details": "Invoked to execute actions on the aToken side after a repayment.",
        "params": {
          "amount": "The amount getting repaid*",
          "user": "The user executing the repayment"
        }
      },
      "initialize(address,address,address,address,uint8,string,string,bytes)": {
        "details": "Initializes the aToken",
        "params": {
          "aTokenDecimals": "The decimals of the aToken, same as the underlying asset's",
          "aTokenName": "The name of the aToken",
          "aTokenSymbol": "The symbol of the aToken",
          "incentivesController": "The smart contract managing potential incentives distribution",
          "pool": "The address of the lending pool where this aToken will be used",
          "treasury": "The address of the Aave treasury, receiving the fees on this aToken",
          "underlyingAsset": "The address of the underlying asset of this aToken (E.g. WETH for aWETH)"
        }
      },
      "mint(address,uint256,uint256)": {
        "details": "Mints `amount` aTokens to `user`",
        "params": {
          "amount": "The amount of tokens getting minted",
          "index": "The new liquidity index of the reserve",
          "user": "The address receiving the minted tokens"
        },
        "returns": {
          "_0": "`true` if the the previous balance of the user was 0"
        }
      },
      "mintToTreasury(uint256,uint256)": {
        "details": "Mints aTokens to the reserve treasury",
        "params": {
          "amount": "The amount of tokens getting minted",
          "index": "The new liquidity index of the reserve"
        }
      },
      "scaledBalanceOf(address)": {
        "details": "Returns the scaled balance of the user. The scaled balance is the sum of all the updated stored balance divided by the reserve's liquidity index at the moment of the update",
        "params": {
          "user": "The user whose balance is calculated"
        },
        "returns": {
          "_0": "The scaled balance of the user*"
        }
      },
      "scaledTotalSupply()": {
        "details": "Returns the scaled total supply of the variable debt token. Represents sum(debt/index)",
        "returns": {
          "_0": "The scaled total supply*"
        }
      },
      "totalSupply()": {
        "details": "Returns the amount of tokens in existence."
      },
      "transfer(address,uint256)": {
        "details": "Moves `amount` tokens from the caller's account to `recipient`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
      },
      "transferFrom(address,address,uint256)": {
        "details": "Moves `amount` tokens from `sender` to `recipient` using the allowance mechanism. `amount` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
      },
      "transferOnLiquidation(address,address,uint256)": {
        "details": "Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken",
        "params": {
          "from": "The address getting liquidated, current owner of the aTokens",
          "to": "The recipient",
          "value": "The amount of tokens getting transferred*"
        }
      },
      "transferUnderlyingTo(address,uint256)": {
        "details": "Transfers the underlying asset to `target`. Used by the LendingPool to transfer assets in borrow(), withdraw() and flashLoan()",
        "params": {
          "amount": "The amount getting transferred",
          "user": "The recipient of the underlying"
        },
        "returns": {
          "_0": "The amount transferred*"
        }
      }
    },
    "version": 1
  },
  "offset": [
    340,
    3887
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "fefdce57eec26d065063fe315956ca15403bf156",
  "source": "// SPDX-License-Identifier: agpl-3.0\npragma solidity ^0.8.0;\n\nimport {IERC20} from '../dependencies/openzeppelin/contracts/IERC20.sol';\nimport {IScaledBalanceToken} from './IScaledBalanceToken.sol';\nimport {IInitializableAToken} from './IInitializableAToken.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\ninterface IAToken is IERC20, IScaledBalanceToken, IInitializableAToken {\n  /**\n   * @dev Emitted after the mint action\n   * @param from The address performing the mint\n   * @param value The amount being\n   * @param index The new liquidity index of the reserve\n   **/\n  event Mint(address indexed from, uint256 value, uint256 index);\n\n  /**\n   * @dev Mints `amount` aTokens to `user`\n   * @param user The address receiving the minted tokens\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   * @return `true` if the the previous balance of the user was 0\n   */\n  function mint(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external returns (bool);\n\n  /**\n   * @dev Emitted after aTokens are burned\n   * @param from The owner of the aTokens, getting them burned\n   * @param target The address that will receive the underlying\n   * @param value The amount being burned\n   * @param index The new liquidity index of the reserve\n   **/\n  event Burn(address indexed from, address indexed target, uint256 value, uint256 index);\n\n  /**\n   * @dev Emitted during the transfer action\n   * @param from The user whose tokens are being transferred\n   * @param to The recipient\n   * @param value The amount being transferred\n   * @param index The new liquidity index of the reserve\n   **/\n  event BalanceTransfer(address indexed from, address indexed to, uint256 value, uint256 index);\n\n  /**\n   * @dev Burns aTokens from `user` and sends the equivalent amount of underlying to `receiverOfUnderlying`\n   * @param user The owner of the aTokens, getting them burned\n   * @param receiverOfUnderlying The address that will receive the underlying\n   * @param amount The amount being burned\n   * @param index The new liquidity index of the reserve\n   **/\n  function burn(\n    address user,\n    address receiverOfUnderlying,\n    uint256 amount,\n    uint256 index\n  ) external;\n\n  /**\n   * @dev Mints aTokens to the reserve treasury\n   * @param amount The amount of tokens getting minted\n   * @param index The new liquidity index of the reserve\n   */\n  function mintToTreasury(uint256 amount, uint256 index) external;\n\n  /**\n   * @dev Transfers aTokens in the event of a borrow being liquidated, in case the liquidators reclaims the aToken\n   * @param from The address getting liquidated, current owner of the aTokens\n   * @param to The recipient\n   * @param value The amount of tokens getting transferred\n   **/\n  function transferOnLiquidation(\n    address from,\n    address to,\n    uint256 value\n  ) external;\n\n  /**\n   * @dev Transfers the underlying asset to `target`. Used by the LendingPool to transfer\n   * assets in borrow(), withdraw() and flashLoan()\n   * @param user The recipient of the underlying\n   * @param amount The amount getting transferred\n   * @return The amount transferred\n   **/\n  function transferUnderlyingTo(address user, uint256 amount) external returns (uint256);\n\n  /**\n   * @dev Invoked to execute actions on the aToken side after a repayment.\n   * @param user The user executing the repayment\n   * @param amount The amount getting repaid\n   **/\n  function handleRepayment(address user, uint256 amount) external;\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n\n  /**\n   * @dev Returns the address of the underlying asset of this aToken (E.g. WETH for aWETH)\n   **/\n  function UNDERLYING_ASSET_ADDRESS() external view returns (address);\n}\n",
  "sourceMap": "",
  "sourcePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IAToken.sol",
  "type": "interface"
}