{
  "abi": [
    {
      "inputs": [
        {
          "internalType": "uint96",
          "name": "targetNftId",
          "type": "uint96"
        }
      ],
      "name": "capitalSupport",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "capitalAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getDip",
      "outputs": [
        {
          "internalType": "contract IERC20Metadata",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getRegistry",
      "outputs": [
        {
          "internalType": "contract IChainRegistryFacade",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getStakingWallet",
      "outputs": [
        {
          "internalType": "address",
          "name": "stakingWallet",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "implementsIStaking",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "maxRewardRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rateDecimals",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "decimals",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "rewardReserves",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "stakeBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "dipAmount",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes5",
          "name": "chain",
          "type": "bytes5"
        },
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "stakingRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "chainId",
          "type": "uint256"
        }
      ],
      "name": "toChain",
      "outputs": [
        {
          "internalType": "bytes5",
          "name": "",
          "type": "bytes5"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "value",
          "type": "uint256"
        },
        {
          "internalType": "int8",
          "name": "exp",
          "type": "int8"
        }
      ],
      "name": "toRate",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "rate",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "version",
      "outputs": [
        {
          "internalType": "uint48",
          "name": "",
          "type": "uint48"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "versionParts",
      "outputs": [
        {
          "internalType": "uint16",
          "name": "major",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "minor",
          "type": "uint16"
        },
        {
          "internalType": "uint16",
          "name": "patch",
          "type": "uint16"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "allSourcePaths": {
    "14": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/IERC20.sol",
    "15": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/extensions/IERC20Metadata.sol",
    "35": "contracts/registry/IChainNftFacade.sol",
    "37": "contracts/registry/IChainRegistryFacade.sol",
    "51": "contracts/staking/IStakingFacade.sol"
  },
  "ast": {
    "absolutePath": "contracts/staking/IStakingFacade.sol",
    "exportedSymbols": {
      "IChainRegistryFacade": [
        4180
      ],
      "IERC20Metadata": [
        12510
      ],
      "IStakingFacade": [
        6589
      ]
    },
    "id": 6590,
    "license": "Apache-2.0",
    "nodeType": "SourceUnit",
    "nodes": [
      {
        "id": 6481,
        "literals": [
          "solidity",
          "^",
          "0.8",
          ".19"
        ],
        "nodeType": "PragmaDirective",
        "src": "39:24:51"
      },
      {
        "absolutePath": "/home/vscode/.brownie/packages/OpenZeppelin/openzeppelin-contracts@4.8.2/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "file": "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol",
        "id": 6483,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6590,
        "sourceUnit": 12511,
        "src": "542:97:51",
        "symbolAliases": [
          {
            "foreign": {
              "id": 6482,
              "name": "IERC20Metadata",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 12510,
              "src": "550:14:51",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "absolutePath": "contracts/registry/IChainRegistryFacade.sol",
        "file": "../registry/IChainRegistryFacade.sol",
        "id": 6485,
        "nameLocation": "-1:-1:-1",
        "nodeType": "ImportDirective",
        "scope": 6590,
        "sourceUnit": 4181,
        "src": "641:74:51",
        "symbolAliases": [
          {
            "foreign": {
              "id": 6484,
              "name": "IChainRegistryFacade",
              "nodeType": "Identifier",
              "overloadedDeclarations": [],
              "referencedDeclaration": 4180,
              "src": "649:20:51",
              "typeDescriptions": {}
            },
            "nameLocation": "-1:-1:-1"
          }
        ],
        "unitAlias": ""
      },
      {
        "abstract": false,
        "baseContracts": [],
        "canonicalName": "IStakingFacade",
        "contractDependencies": [],
        "contractKind": "interface",
        "fullyImplemented": false,
        "id": 6589,
        "linearizedBaseContracts": [
          6589
        ],
        "name": "IStakingFacade",
        "nameLocation": "727:14:51",
        "nodeType": "ContractDefinition",
        "nodes": [
          {
            "functionSelector": "8da5cb5b",
            "id": 6490,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "owner",
            "nameLocation": "758:5:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6486,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "763:2:51"
            },
            "returnParameters": {
              "id": 6489,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6488,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6490,
                  "src": "788:7:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6487,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "788:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "787:9:51"
            },
            "scope": 6589,
            "src": "749:48:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "5ab1bd53",
            "id": 6496,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getRegistry",
            "nameLocation": "811:11:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6491,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "822:2:51"
            },
            "returnParameters": {
              "id": 6495,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6494,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6496,
                  "src": "847:20:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IChainRegistryFacade_$4180",
                    "typeString": "contract IChainRegistryFacade"
                  },
                  "typeName": {
                    "id": 6493,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6492,
                      "name": "IChainRegistryFacade",
                      "nameLocations": [
                        "847:20:51"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 4180,
                      "src": "847:20:51"
                    },
                    "referencedDeclaration": 4180,
                    "src": "847:20:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IChainRegistryFacade_$4180",
                      "typeString": "contract IChainRegistryFacade"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "846:22:51"
            },
            "scope": 6589,
            "src": "802:67:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b3fc986e",
            "id": 6501,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getStakingWallet",
            "nameLocation": "884:16:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6497,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "900:2:51"
            },
            "returnParameters": {
              "id": 6500,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6499,
                  "mutability": "mutable",
                  "name": "stakingWallet",
                  "nameLocation": "933:13:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6501,
                  "src": "925:21:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6498,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "925:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "924:23:51"
            },
            "scope": 6589,
            "src": "875:73:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "b54ded6e",
            "id": 6507,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "getDip",
            "nameLocation": "962:6:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6502,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "968:2:51"
            },
            "returnParameters": {
              "id": 6506,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6505,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6507,
                  "src": "993:14:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IERC20Metadata_$12510",
                    "typeString": "contract IERC20Metadata"
                  },
                  "typeName": {
                    "id": 6504,
                    "nodeType": "UserDefinedTypeName",
                    "pathNode": {
                      "id": 6503,
                      "name": "IERC20Metadata",
                      "nameLocations": [
                        "993:14:51"
                      ],
                      "nodeType": "IdentifierPath",
                      "referencedDeclaration": 12510,
                      "src": "993:14:51"
                    },
                    "referencedDeclaration": 12510,
                    "src": "993:14:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_IERC20Metadata_$12510",
                      "typeString": "contract IERC20Metadata"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "992:16:51"
            },
            "scope": 6589,
            "src": "953:56:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0d40ffc7",
            "id": 6512,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "maxRewardRate",
            "nameLocation": "1024:13:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6508,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1037:2:51"
            },
            "returnParameters": {
              "id": 6511,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6510,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "1070:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6512,
                  "src": "1062:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6509,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1062:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1061:14:51"
            },
            "scope": 6589,
            "src": "1015:61:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "7b0a47ee",
            "id": 6517,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardRate",
            "nameLocation": "1090:10:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6513,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1100:2:51"
            },
            "returnParameters": {
              "id": 6516,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6515,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "1133:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6517,
                  "src": "1125:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6514,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1125:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1124:14:51"
            },
            "scope": 6589,
            "src": "1081:58:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "aa5c3ab4",
            "id": 6522,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardBalance",
            "nameLocation": "1153:13:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6518,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1166:2:51"
            },
            "returnParameters": {
              "id": 6521,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6520,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "1199:9:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6522,
                  "src": "1191:17:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6519,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1191:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1190:19:51"
            },
            "scope": 6589,
            "src": "1144:66:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "f0de8228",
            "id": 6527,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rewardReserves",
            "nameLocation": "1224:14:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6523,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1238:2:51"
            },
            "returnParameters": {
              "id": 6526,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6525,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "1271:9:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6527,
                  "src": "1263:17:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6524,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1263:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1262:19:51"
            },
            "scope": 6589,
            "src": "1215:67:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "93bc9dfe",
            "id": 6532,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakeBalance",
            "nameLocation": "1297:12:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6528,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1309:2:51"
            },
            "returnParameters": {
              "id": 6531,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6530,
                  "mutability": "mutable",
                  "name": "dipAmount",
                  "nameLocation": "1342:9:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6532,
                  "src": "1334:17:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6529,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1334:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1333:19:51"
            },
            "scope": 6589,
            "src": "1288:65:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "0dd4d811",
            "id": 6541,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "stakingRate",
            "nameLocation": "1367:11:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6537,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6534,
                  "mutability": "mutable",
                  "name": "chain",
                  "nameLocation": "1386:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6541,
                  "src": "1379:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  },
                  "typeName": {
                    "id": 6533,
                    "name": "bytes5",
                    "nodeType": "ElementaryTypeName",
                    "src": "1379:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6536,
                  "mutability": "mutable",
                  "name": "token",
                  "nameLocation": "1401:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6541,
                  "src": "1393:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  },
                  "typeName": {
                    "id": 6535,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "1393:7:51",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1378:29:51"
            },
            "returnParameters": {
              "id": 6540,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6539,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "1438:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6541,
                  "src": "1430:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6538,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1430:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1429:14:51"
            },
            "scope": 6589,
            "src": "1358:86:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "33d84ec0",
            "id": 6548,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "capitalSupport",
            "nameLocation": "1459:14:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6544,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6543,
                  "mutability": "mutable",
                  "name": "targetNftId",
                  "nameLocation": "1481:11:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6548,
                  "src": "1474:18:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint96",
                    "typeString": "uint96"
                  },
                  "typeName": {
                    "id": 6542,
                    "name": "uint96",
                    "nodeType": "ElementaryTypeName",
                    "src": "1474:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint96",
                      "typeString": "uint96"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1473:20:51"
            },
            "returnParameters": {
              "id": 6547,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6546,
                  "mutability": "mutable",
                  "name": "capitalAmount",
                  "nameLocation": "1524:13:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6548,
                  "src": "1516:21:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6545,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1516:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1515:23:51"
            },
            "scope": 6589,
            "src": "1450:89:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1b08829c",
            "id": 6553,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "implementsIStaking",
            "nameLocation": "1553:18:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6549,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1571:2:51"
            },
            "returnParameters": {
              "id": 6552,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6551,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6553,
                  "src": "1596:4:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bool",
                    "typeString": "bool"
                  },
                  "typeName": {
                    "id": 6550,
                    "name": "bool",
                    "nodeType": "ElementaryTypeName",
                    "src": "1596:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bool",
                      "typeString": "bool"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1595:6:51"
            },
            "scope": 6589,
            "src": "1544:58:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "178156ca",
            "id": 6560,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toChain",
            "nameLocation": "1617:7:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6556,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6555,
                  "mutability": "mutable",
                  "name": "chainId",
                  "nameLocation": "1633:7:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6560,
                  "src": "1625:15:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6554,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1625:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1624:17:51"
            },
            "returnParameters": {
              "id": 6559,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6558,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6560,
                  "src": "1664:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes5",
                    "typeString": "bytes5"
                  },
                  "typeName": {
                    "id": 6557,
                    "name": "bytes5",
                    "nodeType": "ElementaryTypeName",
                    "src": "1664:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_bytes5",
                      "typeString": "bytes5"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1663:8:51"
            },
            "scope": 6589,
            "src": "1608:64:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "fc1cd6cc",
            "id": 6569,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "toRate",
            "nameLocation": "1687:6:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6565,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6562,
                  "mutability": "mutable",
                  "name": "value",
                  "nameLocation": "1702:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6569,
                  "src": "1694:13:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6561,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1694:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6564,
                  "mutability": "mutable",
                  "name": "exp",
                  "nameLocation": "1714:3:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6569,
                  "src": "1709:8:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_int8",
                    "typeString": "int8"
                  },
                  "typeName": {
                    "id": 6563,
                    "name": "int8",
                    "nodeType": "ElementaryTypeName",
                    "src": "1709:4:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_int8",
                      "typeString": "int8"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1693:25:51"
            },
            "returnParameters": {
              "id": 6568,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6567,
                  "mutability": "mutable",
                  "name": "rate",
                  "nameLocation": "1749:4:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6569,
                  "src": "1741:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6566,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1741:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1740:14:51"
            },
            "scope": 6589,
            "src": "1678:77:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "1a3480b5",
            "id": 6574,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "rateDecimals",
            "nameLocation": "1769:12:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6570,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1781:2:51"
            },
            "returnParameters": {
              "id": 6573,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6572,
                  "mutability": "mutable",
                  "name": "decimals",
                  "nameLocation": "1814:8:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6574,
                  "src": "1806:16:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "typeName": {
                    "id": 6571,
                    "name": "uint256",
                    "nodeType": "ElementaryTypeName",
                    "src": "1806:7:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1805:18:51"
            },
            "scope": 6589,
            "src": "1760:64:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "54fd4d50",
            "id": 6579,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "version",
            "nameLocation": "1839:7:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6575,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1846:2:51"
            },
            "returnParameters": {
              "id": 6578,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6577,
                  "mutability": "mutable",
                  "name": "",
                  "nameLocation": "-1:-1:-1",
                  "nodeType": "VariableDeclaration",
                  "scope": 6579,
                  "src": "1871:6:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint48",
                    "typeString": "uint48"
                  },
                  "typeName": {
                    "id": 6576,
                    "name": "uint48",
                    "nodeType": "ElementaryTypeName",
                    "src": "1871:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint48",
                      "typeString": "uint48"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1870:8:51"
            },
            "scope": 6589,
            "src": "1830:49:51",
            "stateMutability": "pure",
            "virtual": false,
            "visibility": "external"
          },
          {
            "functionSelector": "bd4080ec",
            "id": 6588,
            "implemented": false,
            "kind": "function",
            "modifiers": [],
            "name": "versionParts",
            "nameLocation": "1893:12:51",
            "nodeType": "FunctionDefinition",
            "parameters": {
              "id": 6580,
              "nodeType": "ParameterList",
              "parameters": [],
              "src": "1905:2:51"
            },
            "returnParameters": {
              "id": 6587,
              "nodeType": "ParameterList",
              "parameters": [
                {
                  "constant": false,
                  "id": 6582,
                  "mutability": "mutable",
                  "name": "major",
                  "nameLocation": "1974:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6588,
                  "src": "1967:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 6581,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1967:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6584,
                  "mutability": "mutable",
                  "name": "minor",
                  "nameLocation": "2000:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6588,
                  "src": "1993:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 6583,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "1993:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                },
                {
                  "constant": false,
                  "id": 6586,
                  "mutability": "mutable",
                  "name": "patch",
                  "nameLocation": "2026:5:51",
                  "nodeType": "VariableDeclaration",
                  "scope": 6588,
                  "src": "2019:12:51",
                  "stateVariable": false,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint16",
                    "typeString": "uint16"
                  },
                  "typeName": {
                    "id": 6585,
                    "name": "uint16",
                    "nodeType": "ElementaryTypeName",
                    "src": "2019:6:51",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint16",
                      "typeString": "uint16"
                    }
                  },
                  "visibility": "internal"
                }
              ],
              "src": "1953:88:51"
            },
            "scope": 6589,
            "src": "1884:158:51",
            "stateMutability": "view",
            "virtual": false,
            "visibility": "external"
          }
        ],
        "scope": 6590,
        "src": "717:1328:51",
        "usedErrors": []
      }
    ],
    "src": "39:2006:51"
  },
  "bytecode": "",
  "bytecodeSha1": "da39a3ee5e6b4b0d3255bfef95601890afd80709",
  "compiler": {
    "evm_version": "istanbul",
    "optimizer": {
      "enabled": true,
      "runs": 200
    },
    "version": "0.8.19+commit.7dd6d404"
  },
  "contractName": "IStakingFacade",
  "coverageMap": {
    "branches": {},
    "statements": {}
  },
  "dependencies": [
    "IChainNftFacade",
    "IChainRegistryFacade",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20",
    "OpenZeppelin/openzeppelin-contracts@4.8.2/IERC20Metadata"
  ],
  "deployedBytecode": "",
  "deployedSourceMap": "",
  "language": "Solidity",
  "natspec": {
    "kind": "dev",
    "methods": {},
    "version": 1
  },
  "offset": [
    717,
    2045
  ],
  "opcodes": "",
  "pcMap": {},
  "sha1": "b7e75bbe39bdb551dc86117cc84e8b3a01a2d046",
  "source": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.19;\n\n/**\n * @dev this facade is intended for user contracts with limited \n * interactions with the actual contract and that need to work \n * with older solidity versions that do not support user defined \n * types.\n * \n * usage: \n * (1) copy this interface into your repository\n * (2) adapt the pragma to your needsd\n * (3) use it in your contracts, ie. cast actual contract \n * address to this interface, then  usd the resulting facade \n * to interact with the actual contract\n */\n\nimport {IERC20Metadata} from \"@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol\";\n\nimport {IChainRegistryFacade} from \"../registry/IChainRegistryFacade.sol\";\n\ninterface IStakingFacade {\n\n    function owner() external view returns(address);\n    function getRegistry() external view returns(IChainRegistryFacade);\n\n    function getStakingWallet() external view returns(address stakingWallet);\n    function getDip() external view returns(IERC20Metadata);\n\n    function maxRewardRate() external view returns(uint256 rate);\n    function rewardRate() external view returns(uint256 rate);\n    function rewardBalance() external view returns(uint256 dipAmount);\n    function rewardReserves() external view returns(uint256 dipAmount);\n\n    function stakeBalance() external view returns(uint256 dipAmount);\n    function stakingRate(bytes5 chain, address token) external view returns(uint256 rate);\n\n    function capitalSupport(uint96 targetNftId) external view returns(uint256 capitalAmount);\n    function implementsIStaking() external pure returns(bool);\n\n    function toChain(uint256 chainId) external pure returns(bytes5);\n\n    function toRate(uint256 value, int8 exp) external pure returns(uint256 rate);\n    function rateDecimals() external pure returns(uint256 decimals);\n\n    function version() external pure returns(uint48);\n    function versionParts()\n        external\n        view\n        returns(\n            uint16 major,\n            uint16 minor,\n            uint16 patch\n        );\n\n}",
  "sourceMap": "",
  "sourcePath": "contracts/staking/IStakingFacade.sol",
  "type": "interface"
}