{
    "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"
          }
        ],
        "name": "Transfer",
        "type": "event"
      },
      {
        "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": [],
        "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"
      }
    ],
    "allSourcePaths": {
      "12": "/Users/sagarbehara/.brownie/packages/OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/token/ERC20/IERC20.sol"
    },
    "ast": {
      "absolutePath": "/Users/sagarbehara/.brownie/packages/OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/token/ERC20/IERC20.sol",
      "exportedSymbols": {
        "IERC20": [
          23924
        ]
      },
      "id": 23925,
      "license": "MIT",
      "nodeType": "SourceUnit",
      "nodes": [
        {
          "id": 23848,
          "literals": [
            "solidity",
            ">=",
            "0.6",
            ".0",
            "<",
            "0.8",
            ".0"
          ],
          "nodeType": "PragmaDirective",
          "src": "33:31:12"
        },
        {
          "abstract": false,
          "baseContracts": [],
          "contractDependencies": [],
          "contractKind": "interface",
          "documentation": {
            "id": 23849,
            "nodeType": "StructuredDocumentation",
            "src": "66:70:12",
            "text": " @dev Interface of the ERC20 standard as defined in the EIP."
          },
          "fullyImplemented": false,
          "id": 23924,
          "linearizedBaseContracts": [
            23924
          ],
          "name": "IERC20",
          "nodeType": "ContractDefinition",
          "nodes": [
            {
              "body": null,
              "documentation": {
                "id": 23850,
                "nodeType": "StructuredDocumentation",
                "src": "160:66:12",
                "text": " @dev Returns the amount of tokens in existence."
              },
              "functionSelector": "18160ddd",
              "id": 23855,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "totalSupply",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23851,
                "nodeType": "ParameterList",
                "parameters": [],
                "src": "251:2:12"
              },
              "returnParameters": {
                "id": 23854,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23853,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23855,
                    "src": "277:7:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23852,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "277:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "276:9:12"
              },
              "scope": 23924,
              "src": "231:55:12",
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            {
              "body": null,
              "documentation": {
                "id": 23856,
                "nodeType": "StructuredDocumentation",
                "src": "292:72:12",
                "text": " @dev Returns the amount of tokens owned by `account`."
              },
              "functionSelector": "70a08231",
              "id": 23863,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "balanceOf",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23859,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23858,
                    "mutability": "mutable",
                    "name": "account",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23863,
                    "src": "388:15:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23857,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "388:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "387:17:12"
              },
              "returnParameters": {
                "id": 23862,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23861,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23863,
                    "src": "428:7:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23860,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "428:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "427:9:12"
              },
              "scope": 23924,
              "src": "369:68:12",
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            {
              "body": null,
              "documentation": {
                "id": 23864,
                "nodeType": "StructuredDocumentation",
                "src": "443:209:12",
                "text": " @dev Moves `amount` tokens from the caller's account to `recipient`.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
              },
              "functionSelector": "a9059cbb",
              "id": 23873,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "transfer",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23869,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23866,
                    "mutability": "mutable",
                    "name": "recipient",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23873,
                    "src": "675:17:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23865,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "675:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23868,
                    "mutability": "mutable",
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23873,
                    "src": "694:14:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23867,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "694:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "674:35:12"
              },
              "returnParameters": {
                "id": 23872,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23871,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23873,
                    "src": "728:4:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 23870,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "728:4:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "727:6:12"
              },
              "scope": 23924,
              "src": "657:77:12",
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            {
              "body": null,
              "documentation": {
                "id": 23874,
                "nodeType": "StructuredDocumentation",
                "src": "740:264:12",
                "text": " @dev Returns the remaining number of tokens that `spender` will be\n allowed to spend on behalf of `owner` through {transferFrom}. This is\n zero by default.\n This value changes when {approve} or {transferFrom} are called."
              },
              "functionSelector": "dd62ed3e",
              "id": 23883,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "allowance",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23879,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23876,
                    "mutability": "mutable",
                    "name": "owner",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23883,
                    "src": "1028:13:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23875,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1028:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23878,
                    "mutability": "mutable",
                    "name": "spender",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23883,
                    "src": "1043:15:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23877,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1043:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "1027:32:12"
              },
              "returnParameters": {
                "id": 23882,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23881,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23883,
                    "src": "1083:7:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23880,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1083:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "1082:9:12"
              },
              "scope": 23924,
              "src": "1009:83:12",
              "stateMutability": "view",
              "virtual": false,
              "visibility": "external"
            },
            {
              "body": null,
              "documentation": {
                "id": 23884,
                "nodeType": "StructuredDocumentation",
                "src": "1098:642:12",
                "text": " @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n Returns a boolean value indicating whether the operation succeeded.\n IMPORTANT: Beware that changing an allowance with this method brings the risk\n that someone may use both the old and the new allowance by unfortunate\n transaction ordering. One possible solution to mitigate this race\n condition is to first reduce the spender's allowance to 0 and set the\n desired value afterwards:\n https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n Emits an {Approval} event."
              },
              "functionSelector": "095ea7b3",
              "id": 23893,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "approve",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23889,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23886,
                    "mutability": "mutable",
                    "name": "spender",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23893,
                    "src": "1762:15:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23885,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "1762:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23888,
                    "mutability": "mutable",
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23893,
                    "src": "1779:14:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23887,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "1779:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "1761:33:12"
              },
              "returnParameters": {
                "id": 23892,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23891,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23893,
                    "src": "1813:4:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 23890,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "1813:4:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "1812:6:12"
              },
              "scope": 23924,
              "src": "1745:74:12",
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            {
              "body": null,
              "documentation": {
                "id": 23894,
                "nodeType": "StructuredDocumentation",
                "src": "1825:296:12",
                "text": " @dev Moves `amount` tokens from `sender` to `recipient` using the\n allowance mechanism. `amount` is then deducted from the caller's\n allowance.\n Returns a boolean value indicating whether the operation succeeded.\n Emits a {Transfer} event."
              },
              "functionSelector": "23b872dd",
              "id": 23905,
              "implemented": false,
              "kind": "function",
              "modifiers": [],
              "name": "transferFrom",
              "nodeType": "FunctionDefinition",
              "overrides": null,
              "parameters": {
                "id": 23901,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23896,
                    "mutability": "mutable",
                    "name": "sender",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23905,
                    "src": "2148:14:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23895,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2148:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23898,
                    "mutability": "mutable",
                    "name": "recipient",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23905,
                    "src": "2164:17:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23897,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2164:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23900,
                    "mutability": "mutable",
                    "name": "amount",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23905,
                    "src": "2183:14:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23899,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2183:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2147:51:12"
              },
              "returnParameters": {
                "id": 23904,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23903,
                    "mutability": "mutable",
                    "name": "",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23905,
                    "src": "2217:4:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    },
                    "typeName": {
                      "id": 23902,
                      "name": "bool",
                      "nodeType": "ElementaryTypeName",
                      "src": "2217:4:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2216:6:12"
              },
              "scope": 23924,
              "src": "2126:97:12",
              "stateMutability": "nonpayable",
              "virtual": false,
              "visibility": "external"
            },
            {
              "anonymous": false,
              "documentation": {
                "id": 23906,
                "nodeType": "StructuredDocumentation",
                "src": "2229:158:12",
                "text": " @dev Emitted when `value` tokens are moved from one account (`from`) to\n another (`to`).\n Note that `value` may be zero."
              },
              "id": 23914,
              "name": "Transfer",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 23913,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23908,
                    "indexed": true,
                    "mutability": "mutable",
                    "name": "from",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23914,
                    "src": "2407:20:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23907,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2407:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23910,
                    "indexed": true,
                    "mutability": "mutable",
                    "name": "to",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23914,
                    "src": "2429:18:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23909,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2429:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23912,
                    "indexed": false,
                    "mutability": "mutable",
                    "name": "value",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23914,
                    "src": "2449:13:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23911,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2449:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2406:57:12"
              },
              "src": "2392:72:12"
            },
            {
              "anonymous": false,
              "documentation": {
                "id": 23915,
                "nodeType": "StructuredDocumentation",
                "src": "2470:148:12",
                "text": " @dev Emitted when the allowance of a `spender` for an `owner` is set by\n a call to {approve}. `value` is the new allowance."
              },
              "id": 23923,
              "name": "Approval",
              "nodeType": "EventDefinition",
              "parameters": {
                "id": 23922,
                "nodeType": "ParameterList",
                "parameters": [
                  {
                    "constant": false,
                    "id": 23917,
                    "indexed": true,
                    "mutability": "mutable",
                    "name": "owner",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23923,
                    "src": "2638:21:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23916,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2638:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23919,
                    "indexed": true,
                    "mutability": "mutable",
                    "name": "spender",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23923,
                    "src": "2661:23:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    },
                    "typeName": {
                      "id": 23918,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "2661:7:12",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 23921,
                    "indexed": false,
                    "mutability": "mutable",
                    "name": "value",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 23923,
                    "src": "2686:13:12",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 23920,
                      "name": "uint256",
                      "nodeType": "ElementaryTypeName",
                      "src": "2686:7:12",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "src": "2637:63:12"
              },
              "src": "2623:78:12"
            }
          ],
          "scope": 23925,
          "src": "137:2566:12"
        }
      ],
      "src": "33:2671:12"
    },
    "bytecode": "",
    "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
    "compiler": {
      "evm_version": "istanbul",
      "optimizer": {
        "enabled": true,
        "runs": 200
      },
      "version": "0.6.12+commit.27d51765"
    },
    "contractName": "IERC20",
    "coverageMap": {
      "branches": {},
      "statements": {}
    },
    "dependencies": [],
    "deployedBytecode": "",
    "deployedSourceMap": "",
    "language": "Solidity",
    "natspec": {
      "details": "Interface of the ERC20 standard as defined in the EIP.",
      "events": {
        "Approval(address,address,uint256)": {
          "details": "Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance."
        },
        "Transfer(address,address,uint256)": {
          "details": "Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero."
        }
      },
      "kind": "dev",
      "methods": {
        "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`."
        },
        "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."
        }
      },
      "version": 1
    },
    "offset": [
      137,
      2703
    ],
    "opcodes": "",
    "pcMap": {},
    "sha1": "198932076d74067dee7acdde834235339aa9d909",
    "source": "// SPDX-License-Identifier: MIT\n\npragma solidity >=0.6.0 <0.8.0;\n\n/**\n * @dev Interface of the ERC20 standard as defined in the EIP.\n */\ninterface IERC20 {\n    /**\n     * @dev Returns the amount of tokens in existence.\n     */\n    function totalSupply() external view returns (uint256);\n\n    /**\n     * @dev Returns the amount of tokens owned by `account`.\n     */\n    function balanceOf(address account) external view returns (uint256);\n\n    /**\n     * @dev Moves `amount` tokens from the caller's account to `recipient`.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transfer(address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Returns the remaining number of tokens that `spender` will be\n     * allowed to spend on behalf of `owner` through {transferFrom}. This is\n     * zero by default.\n     *\n     * This value changes when {approve} or {transferFrom} are called.\n     */\n    function allowance(address owner, address spender) external view returns (uint256);\n\n    /**\n     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * IMPORTANT: Beware that changing an allowance with this method brings the risk\n     * that someone may use both the old and the new allowance by unfortunate\n     * transaction ordering. One possible solution to mitigate this race\n     * condition is to first reduce the spender's allowance to 0 and set the\n     * desired value afterwards:\n     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n     *\n     * Emits an {Approval} event.\n     */\n    function approve(address spender, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Moves `amount` tokens from `sender` to `recipient` using the\n     * allowance mechanism. `amount` is then deducted from the caller's\n     * allowance.\n     *\n     * Returns a boolean value indicating whether the operation succeeded.\n     *\n     * Emits a {Transfer} event.\n     */\n    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);\n\n    /**\n     * @dev Emitted when `value` tokens are moved from one account (`from`) to\n     * another (`to`).\n     *\n     * Note that `value` may be zero.\n     */\n    event Transfer(address indexed from, address indexed to, uint256 value);\n\n    /**\n     * @dev Emitted when the allowance of a `spender` for an `owner` is set by\n     * a call to {approve}. `value` is the new allowance.\n     */\n    event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n",
    "sourceMap": "",
    "sourcePath": "/Users/sagarbehara/.brownie/packages/OpenZeppelin/openzeppelin-contracts@3.4.0/contracts/token/ERC20/IERC20.sol",
    "type": "interface"
  }