{
  "_format": "hh-sol-artifact-1",
  "contractName": "VestingTestInterface",
  "sourceName": "src/contracts/test/VestingTestInterface.sol",
  "abi": [
    {
      "inputs": [],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "VestingNotCancelable",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "Vested",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "isCancelable",
          "type": "bool"
        }
      ],
      "name": "VestingAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "freedVestingBeneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "VestingStopped",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "VESTING_PERIOD_IN_SECONDS",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "bool",
          "name": "isCancelableFlag",
          "type": "bool"
        }
      ],
      "name": "addVestingTest",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "cumulativeVestedBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "fullAllocation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "isCancelable",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "newlyVestedBalance",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "freedVestingBeneficiary",
          "type": "address"
        }
      ],
      "name": "shiftVestingTest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "user",
          "type": "address"
        }
      ],
      "name": "vestTest",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "vestedAllocation",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "vestingStart",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a060405234801561001057600080fd5b50426080526080516107b26100366000396000818160fb015261027d01526107b26000f3fe608060405234801561001057600080fd5b50600436106100be5760003560e01c806386eaaa3411610076578063acaf21f71161005b578063acaf21f71461018b578063be1ae6f91461019e578063ffd93cd5146101a957600080fd5b806386eaaa3414610156578063a2a626f81461016b57600080fd5b80635642c9d7116100a75780635642c9d71461011d57806368700028146101305780636f0335861461014357600080fd5b80631051e84f146100c3578063254800d4146100f6575b600080fd5b6100e36100d1366004610613565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e37f000000000000000000000000000000000000000000000000000000000000000081565b6100e361012b366004610613565b6101dc565b6100e361013e366004610613565b6101ed565b6100e361015136600461062e565b610226565b610169610164366004610661565b610239565b005b6100e3610179366004610613565b60006020819052908152604090205481565b6100e3610199366004610613565b610249565b6100e36307861f8081565b6101cc6101b7366004610613565b60026020526000908152604090205460ff1681565b60405190151581526020016100ed565b60006101e7826102c0565b92915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461021c83610249565b6101e791906106d5565b6000610232838361036f565b9392505050565b6102448383836104ed565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120546307861f80906102ac6102a27f0000000000000000000000000000000000000000000000000000000000000000426106d5565b6307861f806105d4565b6102b691906106ec565b6101e79190610729565b60006102cb826101ed565b9050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b9190610764565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316907ed5958799b183a7b738d3ad5e711305293dd5076a37a4e3b7e6611dea6114f39060200160405180910390a2919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604081205460ff166103ce576040517fd5cd510000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103d7836102c0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602081815260408084208054858452828620805492879055869055958916855292909152822080549495509293909284929091610434908490610764565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152602081905260408120805483929061046e908490610764565b909155505073ffffffffffffffffffffffffffffffffffffffff85167fcc22011f6028a0d1d9fcbfa015dec953b2bc08df296d28d2a6407b8fcf9c6c82856104b684866106d5565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a2505092915050565b80156105435773ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790555b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054849290610578908490610764565b909155505060408051838152821515602082015273ffffffffffffffffffffffffffffffffffffffff8516917f9534c146324716c0538375208553c94318368250a36a4832f663bea2f3351fd3910160405180910390a2505050565b60008183106105e35781610232565b5090919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060e57600080fd5b919050565b60006020828403121561062557600080fd5b610232826105ea565b6000806040838503121561064157600080fd5b61064a836105ea565b9150610658602084016105ea565b90509250929050565b60008060006060848603121561067657600080fd5b61067f846105ea565b9250602084013591506040840135801515811461069b57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156106e7576106e76106a6565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610724576107246106a6565b500290565b60008261075f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610777576107776106a6565b50019056fea26469706673582212200eb0b9dd9d8496dd78ec189309be439903b69518b15785cad803d5ddf26e869a64736f6c634300080a0033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106100be5760003560e01c806386eaaa3411610076578063acaf21f71161005b578063acaf21f71461018b578063be1ae6f91461019e578063ffd93cd5146101a957600080fd5b806386eaaa3414610156578063a2a626f81461016b57600080fd5b80635642c9d7116100a75780635642c9d71461011d57806368700028146101305780636f0335861461014357600080fd5b80631051e84f146100c3578063254800d4146100f6575b600080fd5b6100e36100d1366004610613565b60016020526000908152604090205481565b6040519081526020015b60405180910390f35b6100e37f000000000000000000000000000000000000000000000000000000000000000081565b6100e361012b366004610613565b6101dc565b6100e361013e366004610613565b6101ed565b6100e361015136600461062e565b610226565b610169610164366004610661565b610239565b005b6100e3610179366004610613565b60006020819052908152604090205481565b6100e3610199366004610613565b610249565b6100e36307861f8081565b6101cc6101b7366004610613565b60026020526000908152604090205460ff1681565b60405190151581526020016100ed565b60006101e7826102c0565b92915050565b73ffffffffffffffffffffffffffffffffffffffff811660009081526020819052604081205461021c83610249565b6101e791906106d5565b6000610232838361036f565b9392505050565b6102448383836104ed565b505050565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600160205260408120546307861f80906102ac6102a27f0000000000000000000000000000000000000000000000000000000000000000426106d5565b6307861f806105d4565b6102b691906106ec565b6101e79190610729565b60006102cb826101ed565b9050806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461031b9190610764565b909155505060405181815273ffffffffffffffffffffffffffffffffffffffff8316907ed5958799b183a7b738d3ad5e711305293dd5076a37a4e3b7e6611dea6114f39060200160405180910390a2919050565b73ffffffffffffffffffffffffffffffffffffffff821660009081526002602052604081205460ff166103ce576040517fd5cd510000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6103d7836102c0565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602081815260408084208054858452828620805492879055869055958916855292909152822080549495509293909284929091610434908490610764565b909155505073ffffffffffffffffffffffffffffffffffffffff84166000908152602081905260408120805483929061046e908490610764565b909155505073ffffffffffffffffffffffffffffffffffffffff85167fcc22011f6028a0d1d9fcbfa015dec953b2bc08df296d28d2a6407b8fcf9c6c82856104b684866106d5565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091520160405180910390a2505092915050565b80156105435773ffffffffffffffffffffffffffffffffffffffff8316600090815260026020526040902080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00168215151790555b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081208054849290610578908490610764565b909155505060408051838152821515602082015273ffffffffffffffffffffffffffffffffffffffff8516917f9534c146324716c0538375208553c94318368250a36a4832f663bea2f3351fd3910160405180910390a2505050565b60008183106105e35781610232565b5090919050565b803573ffffffffffffffffffffffffffffffffffffffff8116811461060e57600080fd5b919050565b60006020828403121561062557600080fd5b610232826105ea565b6000806040838503121561064157600080fd5b61064a836105ea565b9150610658602084016105ea565b90509250929050565b60008060006060848603121561067657600080fd5b61067f846105ea565b9250602084013591506040840135801515811461069b57600080fd5b809150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000828210156106e7576106e76106a6565b500390565b6000817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615610724576107246106a6565b500290565b60008261075f577f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b500490565b60008219821115610777576107776106a6565b50019056fea26469706673582212200eb0b9dd9d8496dd78ec189309be439903b69518b15785cad803d5ddf26e869a64736f6c634300080a0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
