{
  "contractName": "StakingPoolManagementImpl",
  "sourceName": "contracts/StakingPoolManagementImpl.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_ens",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "previousOwner",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "OwnershipTransferred",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "StakingPoolRenamed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "amount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_amount",
          "type": "uint256"
        }
      ],
      "name": "amountToShares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "ens",
      "outputs": [
        {
          "internalType": "contract ENS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "factory",
      "outputs": [
        {
          "internalType": "contract StakingPoolFactory",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "owner",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "paused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pos",
      "outputs": [
        {
          "internalType": "contract IPoS",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "renounceOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredLiquidity",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "string",
          "name": "name",
          "type": "string"
        }
      ],
      "name": "setName",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "shares",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_shares",
          "type": "uint256"
        }
      ],
      "name": "sharesToAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newOwner",
          "type": "address"
        }
      ],
      "name": "transferOwnership",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "userBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "balance",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "shares",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "depositTimestamp",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50604051610cf7380380610cf783398101604081905261002f916101fd565b600054610100900460ff1680610048575060005460ff16155b6100b05760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084015b60405180910390fd5b600054610100900460ff161580156100d2576000805461ffff19166101011790555b6001600160a01b0382166101325760405162461bcd60e51b815260206004820152602160248201527f706172616d657465722063616e206e6f74206265207a65726f206164647265736044820152607360f81b60648201526084016100a7565b6001600160601b0319606083901b1660805261014c610165565b801561015e576000805461ff00191690555b505061022d565b60335460ff16156101ab5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016100a7565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586101e03390565b6040516001600160a01b03909116815260200160405180910390a1565b60006020828403121561020f57600080fd5b81516001600160a01b038116811461022657600080fd5b9392505050565b60805160601c610aa56102526000396000818161017001526103e80152610aa56000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c47f002711610066578063c47f00271461022d578063c56551b614610240578063e366b7bb14610253578063f2fde38b1461025c57600080fd5b80638da5cb5b146101ed578063aa8c217c146101fe578063b811540e14610207578063c45a01551461021a57600080fd5b8063555d8ebb116100d3578063555d8ebb146101b45780635c975abb146101c7578063715018a6146101dd5780638456cb59146101e557600080fd5b80630103c92b1461010557806303314efa146101545780633f15457f1461016b5780633f4ba83a146101aa575b600080fd5b61013461011336600461082e565b609b6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b61015d60975481565b60405190815260200161014b565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014b565b6101b261026f565b005b61015d6101c2366004610932565b6102ac565b60335460ff16604051901515815260200161014b565b6101b26102e9565b6101b261031d565b6065546001600160a01b0316610192565b61015d60985481565b61015d610215366004610932565b61034f565b609c54610192906001600160a01b031681565b6101b261023b366004610881565b610386565b609a54610192906001600160a01b031681565b61015d60995481565b6101b261026a36600461082e565b610527565b6065546001600160a01b031633146102a25760405162461bcd60e51b8152600401610299906109a0565b60405180910390fd5b6102aa6105c2565b565b6000609754600014156102c8576102c282610655565b92915050565b6102c26097546102e36098548561068990919063ffffffff16565b906106c3565b6065546001600160a01b031633146103135760405162461bcd60e51b8152600401610299906109a0565b6102aa6000610706565b6065546001600160a01b031633146103475760405162461bcd60e51b8152600401610299906109a0565b6102aa610758565b600060985460001415610365576102c2826107d3565b6102c2609854610380609754856107e390919063ffffffff16565b9061080b565b6065546001600160a01b031633146103b05760405162461bcd60e51b8152600401610299906109a0565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302571be39060240160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a919061084b565b60405163c47f002760e01b81529091506001600160a01b0382169063c47f00279061049990859060040161094b565b602060405180830381600087803b1580156104b357600080fd5b505af11580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104eb9190610868565b507f6aaa0865532d48a9a0f63cc91df7ff2ab538c896665c864ae02d0a1e7f81cf658260405161051b919061094b565b60405180910390a15050565b6065546001600160a01b031633146105515760405162461bcd60e51b8152600401610299906109a0565b6001600160a01b0381166105b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610299565b6105bf81610706565b50565b60335460ff1661060b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610299565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000806106676002633b9aca006109ed565b9050633b9aca0061067884836109d5565b61068291906109ed565b9392505050565b60006b033b2e3c9fd0803ce80000006106a28385610a0f565b6106b960026b033b2e3c9fd0803ce80000006109ed565b61067891906109d5565b6000806106d16002846109ed565b9050826106ea6b033b2e3c9fd0803ce800000086610a0f565b6106f490836109d5565b6106fe91906109ed565b949350505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60335460ff161561079e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610299565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586106383390565b60006102c2633b9aca0083610a0f565b6000670de0b6b3a76400006107f88385610a0f565b6106b96002670de0b6b3a76400006109ed565b6000806108196002846109ed565b9050826106ea670de0b6b3a764000086610a0f565b60006020828403121561084057600080fd5b813561068281610a5a565b60006020828403121561085d57600080fd5b815161068281610a5a565b60006020828403121561087a57600080fd5b5051919050565b60006020828403121561089357600080fd5b813567ffffffffffffffff808211156108ab57600080fd5b818401915084601f8301126108bf57600080fd5b8135818111156108d1576108d1610a44565b604051601f8201601f19908116603f011681019083821181831017156108f9576108f9610a44565b8160405282815287602084870101111561091257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561094457600080fd5b5035919050565b600060208083528351808285015260005b818110156109785785810183015185820160400152820161095c565b8181111561098a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156109e8576109e8610a2e565b500190565b600082610a0a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610a2957610a29610a2e565b500290565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105bf57600080fdfea2646970667358221220cdc866b67c32b29360987f45609f3ec269d15396fbef20fc7b5d4982edc259b764736f6c63430008070033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101005760003560e01c80638da5cb5b11610097578063c47f002711610066578063c47f00271461022d578063c56551b614610240578063e366b7bb14610253578063f2fde38b1461025c57600080fd5b80638da5cb5b146101ed578063aa8c217c146101fe578063b811540e14610207578063c45a01551461021a57600080fd5b8063555d8ebb116100d3578063555d8ebb146101b45780635c975abb146101c7578063715018a6146101dd5780638456cb59146101e557600080fd5b80630103c92b1461010557806303314efa146101545780633f15457f1461016b5780633f4ba83a146101aa575b600080fd5b61013461011336600461082e565b609b6020526000908152604090208054600182015460029092015490919083565b604080519384526020840192909252908201526060015b60405180910390f35b61015d60975481565b60405190815260200161014b565b6101927f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161014b565b6101b261026f565b005b61015d6101c2366004610932565b6102ac565b60335460ff16604051901515815260200161014b565b6101b26102e9565b6101b261031d565b6065546001600160a01b0316610192565b61015d60985481565b61015d610215366004610932565b61034f565b609c54610192906001600160a01b031681565b6101b261023b366004610881565b610386565b609a54610192906001600160a01b031681565b61015d60995481565b6101b261026a36600461082e565b610527565b6065546001600160a01b031633146102a25760405162461bcd60e51b8152600401610299906109a0565b60405180910390fd5b6102aa6105c2565b565b6000609754600014156102c8576102c282610655565b92915050565b6102c26097546102e36098548561068990919063ffffffff16565b906106c3565b6065546001600160a01b031633146103135760405162461bcd60e51b8152600401610299906109a0565b6102aa6000610706565b6065546001600160a01b031633146103475760405162461bcd60e51b8152600401610299906109a0565b6102aa610758565b600060985460001415610365576102c2826107d3565b6102c2609854610380609754856107e390919063ffffffff16565b9061080b565b6065546001600160a01b031633146103b05760405162461bcd60e51b8152600401610299906109a0565b6040516302571be360e01b81527f91d1777781884d03a6757a803996e38de2a42967fb37eeaca72729271025a9e260048201526000907f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316906302571be39060240160206040518083038186803b15801561043257600080fd5b505afa158015610446573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061046a919061084b565b60405163c47f002760e01b81529091506001600160a01b0382169063c47f00279061049990859060040161094b565b602060405180830381600087803b1580156104b357600080fd5b505af11580156104c7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104eb9190610868565b507f6aaa0865532d48a9a0f63cc91df7ff2ab538c896665c864ae02d0a1e7f81cf658260405161051b919061094b565b60405180910390a15050565b6065546001600160a01b031633146105515760405162461bcd60e51b8152600401610299906109a0565b6001600160a01b0381166105b65760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610299565b6105bf81610706565b50565b60335460ff1661060b5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b6044820152606401610299565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6000806106676002633b9aca006109ed565b9050633b9aca0061067884836109d5565b61068291906109ed565b9392505050565b60006b033b2e3c9fd0803ce80000006106a28385610a0f565b6106b960026b033b2e3c9fd0803ce80000006109ed565b61067891906109d5565b6000806106d16002846109ed565b9050826106ea6b033b2e3c9fd0803ce800000086610a0f565b6106f490836109d5565b6106fe91906109ed565b949350505050565b606580546001600160a01b038381166001600160a01b0319831681179093556040519116919082907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e090600090a35050565b60335460ff161561079e5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b6044820152606401610299565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586106383390565b60006102c2633b9aca0083610a0f565b6000670de0b6b3a76400006107f88385610a0f565b6106b96002670de0b6b3a76400006109ed565b6000806108196002846109ed565b9050826106ea670de0b6b3a764000086610a0f565b60006020828403121561084057600080fd5b813561068281610a5a565b60006020828403121561085d57600080fd5b815161068281610a5a565b60006020828403121561087a57600080fd5b5051919050565b60006020828403121561089357600080fd5b813567ffffffffffffffff808211156108ab57600080fd5b818401915084601f8301126108bf57600080fd5b8135818111156108d1576108d1610a44565b604051601f8201601f19908116603f011681019083821181831017156108f9576108f9610a44565b8160405282815287602084870101111561091257600080fd5b826020860160208301376000928101602001929092525095945050505050565b60006020828403121561094457600080fd5b5035919050565b600060208083528351808285015260005b818110156109785785810183015185820160400152820161095c565b8181111561098a576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600082198211156109e8576109e8610a2e565b500190565b600082610a0a57634e487b7160e01b600052601260045260246000fd5b500490565b6000816000190483118215151615610a2957610a29610a2e565b500290565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b03811681146105bf57600080fdfea2646970667358221220cdc866b67c32b29360987f45609f3ec269d15396fbef20fc7b5d4982edc259b764736f6c63430008070033",
  "linkReferences": {},
  "deployedLinkReferences": {},
  "devdoc": {
    "kind": "dev",
    "methods": {
      "owner()": {
        "details": "Returns the address of the current owner."
      },
      "paused()": {
        "details": "Returns true if the contract is paused, and false otherwise."
      },
      "renounceOwnership()": {
        "details": "Leaves the contract without owner. It will not be possible to call `onlyOwner` functions anymore. Can only be called by the current owner. NOTE: Renouncing ownership will leave the contract without an owner, thereby removing any functionality that is only available to the owner."
      },
      "transferOwnership(address)": {
        "details": "Transfers ownership of the contract to a new account (`newOwner`). Can only be called by the current owner."
      }
    },
    "version": 1
  },
  "userdoc": {
    "events": {
      "StakingPoolRenamed(string)": {
        "notice": "Event emmited when a pool is rename"
      }
    },
    "kind": "user",
    "methods": {
      "pause()": {
        "notice": "pauses new staking on the pool"
      },
      "setName(string)": {
        "notice": "sets a name for the pool using ENS service"
      },
      "unpause()": {
        "notice": "unpauses new staking on the pool"
      }
    },
    "version": 1
  },
  "evm": {
    "gasEstimates": {
      "creation": {
        "codeDepositCost": "545000",
        "executionCost": "infinite",
        "totalCost": "infinite"
      },
      "external": {
        "amount()": "2340",
        "amountToShares(uint256)": "infinite",
        "ens()": "infinite",
        "factory()": "2426",
        "owner()": "2354",
        "pause()": "29839",
        "paused()": "2337",
        "pos()": "2381",
        "renounceOwnership()": "28184",
        "requiredLiquidity()": "2361",
        "setName(string)": "infinite",
        "shares()": "2341",
        "sharesToAmount(uint256)": "infinite",
        "transferOwnership(address)": "infinite",
        "unpause()": "29817",
        "userBalance(address)": "6801"
      },
      "internal": {
        "__StakingPoolManagementImpl_init()": "infinite"
      }
    },
    "methodIdentifiers": {
      "amount()": "aa8c217c",
      "amountToShares(uint256)": "b811540e",
      "ens()": "3f15457f",
      "factory()": "c45a0155",
      "owner()": "8da5cb5b",
      "pause()": "8456cb59",
      "paused()": "5c975abb",
      "pos()": "c56551b6",
      "renounceOwnership()": "715018a6",
      "requiredLiquidity()": "e366b7bb",
      "setName(string)": "c47f0027",
      "shares()": "03314efa",
      "sharesToAmount(uint256)": "555d8ebb",
      "transferOwnership(address)": "f2fde38b",
      "unpause()": "3f4ba83a",
      "userBalance(address)": "0103c92b"
    }
  }
}