{
  "_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": [],
      "name": "cleanerContract",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "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": "0x608060405234801561001057600080fd5b5061090e806100206000396000f3fe608060405234801561001057600080fd5b50600436106100625760003560e01c80631a05274c146100675780637f57d58f146100a5578063891339a8146100d15780638c0b6b40146100fd5780639ca20e4e14610133578063cabc452814610157575b600080fd5b6100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561018d565b60408051918252519081900360200190f35b610093600480360360408110156100bb57600080fd5b506001600160a01b038135169060200135610201565b610093600480360360408110156100e757600080fd5b506001600160a01b038135169060200135610281565b6100936004803603606081101561011357600080fd5b506001600160a01b0381358116916020810135909116906040013561033d565b61013b610402565b604080516001600160a01b039092168252519081900360200190f35b6100936004803603606081101561016d57600080fd5b506001600160a01b03813581169160208101359091169060400135610411565b6007546000906001600160a01b031633146101e7576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101fa9060039085908590610493565b9392505050565b6007546000906001600160a01b0316331461025b576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101fa9184906104aa565b6007546000906001600160a01b031633146102db576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610331576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101fa600484846104b7565b6007546000906001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103ed576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103fa6004858585610524565b949350505050565b6007546001600160a01b031681565b6007546000906001600160a01b0316331461046b576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103fa91859085906105b2565b60006104a1858585856105d9565b95945050505050565b60006103fa848484610614565b604080516001600160a01b038416602080830191909152818301849052825180830384018152606090920183528151918101919091206000818152918690529181205490919015610519576000908152602085905260408120555060016101fa565b506000949350505050565b604080516001600160a01b038086166020808401919091528284018590528351808403850181526060909301845282519281019290922060008181526001890184528481209287168152928290529282205491929180156105a457506001600160a01b0385166000908152602091909152604081205550600190506103fa565b506000979650505050505050565b60006105bf858484610756565b90506105d0600286018585856105d9565b01949350505050565b60006001600160a01b03841615610519576001600160a01b038416600090815260208690526040902061060d908484610756565b90506103fa565b600081610623575060006101fa565b6001840154600160401b900467ffffffffffffffff16806106485760009150506101fa565b600185015467ffffffffffffffff16600061066f61066683886107fa565b60018503610854565b9050815b81811080156106ae575060018101600090815260208981526040808320838052909152902054600160b01b900467ffffffffffffffff168610155b1561071257600081815260208981526040808320838052918290528220549091600160f01b90910460ff16905b8181101561070757600081815260208490526040902080546001600160f81b03191690556001016106db565b505050600101610673565b82811115610748576107238161086a565b60018901805467ffffffffffffffff191667ffffffffffffffff929092169190911790555b919091039695505050505050565b600081610765575060006101fa565b6001840154600160401b900467ffffffffffffffff168061078a5760009150506101fa565b600185015467ffffffffffffffff1660006107a861066683886107fa565b9050815b81811080156107de575060018101600090815260208990526040902054600160c01b900467ffffffffffffffff168610155b15610712576000818152602089905260408120556001016107ac565b6000828201838110156101fa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081831061086357816101fa565b5090919050565b6000600160401b82106108ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806108b36026913960400191505060405180910390fd5b509056fe53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473a2646970667358221220a4ee7c3d60f2c9f64d149a3efb3b89684a4c8e39dd88b9808111727e0ef542f464736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100625760003560e01c80631a05274c146100675780637f57d58f146100a5578063891339a8146100d15780638c0b6b40146100fd5780639ca20e4e14610133578063cabc452814610157575b600080fd5b6100936004803603604081101561007d57600080fd5b506001600160a01b03813516906020013561018d565b60408051918252519081900360200190f35b610093600480360360408110156100bb57600080fd5b506001600160a01b038135169060200135610201565b610093600480360360408110156100e757600080fd5b506001600160a01b038135169060200135610281565b6100936004803603606081101561011357600080fd5b506001600160a01b0381358116916020810135909116906040013561033d565b61013b610402565b604080516001600160a01b039092168252519081900360200190f35b6100936004803603606081101561016d57600080fd5b506001600160a01b03813581169160208101359091169060400135610411565b6007546000906001600160a01b031633146101e7576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101fa9060039085908590610493565b9392505050565b6007546000906001600160a01b0316331461025b576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101fa9184906104aa565b6007546000906001600160a01b031633146102db576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610331576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101fa600484846104b7565b6007546000906001600160a01b03163314610397576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103ed576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103fa6004858585610524565b949350505050565b6007546001600160a01b031681565b6007546000906001600160a01b0316331461046b576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103fa91859085906105b2565b60006104a1858585856105d9565b95945050505050565b60006103fa848484610614565b604080516001600160a01b038416602080830191909152818301849052825180830384018152606090920183528151918101919091206000818152918690529181205490919015610519576000908152602085905260408120555060016101fa565b506000949350505050565b604080516001600160a01b038086166020808401919091528284018590528351808403850181526060909301845282519281019290922060008181526001890184528481209287168152928290529282205491929180156105a457506001600160a01b0385166000908152602091909152604081205550600190506103fa565b506000979650505050505050565b60006105bf858484610756565b90506105d0600286018585856105d9565b01949350505050565b60006001600160a01b03841615610519576001600160a01b038416600090815260208690526040902061060d908484610756565b90506103fa565b600081610623575060006101fa565b6001840154600160401b900467ffffffffffffffff16806106485760009150506101fa565b600185015467ffffffffffffffff16600061066f61066683886107fa565b60018503610854565b9050815b81811080156106ae575060018101600090815260208981526040808320838052909152902054600160b01b900467ffffffffffffffff168610155b1561071257600081815260208981526040808320838052918290528220549091600160f01b90910460ff16905b8181101561070757600081815260208490526040902080546001600160f81b03191690556001016106db565b505050600101610673565b82811115610748576107238161086a565b60018901805467ffffffffffffffff191667ffffffffffffffff929092169190911790555b919091039695505050505050565b600081610765575060006101fa565b6001840154600160401b900467ffffffffffffffff168061078a5760009150506101fa565b600185015467ffffffffffffffff1660006107a861066683886107fa565b9050815b81811080156107de575060018101600090815260208990526040902054600160c01b900467ffffffffffffffff168610155b15610712576000818152602089905260408120556001016107ac565b6000828201838110156101fa576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081831061086357816101fa565b5090919050565b6000600160401b82106108ae5760405162461bcd60e51b81526004018080602001828103825260268152602001806108b36026913960400191505060405180910390fd5b509056fe53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473a2646970667358221220a4ee7c3d60f2c9f64d149a3efb3b89684a4c8e39dd88b9808111727e0ef542f464736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
