{
  "abi": [],
  "allSourcePaths": {
    "56": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/types/DataTypes.sol"
  },
  "ast": {
    "absolutePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/types/DataTypes.sol",
    "exportedSymbols": {
      "DataTypes": [
        22839
      ]
    },
    "id": 22840,
    "license": "agpl-3.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 22802,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".0"
        ],
        "nodeType": "PragmaDirective",
        "src": "37:23:56"
      },
      {
        "abstract": false,
        "baseContracts": [],
        "contractDependencies": [],
        "contractKind": "library",
        "fullyImplemented": true,
        "id": 22839,
        "linearizedBaseContracts": [
          22839
        ],
        "name": "DataTypes",
        "nameLocation": "70:9:56",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "canonicalName": "DataTypes.ReserveData",
            "id": 22828,
            "members": [
              {
                "constant": false,
                "id": 22805,
                "mutability": "mutable",
                "name": "configuration",
                "nameLocation": "275:13:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "251:37:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_ReserveConfigurationMap_$22831_storage_ptr",
                  "typeString": "struct DataTypes.ReserveConfigurationMap"
                },
                "typeName": {
                  "id": 22804,
                  "nodeType": "UserDefinedTypeName",
                  "pathNode": {
                    "id": 22803,
                    "name": "ReserveConfigurationMap",
                    "nodeType": "IdentifierPath",
                    "referencedDeclaration": 22831,
                    "src": "251:23:56"
                  },
                  "referencedDeclaration": 22831,
                  "src": "251:23:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_ReserveConfigurationMap_$22831_storage_ptr",
                    "typeString": "struct DataTypes.ReserveConfigurationMap"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22807,
                "mutability": "mutable",
                "name": "liquidityIndex",
                "nameLocation": "346:14:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "338:22:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 22806,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "338:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22809,
                "mutability": "mutable",
                "name": "variableBorrowIndex",
                "nameLocation": "420:19:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "412:27:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 22808,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "412:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22811,
                "mutability": "mutable",
                "name": "currentLiquidityRate",
                "nameLocation": "501:20:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "493:28:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 22810,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "493:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22813,
                "mutability": "mutable",
                "name": "currentVariableBorrowRate",
                "nameLocation": "592:25:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "584:33:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 22812,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "584:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22815,
                "mutability": "mutable",
                "name": "currentStableBorrowRate",
                "nameLocation": "686:23:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "678:31:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint128",
                  "typeString": "uint128"
                },
                "typeName": {
                  "id": 22814,
                  "name": "uint128",
                  "nodeType": "ElementaryTypeName",
                  "src": "678:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint128",
                    "typeString": "uint128"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22817,
                "mutability": "mutable",
                "name": "lastUpdateTimestamp",
                "nameLocation": "722:19:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "715:26:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint40",
                  "typeString": "uint40"
                },
                "typeName": {
                  "id": 22816,
                  "name": "uint40",
                  "nodeType": "ElementaryTypeName",
                  "src": "715:6:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint40",
                    "typeString": "uint40"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22819,
                "mutability": "mutable",
                "name": "aTokenAddress",
                "nameLocation": "778:13:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "770:21:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22818,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "770:7:56",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22821,
                "mutability": "mutable",
                "name": "stableDebtTokenAddress",
                "nameLocation": "805:22:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "797:30:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22820,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "797:7:56",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22823,
                "mutability": "mutable",
                "name": "variableDebtTokenAddress",
                "nameLocation": "841:24:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "833:32:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22822,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "833:7:56",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22825,
                "mutability": "mutable",
                "name": "interestRateStrategyAddress",
                "nameLocation": "923:27:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "915:35:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 22824,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "915:7:56",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 22827,
                "mutability": "mutable",
                "name": "id",
                "nameLocation": "1050:2:56",
                "nodeType": "VariableDeclaration",
                "scope": 22828,
                "src": "1044:8:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 22826,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "1044:5:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ReserveData",
            "nameLocation": "194:11:56",
            "nodeType": "StructDefinition",
            "scope": 22839,
            "src": "187:870:56",
            "visibility": "public"
          },
          {
            "canonicalName": "DataTypes.ReserveConfigurationMap",
            "id": 22831,
            "members": [
              {
                "constant": false,
                "id": 22830,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "1413:4:56",
                "nodeType": "VariableDeclaration",
                "scope": 22831,
                "src": "1405:12:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 22829,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1405:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "ReserveConfigurationMap",
            "nameLocation": "1068:23:56",
            "nodeType": "StructDefinition",
            "scope": 22839,
            "src": "1061:361:56",
            "visibility": "public"
          },
          {
            "canonicalName": "DataTypes.UserConfigurationMap",
            "id": 22834,
            "members": [
              {
                "constant": false,
                "id": 22833,
                "mutability": "mutable",
                "name": "data",
                "nameLocation": "1468:4:56",
                "nodeType": "VariableDeclaration",
                "scope": 22834,
                "src": "1460:12:56",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 22832,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "1460:7:56",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "internal"
              }
            ],
            "name": "UserConfigurationMap",
            "nameLocation": "1433:20:56",
            "nodeType": "StructDefinition",
            "scope": 22839,
            "src": "1426:51:56",
            "visibility": "public"
          },
          {
            "canonicalName": "DataTypes.InterestRateMode",
            "id": 22838,
            "members": [
              {
                "id": 22835,
                "name": "NONE",
                "nameLocation": "1504:4:56",
                "nodeType": "EnumValue",
                "src": "1504:4:56"
              },
              {
                "id": 22836,
                "name": "STABLE",
                "nameLocation": "1510:6:56",
                "nodeType": "EnumValue",
                "src": "1510:6:56"
              },
              {
                "id": 22837,
                "name": "VARIABLE",
                "nameLocation": "1518:8:56",
                "nodeType": "EnumValue",
                "src": "1518:8:56"
              }
            ],
            "name": "InterestRateMode",
            "nameLocation": "1486:16:56",
            "nodeType": "EnumDefinition",
            "src": "1481:46:56"
          }
        ],
        "scope": 22840,
        "src": "62:1467:56",
        "usedErrors": []
      }
    ],
    "src": "37:1493:56"
  },
  "bytecode": "60566037600b82828239805160001a607314602a57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f47a6f5ffbb75d0cafc58f5cb0b76c6c2121085177ed36c5cd9850c8911b5f164736f6c63430008060033",
  "bytecodeSha1": "1ce946f6a4eaa185320328620ccf999b9e86db7c",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.6+commit.11564f7e"
  },
  "contractName": "DataTypes",
  "coverageMap": {
    "branches": {
      "56": {}
    },
    "statements": {
      "56": {}
    }
  },
  "dependencies": [],
  "deployedBytecode": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212209f47a6f5ffbb75d0cafc58f5cb0b76c6c2121085177ed36c5cd9850c8911b5f164736f6c63430008060033",
  "deployedSourceMap": "62:1467:56:-:0;;;;;;;;",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    62,
    1529
  ],
  "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SWAP16 SELFBALANCE 0xA6 CREATE2 SELFDESTRUCT 0xBB PUSH22 0xD0CAFC58F5CB0B76C6C2121085177ED36C5CD9850C89 GT 0xB5 CALL PUSH5 0x736F6C6343 STOP ADDMOD MOD STOP CALLER ",
  "pcMap": {
    "0": {
      "offset": [
        62,
        1529
      ],
      "op": "PUSH20",
      "path": "56",
      "value": "0x0"
    },
    "21": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "ADDRESS",
      "path": "56"
    },
    "22": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "EQ",
      "path": "56"
    },
    "23": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "PUSH1",
      "path": "56",
      "value": "0x80"
    },
    "25": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "PUSH1",
      "path": "56",
      "value": "0x40"
    },
    "27": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "MSTORE",
      "path": "56"
    },
    "28": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "PUSH1",
      "path": "56",
      "value": "0x0"
    },
    "30": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "DUP1",
      "path": "56"
    },
    "31": {
      "fn": null,
      "offset": [
        62,
        1529
      ],
      "op": "REVERT",
      "path": "56"
    }
  },
  "sha1": "9d8b6011b2561278bfca6671bb61953360f0c7de",
  "source": "// SPDX-License-Identifier: agpl-3.0\npragma solidity ^0.8.0;\n\nlibrary DataTypes {\n  // refer to the whitepaper, section 1.1 basic concepts for a formal description of these properties.\n  struct ReserveData {\n    //stores the reserve configuration\n    ReserveConfigurationMap configuration;\n    //the liquidity index. Expressed in ray\n    uint128 liquidityIndex;\n    //variable borrow index. Expressed in ray\n    uint128 variableBorrowIndex;\n    //the current supply rate. Expressed in ray\n    uint128 currentLiquidityRate;\n    //the current variable borrow rate. Expressed in ray\n    uint128 currentVariableBorrowRate;\n    //the current stable borrow rate. Expressed in ray\n    uint128 currentStableBorrowRate;\n    uint40 lastUpdateTimestamp;\n    //tokens addresses\n    address aTokenAddress;\n    address stableDebtTokenAddress;\n    address variableDebtTokenAddress;\n    //address of the interest rate strategy\n    address interestRateStrategyAddress;\n    //the id of the reserve. Represents the position in the list of the active reserves\n    uint8 id;\n  }\n\n  struct ReserveConfigurationMap {\n    //bit 0-15: LTV\n    //bit 16-31: Liq. threshold\n    //bit 32-47: Liq. bonus\n    //bit 48-55: Decimals\n    //bit 56: Reserve is active\n    //bit 57: reserve is frozen\n    //bit 58: borrowing is enabled\n    //bit 59: stable rate borrowing enabled\n    //bit 60-63: reserved\n    //bit 64-79: reserve factor\n    uint256 data;\n  }\n\n  struct UserConfigurationMap {\n    uint256 data;\n  }\n\n  enum InterestRateMode {NONE, STABLE, VARIABLE}\n}\n",
  "sourceMap": "62:1467:56:-:0;;;;;;;;;;;;;;;-1:-1:-1;;;62:1467:56;;;;;;;;;;;;;;;;;",
  "sourcePath": "node_modules/@aave/protocol-v2/contracts/protocol/libraries/types/DataTypes.sol",
  "type": "library"
}