{
  "_format": "hh-sol-artifact-1",
  "contractName": "Delegatable",
  "sourceName": "contracts/token/implementation/Delegatable.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "CreatedVotePowerCache",
      "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": "priorVotePower",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newVotePower",
          "type": "uint256"
        }
      ],
      "name": "Delegate",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegator",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "delegatee",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "votePower",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "blockNumber",
          "type": "uint256"
        }
      ],
      "name": "Revoke",
      "type": "event"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "explicitDelegationHistoryCleanup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "percentageDelegationHistoryCleanup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_from",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "revocationCleanup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_blockNumber",
          "type": "uint256"
        }
      ],
      "name": "votePowerCacheCleanup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "_owner",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "_count",
          "type": "uint256"
        }
      ],
      "name": "votePowerHistoryCleanup",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x608060405234801561001057600080fd5b50610832806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631a05274c1461005c5780637f57d58f1461009a578063891339a8146100c65780638c0b6b40146100f2578063cabc452814610128575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b03813516906020013561015e565b60408051918252519081900360200190f35b610088600480360360408110156100b057600080fd5b506001600160a01b0381351690602001356101d2565b610088600480360360408110156100dc57600080fd5b506001600160a01b038135169060200135610252565b6100886004803603606081101561010857600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100886004803603606081101561013e57600080fd5b506001600160a01b038135811691602081013590911690604001356103d3565b6007546000906001600160a01b031633146101b8576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101cb9060039085908590610455565b9392505050565b6007546000906001600160a01b0316331461022c576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101cb91849061046c565b6007546000906001600160a01b031633146102ac576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610302576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101cb60048484610479565b6007546000906001600160a01b03163314610368576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103be576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103cb60048585856104e6565b949350505050565b6007546000906001600160a01b0316331461042d576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103cb9185908590610574565b60006104638585858561059b565b95945050505050565b60006103cb8484846105d6565b604080516001600160a01b0384166020808301919091528183018490528251808303840181526060909201835281519181019190912060008181529186905291812054909190156104db576000908152602085905260408120555060016101cb565b506000949350505050565b604080516001600160a01b0380861660208084019190915282840185905283518084038501815260609093018452825192810192909220600081815260018901845284812092871681529282905292822054919291801561056657506001600160a01b0385166000908152602091909152604081205550600190506103cb565b506000979650505050505050565b60006105818584846106b3565b90506105926002860185858561059b565b01949350505050565b60006001600160a01b038416156104db576001600160a01b03841660009081526020869052604090206105cf9084846106b3565b90506103cb565b6000816105e5575060006101cb565b8354806105f65760009150506101cb565b6001850154600061061361060a8388610752565b600185036107ac565b9050815b818110801561064957508588600001826001018154811061063457fe5b90600052602060002090600302016000015411155b156106955787600001818154811061065d57fe5b6000918252602082206003909102018181559061067d60018301826107c2565b61068b6002830160006107c2565b5050600101610617565b828111156106a557600188018190555b919091039695505050505050565b6000816106c2575060006101cb565b8354806106d35760009150506101cb565b600185015460006106e761060a8388610752565b9050815b818110801561071d57508588600001826001018154811061070857fe5b90600052602060002090600202016000015411155b156106955787600001818154811061073157fe5b600091825260208220600290910201818155600190810191909155016106eb565b6000828201838110156101cb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183106107bb57816101cb565b5090919050565b50805460008255906000526020600020908101906107e091906107e3565b50565b5b808211156107f857600081556001016107e4565b509056fea26469706673582212205d3001292d0bd88702f83cc2030aff69bc57ac7dc61dcb14d129f390a67a1b2464736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631a05274c1461005c5780637f57d58f1461009a578063891339a8146100c65780638c0b6b40146100f2578063cabc452814610128575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b03813516906020013561015e565b60408051918252519081900360200190f35b610088600480360360408110156100b057600080fd5b506001600160a01b0381351690602001356101d2565b610088600480360360408110156100dc57600080fd5b506001600160a01b038135169060200135610252565b6100886004803603606081101561010857600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100886004803603606081101561013e57600080fd5b506001600160a01b038135811691602081013590911690604001356103d3565b6007546000906001600160a01b031633146101b8576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101cb9060039085908590610455565b9392505050565b6007546000906001600160a01b0316331461022c576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101cb91849061046c565b6007546000906001600160a01b031633146102ac576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610302576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101cb60048484610479565b6007546000906001600160a01b03163314610368576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103be576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103cb60048585856104e6565b949350505050565b6007546000906001600160a01b0316331461042d576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103cb9185908590610574565b60006104638585858561059b565b95945050505050565b60006103cb8484846105d6565b604080516001600160a01b0384166020808301919091528183018490528251808303840181526060909201835281519181019190912060008181529186905291812054909190156104db576000908152602085905260408120555060016101cb565b506000949350505050565b604080516001600160a01b0380861660208084019190915282840185905283518084038501815260609093018452825192810192909220600081815260018901845284812092871681529282905292822054919291801561056657506001600160a01b0385166000908152602091909152604081205550600190506103cb565b506000979650505050505050565b60006105818584846106b3565b90506105926002860185858561059b565b01949350505050565b60006001600160a01b038416156104db576001600160a01b03841660009081526020869052604090206105cf9084846106b3565b90506103cb565b6000816105e5575060006101cb565b8354806105f65760009150506101cb565b6001850154600061061361060a8388610752565b600185036107ac565b9050815b818110801561064957508588600001826001018154811061063457fe5b90600052602060002090600302016000015411155b156106955787600001818154811061065d57fe5b6000918252602082206003909102018181559061067d60018301826107c2565b61068b6002830160006107c2565b5050600101610617565b828111156106a557600188018190555b919091039695505050505050565b6000816106c2575060006101cb565b8354806106d35760009150506101cb565b600185015460006106e761060a8388610752565b9050815b818110801561071d57508588600001826001018154811061070857fe5b90600052602060002090600202016000015411155b156106955787600001818154811061073157fe5b600091825260208220600290910201818155600190810191909155016106eb565b6000828201838110156101cb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008183106107bb57816101cb565b5090919050565b50805460008255906000526020600020908101906107e091906107e3565b50565b5b808211156107f857600081556001016107e4565b509056fea26469706673582212205d3001292d0bd88702f83cc2030aff69bc57ac7dc61dcb14d129f390a67a1b2464736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
