{
  "_format": "hh-sol-artifact-1",
  "contractName": "ExampleVestingVault",
  "sourceName": "contracts/ExampleVestingVault.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "contract IERC20",
          "name": "token_",
          "type": "address"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "constructor"
    },
    {
      "inputs": [],
      "name": "AccessControlBadConfirmation",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "internalType": "bytes32",
          "name": "neededRole",
          "type": "bytes32"
        }
      ],
      "name": "AccessControlUnauthorizedAccount",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previousAdminRole",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "newAdminRole",
          "type": "bytes32"
        }
      ],
      "name": "RoleAdminChanged",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleGranted",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "account",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RoleRevoked",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "releaseTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "VestingLockedIn",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "beneficiary",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "releaseTime",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "tokenAmount",
          "type": "uint256"
        }
      ],
      "name": "VestingReleased",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "VAULT_CONTROLLER_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary_",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "releaseTime_",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "tokenAmount_",
          "type": "uint256"
        }
      ],
      "name": "addBeneficiary",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "grantRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "release",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "callerConfirmation",
          "type": "address"
        }
      ],
      "name": "renounceRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "revokeRole",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "token",
      "outputs": [
        {
          "internalType": "contract IERC20",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "beneficiary_",
          "type": "address"
        }
      ],
      "name": "vestingFor",
      "outputs": [
        {
          "components": [
            {
              "internalType": "address",
              "name": "beneficiary",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "releaseTime",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "tokenAmount",
              "type": "uint256"
            }
          ],
          "internalType": "struct IVestingVault.Vesting[]",
          "name": "",
          "type": "tuple[]"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60a0346100f157601f61108038819003918201601f19168301916001600160401b038311848410176100f6578084926020946040528339810103126100f157516001600160a01b03811681036100f15760805261005b3361010c565b507f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd9600081815260208190527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a5805490829055604051927fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff8380a4610ec5908161019b823960805181818160d001526105490152f35b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160a01b0381166000908152600080516020611060833981519152602052604090205460ff16610194576001600160a01b0316600081815260008051602061106083398151915260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b5060009056fe608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461081b57508063248a9ca3146107e65780632f2ff15d146107a657806336568abe1461073a578063704e2b2d146106ff57806386d1a69f146103d657806391d148541461037b578063a217fddf1461035f578063d547741f1461031a578063f4753b38146101ae578063f74bc9d6146100f95763fc0c546a146100a357600080fd5b346100f45760006003193601126100f457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b600080fd5b346100f45760606003193601126100f45761011261090f565b3360009081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff161561015c5761015a906044359060243590610a2a565b005b7fe2517d3f00000000000000000000000000000000000000000000000000000000600052336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260446000fd5b346100f45760206003193601126100f45773ffffffffffffffffffffffffffffffffffffffff6101dc61090f565b166000526001602052604060002080549067ffffffffffffffff82116102eb576040519161021060208260051b018461094e565b80835260208301809260005260206000206000915b83831061029e5784866040519182916020830190602084525180915260408301919060005b818110610258575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261024a565b600360206001926040516102b181610932565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610225565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346100f45760406003193601126100f45761015a6004356103396108ec565b9061035a61035582600052600060205260016040600020015490565b610c6f565b610dbb565b346100f45760006003193601126100f457602060405160008152f35b346100f45760406003193601126100f4576103946108ec565b600435600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346100f45760006003193601126100f4573360005260016020526040600020805467ffffffffffffffff81116102eb576040519161041a60208360051b018461094e565b818352602083019060005260206000206000915b8383106106b257600085815b81518110156104f157426020610450838561098f565b5101511115610462575b60010161043a565b9161047e6001916040610475868661098f565b510151906109d2565b92602061048b828561098f565b510151604061049a838661098f565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a23360005281602052600060026104e78360408420610a0e565b500155905061045a565b82801561062e57604051907fa9059cbb0000000000000000000000000000000000000000000000000000000082523360048301526024820152602081604481600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610622576000916105e0575b501561058257005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b6020813d60201161061a575b816105f96020938361094e565b81010312610616575190811515820361061357508161057a565b80fd5b5080fd5b3d91506105ec565b6040513d6000823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b600360206001926040516106c581610932565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061042e565b346100f45760006003193601126100f45760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f45760406003193601126100f4576107536108ec565b3373ffffffffffffffffffffffffffffffffffffffff82160361077c5761015a90600435610dbb565b7f6697b2320000000000000000000000000000000000000000000000000000000060005260046000fd5b346100f45760406003193601126100f45761015a6004356107c56108ec565b906107e161035582600052600060205260016040600020015490565b610cdc565b346100f45760206003193601126100f4576020610813600435600052600060205260016040600020015490565b604051908152f35b346100f45760206003193601126100f457600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f457817f79e3001b000000000000000000000000000000000000000000000000000000006020931490811561088f575b5015158152f35b7f7965db0b000000000000000000000000000000000000000000000000000000008114915081156108c2575b5083610888565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836108bb565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f457565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f457565b6060810190811067ffffffffffffffff8211176102eb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102eb57604052565b80518210156109a35760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082018092116109df57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80548210156109a3576000526003602060002091020190600090565b73ffffffffffffffffffffffffffffffffffffffff1690816000526001602052604060002092835467ffffffffffffffff81116102eb5760405194610a7560208360051b018761094e565b818652602086019060005260206000206000915b838310610c22575050505060005b8451811015610b19576020610aac828761098f565b5101518314610abd57600101610a97565b839450906002610afd604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac96600052600160205285600020610a0e565b5001610b0a8282546109d2565b905582519182526020820152a2565b509091925082600052600160205260406000209160405191610b3a83610932565b848352602083019282845260408101948286528054680100000000000000008110156102eb57610b6f91600182018155610a0e565b919091610bf3577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60036020600192604051610c3581610932565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a89565b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff331660005260205260ff6040600020541615610cab5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615600014610db457806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff8316600052602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4600190565b5050600090565b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416600014610db457806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a460019056fea26469706673582212201d1e00f1cd0fe4cf2ade62508866cbc60e4cc02753d6cf19787be0c7b78dadc764736f6c634300081b0033ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5",
  "deployedBytecode": "0x608080604052600436101561001357600080fd5b60003560e01c90816301ffc9a71461081b57508063248a9ca3146107e65780632f2ff15d146107a657806336568abe1461073a578063704e2b2d146106ff57806386d1a69f146103d657806391d148541461037b578063a217fddf1461035f578063d547741f1461031a578063f4753b38146101ae578063f74bc9d6146100f95763fc0c546a146100a357600080fd5b346100f45760006003193601126100f457602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b600080fd5b346100f45760606003193601126100f45761011261090f565b3360009081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff161561015c5761015a906044359060243590610a2a565b005b7fe2517d3f00000000000000000000000000000000000000000000000000000000600052336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260446000fd5b346100f45760206003193601126100f45773ffffffffffffffffffffffffffffffffffffffff6101dc61090f565b166000526001602052604060002080549067ffffffffffffffff82116102eb576040519161021060208260051b018461094e565b80835260208301809260005260206000206000915b83831061029e5784866040519182916020830190602084525180915260408301919060005b818110610258575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261024a565b600360206001926040516102b181610932565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610225565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b346100f45760406003193601126100f45761015a6004356103396108ec565b9061035a61035582600052600060205260016040600020015490565b610c6f565b610dbb565b346100f45760006003193601126100f457602060405160008152f35b346100f45760406003193601126100f4576103946108ec565b600435600052600060205273ffffffffffffffffffffffffffffffffffffffff60406000209116600052602052602060ff604060002054166040519015158152f35b346100f45760006003193601126100f4573360005260016020526040600020805467ffffffffffffffff81116102eb576040519161041a60208360051b018461094e565b818352602083019060005260206000206000915b8383106106b257600085815b81518110156104f157426020610450838561098f565b5101511115610462575b60010161043a565b9161047e6001916040610475868661098f565b510151906109d2565b92602061048b828561098f565b510151604061049a838661098f565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a23360005281602052600060026104e78360408420610a0e565b500155905061045a565b82801561062e57604051907fa9059cbb0000000000000000000000000000000000000000000000000000000082523360048301526024820152602081604481600073ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af1908115610622576000916105e0575b501561058257005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b6020813d60201161061a575b816105f96020938361094e565b81010312610616575190811515820361061357508161057a565b80fd5b5080fd5b3d91506105ec565b6040513d6000823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b600360206001926040516106c581610932565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061042e565b346100f45760006003193601126100f45760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f45760406003193601126100f4576107536108ec565b3373ffffffffffffffffffffffffffffffffffffffff82160361077c5761015a90600435610dbb565b7f6697b2320000000000000000000000000000000000000000000000000000000060005260046000fd5b346100f45760406003193601126100f45761015a6004356107c56108ec565b906107e161035582600052600060205260016040600020015490565b610cdc565b346100f45760206003193601126100f4576020610813600435600052600060205260016040600020015490565b604051908152f35b346100f45760206003193601126100f457600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f457817f79e3001b000000000000000000000000000000000000000000000000000000006020931490811561088f575b5015158152f35b7f7965db0b000000000000000000000000000000000000000000000000000000008114915081156108c2575b5083610888565b7f01ffc9a700000000000000000000000000000000000000000000000000000000915014836108bb565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f457565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f457565b6060810190811067ffffffffffffffff8211176102eb57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102eb57604052565b80518210156109a35760209160051b010190565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b919082018092116109df57565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b80548210156109a3576000526003602060002091020190600090565b73ffffffffffffffffffffffffffffffffffffffff1690816000526001602052604060002092835467ffffffffffffffff81116102eb5760405194610a7560208360051b018761094e565b818652602086019060005260206000206000915b838310610c22575050505060005b8451811015610b19576020610aac828761098f565b5101518314610abd57600101610a97565b839450906002610afd604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac96600052600160205285600020610a0e565b5001610b0a8282546109d2565b905582519182526020820152a2565b509091925082600052600160205260406000209160405191610b3a83610932565b848352602083019282845260408101948286528054680100000000000000008110156102eb57610b6f91600182018155610a0e565b919091610bf3577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600060045260246000fd5b60036020600192604051610c3581610932565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a89565b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff331660005260205260ff6040600020541615610cab5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000006000523360045260245260446000fd5b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff6040600020541615600014610db457806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff8316600052602052604060002060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d600080a4600190565b5050600090565b806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260ff60406000205416600014610db457806000526000602052604060002073ffffffffffffffffffffffffffffffffffffffff831660005260205260406000207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b600080a460019056fea26469706673582212201d1e00f1cd0fe4cf2ade62508866cbc60e4cc02753d6cf19787be0c7b78dadc764736f6c634300081b0033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
