{"abi":[{"type":"function","name":"MAX_STETH_WITHDRAWAL_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MIN_STETH_WITHDRAWAL_AMOUNT","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"STETH","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"claimWithdrawal","inputs":[{"name":"_requestId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"claimWithdrawals","inputs":[{"name":"_requestIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_hints","type":"uint256[]","internalType":"uint256[]"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"finalize","inputs":[{"name":"_lastRequestIdToBeFinalized","type":"uint256","internalType":"uint256"},{"name":"_maxShareRate","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"findCheckpointHints","inputs":[{"name":"_requestIds","type":"uint256[]","internalType":"uint256[]"},{"name":"_firstIndex","type":"uint256","internalType":"uint256"},{"name":"_lastIndex","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"hintIds","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"view"},{"type":"function","name":"getLastCheckpointIndex","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getLastRequestId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"requestWithdrawals","inputs":[{"name":"_amounts","type":"uint256[]","internalType":"uint256[]"},{"name":"_owner","type":"address","internalType":"address"}],"outputs":[{"name":"requestIds","type":"uint256[]","internalType":"uint256[]"}],"stateMutability":"nonpayable"}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_STETH_WITHDRAWAL_AMOUNT()":"db2296cd","MIN_STETH_WITHDRAWAL_AMOUNT()":"0d25a957","STETH()":"e00bfe50","claimWithdrawal(uint256)":"f8444436","claimWithdrawals(uint256[],uint256[])":"e3afe0a3","finalize(uint256,uint256)":"b6013cef","findCheckpointHints(uint256[],uint256,uint256)":"62abe3fa","getLastCheckpointIndex()":"526eae3e","getLastRequestId()":"19c2b4c3","requestWithdrawals(uint256[],address)":"d6681042"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.25+commit.b61c2a91\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"MAX_STETH_WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MIN_STETH_WITHDRAWAL_AMOUNT\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_requestId\",\"type\":\"uint256\"}],\"name\":\"claimWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_hints\",\"type\":\"uint256[]\"}],\"name\":\"claimWithdrawals\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_lastRequestIdToBeFinalized\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_maxShareRate\",\"type\":\"uint256\"}],\"name\":\"finalize\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_requestIds\",\"type\":\"uint256[]\"},{\"internalType\":\"uint256\",\"name\":\"_firstIndex\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_lastIndex\",\"type\":\"uint256\"}],\"name\":\"findCheckpointHints\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"hintIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastCheckpointIndex\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getLastRequestId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256[]\",\"name\":\"_amounts\",\"type\":\"uint256[]\"},{\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"requestWithdrawals\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"requestIds\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"MAX_STETH_WITHDRAWAL_AMOUNT()\":{\"details\":\"To withdraw larger amounts, it's recommended to split it to several requests\"},\"claimWithdrawal(uint256)\":{\"details\":\"use unbounded loop to find a hint, which can lead to OOGReverts if requestId or hint are not valid  Reverts if request is not finalized or already claimed  Reverts if msg sender is not an owner of request\",\"params\":{\"_requestId\":\"request id to claim\"}},\"claimWithdrawals(uint256[],uint256[])\":{\"details\":\"Reverts if requestIds and hints arrays length differs  Reverts if any requestId or hint in arguments are not valid  Reverts if any request is not finalized or already claimed  Reverts if msg sender is not an owner of the requests\",\"params\":{\"_hints\":\"checkpoint hint for each id. Can be obtained with `findCheckpointHints()`\",\"_requestIds\":\"array of request ids to claim\"}},\"finalize(uint256,uint256)\":{\"details\":\"ether to finalize all the requests should be calculated using `prefinalize()` and sent along\"},\"findCheckpointHints(uint256[],uint256,uint256)\":{\"params\":{\"_firstIndex\":\"left boundary of the search range. Should be greater than 0\",\"_lastIndex\":\"right boundary of the search range. Should be less than or equal to getLastCheckpointIndex()\",\"_requestIds\":\"ids of the requests sorted in the ascending order to get hints for\"},\"returns\":{\"hintIds\":\"array of hints used to find required checkpoint for the request\"}},\"requestWithdrawals(uint256[],address)\":{\"params\":{\"_amounts\":\"an array of stETH amount values.  The standalone withdrawal request will be created for each item in the passed list.\",\"_owner\":\"address that will be able to manage the created requests.  If `address(0)` is passed, `msg.sender` will be used as owner.\"},\"returns\":{\"requestIds\":\"an array of the created withdrawal request ids\"}}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{\"MAX_STETH_WITHDRAWAL_AMOUNT()\":{\"notice\":\"maximum amount of stETH that is possible to withdraw by a single request Prevents accumulating too much funds per single request fulfillment in the future.\"},\"MIN_STETH_WITHDRAWAL_AMOUNT()\":{\"notice\":\"minimal amount of stETH that is possible to withdraw\"},\"STETH()\":{\"notice\":\"Lido stETH token address\"},\"claimWithdrawal(uint256)\":{\"notice\":\"Claim one`_requestId` request once finalized sending locked ether to the owner\"},\"claimWithdrawals(uint256[],uint256[])\":{\"notice\":\"Claim a batch of withdrawal requests if they are finalized sending locked ether to the owner\"},\"finalize(uint256,uint256)\":{\"notice\":\"Finalize requests from last finalized one up to `_lastRequestIdToBeFinalized`\"},\"findCheckpointHints(uint256[],uint256,uint256)\":{\"notice\":\"Finds the list of hints for the given `_requestIds` searching among the checkpoints with indices  in the range  `[_firstIndex, _lastIndex]`.  NB! Array of request ids should be sorted  NB! `_firstIndex` should be greater than 0, because checkpoint list is 1-based array  Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())\"},\"getLastCheckpointIndex()\":{\"notice\":\"length of the checkpoint array. Last possible value for the hint.  NB! checkpoints are indexed from 1, so it returns 0 if there is no checkpoints\"},\"getLastRequestId()\":{\"notice\":\"id of the last request  NB! requests are indexed from 1, so it returns 0 if there is no requests in the queue\"},\"requestWithdrawals(uint256[],address)\":{\"notice\":\"Request the batch of stETH for withdrawal. Approvals for the passed amounts should be done before.\"}},\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/burners/wstETH/IWithdrawalQueue.sol\":\"IWithdrawalQueue\"},\"evmVersion\":\"cancun\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":200},\"remappings\":[\":@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/\",\":@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/\",\":@symbioticfi/core/=lib/core/\",\":core/=lib/core/\",\":ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/\",\":erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/\",\":forge-std/=lib/forge-std/src/\",\":openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/\",\":openzeppelin-contracts/=lib/openzeppelin-contracts/\"],\"viaIR\":true},\"sources\":{\"src/interfaces/burners/wstETH/IWithdrawalQueue.sol\":{\"keccak256\":\"0x1cb14f7e9be04106aa2f6335fa2bf84aeefbc5d97d9a6bb2784f5eaac4b91b97\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4df556f32a40e3a3e90ad35b8909eefcb0697fd7ef04d60b85fa7073ae7aec7a\",\"dweb:/ipfs/Qmbz6nvFiEJmYt28EE7rrq4NoPuqmEsFTHrwWWoBXti1vJ\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.25+commit.b61c2a91"},"language":"Solidity","output":{"abi":[{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_STETH_WITHDRAWAL_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MIN_STETH_WITHDRAWAL_AMOUNT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"STETH","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"_requestId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"claimWithdrawal"},{"inputs":[{"internalType":"uint256[]","name":"_requestIds","type":"uint256[]"},{"internalType":"uint256[]","name":"_hints","type":"uint256[]"}],"stateMutability":"nonpayable","type":"function","name":"claimWithdrawals"},{"inputs":[{"internalType":"uint256","name":"_lastRequestIdToBeFinalized","type":"uint256"},{"internalType":"uint256","name":"_maxShareRate","type":"uint256"}],"stateMutability":"payable","type":"function","name":"finalize"},{"inputs":[{"internalType":"uint256[]","name":"_requestIds","type":"uint256[]"},{"internalType":"uint256","name":"_firstIndex","type":"uint256"},{"internalType":"uint256","name":"_lastIndex","type":"uint256"}],"stateMutability":"view","type":"function","name":"findCheckpointHints","outputs":[{"internalType":"uint256[]","name":"hintIds","type":"uint256[]"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastCheckpointIndex","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"getLastRequestId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"requestWithdrawals","outputs":[{"internalType":"uint256[]","name":"requestIds","type":"uint256[]"}]}],"devdoc":{"kind":"dev","methods":{"MAX_STETH_WITHDRAWAL_AMOUNT()":{"details":"To withdraw larger amounts, it's recommended to split it to several requests"},"claimWithdrawal(uint256)":{"details":"use unbounded loop to find a hint, which can lead to OOGReverts if requestId or hint are not valid  Reverts if request is not finalized or already claimed  Reverts if msg sender is not an owner of request","params":{"_requestId":"request id to claim"}},"claimWithdrawals(uint256[],uint256[])":{"details":"Reverts if requestIds and hints arrays length differs  Reverts if any requestId or hint in arguments are not valid  Reverts if any request is not finalized or already claimed  Reverts if msg sender is not an owner of the requests","params":{"_hints":"checkpoint hint for each id. Can be obtained with `findCheckpointHints()`","_requestIds":"array of request ids to claim"}},"finalize(uint256,uint256)":{"details":"ether to finalize all the requests should be calculated using `prefinalize()` and sent along"},"findCheckpointHints(uint256[],uint256,uint256)":{"params":{"_firstIndex":"left boundary of the search range. Should be greater than 0","_lastIndex":"right boundary of the search range. Should be less than or equal to getLastCheckpointIndex()","_requestIds":"ids of the requests sorted in the ascending order to get hints for"},"returns":{"hintIds":"array of hints used to find required checkpoint for the request"}},"requestWithdrawals(uint256[],address)":{"params":{"_amounts":"an array of stETH amount values.  The standalone withdrawal request will be created for each item in the passed list.","_owner":"address that will be able to manage the created requests.  If `address(0)` is passed, `msg.sender` will be used as owner."},"returns":{"requestIds":"an array of the created withdrawal request ids"}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_STETH_WITHDRAWAL_AMOUNT()":{"notice":"maximum amount of stETH that is possible to withdraw by a single request Prevents accumulating too much funds per single request fulfillment in the future."},"MIN_STETH_WITHDRAWAL_AMOUNT()":{"notice":"minimal amount of stETH that is possible to withdraw"},"STETH()":{"notice":"Lido stETH token address"},"claimWithdrawal(uint256)":{"notice":"Claim one`_requestId` request once finalized sending locked ether to the owner"},"claimWithdrawals(uint256[],uint256[])":{"notice":"Claim a batch of withdrawal requests if they are finalized sending locked ether to the owner"},"finalize(uint256,uint256)":{"notice":"Finalize requests from last finalized one up to `_lastRequestIdToBeFinalized`"},"findCheckpointHints(uint256[],uint256,uint256)":{"notice":"Finds the list of hints for the given `_requestIds` searching among the checkpoints with indices  in the range  `[_firstIndex, _lastIndex]`.  NB! Array of request ids should be sorted  NB! `_firstIndex` should be greater than 0, because checkpoint list is 1-based array  Usage: findCheckpointHints(_requestIds, 1, getLastCheckpointIndex())"},"getLastCheckpointIndex()":{"notice":"length of the checkpoint array. Last possible value for the hint.  NB! checkpoints are indexed from 1, so it returns 0 if there is no checkpoints"},"getLastRequestId()":{"notice":"id of the last request  NB! requests are indexed from 1, so it returns 0 if there is no requests in the queue"},"requestWithdrawals(uint256[],address)":{"notice":"Request the batch of stETH for withdrawal. Approvals for the passed amounts should be done before."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/contracts/","@openzeppelin/contracts/=lib/openzeppelin-contracts/contracts/","@symbioticfi/core/=lib/core/","core/=lib/core/","ds-test/=lib/openzeppelin-contracts/lib/forge-std/lib/ds-test/src/","erc4626-tests/=lib/openzeppelin-contracts/lib/erc4626-tests/","forge-std/=lib/forge-std/src/","openzeppelin-contracts-upgradeable/=lib/openzeppelin-contracts-upgradeable/","openzeppelin-contracts/=lib/openzeppelin-contracts/"],"optimizer":{"enabled":true,"runs":200},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/burners/wstETH/IWithdrawalQueue.sol":"IWithdrawalQueue"},"evmVersion":"cancun","libraries":{},"viaIR":true},"sources":{"src/interfaces/burners/wstETH/IWithdrawalQueue.sol":{"keccak256":"0x1cb14f7e9be04106aa2f6335fa2bf84aeefbc5d97d9a6bb2784f5eaac4b91b97","urls":["bzz-raw://4df556f32a40e3a3e90ad35b8909eefcb0697fd7ef04d60b85fa7073ae7aec7a","dweb:/ipfs/Qmbz6nvFiEJmYt28EE7rrq4NoPuqmEsFTHrwWWoBXti1vJ"],"license":"MIT"}},"version":1},"id":161}