@settlemint/solidity-token-erc20-crowdsale
Version:
Smart contract set to build an ERC20 token sale in SettleMint
1 lines • 47.5 kB
JSON
{"abi":[{"type":"constructor","inputs":[{"name":"token_","type":"address","internalType":"contract IERC20"}],"stateMutability":"nonpayable"},{"type":"function","name":"DEFAULT_ADMIN_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"VAULT_CONTROLLER_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"addBeneficiary","inputs":[{"name":"beneficiary_","type":"address","internalType":"address"},{"name":"releaseTime_","type":"uint256","internalType":"uint256"},{"name":"tokenAmount_","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"getRoleAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"}],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"release","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"renounceRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"callerConfirmation","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"token","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"vestingFor","inputs":[{"name":"beneficiary_","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"tuple[]","internalType":"struct IVestingVault.Vesting[]","components":[{"name":"beneficiary","type":"address","internalType":"address"},{"name":"releaseTime","type":"uint256","internalType":"uint256"},{"name":"tokenAmount","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"event","name":"RoleAdminChanged","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"previousAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"newAdminRole","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"sender","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VestingLockedIn","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"releaseTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"VestingReleased","inputs":[{"name":"beneficiary","type":"address","indexed":true,"internalType":"address"},{"name":"releaseTime","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"tokenAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"error","name":"AccessControlBadConfirmation","inputs":[]},{"type":"error","name":"AccessControlUnauthorizedAccount","inputs":[{"name":"account","type":"address","internalType":"address"},{"name":"neededRole","type":"bytes32","internalType":"bytes32"}]}],"bytecode":{"object":"0x60a0346100f057601f61100d38819003918201601f19168301916001600160401b038311848410176100f4578084926020946040528339810103126100f057516001600160a01b03811681036100f05760805261005b33610108565b507f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd95f81815260208190527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a5805490829055604051927fbd79b86ffe0ab8e8776151514217cd7cacd52c909f66475c3af44e129f0b00ff8380a4610e5b9081610192823960805181818160cc01526105250152f35b5f80fd5b634e487b7160e01b5f52604160045260245ffd5b6001600160a01b0381165f9081525f516020610fed5f395f51905f52602052604090205460ff1661018c576001600160a01b03165f8181525f516020610fed5f395f51905f5260205260408120805460ff191660011790553391907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d8180a4600190565b505f9056fe6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107e557508063248a9ca3146107b35780632f2ff15d1461077657806336568abe1461070c578063704e2b2d146106d257806386d1a69f146103bc57806391d1485414610366578063a217fddf1461034c578063d547741f1461030a578063f4753b38146101a6578063f74bc9d6146100f45763fc0c546a146100a0575f80fd5b346100f0575f6003193601126100f057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b346100f05760606003193601126100f05761010d6108d9565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff1615610156576101549060443590602435906109ed565b005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100f05760206003193601126100f05773ffffffffffffffffffffffffffffffffffffffff6101d46108d9565b165f52600160205260405f2080549067ffffffffffffffff82116102dd576040519161020660208260051b0184610918565b8083526020830180925f5260205f205f915b838310610290578486604051918291602083019060208452518091526040830191905f5b81811061024a575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261023c565b600360206001926040516102a3816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610218565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100f05760406003193601126100f0576101546004356103296108b6565b90610347610342825f525f602052600160405f20015490565b610c25565b610d5d565b346100f0575f6003193601126100f05760206040515f8152f35b346100f05760406003193601126100f05761037f6108b6565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346100f0575f6003193601126100f057335f52600160205260405f20805467ffffffffffffffff81116102dd57604051916103fd60208360051b0184610918565b81835260208301905f5260205f205f915b838310610685575f85815b81518110156104ce5742602061042f8385610959565b5101511115610441575b600101610419565b9161045d60019160406104548686610959565b5101519061099a565b92602061046a8285610959565b51015160406104798386610959565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f60026104c483604084206109d4565b5001559050610439565b82801561060157604051907fa9059cbb00000000000000000000000000000000000000000000000000000000825233600483015260248201526020816044815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156105f6575f916105bb575b501561055d57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b90506020813d6020116105ee575b816105d660209383610918565b810103126100f0575180151581036100f05781610555565b3d91506105c9565b6040513d5f823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b60036020600192604051610698816108fc565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061040e565b346100f0575f6003193601126100f05760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f05760406003193601126100f0576107256108b6565b3373ffffffffffffffffffffffffffffffffffffffff82160361074e5761015490600435610d5d565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346100f05760406003193601126100f0576101546004356107956108b6565b906107ae610342825f525f602052600160405f20015490565b610c8b565b346100f05760206003193601126100f05760206107dd6004355f525f602052600160405f20015490565b604051908152f35b346100f05760206003193601126100f057600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f057817f79e3001b0000000000000000000000000000000000000000000000000000000060209314908115610859575b5015158152f35b7f7965db0b0000000000000000000000000000000000000000000000000000000081149150811561088c575b5083610852565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610885565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6060810190811067ffffffffffffffff8211176102dd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b805182101561096d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116109a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805482101561096d575f52600360205f20910201905f90565b73ffffffffffffffffffffffffffffffffffffffff1690815f52600160205260405f2092835467ffffffffffffffff81116102dd5760405194610a3660208360051b0187610918565b81865260208601905f5260205f205f915b838310610bd857505050505f5b8451811015610ad4576020610a698287610959565b5101518314610a7a57600101610a54565b839450906002610ab8604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206109d4565b5001610ac582825461099a565b905582519182526020820152a2565b5090919250825f52600160205260405f209160405191610af3836108fc565b848352602083019282845260408101948286528054680100000000000000008110156102dd57610b28916001820181556109d4565b919091610bac577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b60036020600192604051610beb816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a47565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615610c5c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a460019056fea2646970667358221220c386890e283e7a9b1235dfdf766bea40fe553c26fd4fac546db103a3d78df6b764736f6c634300081b0033ad3228b676f7d3cd4284a5443f17f1962b36e491b30a40b2405849e597ba5fb5","sourceMap":"406:2932:9:-:0;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;-1:-1:-1;;;;;406:2932:9;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;406:2932:9;;;;;;689:15;;714:42;745:10;714:42;:::i;:::-;-1:-1:-1;522:34:9;-1:-1:-1;406:2932:9;;;;;;;3901:22:29;406:2932:9;;;;;;;;;5886:52:29;-1:-1:-1;;5886:52:29;406:2932:9;;;;;;689:15;406:2932;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;;;;-1:-1:-1;406:2932:9;;;;;-1:-1:-1;406:2932:9;6179:316:29;-1:-1:-1;;;;;406:2932:9;;2232:4:29;406:2932:9;;;-1:-1:-1;;;;;;;;;;;406:2932:9;;;;;;;;;;-1:-1:-1;;;;;406:2932:9;2232:4:29;406:2932:9;;;-1:-1:-1;;;;;;;;;;;406:2932:9;;;;;;;-1:-1:-1;;406:2932:9;;;;;735:10:42;;406:2932:9;6370:40:29;2232:4;;6370:40;6347:4;6424:11;:::o;6272:217::-;6466:12;2232:4;6466:12;:::o","linkReferences":{}},"deployedBytecode":{"object":"0x6080806040526004361015610012575f80fd5b5f3560e01c90816301ffc9a7146107e557508063248a9ca3146107b35780632f2ff15d1461077657806336568abe1461070c578063704e2b2d146106d257806386d1a69f146103bc57806391d1485414610366578063a217fddf1461034c578063d547741f1461030a578063f4753b38146101a6578063f74bc9d6146100f45763fc0c546a146100a0575f80fd5b346100f0575f6003193601126100f057602060405173ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000168152f35b5f80fd5b346100f05760606003193601126100f05761010d6108d9565b335f9081527f18b789f689298f9861c64acec43fb83a444fe0a0d93f282ad4f66651300c99a4602052604090205460ff1615610156576101549060443590602435906109ed565b005b7fe2517d3f000000000000000000000000000000000000000000000000000000005f52336004527f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd960245260445ffd5b346100f05760206003193601126100f05773ffffffffffffffffffffffffffffffffffffffff6101d46108d9565b165f52600160205260405f2080549067ffffffffffffffff82116102dd576040519161020660208260051b0184610918565b8083526020830180925f5260205f205f915b838310610290578486604051918291602083019060208452518091526040830191905f5b81811061024a575050500390f35b91935091602060606001926040875173ffffffffffffffffffffffffffffffffffffffff815116835284810151858401520151604082015201940191019184939261023c565b600360206001926040516102a3816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610218565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b346100f05760406003193601126100f0576101546004356103296108b6565b90610347610342825f525f602052600160405f20015490565b610c25565b610d5d565b346100f0575f6003193601126100f05760206040515f8152f35b346100f05760406003193601126100f05761037f6108b6565b6004355f525f60205273ffffffffffffffffffffffffffffffffffffffff60405f2091165f52602052602060ff60405f2054166040519015158152f35b346100f0575f6003193601126100f057335f52600160205260405f20805467ffffffffffffffff81116102dd57604051916103fd60208360051b0184610918565b81835260208301905f5260205f205f915b838310610685575f85815b81518110156104ce5742602061042f8385610959565b5101511115610441575b600101610419565b9161045d60019160406104548686610959565b5101519061099a565b92602061046a8285610959565b51015160406104798386610959565b51015160405191825260208201527fc35bc0b152cc4084b62942d2235605f7e5db6fc6217bc7ef532ba71acf7a58ce60403392a2335f52816020525f60026104c483604084206109d4565b5001559050610439565b82801561060157604051907fa9059cbb00000000000000000000000000000000000000000000000000000000825233600483015260248201526020816044815f73ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000165af19081156105f6575f916105bb575b501561055d57005b60646040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f546f6b656e207472616e7366657220756e7375636365737366756c00000000006044820152fd5b90506020813d6020116105ee575b816105d660209383610918565b810103126100f0575180151581036100f05781610555565b3d91506105c9565b6040513d5f823e3d90fd5b60846040517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152602560248201527f56657374696e675661756c743a2043616e6e6f742072656c656173652030207460448201527f6f6b656e730000000000000000000000000000000000000000000000000000006064820152fd5b60036020600192604051610698816108fc565b73ffffffffffffffffffffffffffffffffffffffff865416815284860154838201526002860154604082015281520192019201919061040e565b346100f0575f6003193601126100f05760206040517f9872d9a33a826e6fa63de183f4672fa7578a62703fcc3dcc926810a2b5a12fd98152f35b346100f05760406003193601126100f0576107256108b6565b3373ffffffffffffffffffffffffffffffffffffffff82160361074e5761015490600435610d5d565b7f6697b232000000000000000000000000000000000000000000000000000000005f5260045ffd5b346100f05760406003193601126100f0576101546004356107956108b6565b906107ae610342825f525f602052600160405f20015490565b610c8b565b346100f05760206003193601126100f05760206107dd6004355f525f602052600160405f20015490565b604051908152f35b346100f05760206003193601126100f057600435907fffffffff0000000000000000000000000000000000000000000000000000000082168092036100f057817f79e3001b0000000000000000000000000000000000000000000000000000000060209314908115610859575b5015158152f35b7f7965db0b0000000000000000000000000000000000000000000000000000000081149150811561088c575b5083610852565b7f01ffc9a70000000000000000000000000000000000000000000000000000000091501483610885565b6024359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6004359073ffffffffffffffffffffffffffffffffffffffff821682036100f057565b6060810190811067ffffffffffffffff8211176102dd57604052565b90601f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0910116810190811067ffffffffffffffff8211176102dd57604052565b805182101561096d5760209160051b010190565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b919082018092116109a757565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b805482101561096d575f52600360205f20910201905f90565b73ffffffffffffffffffffffffffffffffffffffff1690815f52600160205260405f2092835467ffffffffffffffff81116102dd5760405194610a3660208360051b0187610918565b81865260208601905f5260205f205f915b838310610bd857505050505f5b8451811015610ad4576020610a698287610959565b5101518314610a7a57600101610a54565b839450906002610ab8604094937f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac965f526001602052855f206109d4565b5001610ac582825461099a565b905582519182526020820152a2565b5090919250825f52600160205260405f209160405191610af3836108fc565b848352602083019282845260408101948286528054680100000000000000008110156102dd57610b28916001820181556109d4565b919091610bac577f970b25b911957fbf97ef28d72fcbb6175e7b3b97729a26ef75ce09e4a72c0fac9560409573ffffffffffffffffffffffffffffffffffffffff60029351167fffffffffffffffffffffffff00000000000000000000000000000000000000008554161784555160018401555191015582519182526020820152a2565b7f4e487b71000000000000000000000000000000000000000000000000000000005f525f60045260245ffd5b60036020600192604051610beb816108fc565b73ffffffffffffffffffffffffffffffffffffffff8654168152848601548382015260028601546040820152815201920192019190610a47565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff33165f5260205260ff60405f20541615610c5c5750565b7fe2517d3f000000000000000000000000000000000000000000000000000000005f523360045260245260445ffd5b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f205416155f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f2060017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0082541617905573ffffffffffffffffffffffffffffffffffffffff339216907f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d5f80a4600190565b50505f90565b805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260ff60405f2054165f14610d5757805f525f60205260405f2073ffffffffffffffffffffffffffffffffffffffff83165f5260205260405f207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00815416905573ffffffffffffffffffffffffffffffffffffffff339216907ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b5f80a460019056fea2646970667358221220c386890e283e7a9b1235dfdf766bea40fe553c26fd4fac546db103a3d78df6b764736f6c634300081b0033","sourceMap":"406:2932:9:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;;;2250:6;406:2932;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;:::i;:::-;735:10:42;406:2932:9;;;;;;;;;;;;;3519:23:29;3515:108;;2490:1;406:2932:9;;;;;;2490:1:29;;:::i;:::-;406:2932:9;3515:108:29;3565:47;406:2932:9;3565:47:29;735:10:42;406:2932:9;;522:34;406:2932;;;;3565:47:29;406:2932:9;;;;;-1:-1:-1;;406:2932:9;;;;;;;;:::i;:::-;;;;2507:8;406:2932;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:8;406:2932;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2507:8;406:2932;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;4747:26:29;406:2932:9;;;;:::i;:::-;4717:18:29;2475:4;4717:18;;3901:6;406:2932:9;3901:6:29;406:2932:9;;3901:22:29;406:2932:9;3901:6:29;406:2932:9;3901:22:29;406:2932:9;3810:120:29;;4717:18;2475:4;:::i;:::-;4747:26;:::i;406:2932:9:-;;;;;-1:-1:-1;;406:2932:9;;;;;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;:::i;:::-;;;;;;;;;;;;2954:29:29;406:2932:9;-1:-1:-1;406:2932:9;;;;;;-1:-1:-1;406:2932:9;;;;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;735:10:42;406:2932:9;;2681:8;406:2932;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;2713:27;406:2932;2791:3;406:2932;;2770:19;;;;;2841:15;406:2932;2814:11;;;;:::i;:::-;;:23;406:2932;2814:42;;2810:301;;2791:3;2681:8;406:2932;2755:13;;2810:301;2912:11;2894:41;2681:8;2912:11;406:2932;2912:11;;;;:::i;:::-;;:23;406:2932;2894:41;;:::i;:::-;2988:11;406:2932;2988:11;;;;:::i;:::-;;:23;406:2932;;3013:11;;;;:::i;:::-;;:23;406:2932;;;;;;;;;;2958:79;406:2932;735:10:42;2958:79:9;;735:10:42;406:2932:9;;;;;;;3055:25;406:2932;;;;3055:25;:::i;:::-;:37;;406:2932;2810:301;;;;2770:19;;3138;;406:2932;;;;3225:47;406:2932;3225:47;;735:10:42;406:2932:9;3225:47;;406:2932;;;;;;2250:6;3225:47;2250:6;406:2932;;2250:6;406:2932;3225:47;;;;;;;406:2932;3225:47;;;2750:371;406:2932;;;;;;;;;;;;;;;;;;;;;;;3225:47;406:2932;;;;3225:47;;;406:2932;3225:47;;406:2932;3225:47;;;;;;406:2932;3225:47;;;:::i;:::-;;;406:2932;;;;;;;;;;;;3225:47;;;;;;-1:-1:-1;3225:47:9;;;406:2932;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2681:8;406:2932;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;;522:34;406:2932;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;:::i;:::-;735:10:42;406:2932:9;;;5421:34:29;5417:102;;5529:37;406:2932:9;;;5529:37:29;:::i;5417:102::-;5478:30;406:2932:9;5478:30:29;406:2932:9;;5478:30:29;406:2932:9;;;;;-1:-1:-1;;406:2932:9;;;;;4330:25:29;406:2932:9;;;;:::i;:::-;4300:18:29;2475:4;4300:18;;3901:6;406:2932:9;3901:6:29;406:2932:9;;3901:22:29;406:2932:9;3901:6:29;406:2932:9;3901:22:29;406:2932:9;3810:120:29;;2475:4;4330:25;:::i;406:2932:9:-;;;;;-1:-1:-1;;406:2932:9;;;;;;;;;3901:6:29;406:2932:9;3901:6:29;406:2932:9;;3901:22:29;406:2932:9;3901:6:29;406:2932:9;3901:22:29;406:2932:9;3810:120:29;;406:2932:9;;;;;;;;;;;;-1:-1:-1;;406:2932:9;;;;;;;;;;;;;;;;966:46;981:31;406:2932;966:46;;:86;;;;;406:2932;;;;;;;966:86;2688:32:29;2673:47;;;-1:-1:-1;2673:87:29;;;;966:86:9;;;;;2673:87:29;877:25:46;862:40;;;2673:87:29;;;406:2932:9;;;;;;;;;;;:::o;:::-;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;-1:-1:-1;406:2932:9;;;;;-1:-1:-1;406:2932:9;:::o;1347:755::-;406:2932;;;;-1:-1:-1;406:2932:9;1581:8;406:2932;;;-1:-1:-1;406:2932:9;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;406:2932:9;;-1:-1:-1;406:2932:9;-1:-1:-1;406:2932:9;;;;;;;1619:13;;;;-1:-1:-1;1655:3:9;406:2932;;1634:19;;;;;406:2932;1694:11;;;;:::i;:::-;;:23;406:2932;1678:39;;1674:235;;1581:8;406:2932;1619:13;;1674:235;406:2932;;;;;1737:25;406:2932;;;1813:57;406:2932;-1:-1:-1;406:2932:9;1581:8;406:2932;;;-1:-1:-1;406:2932:9;1737:25;:::i;:::-;:37;;:53;406:2932;;;1737:53;:::i;:::-;406:2932;;;;;;;;;;;1813:57;1888:7::o;1634:19::-;;;;;;406:2932;-1:-1:-1;406:2932:9;1581:8;406:2932;;;-1:-1:-1;406:2932:9;;;;;;;;:::i;:::-;;;;;1957:49;;406:2932;;;;;1957:49;;406:2932;;;;;;;;;;;;;;1581:8;406:2932;;;;;:::i;:::-;;;;;;2022:57;406:2932;;;;;;;;;;;;;;;;1581:8;406:2932;;;;;;;;;;;;;;;;2022:57;1347:755::o;406:2932::-;;-1:-1:-1;406:2932:9;-1:-1:-1;406:2932:9;;;-1:-1:-1;406:2932:9;;;;1581:8;406:2932;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3199:103:29;406:2932:9;2954:6:29;406:2932:9;2954:6:29;406:2932:9;;;2954:6:29;406:2932:9;;735:10:42;406:2932:9;-1:-1:-1;406:2932:9;;;;;-1:-1:-1;406:2932:9;;;3519:23:29;3515:108;;3199:103;:::o;3515:108::-;3565:47;2954:6;3565:47;735:10:42;3565:47:29;406:2932:9;;;;2954:6:29;3565:47;6179:316;406:2932:9;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;;;-1:-1:-1;406:2932:9;;;6276:23:29;6272:217;406:2932:9;;;;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;;-1:-1:-1;406:2932:9;6347:4:29;406:2932:9;;;;;;;;735:10:42;406:2932:9;;6370:40:29;;406:2932:9;6370:40:29;;6347:4;6424:11;:::o;6272:217::-;6466:12;;406:2932:9;6466:12:29;:::o;6732:317::-;406:2932:9;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;;;-1:-1:-1;406:2932:9;;;6826:217:29;406:2932:9;;;;;;;;;;;;;;;-1:-1:-1;406:2932:9;;;;-1:-1:-1;406:2932:9;;;;;;;;735:10:42;406:2932:9;;6924:40:29;;406:2932:9;6924:40:29;;406:2932:9;6978:11:29;:::o","linkReferences":{},"immutableReferences":{"1017":[{"start":204,"length":32},{"start":1317,"length":32}]}},"methodIdentifiers":{"DEFAULT_ADMIN_ROLE()":"a217fddf","VAULT_CONTROLLER_ROLE()":"704e2b2d","addBeneficiary(address,uint256,uint256)":"f74bc9d6","getRoleAdmin(bytes32)":"248a9ca3","grantRole(bytes32,address)":"2f2ff15d","hasRole(bytes32,address)":"91d14854","release()":"86d1a69f","renounceRole(bytes32,address)":"36568abe","revokeRole(bytes32,address)":"d547741f","supportsInterface(bytes4)":"01ffc9a7","token()":"fc0c546a","vestingFor(address)":"f4753b38"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.27+commit.40a35a09\"},\"language\":\"Solidity\",\"output\":{\"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\"}],\"devdoc\":{\"errors\":{\"AccessControlBadConfirmation()\":[{\"details\":\"The caller of a function is not the expected one. NOTE: Don't confuse with {AccessControlUnauthorizedAccount}.\"}],\"AccessControlUnauthorizedAccount(address,bytes32)\":[{\"details\":\"The `account` is missing a role.\"}]},\"events\":{\"RoleAdminChanged(bytes32,bytes32,bytes32)\":{\"details\":\"Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole` `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite {RoleAdminChanged} not being emitted to signal this.\"},\"RoleGranted(bytes32,address,address)\":{\"details\":\"Emitted when `account` is granted `role`. `sender` is the account that originated the contract call. This account bears the admin role (for the granted role). Expected in cases where the role was granted using the internal {AccessControl-_grantRole}.\"},\"RoleRevoked(bytes32,address,address)\":{\"details\":\"Emitted when `account` is revoked `role`. `sender` is the account that originated the contract call: - if using `revokeRole`, it is the admin role bearer - if using `renounceRole`, it is the role bearer (i.e. `account`)\"}},\"kind\":\"dev\",\"methods\":{\"addBeneficiary(address,uint256,uint256)\":{\"details\":\"function to create a vesting for the beneficiary\",\"params\":{\"beneficiary_\":\"Beneficiary of tokens after they are released\",\"releaseTime_\":\"Timestamp when token release is enabled\",\"tokenAmount_\":\"Amount of tokens to release\"}},\"getRoleAdmin(bytes32)\":{\"details\":\"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}.\"},\"grantRole(bytes32,address)\":{\"details\":\"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event.\"},\"hasRole(bytes32,address)\":{\"details\":\"Returns `true` if `account` has been granted `role`.\"},\"release()\":{\"details\":\"releases the tokens of the msg sender\"},\"renounceRole(bytes32,address)\":{\"details\":\"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event.\"},\"token()\":{\"returns\":{\"_0\":\"the address of the token being stored.\"}},\"vestingFor(address)\":{\"params\":{\"beneficiary_\":\"the address for which the vesting is returned\"},\"returns\":{\"_0\":\"the vesting for an address\"}}},\"title\":\"VestingVault\",\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/library/VestingVault.sol\":\"VestingVault\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/=node_modules/@openzeppelin/\",\":eth-gas-reporter/=node_modules/eth-gas-reporter/\",\":forge-std/=lib/forge-std/src/\",\":hardhat/=node_modules/hardhat/\"],\"viaIR\":true},\"sources\":{\"contracts/library/IVestingVault.sol\":{\"keccak256\":\"0xf3f074546fdb24b8d2889ffd7947b5134669f1eb47c4baf30abf4663f6d320d7\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://e13d929241510074238c4d3797aeaa9a8f3bea58c9d8beab73c2a39583dcf56e\",\"dweb:/ipfs/QmNX2cSo1uxxuviE5SL8wUgMgC2DBrDEyZa8KVd9DipUAU\"]},\"contracts/library/VestingVault.sol\":{\"keccak256\":\"0x0386c58188ed9a89f544a617e7b628210935857895b07549854a19e140a1b21c\",\"license\":\"FSL-1.1-MIT\",\"urls\":[\"bzz-raw://c2d8275e0105f4a6c134acb7057706b00c437e3b5e72185479024343346ab1ee\",\"dweb:/ipfs/QmegrKCswosuTqn2uizDBKmrMFboBN9ATcXPVcyLzbUpdR\"]},\"node_modules/@openzeppelin/contracts/access/AccessControl.sol\":{\"keccak256\":\"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67\",\"dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx\"]},\"node_modules/@openzeppelin/contracts/access/IAccessControl.sol\":{\"keccak256\":\"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0\",\"dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/utils/Context.sol\":{\"keccak256\":\"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12\",\"dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol\":{\"keccak256\":\"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287\",\"dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.27+commit.40a35a09"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"contract IERC20","name":"token_","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"type":"error","name":"AccessControlBadConfirmation"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bytes32","name":"neededRole","type":"bytes32"}],"type":"error","name":"AccessControlUnauthorizedAccount"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"previousAdminRole","type":"bytes32","indexed":true},{"internalType":"bytes32","name":"newAdminRole","type":"bytes32","indexed":true}],"type":"event","name":"RoleAdminChanged","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":true},{"internalType":"uint256","name":"releaseTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"tokenAmount","type":"uint256","indexed":false}],"type":"event","name":"VestingLockedIn","anonymous":false},{"inputs":[{"internalType":"address","name":"beneficiary","type":"address","indexed":true},{"internalType":"uint256","name":"releaseTime","type":"uint256","indexed":false},{"internalType":"uint256","name":"tokenAmount","type":"uint256","indexed":false}],"type":"event","name":"VestingReleased","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"DEFAULT_ADMIN_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"VAULT_CONTROLLER_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"address","name":"beneficiary_","type":"address"},{"internalType":"uint256","name":"releaseTime_","type":"uint256"},{"internalType":"uint256","name":"tokenAmount_","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"addBeneficiary"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"}],"stateMutability":"view","type":"function","name":"getRoleAdmin","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRole","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"release"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"callerConfirmation","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"renounceRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}]},{"inputs":[{"internalType":"address","name":"beneficiary_","type":"address"}],"stateMutability":"view","type":"function","name":"vestingFor","outputs":[{"internalType":"struct IVestingVault.Vesting[]","name":"","type":"tuple[]","components":[{"internalType":"address","name":"beneficiary","type":"address"},{"internalType":"uint256","name":"releaseTime","type":"uint256"},{"internalType":"uint256","name":"tokenAmount","type":"uint256"}]}]}],"devdoc":{"kind":"dev","methods":{"addBeneficiary(address,uint256,uint256)":{"details":"function to create a vesting for the beneficiary","params":{"beneficiary_":"Beneficiary of tokens after they are released","releaseTime_":"Timestamp when token release is enabled","tokenAmount_":"Amount of tokens to release"}},"getRoleAdmin(bytes32)":{"details":"Returns the admin role that controls `role`. See {grantRole} and {revokeRole}. To change a role's admin, use {_setRoleAdmin}."},"grantRole(bytes32,address)":{"details":"Grants `role` to `account`. If `account` had not been already granted `role`, emits a {RoleGranted} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleGranted} event."},"hasRole(bytes32,address)":{"details":"Returns `true` if `account` has been granted `role`."},"release()":{"details":"releases the tokens of the msg sender"},"renounceRole(bytes32,address)":{"details":"Revokes `role` from the calling account. Roles are often managed via {grantRole} and {revokeRole}: this function's purpose is to provide a mechanism for accounts to lose their privileges if they are compromised (such as when a trusted device is misplaced). If the calling account had been revoked `role`, emits a {RoleRevoked} event. Requirements: - the caller must be `callerConfirmation`. May emit a {RoleRevoked} event."},"revokeRole(bytes32,address)":{"details":"Revokes `role` from `account`. If `account` had been granted `role`, emits a {RoleRevoked} event. Requirements: - the caller must have ``role``'s admin role. May emit a {RoleRevoked} event."},"token()":{"returns":{"_0":"the address of the token being stored."}},"vestingFor(address)":{"params":{"beneficiary_":"the address for which the vesting is returned"},"returns":{"_0":"the vesting for an address"}}},"version":1},"userdoc":{"kind":"user","methods":{},"version":1}},"settings":{"remappings":["@openzeppelin/=node_modules/@openzeppelin/","eth-gas-reporter/=node_modules/eth-gas-reporter/","forge-std/=lib/forge-std/src/","hardhat/=node_modules/hardhat/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"contracts/library/VestingVault.sol":"VestingVault"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"contracts/library/IVestingVault.sol":{"keccak256":"0xf3f074546fdb24b8d2889ffd7947b5134669f1eb47c4baf30abf4663f6d320d7","urls":["bzz-raw://e13d929241510074238c4d3797aeaa9a8f3bea58c9d8beab73c2a39583dcf56e","dweb:/ipfs/QmNX2cSo1uxxuviE5SL8wUgMgC2DBrDEyZa8KVd9DipUAU"],"license":"FSL-1.1-MIT"},"contracts/library/VestingVault.sol":{"keccak256":"0x0386c58188ed9a89f544a617e7b628210935857895b07549854a19e140a1b21c","urls":["bzz-raw://c2d8275e0105f4a6c134acb7057706b00c437e3b5e72185479024343346ab1ee","dweb:/ipfs/QmegrKCswosuTqn2uizDBKmrMFboBN9ATcXPVcyLzbUpdR"],"license":"FSL-1.1-MIT"},"node_modules/@openzeppelin/contracts/access/AccessControl.sol":{"keccak256":"0xc1bebdee8943bd5e9ef1e0f2e63296aa1dd4171a66b9e74d0286220e891e1458","urls":["bzz-raw://928cf2f0042c606f3dcb21bd8a272573f462a215cd65285d2d6b407f31e9bd67","dweb:/ipfs/QmWGxjckno6sfjHPX5naPnsfsyisgy4PJDf46eLw9umfpx"],"license":"MIT"},"node_modules/@openzeppelin/contracts/access/IAccessControl.sol":{"keccak256":"0x4d9a2b261b56a1e4a37bb038151dec98b952fed16de2bdfdda27e38e2b12b530","urls":["bzz-raw://f724110f7aeb6151af800ab8c12e6060b29bda9e013f0ccb331eb754d6a7cbf0","dweb:/ipfs/QmUcjzCZpxtUPdEThtAzE1f9LvuJiUGZxTdH9N6bHrb5Cf"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7","urls":["bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db","dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/Context.sol":{"keccak256":"0x493033a8d1b176a037b2cc6a04dad01a5c157722049bbecf632ca876224dd4b2","urls":["bzz-raw://6a708e8a5bdb1011c2c381c9a5cfd8a9a956d7d0a9dc1bd8bcdaf52f76ef2f12","dweb:/ipfs/Qmax9WHBnVsZP46ZxEMNRQpLQnrdE4dK8LehML1Py8FowF"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/ERC165.sol":{"keccak256":"0xddce8e17e3d3f9ed818b4f4c4478a8262aab8b11ed322f1bf5ed705bb4bd97fa","urls":["bzz-raw://8084aa71a4cc7d2980972412a88fe4f114869faea3fefa5436431644eb5c0287","dweb:/ipfs/Qmbqfs5dRdPvHVKY8kTaeyc65NdqXRQwRK7h9s5UJEhD1p"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8","urls":["bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621","dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"],"license":"MIT"}},"version":1},"id":9}