{
  "_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": "0x608060405234801561001057600080fd5b506108d0806100206000396000f3fe608060405234801561001057600080fd5b50600436106100575760003560e01c80631a05274c1461005c5780637f57d58f1461009a578063891339a8146100c65780638c0b6b40146100f2578063cabc452814610128575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b03813516906020013561015e565b60408051918252519081900360200190f35b610088600480360360408110156100b057600080fd5b506001600160a01b0381351690602001356101d2565b610088600480360360408110156100dc57600080fd5b506001600160a01b038135169060200135610252565b6100886004803603606081101561010857600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100886004803603606081101561013e57600080fd5b506001600160a01b038135811691602081013590911690604001356103d3565b6007546000906001600160a01b031633146101b8576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101cb9060039085908590610455565b9392505050565b6007546000906001600160a01b0316331461022c576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101cb91849061046c565b6007546000906001600160a01b031633146102ac576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610302576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101cb60048484610479565b6007546000906001600160a01b03163314610368576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103be576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103cb60048585856104e6565b949350505050565b6007546000906001600160a01b0316331461042d576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103cb9185908590610574565b60006104638585858561059b565b95945050505050565b60006103cb8484846105d6565b604080516001600160a01b0384166020808301919091528183018490528251808303840181526060909201835281519181019190912060008181529186905291812054909190156104db576000908152602085905260408120555060016101cb565b506000949350505050565b604080516001600160a01b0380861660208084019190915282840185905283518084038501815260609093018452825192810192909220600081815260018901845284812092871681529282905292822054919291801561056657506001600160a01b0385166000908152602091909152604081205550600190506103cb565b506000979650505050505050565b6000610581858484610718565b90506105926002860185858561059b565b01949350505050565b60006001600160a01b038416156104db576001600160a01b03841660009081526020869052604090206105cf908484610718565b90506103cb565b6000816105e5575060006101cb565b6001840154600160401b900467ffffffffffffffff168061060a5760009150506101cb565b600185015467ffffffffffffffff16600061063161062883886107bc565b60018503610816565b9050815b8181108015610670575060018101600090815260208981526040808320838052909152902054600160b01b900467ffffffffffffffff168610155b156106d457600081815260208981526040808320838052918290528220549091600160f01b90910460ff16905b818110156106c957600081815260208490526040902080546001600160f81b031916905560010161069d565b505050600101610635565b8281111561070a576106e58161082c565b60018901805467ffffffffffffffff191667ffffffffffffffff929092169190911790555b919091039695505050505050565b600081610727575060006101cb565b6001840154600160401b900467ffffffffffffffff168061074c5760009150506101cb565b600185015467ffffffffffffffff16600061076a61062883886107bc565b9050815b81811080156107a0575060018101600090815260208990526040902054600160c01b900467ffffffffffffffff168610155b156106d45760008181526020899052604081205560010161076e565b6000828201838110156101cb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081831061082557816101cb565b5090919050565b6000600160401b82106108705760405162461bcd60e51b81526004018080602001828103825260268152602001806108756026913960400191505060405180910390fd5b509056fe53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473a2646970667358221220c828aafb8198a15d0abace07687076423bfc069e73d9f705ef53529b81cf1ef864736f6c63430007060033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100575760003560e01c80631a05274c1461005c5780637f57d58f1461009a578063891339a8146100c65780638c0b6b40146100f2578063cabc452814610128575b600080fd5b6100886004803603604081101561007257600080fd5b506001600160a01b03813516906020013561015e565b60408051918252519081900360200190f35b610088600480360360408110156100b057600080fd5b506001600160a01b0381351690602001356101d2565b610088600480360360408110156100dc57600080fd5b506001600160a01b038135169060200135610252565b6100886004803603606081101561010857600080fd5b506001600160a01b0381358116916020810135909116906040013561030e565b6100886004803603606081101561013e57600080fd5b506001600160a01b038135811691602081013590911690604001356103d3565b6007546000906001600160a01b031633146101b8576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546101cb9060039085908590610455565b9392505050565b6007546000906001600160a01b0316331461022c576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03841660009081526001602052604090206101cb91849061046c565b6007546000906001600160a01b031633146102ac576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006548210610302576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6101cb60048484610479565b6007546000906001600160a01b03163314610368576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b60065482106103be576040805162461bcd60e51b815260206004820152601e60248201527f4e6f20636c65616e757020616674657220636c65616e757020626c6f636b0000604482015290519081900360640190fd5b6103cb60048585856104e6565b949350505050565b6007546000906001600160a01b0316331461042d576040805162461bcd60e51b815260206004820152601560248201527413db9b1e4818db19585b995c8818dbdb9d1c9858dd605a1b604482015290519081900360640190fd5b6006546001600160a01b03851660009081526002602052604090206103cb9185908590610574565b60006104638585858561059b565b95945050505050565b60006103cb8484846105d6565b604080516001600160a01b0384166020808301919091528183018490528251808303840181526060909201835281519181019190912060008181529186905291812054909190156104db576000908152602085905260408120555060016101cb565b506000949350505050565b604080516001600160a01b0380861660208084019190915282840185905283518084038501815260609093018452825192810192909220600081815260018901845284812092871681529282905292822054919291801561056657506001600160a01b0385166000908152602091909152604081205550600190506103cb565b506000979650505050505050565b6000610581858484610718565b90506105926002860185858561059b565b01949350505050565b60006001600160a01b038416156104db576001600160a01b03841660009081526020869052604090206105cf908484610718565b90506103cb565b6000816105e5575060006101cb565b6001840154600160401b900467ffffffffffffffff168061060a5760009150506101cb565b600185015467ffffffffffffffff16600061063161062883886107bc565b60018503610816565b9050815b8181108015610670575060018101600090815260208981526040808320838052909152902054600160b01b900467ffffffffffffffff168610155b156106d457600081815260208981526040808320838052918290528220549091600160f01b90910460ff16905b818110156106c957600081815260208490526040902080546001600160f81b031916905560010161069d565b505050600101610635565b8281111561070a576106e58161082c565b60018901805467ffffffffffffffff191667ffffffffffffffff929092169190911790555b919091039695505050505050565b600081610727575060006101cb565b6001840154600160401b900467ffffffffffffffff168061074c5760009150506101cb565b600185015467ffffffffffffffff16600061076a61062883886107bc565b9050815b81811080156107a0575060018101600090815260208990526040902054600160c01b900467ffffffffffffffff168610155b156106d45760008181526020899052604081205560010161076e565b6000828201838110156101cb576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600081831061082557816101cb565b5090919050565b6000600160401b82106108705760405162461bcd60e51b81526004018080602001828103825260268152602001806108756026913960400191505060405180910390fd5b509056fe53616665436173743a2076616c756520646f65736e27742066697420696e2036342062697473a2646970667358221220c828aafb8198a15d0abace07687076423bfc069e73d9f705ef53529b81cf1ef864736f6c63430007060033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
