{
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "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": "incentivesController",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "indexed": false,
          "internalType": "string",
          "name": "debtTokenSymbol",
          "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": true,
          "internalType": "address",
          "name": "onBehalfOf",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "index",
          "type": "uint256"
        }
      ],
      "name": "Mint",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "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": "contract ILendingPool",
          "name": "pool",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "underlyingAsset",
          "type": "address"
        },
        {
          "internalType": "contract IAaveIncentivesController",
          "name": "incentivesController",
          "type": "address"
        },
        {
          "internalType": "uint8",
          "name": "debtTokenDecimals",
          "type": "uint8"
        },
        {
          "internalType": "string",
          "name": "debtTokenName",
          "type": "string"
        },
        {
          "internalType": "string",
          "name": "debtTokenSymbol",
          "type": "string"
        },
        {
          "internalType": "bytes",
          "name": "params",
          "type": "bytes"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "onBehalfOf",
          "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": "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"
    }
  ],
  "allSourcePaths": {
    "44": "node_modules/@aave/protocol-v2/contracts/interfaces/IAaveIncentivesController.sol",
    "46": "node_modules/@aave/protocol-v2/contracts/interfaces/IInitializableDebtToken.sol",
    "49": "node_modules/@aave/protocol-v2/contracts/interfaces/IScaledBalanceToken.sol",
    "51": "node_modules/@aave/protocol-v2/contracts/interfaces/IVariableDebtToken.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IVariableDebtToken.sol",
    "exportedSymbols": {
      "IAaveIncentivesController": [
        22724
      ],
      "IInitializableDebtToken": [
        27314
      ],
      "IScaledBalanceToken": [
        22800
      ],
      "IVariableDebtToken": [
        23055
      ]
    },
    "id": 23056,
    "license": "agpl-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 22992,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:23:51"
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IScaledBalanceToken.sol",
        "file": "./IScaledBalanceToken.sol",
        "id": 22994,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23056,
        "sourceUnit": 22801,
        "src": "62:62:51",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22993,
              "name": "IScaledBalanceToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "70:19:51",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IInitializableDebtToken.sol",
        "file": "./IInitializableDebtToken.sol",
        "id": 22996,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23056,
        "sourceUnit": 27315,
        "src": "125:70:51",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22995,
              "name": "IInitializableDebtToken",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "133:23:51",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IAaveIncentivesController.sol",
        "file": "./IAaveIncentivesController.sol",
        "id": 22998,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 23056,
        "sourceUnit": 22725,
        "src": "196:74:51",
        "symbolAliases": [
          {
            "foreign": {
              "id": 22997,
              "name": "IAaveIncentivesController",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "src": "204:25:51",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [
          {
            "baseName": {
              "id": 23000,
              "name": "IScaledBalanceToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 22800,
              "src": "424:19:51"
            },
            "id": 23001,
            "nodeType": "InheritanceSpecifier",
            "src": "424:19:51"
          },
          {
            "baseName": {
              "id": 23002,
              "name": "IInitializableDebtToken",
              "nodeType": "IdentifierPath",
              "referencedDeclaration": 27314,
              "src": "445:23:51"
            },
            "id": 23003,
            "nodeType": "InheritanceSpecifier",
            "src": "445:23:51"
          }
        ],
        "contractDependencies": [],
        "contractKind": "interface",
        "documentation": {
          "id": 22999,
          "nodeType": "StructuredDocumentation",
          "src": "272:119:51",
          "text": " @title IVariableDebtToken\n @author Aave\n @notice Defines the basic interface for a variable debt token.*"
        },
        "fullyImplemented": false,
        "id": 23055,
        "linearizedBaseContracts": [
          23055,
          27314,
          22800
        ],
        "name": "IVariableDebtToken",
        "nameLocation": "402:18:51",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "anonymous": false,
            "documentation": {
              "id": 23004,
              "nodeType": "StructuredDocumentation",
              "src": "473:279:51",
              "text": " @dev Emitted after the mint action\n @param from The address performing the mint\n @param onBehalfOf The address of the user on which behalf minting has been performed\n @param value The amount to be minted\n @param index The last index of the reserve*"
            },
            "id": 23014,
            "name": "Mint",
            "nameLocation": "761:4:51",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23013,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23006,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "from",
                  "nameLocation": "782:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23014,
                  "src": "766:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23005,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "766:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23008,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "804:10:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23014,
                  "src": "788:26:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23007,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "788:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23010,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "824:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23014,
                  "src": "816:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23009,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "816:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23012,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "839:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23014,
                  "src": "831:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23011,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "831:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "765:80:51"
            },
            "src": "755:91:51"
          },
          {
            "documentation": {
              "id": 23015,
              "nodeType": "StructuredDocumentation",
              "src": "850:450:51",
              "text": " @dev Mints debt token to the `onBehalfOf` address\n @param user The address receiving the borrowed underlying, being the delegatee in case\n of credit delegate, or same as `onBehalfOf` otherwise\n @param onBehalfOf The address receiving the debt tokens\n @param amount The amount of debt being minted\n @param index The variable debt index of the reserve\n @return `true` if the the previous balance of the user is 0*"
            },
            "functionSelector": "b3f1c93d",
            "id": 23028,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "mint",
            "nameLocation": "1312:4:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23024,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23017,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1330:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23028,
                  "src": "1322:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23016,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1322:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23019,
                  "mutability": "mutable",
                  "name": "onBehalfOf",
                  "nameLocation": "1348:10:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23028,
                  "src": "1340:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23018,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1340:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23021,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1372:6:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23028,
                  "src": "1364:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23020,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1364:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23023,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1392:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23028,
                  "src": "1384:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23022,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1384:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1316:85:51"
            },
            "returnParameters": {
              "id": 23027,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23026,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23028,
                  "src": "1420:4:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 23025,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1420:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1419:6:51"
            },
            "scope": 23055,
            "src": "1303:123:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "anonymous": false,
            "documentation": {
              "id": 23029,
              "nodeType": "StructuredDocumentation",
              "src": "1430:200:51",
              "text": " @dev Emitted when variable debt is burnt\n @param user The user which debt has been burned\n @param amount The amount of debt being burned\n @param index The index of the user*"
            },
            "id": 23037,
            "name": "Burn",
            "nameLocation": "1639:4:51",
            "nodeType": "EventDefinition",
            "parameters": {
              "id": 23036,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23031,
                  "indexed": true,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1660:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "1644:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23030,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1644:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23033,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1674:6:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "1666:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23032,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1666:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23035,
                  "indexed": false,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1690:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23037,
                  "src": "1682:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23034,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1682:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1643:53:51"
            },
            "src": "1633:64:51"
          },
          {
            "documentation": {
              "id": 23038,
              "nodeType": "StructuredDocumentation",
              "src": "1701:148:51",
              "text": " @dev Burns user variable debt\n @param user The user which debt is burnt\n @param index The variable debt index of the reserve*"
            },
            "functionSelector": "f5298aca",
            "id": 23047,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "burn",
            "nameLocation": "1861:4:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23045,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23040,
                  "mutability": "mutable",
                  "name": "user",
                  "nameLocation": "1879:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23047,
                  "src": "1871:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 23039,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23042,
                  "mutability": "mutable",
                  "name": "amount",
                  "nameLocation": "1897:6:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23047,
                  "src": "1889:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23041,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1889:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 23044,
                  "mutability": "mutable",
                  "name": "index",
                  "nameLocation": "1917:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 23047,
                  "src": "1909:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 23043,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1909:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1865:61:51"
            },
            "returnParameters": {
              "id": 23046,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1935:0:51"
            },
            "scope": 23055,
            "src": "1852:84:51",
            "stateMutability": "nonpayable",
            "virtual": false,
            "visibility": "external"
          },
          {
            "documentation": {
              "id": 23048,
              "nodeType": "StructuredDocumentation",
              "src": "1940:78:51",
              "text": " @dev Returns the address of the incentives controller contract*"
            },
            "functionSelector": "75d26413",
            "id": 23054,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getIncentivesController",
            "nameLocation": "2030:23:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 23049,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "2053:2:51"
            },
            "returnParameters": {
              "id": 23053,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 23052,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 23054,
                  "src": "2079:25:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IAaveIncentivesController_$22724",
                    "typeString": "contract IAaveIncentivesController"
                  },
                  "typeName": {
                    "id": 23051,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 23050,
                      "name": "IAaveIncentivesController",
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 22724,
                      "src": "2079:25:51"
                    },
                    "referencedDeclaration": 22724,
                    "src": "2079:25:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IAaveIncentivesController_$22724",
                      "typeString": "contract IAaveIncentivesController"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "2078:27:51"
            },
            "scope": 23055,
            "src": "2021:85:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 23056,
        "src": "392:1716:51",
        "usedErrors": []
      }
    ],
    "src": "37:2072:51"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "IVariableDebtToken",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "IAaveIncentivesController",
    "IInitializableDebtToken",
    "IScaledBalanceToken"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "author": "Aave",
    "events": {
      "Burn(address,uint256,uint256)": {
        "details": "Emitted when variable debt is burnt",
        "params": {
          "amount": "The amount of debt being burned",
          "index": "The index of the user*",
          "user": "The user which debt has been burned"
        }
      },
      "Mint(address,address,uint256,uint256)": {
        "details": "Emitted after the mint action",
        "params": {
          "from": "The address performing the mint",
          "index": "The last index of the reserve*",
          "onBehalfOf": "The address of the user on which behalf minting has been performed",
          "value": "The amount to be minted"
        }
      }
    },
    "kind": "dev",
    "methods": {
      "burn(address,uint256,uint256)": {
        "details": "Burns user variable debt",
        "params": {
          "index": "The variable debt index of the reserve*",
          "user": "The user which debt is burnt"
        }
      },
      "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*"
        }
      },
      "initialize(address,address,address,uint8,string,string,bytes)": {
        "details": "Initializes the debt token.",
        "params": {
          "debtTokenDecimals": "The decimals of the debtToken, same as the underlying asset's",
          "debtTokenName": "The name of the token",
          "debtTokenSymbol": "The symbol of the token",
          "incentivesController": "The smart contract managing potential incentives distribution",
          "pool": "The address of the lending pool where this aToken will be used",
          "underlyingAsset": "The address of the underlying asset of this aToken (E.g. WETH for aWETH)"
        }
      },
      "mint(address,address,uint256,uint256)": {
        "details": "Mints debt token to the `onBehalfOf` address",
        "params": {
          "amount": "The amount of debt being minted",
          "index": "The variable debt index of the reserve",
          "onBehalfOf": "The address receiving the debt tokens",
          "user": "The address receiving the borrowed underlying, being the delegatee in case of credit delegate, or same as `onBehalfOf` otherwise"
        },
        "returns": {
          "_0": "`true` if the the previous balance of the user is 0*"
        }
      },
      "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*"
        }
      }
    },
    "notice": "Defines the basic interface for a variable debt token.*",
    "title": "IVariableDebtToken",
    "version": 1
  },
  "offset": [
    392,
    2108
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "671bf49156ad78dfe1734e2907339bec574c6df0",
  "source": "// SPDX-License-Identifier: agpl-3.0\npragma solidity ^0.8.0;\n\nimport {IScaledBalanceToken} from './IScaledBalanceToken.sol';\nimport {IInitializableDebtToken} from './IInitializableDebtToken.sol';\nimport {IAaveIncentivesController} from './IAaveIncentivesController.sol';\n\n/**\n * @title IVariableDebtToken\n * @author Aave\n * @notice Defines the basic interface for a variable debt token.\n **/\ninterface IVariableDebtToken is IScaledBalanceToken, IInitializableDebtToken {\n  /**\n   * @dev Emitted after the mint action\n   * @param from The address performing the mint\n   * @param onBehalfOf The address of the user on which behalf minting has been performed\n   * @param value The amount to be minted\n   * @param index The last index of the reserve\n   **/\n  event Mint(address indexed from, address indexed onBehalfOf, uint256 value, uint256 index);\n\n  /**\n   * @dev Mints debt token to the `onBehalfOf` address\n   * @param user The address receiving the borrowed underlying, being the delegatee in case\n   * of credit delegate, or same as `onBehalfOf` otherwise\n   * @param onBehalfOf The address receiving the debt tokens\n   * @param amount The amount of debt being minted\n   * @param index The variable debt index of the reserve\n   * @return `true` if the the previous balance of the user is 0\n   **/\n  function mint(\n    address user,\n    address onBehalfOf,\n    uint256 amount,\n    uint256 index\n  ) external returns (bool);\n\n  /**\n   * @dev Emitted when variable debt is burnt\n   * @param user The user which debt has been burned\n   * @param amount The amount of debt being burned\n   * @param index The index of the user\n   **/\n  event Burn(address indexed user, uint256 amount, uint256 index);\n\n  /**\n   * @dev Burns user variable debt\n   * @param user The user which debt is burnt\n   * @param index The variable debt index of the reserve\n   **/\n  function burn(\n    address user,\n    uint256 amount,\n    uint256 index\n  ) external;\n\n  /**\n   * @dev Returns the address of the incentives controller contract\n   **/\n  function getIncentivesController() external view returns (IAaveIncentivesController);\n}\n",
  "sourceMap": "",
  "sourcePath": "node_modules/@aave/protocol-v2/contracts/interfaces/IVariableDebtToken.sol",
  "type": "interface"
}