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