{"abi":[{"type":"function","name":"MAX_FEE","inputs":[],"outputs":[{"name":"fee","type":"uint256","internalType":"UD60x18"}],"stateMutability":"view"},{"type":"function","name":"adjustRatePerSecond","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"newRatePerSecond","type":"uint128","internalType":"UD21x18"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"aggregateBalance","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"approve","inputs":[{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"balanceOf","inputs":[{"name":"owner","type":"address","internalType":"address"}],"outputs":[{"name":"balance","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"batch","inputs":[{"name":"calls","type":"bytes[]","internalType":"bytes[]"}],"outputs":[{"name":"results","type":"bytes[]","internalType":"bytes[]"}],"stateMutability":"payable"},{"type":"function","name":"collectFees","inputs":[],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"collectProtocolRevenue","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"coveredDebtOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"coveredDebt","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"create","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"transferable","type":"bool","internalType":"bool"}],"outputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"createAndDeposit","inputs":[{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"transferable","type":"bool","internalType":"bool"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"stateMutability":"payable"},{"type":"function","name":"depletionTimeOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"depletionTime","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"deposit","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint128","internalType":"uint128"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositAndPause","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"depositViaBroker","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"totalAmount","type":"uint128","internalType":"uint128"},{"name":"sender","type":"address","internalType":"address"},{"name":"recipient","type":"address","internalType":"address"},{"name":"broker","type":"tuple","internalType":"struct Broker","components":[{"name":"account","type":"address","internalType":"address"},{"name":"fee","type":"uint256","internalType":"UD60x18"}]}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"getApproved","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"operator","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getBalance","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"balance","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"getRatePerSecond","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"}],"stateMutability":"view"},{"type":"function","name":"getRecipient","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"recipient","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getSender","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"sender","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"getSnapshotDebtScaled","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"snapshotDebtScaled","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getSnapshotTime","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"snapshotTime","type":"uint40","internalType":"uint40"}],"stateMutability":"view"},{"type":"function","name":"getStream","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"stream","type":"tuple","internalType":"struct Flow.Stream","components":[{"name":"balance","type":"uint128","internalType":"uint128"},{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"},{"name":"sender","type":"address","internalType":"address"},{"name":"snapshotTime","type":"uint40","internalType":"uint40"},{"name":"isStream","type":"bool","internalType":"bool"},{"name":"isTransferable","type":"bool","internalType":"bool"},{"name":"isVoided","type":"bool","internalType":"bool"},{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"tokenDecimals","type":"uint8","internalType":"uint8"},{"name":"snapshotDebtScaled","type":"uint256","internalType":"uint256"}]}],"stateMutability":"view"},{"type":"function","name":"getToken","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"stateMutability":"view"},{"type":"function","name":"getTokenDecimals","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"tokenDecimals","type":"uint8","internalType":"uint8"}],"stateMutability":"view"},{"type":"function","name":"isApprovedForAll","inputs":[{"name":"owner","type":"address","internalType":"address"},{"name":"operator","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isPaused","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isStream","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isTransferable","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"isVoided","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"result","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"name","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"nextStreamId","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"nftDescriptor","inputs":[],"outputs":[{"name":"","type":"address","internalType":"contract IFlowNFTDescriptor"}],"stateMutability":"view"},{"type":"function","name":"ongoingDebtScaledOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"ongoingDebtScaled","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"ownerOf","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"owner","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"pause","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"protocolFee","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint256","internalType":"UD60x18"}],"stateMutability":"view"},{"type":"function","name":"protocolRevenue","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"}],"outputs":[{"name":"","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"recover","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"to","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"refund","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"refundAndPause","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"refundMax","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"refundableAmountOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"refundableAmount","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"function","name":"restart","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"restartAndDeposit","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"ratePerSecond","type":"uint128","internalType":"UD21x18"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"safeTransferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setApprovalForAll","inputs":[{"name":"operator","type":"address","internalType":"address"},{"name":"approved","type":"bool","internalType":"bool"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setNFTDescriptor","inputs":[{"name":"newNFTDescriptor","type":"address","internalType":"contract IFlowNFTDescriptor"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setProtocolFee","inputs":[{"name":"token","type":"address","internalType":"contract IERC20"},{"name":"newProtocolFee","type":"uint256","internalType":"UD60x18"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"statusOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"status","type":"uint8","internalType":"enum Flow.Status"}],"stateMutability":"view"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"symbol","inputs":[],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"tokenURI","inputs":[{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"string","internalType":"string"}],"stateMutability":"view"},{"type":"function","name":"totalDebtOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"totalDebt","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"transferAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferFrom","inputs":[{"name":"from","type":"address","internalType":"address"},{"name":"to","type":"address","internalType":"address"},{"name":"tokenId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"uncoveredDebtOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"uncoveredDebt","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"void","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"payable"},{"type":"function","name":"withdraw","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"},{"name":"amount","type":"uint128","internalType":"uint128"}],"outputs":[{"name":"withdrawnAmount","type":"uint128","internalType":"uint128"},{"name":"protocolFeeAmount","type":"uint128","internalType":"uint128"}],"stateMutability":"payable"},{"type":"function","name":"withdrawMax","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"},{"name":"to","type":"address","internalType":"address"}],"outputs":[{"name":"withdrawnAmount","type":"uint128","internalType":"uint128"},{"name":"protocolFeeAmount","type":"uint128","internalType":"uint128"}],"stateMutability":"payable"},{"type":"function","name":"withdrawableAmountOf","inputs":[{"name":"streamId","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"withdrawableAmount","type":"uint128","internalType":"uint128"}],"stateMutability":"view"},{"type":"event","name":"AdjustFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"totalDebt","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"oldRatePerSecond","type":"uint128","indexed":false,"internalType":"UD21x18"},{"name":"newRatePerSecond","type":"uint128","indexed":false,"internalType":"UD21x18"}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"ApprovalForAll","inputs":[{"name":"owner","type":"address","indexed":true,"internalType":"address"},{"name":"operator","type":"address","indexed":true,"internalType":"address"},{"name":"approved","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"BatchMetadataUpdate","inputs":[{"name":"_fromTokenId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"_toTokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CollectFees","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"feeAmount","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"CollectProtocolRevenue","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"revenue","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"CreateFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"ratePerSecond","type":"uint128","indexed":false,"internalType":"UD21x18"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"transferable","type":"bool","indexed":false,"internalType":"bool"}],"anonymous":false},{"type":"event","name":"DepositFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"funder","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"MetadataUpdate","inputs":[{"name":"_tokenId","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"PauseFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"totalDebt","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Recover","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"to","type":"address","indexed":false,"internalType":"address"},{"name":"surplus","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"RefundFromFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"amount","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false},{"type":"event","name":"RestartFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"ratePerSecond","type":"uint128","indexed":false,"internalType":"UD21x18"}],"anonymous":false},{"type":"event","name":"SetNFTDescriptor","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"oldNFTDescriptor","type":"address","indexed":false,"internalType":"contract IFlowNFTDescriptor"},{"name":"newNFTDescriptor","type":"address","indexed":false,"internalType":"contract IFlowNFTDescriptor"}],"anonymous":false},{"type":"event","name":"SetProtocolFee","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"oldProtocolFee","type":"uint256","indexed":false,"internalType":"UD60x18"},{"name":"newProtocolFee","type":"uint256","indexed":false,"internalType":"UD60x18"}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"name":"from","type":"address","indexed":true,"internalType":"address"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"tokenId","type":"uint256","indexed":true,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"TransferAdmin","inputs":[{"name":"oldAdmin","type":"address","indexed":true,"internalType":"address"},{"name":"newAdmin","type":"address","indexed":true,"internalType":"address"}],"anonymous":false},{"type":"event","name":"VoidFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"sender","type":"address","indexed":true,"internalType":"address"},{"name":"recipient","type":"address","indexed":true,"internalType":"address"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"newTotalDebt","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"writtenOffDebt","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"WithdrawFromFlowStream","inputs":[{"name":"streamId","type":"uint256","indexed":true,"internalType":"uint256"},{"name":"to","type":"address","indexed":true,"internalType":"address"},{"name":"token","type":"address","indexed":true,"internalType":"contract IERC20"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"withdrawAmount","type":"uint128","indexed":false,"internalType":"uint128"},{"name":"protocolFeeAmount","type":"uint128","indexed":false,"internalType":"uint128"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"MAX_FEE()":"bc063e1a","adjustRatePerSecond(uint256,uint128)":"a8a482a6","admin()":"f851a440","aggregateBalance(address)":"5f553152","approve(address,uint256)":"095ea7b3","balanceOf(address)":"70a08231","batch(bytes[])":"1e897afb","collectFees()":"c8796572","collectProtocolRevenue(address,address)":"ffe3d9f8","coveredDebtOf(uint256)":"42e3e23d","create(address,address,uint128,address,bool)":"597150fa","createAndDeposit(address,address,uint128,address,bool,uint128)":"fbf2777e","depletionTimeOf(uint256)":"d4b80884","deposit(uint256,uint128,address,address)":"b61f7583","depositAndPause(uint256,uint128)":"bcbd019e","depositViaBroker(uint256,uint128,address,address,(address,uint256))":"c2f8e750","getApproved(uint256)":"081812fc","getBalance(uint256)":"1e010439","getRatePerSecond(uint256)":"80448da3","getRecipient(uint256)":"6d0cee75","getSender(uint256)":"b971302a","getSnapshotDebtScaled(uint256)":"450ac908","getSnapshotTime(uint256)":"eb5710d8","getStream(uint256)":"894e9a0d","getToken(uint256)":"e4b50cb8","getTokenDecimals(uint256)":"a7de07cd","isApprovedForAll(address,address)":"e985e9c5","isPaused(uint256)":"bdf2a43c","isStream(uint256)":"b8a3be66","isTransferable(uint256)":"b2564569","isVoided(uint256)":"569f4c59","name()":"06fdde03","nextStreamId()":"1e99d569","nftDescriptor()":"44267570","ongoingDebtScaledOf(uint256)":"7ddf9228","ownerOf(uint256)":"6352211e","pause(uint256)":"136439dd","protocolFee(address)":"b62b31e4","protocolRevenue(address)":"0c5fd195","recover(address,address)":"648bf774","refund(uint256,uint128)":"81632a86","refundAndPause(uint256,uint128)":"379d871a","refundMax(uint256)":"0c699624","refundableAmountOf(uint256)":"1400ecec","restart(uint256,uint128)":"ebb6f79a","restartAndDeposit(uint256,uint128,uint128)":"1f0cce58","safeTransferFrom(address,address,uint256)":"42842e0e","safeTransferFrom(address,address,uint256,bytes)":"b88d4fde","setApprovalForAll(address,bool)":"a22cb465","setNFTDescriptor(address)":"7cad6cd1","setProtocolFee(address,uint256)":"b5b3ca2c","statusOf(uint256)":"ad35efd4","supportsInterface(bytes4)":"01ffc9a7","symbol()":"95d89b41","tokenURI(uint256)":"c87b56dd","totalDebtOf(uint256)":"08b87923","transferAdmin(address)":"75829def","transferFrom(address,address,uint256)":"23b872dd","uncoveredDebtOf(uint256)":"bc7a2d6c","void(uint256)":"5ea2145b","withdraw(uint256,address,uint128)":"fdd46d60","withdrawMax(uint256,address)":"ea5ead19","withdrawableAmountOf(uint256)":"d975dfed"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.26+commit.8a97fa7a\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"oldRatePerSecond\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"newRatePerSecond\",\"type\":\"uint128\"}],\"name\":\"AdjustFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"approved\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"ApprovalForAll\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_fromTokenId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_toTokenId\",\"type\":\"uint256\"}],\"name\":\"BatchMetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"CollectFees\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"revenue\",\"type\":\"uint128\"}],\"name\":\"CollectProtocolRevenue\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"}],\"name\":\"CreateFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"funder\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"DepositFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_tokenId\",\"type\":\"uint256\"}],\"name\":\"MetadataUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"name\":\"PauseFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"surplus\",\"type\":\"uint256\"}],\"name\":\"Recover\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"RefundFromFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"name\":\"RestartFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"oldNFTDescriptor\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"newNFTDescriptor\",\"type\":\"address\"}],\"name\":\"SetNFTDescriptor\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"oldProtocolFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"newProtocolFee\",\"type\":\"uint256\"}],\"name\":\"SetProtocolFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"oldAdmin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"TransferAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newTotalDebt\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"writtenOffDebt\",\"type\":\"uint256\"}],\"name\":\"VoidFlowStream\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"withdrawAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"protocolFeeAmount\",\"type\":\"uint128\"}],\"name\":\"WithdrawFromFlowStream\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"fee\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"newRatePerSecond\",\"type\":\"uint128\"}],\"name\":\"adjustRatePerSecond\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"aggregateBalance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"balance\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes[]\",\"name\":\"calls\",\"type\":\"bytes[]\"}],\"name\":\"batch\",\"outputs\":[{\"internalType\":\"bytes[]\",\"name\":\"results\",\"type\":\"bytes[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"collectFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"collectProtocolRevenue\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"coveredDebtOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"coveredDebt\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"}],\"name\":\"create\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"transferable\",\"type\":\"bool\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"createAndDeposit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"depletionTimeOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"depletionTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"depositAndPause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"totalAmount\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"internalType\":\"UD60x18\",\"name\":\"fee\",\"type\":\"uint256\"}],\"internalType\":\"struct Broker\",\"name\":\"broker\",\"type\":\"tuple\"}],\"name\":\"depositViaBroker\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getApproved\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getRatePerSecond\",\"outputs\":[{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getRecipient\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"recipient\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSender\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSnapshotDebtScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"snapshotDebtScaled\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getSnapshotTime\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getStream\",\"outputs\":[{\"components\":[{\"internalType\":\"uint128\",\"name\":\"balance\",\"type\":\"uint128\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"snapshotTime\",\"type\":\"uint40\"},{\"internalType\":\"bool\",\"name\":\"isStream\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isTransferable\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"isVoided\",\"type\":\"bool\"},{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"snapshotDebtScaled\",\"type\":\"uint256\"}],\"internalType\":\"struct Flow.Stream\",\"name\":\"stream\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"getTokenDecimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"tokenDecimals\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"}],\"name\":\"isApprovedForAll\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isPaused\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isStream\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"isVoided\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"result\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextStreamId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nftDescriptor\",\"outputs\":[{\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"ongoingDebtScaledOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"ongoingDebtScaled\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"pause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"protocolFee\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"protocolRevenue\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"recover\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"refund\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"refundAndPause\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"refundMax\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"refundableAmountOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"refundableAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"}],\"name\":\"restart\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"UD21x18\",\"name\":\"ratePerSecond\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"restartAndDeposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"safeTransferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"operator\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"approved\",\"type\":\"bool\"}],\"name\":\"setApprovalForAll\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IFlowNFTDescriptor\",\"name\":\"newNFTDescriptor\",\"type\":\"address\"}],\"name\":\"setNFTDescriptor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"UD60x18\",\"name\":\"newProtocolFee\",\"type\":\"uint256\"}],\"name\":\"setProtocolFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"enum Flow.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"tokenURI\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"totalDebtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"totalDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"uncoveredDebtOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"uncoveredDebt\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"void\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"withdraw\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawnAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"withdrawMax\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawnAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"protocolFeeAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"streamId\",\"type\":\"uint256\"}],\"name\":\"withdrawableAmountOf\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"withdrawableAmount\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"AdjustFlowStream(uint256,uint256,uint128,uint128)\":{\"params\":{\"newRatePerSecond\":\"The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"oldRatePerSecond\":\"The old rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream.\",\"totalDebt\":\"The total debt at the time of the update, denoted in token's decimals.\"}},\"Approval(address,address,uint256)\":{\"details\":\"Emitted when `owner` enables `approved` to manage the `tokenId` token.\"},\"ApprovalForAll(address,address,bool)\":{\"details\":\"Emitted when `owner` enables or disables (`approved`) `operator` to manage all of its assets.\"},\"BatchMetadataUpdate(uint256,uint256)\":{\"details\":\"This event emits when the metadata of a range of tokens is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFTs.\"},\"CollectFees(address,uint256)\":{\"params\":{\"admin\":\"The address of the current contract admin, which has received the fees.\",\"feeAmount\":\"The amount of collected fees.\"}},\"CollectProtocolRevenue(address,address,address,uint128)\":{\"params\":{\"admin\":\"The address of the contract admin.\",\"revenue\":\"The amount of protocol revenue collected.\",\"to\":\"The address the protocol revenue has been sent to.\",\"token\":\"The address of the ERC-20 token the protocol revenue has been collected for.\"}},\"CreateFlowStream(uint256,address,address,uint128,address,bool)\":{\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens, as well as the NFT owner.\",\"sender\":\"The address streaming the tokens, which is able to adjust and pause the stream.\",\"streamId\":\"The ID of the newly created stream.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating whether the stream NFT is transferable or not.\"}},\"DepositFlowStream(uint256,address,uint128)\":{\"params\":{\"amount\":\"The amount of tokens deposited into the stream, denoted in token's decimals.\",\"funder\":\"The address that made the deposit.\",\"streamId\":\"The ID of the stream.\"}},\"MetadataUpdate(uint256)\":{\"details\":\"This event emits when the metadata of a token is changed. So that the third-party platforms such as NFT market could timely update the images and related attributes of the NFT.\"},\"PauseFlowStream(uint256,address,address,uint256)\":{\"params\":{\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\",\"totalDebt\":\"The amount of tokens owed by the sender to the recipient, denoted in token's decimals.\"}},\"Recover(address,address,address,uint256)\":{\"params\":{\"admin\":\"The address of the contract admin.\",\"surplus\":\"The amount of surplus tokens recovered.\",\"to\":\"The address the surplus amount has been sent to.\",\"token\":\"The address of the ERC-20 token the surplus amount has been recovered for.\"}},\"RefundFromFlowStream(uint256,address,uint128)\":{\"params\":{\"amount\":\"The amount of tokens refunded to the sender, denoted in token's decimals.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\"}},\"RestartFlowStream(uint256,address,uint128)\":{\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\"}},\"SetNFTDescriptor(address,address,address)\":{\"params\":{\"admin\":\"The address of the contract admin.\",\"newNFTDescriptor\":\"The address of the new NFT descriptor contract.\",\"oldNFTDescriptor\":\"The address of the old NFT descriptor contract.\"}},\"SetProtocolFee(address,address,uint256,uint256)\":{\"params\":{\"admin\":\"The address of the contract admin.\",\"newProtocolFee\":\"The new protocol fee, denoted as a fixed-point percentage.\",\"oldProtocolFee\":\"The old protocol fee, denoted as a fixed-point percentage.\",\"token\":\"The address of the ERC-20 token the new protocol fee has been set for.\"}},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `tokenId` token is transferred from `from` to `to`.\"},\"TransferAdmin(address,address)\":{\"params\":{\"newAdmin\":\"The address of the new admin.\",\"oldAdmin\":\"The address of the old admin.\"}},\"VoidFlowStream(uint256,address,address,address,uint256,uint256)\":{\"params\":{\"caller\":\"The address that performed the void, which can be the sender, recipient or an approved operator.\",\"newTotalDebt\":\"The new total debt, denoted in token's decimals.\",\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream.\",\"writtenOffDebt\":\"The amount of debt written off by the caller, denoted in token's decimals.\"}},\"WithdrawFromFlowStream(uint256,address,address,address,uint128,uint128)\":{\"params\":{\"caller\":\"The address that performed the withdrawal, which can be the recipient or an approved operator.\",\"protocolFeeAmount\":\"The amount of protocol fee deducted from the withdrawn amount, denoted in token's decimals.\",\"streamId\":\"The ID of the stream.\",\"to\":\"The address that received the withdrawn tokens.\",\"token\":\"The contract address of the ERC-20 token that was withdrawn.\",\"withdrawAmount\":\"The amount withdrawn to the recipient after subtracting the protocol fee, denoted in token's decimals.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_FEE()\":{\"details\":\"This value is hard coded as a constant.\"},\"adjustRatePerSecond(uint256,uint128)\":{\"details\":\"Emits a {AdjustFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a paused stream. - `msg.sender` must be the stream's sender. - `newRatePerSecond` must not equal to the current rate per second.\",\"params\":{\"newRatePerSecond\":\"The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to adjust.\"}},\"aggregateBalance(address)\":{\"params\":{\"token\":\"The ERC-20 token for the query.\"}},\"approve(address,uint256)\":{\"details\":\"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the number of tokens in ``owner``'s account.\"},\"batch(bytes[])\":{\"details\":\"Since `msg.value` can be reused across calls, be VERY CAREFUL when using it. Refer to https://paradigm.xyz/2021/08/two-rights-might-make-a-wrong for more information.\",\"params\":{\"calls\":\"An array of inputs for each call.\"},\"returns\":{\"results\":\"An array of results from each call. Empty when the calls do not return anything.\"}},\"collectFees()\":{\"details\":\"Emits a {CollectFees} event. Notes: - If the admin is a contract, it must be able to receive native token payments, e.g., ETH for Ethereum Mainnet.\"},\"collectProtocolRevenue(address,address)\":{\"details\":\"Emits a {CollectProtocolRevenue} event. Requirements: - `msg.sender` must be the contract admin. - The accrued protocol revenue must be greater than zero.\",\"params\":{\"to\":\"The address to send the protocol revenue.\",\"token\":\"The contract address of the ERC-20 token for which to claim protocol revenue.\"}},\"coveredDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"create(address,address,uint128,address,bool)\":{\"details\":\"Emits {CreateFlowStream} event. Requirements: - Must not be delegate called. - `sender` must not be the zero address. - `recipient` must not be the zero address. - The `token`'s decimals must be less than or equal to 18.\",\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens.\",\"sender\":\"The address streaming the tokens, which is able to adjust and pause the stream. It doesn't have to be the same as `msg.sender`.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating if the stream NFT is transferable.\"},\"returns\":{\"streamId\":\"The ID of the newly created stream.\"}},\"createAndDeposit(address,address,uint128,address,bool,uint128)\":{\"details\":\"Emits a {Transfer}, {CreateFlowStream}, and {DepositFlowStream} event. Notes: - Refer to the notes in {deposit}. Requirements: - Refer to the requirements in {create} and {deposit}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"recipient\":\"The address receiving the tokens.\",\"sender\":\"The address streaming the tokens. It doesn't have to be the same as `msg.sender`.\",\"token\":\"The contract address of the ERC-20 token to be streamed.\",\"transferable\":\"Boolean indicating if the stream NFT is transferable.\"},\"returns\":{\"streamId\":\"The ID of the newly created stream.\"}},\"depletionTimeOf(uint256)\":{\"details\":\"Reverts on the following conditions: - If `streamId` references a paused or a null stream. - If stream balance is zero.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"deposit(uint256,uint128,address,address)\":{\"details\":\"Emits a {Transfer} and {DepositFlowStream} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `amount` must be greater than zero. - `sender` and `recipient` must match the stream's sender and recipient addresses.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream to deposit to.\"}},\"depositAndPause(uint256,uint128)\":{\"details\":\"Emits a {Transfer}, {DepositFlowStream} and {PauseFlowStream} event. Notes: - Refer to the notes in {deposit} and {pause}. Requirements: - Refer to the requirements in {deposit} and {pause}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to deposit to, and then pause.\"}},\"depositViaBroker(uint256,uint128,address,address,(address,uint256))\":{\"details\":\"Emits a {Transfer} and {DepositFlowStream} event. Notes: - Refer to the notes in {deposit}. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `totalAmount` must be greater than zero. Otherwise it will revert inside {deposit}. - `broker.account` must not be 0 address. - `broker.fee` must not be greater than `MAX_FEE`. It can be zero.\",\"params\":{\"broker\":\"Struct encapsulating (i) the address of the broker assisting in creating the stream, and (ii) the percentage fee paid to the broker from `totalAmount`, denoted as a fixed-point percentage.\",\"recipient\":\"The stream's recipient address.\",\"sender\":\"The stream's sender address.\",\"streamId\":\"The ID of the stream to deposit on.\",\"totalAmount\":\"The total amount, including the deposit and any broker fee, denoted in token's decimals.\"}},\"getApproved(uint256)\":{\"details\":\"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist.\"},\"getBalance(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getRatePerSecond(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getRecipient(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSender(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSnapshotDebtScaled(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getSnapshotTime(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getStream(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"getToken(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"getTokenDecimals(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The ID of the stream to make the query for.\"}},\"isApprovedForAll(address,address)\":{\"details\":\"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}\"},\"isPaused(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"isStream(uint256)\":{\"details\":\"Does not revert if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"isTransferable(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"isVoided(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"name()\":{\"details\":\"Returns the token collection name.\"},\"nextStreamId()\":{\"returns\":{\"_0\":\"The next stream ID.\"}},\"ongoingDebtScaledOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"ownerOf(uint256)\":{\"details\":\"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist.\"},\"pause(uint256)\":{\"details\":\"Emits {PauseFlowStream} event. Notes: - It updates snapshot debt and snapshot time. - It sets the rate per second to zero. Requirements: - Must not be delegate called. - `streamId` must not reference a null or an already paused stream. - `msg.sender` must be the stream's sender.\",\"params\":{\"streamId\":\"The ID of the stream to pause.\"}},\"recover(address,address)\":{\"details\":\"Emits a {Recover} event. Notes: - The surplus amount is defined as the difference between the total balance of the contract for the provided ERC-20 token and the sum of balances of all streams created using the same ERC-20 token. Requirements: - `msg.sender` must be the contract admin. - The surplus amount must be greater than zero.\",\"params\":{\"to\":\"The address to send the surplus amount.\",\"token\":\"The contract address of the ERC-20 token to recover for.\"}},\"refund(uint256,uint128)\":{\"details\":\"Emits a {Transfer} and {RefundFromFlowStream} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `msg.sender` must be the sender. - `amount` must be greater than zero and must not exceed the refundable amount.\",\"params\":{\"amount\":\"The amount to refund, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to refund from.\"}},\"refundAndPause(uint256,uint128)\":{\"details\":\"Emits a {Transfer}, {RefundFromFlowStream} and {PauseFlowStream} event. Notes: - Refer to the notes in {pause}. Requirements: - Refer to the requirements in {refund} and {pause}.\",\"params\":{\"amount\":\"The amount to refund, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to refund from and then pause.\"}},\"refundMax(uint256)\":{\"details\":\"Emits a {Transfer} and {RefundFromFlowStream} event. Requirements: - Refer to the requirements in {refund}.\",\"params\":{\"streamId\":\"The ID of the stream to refund from.\"}},\"refundableAmountOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"restart(uint256,uint128)\":{\"details\":\"Emits {RestartFlowStream} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null, or a voided stream. - `msg.sender` must be the stream's sender. - `ratePerSecond` must be greater than zero.\",\"params\":{\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to restart.\"}},\"restartAndDeposit(uint256,uint128,uint128)\":{\"details\":\"Emits a {RestartFlowStream}, {Transfer}, and {DepositFlowStream} event. Notes: - Refer to the notes in {restart} and {deposit}. Requirements: - `amount` must be greater than zero. - Refer to the requirements in {restart}.\",\"params\":{\"amount\":\"The deposit amount, denoted in token's decimals.\",\"ratePerSecond\":\"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.\",\"streamId\":\"The ID of the stream to restart.\"}},\"safeTransferFrom(address,address,uint256)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"safeTransferFrom(address,address,uint256,bytes)\":{\"details\":\"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event.\"},\"setApprovalForAll(address,bool)\":{\"details\":\"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event.\"},\"setNFTDescriptor(address)\":{\"details\":\"Emits a {SetNFTDescriptor} and {BatchMetadataUpdate} event. Notes: - Does not revert if the NFT descriptor is the same. Requirements: - `msg.sender` must be the contract admin.\",\"params\":{\"newNFTDescriptor\":\"The address of the new NFT descriptor contract.\"}},\"setProtocolFee(address,uint256)\":{\"details\":\"Emits a {SetProtocolFee} and {BatchMetadataUpdate} event. Notes: - Does not revert if the fee is the same. - It can be zero. Requirements: - `msg.sender` must be the contract admin. - `newProtocolFee` must not be greater than `MAX_FEE`.\",\"params\":{\"newProtocolFee\":\"The new protocol fee, denoted as a fixed-point percentage where 1e18 is 100%.\",\"token\":\"The contract address of the ERC-20 token to update the fee for.\"}},\"statusOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream. Integrators should exercise caution when depending on the return value of this function as streams can be paused and resumed at any moment.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"symbol()\":{\"details\":\"Returns the token collection symbol.\"},\"tokenURI(uint256)\":{\"details\":\"Returns the Uniform Resource Identifier (URI) for `tokenId` token.\"},\"totalDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"transferAdmin(address)\":{\"details\":\"Notes: - Does not revert if the admin is the same. - This function can potentially leave the contract without an admin, thereby removing any functionality that is only available to the admin. Requirements: - `msg.sender` must be the contract admin.\",\"params\":{\"newAdmin\":\"The address of the new admin.\"}},\"transferFrom(address,address,uint256)\":{\"details\":\"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event.\"},\"uncoveredDebtOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"}},\"void(uint256)\":{\"details\":\"Emits {VoidFlowStream} event. Notes: - It sets snapshot time to the `block.timestamp` - Voiding an insolvent stream sets the snapshot debt to the stream's balance making the uncovered debt to become zero. - Voiding a solvent stream updates the snapshot debt by adding up ongoing debt. - It sets the rate per second to zero. - A voided stream cannot be restarted. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `msg.sender` must either be the stream's sender, recipient or an approved third party.\",\"params\":{\"streamId\":\"The ID of the stream to void.\"}},\"withdraw(uint256,address,uint128)\":{\"details\":\"Emits a {Transfer} and {WithdrawFromFlowStream} event. Notes: - It sets the snapshot time to the `block.timestamp` if `amount` is greater than snapshot debt. - A protocol fee may be charged on the withdrawn amount if the protocol fee is enabled for the streaming token. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `to` must not be the zero address. - `to` must be the recipient if `msg.sender` is not the stream's recipient. - `amount` must  be greater than zero and must not exceed the withdrawable amount.\",\"params\":{\"amount\":\"The amount to withdraw, denoted in token's decimals.\",\"streamId\":\"The ID of the stream to withdraw from.\",\"to\":\"The address receiving the withdrawn tokens.\"},\"returns\":{\"protocolFeeAmount\":\"The protocol fee amount, denoted in the token's decimals.\",\"withdrawnAmount\":\"The amount withdrawn to the recipient, denoted in token's decimals. This is input amount minus the protocol fee.\"}},\"withdrawMax(uint256,address)\":{\"details\":\"Emits a {Transfer} and {WithdrawFromFlowStream} event. Notes: - Refer to the notes in {withdraw}. Requirements: - Refer to the requirements in {withdraw}.\",\"params\":{\"streamId\":\"The ID of the stream to withdraw from.\",\"to\":\"The address receiving the withdrawn tokens.\"},\"returns\":{\"protocolFeeAmount\":\"The protocol fee amount, denoted in the token's decimals.\",\"withdrawnAmount\":\"The amount withdrawn to the recipient, denoted in token's decimals.\"}},\"withdrawableAmountOf(uint256)\":{\"details\":\"Reverts if `streamId` references a null stream.\",\"params\":{\"streamId\":\"The stream ID for the query.\"},\"returns\":{\"withdrawableAmount\":\"The amount that the recipient can withdraw.\"}}},\"title\":\"ISablierFlow\",\"version\":1},\"userdoc\":{\"events\":{\"AdjustFlowStream(uint256,uint256,uint128,uint128)\":{\"notice\":\"Emitted when the rate per second is updated by the sender.\"},\"CollectFees(address,uint256)\":{\"notice\":\"Emitted when the accrued fees are collected.\"},\"CollectProtocolRevenue(address,address,address,uint128)\":{\"notice\":\"Emitted when the contract admin collects protocol revenue accrued.\"},\"CreateFlowStream(uint256,address,address,uint128,address,bool)\":{\"notice\":\"Emitted when a Flow stream is created.\"},\"DepositFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a stream is funded.\"},\"PauseFlowStream(uint256,address,address,uint256)\":{\"notice\":\"Emitted when a stream is paused by the sender.\"},\"Recover(address,address,address,uint256)\":{\"notice\":\"Emitted when the contract admin recovers the surplus amount of token.\"},\"RefundFromFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a sender is refunded from a stream.\"},\"RestartFlowStream(uint256,address,uint128)\":{\"notice\":\"Emitted when a stream is restarted by the sender.\"},\"SetNFTDescriptor(address,address,address)\":{\"notice\":\"Emitted when the contract admin sets a new NFT descriptor contract.\"},\"SetProtocolFee(address,address,uint256,uint256)\":{\"notice\":\"Emitted when the contract admin sets a new protocol fee for the provided ERC-20 token.\"},\"TransferAdmin(address,address)\":{\"notice\":\"Emitted when the admin is transferred.\"},\"VoidFlowStream(uint256,address,address,address,uint256,uint256)\":{\"notice\":\"Emitted when a stream is voided by the sender, recipient or an approved operator.\"},\"WithdrawFromFlowStream(uint256,address,address,address,uint128,uint128)\":{\"notice\":\"Emitted when tokens are withdrawn from a stream by a recipient or an approved operator.\"}},\"kind\":\"user\",\"methods\":{\"MAX_FEE()\":{\"notice\":\"Retrieves the maximum fee that can be charged by the broker and the protocol, denoted as a fixed-point percentage where 1e18 is 100%.\"},\"adjustRatePerSecond(uint256,uint128)\":{\"notice\":\"Changes the stream's rate per second.\"},\"admin()\":{\"notice\":\"The address of the admin account or contract.\"},\"aggregateBalance(address)\":{\"notice\":\"Retrieves the sum of balances of all streams.\"},\"batch(bytes[])\":{\"notice\":\"Allows batched calls to self, i.e., `this` contract.\"},\"collectFees()\":{\"notice\":\"Collects the accrued fees by transferring them to the contract admin.\"},\"collectProtocolRevenue(address,address)\":{\"notice\":\"Collect the protocol revenue accrued for the provided ERC-20 token.\"},\"coveredDebtOf(uint256)\":{\"notice\":\"Returns the amount of debt covered by the stream balance, denoted in token's decimals.\"},\"create(address,address,uint128,address,bool)\":{\"notice\":\"Creates a new Flow stream by setting the snapshot time to `block.timestamp` and leaving the balance to zero. The stream is wrapped in an ERC-721 NFT.\"},\"createAndDeposit(address,address,uint128,address,bool,uint128)\":{\"notice\":\"Creates a new Flow stream by setting the snapshot time to `block.timestamp` and the balance to `amount`. The stream is wrapped in an ERC-721 NFT.\"},\"depletionTimeOf(uint256)\":{\"notice\":\"Returns the time at which the total debt exceeds stream balance. If the total debt is less than or equal to stream balance, it returns 0.\"},\"deposit(uint256,uint128,address,address)\":{\"notice\":\"Makes a deposit in a stream.\"},\"depositAndPause(uint256,uint128)\":{\"notice\":\"Deposits tokens in a stream and pauses it.\"},\"depositViaBroker(uint256,uint128,address,address,(address,uint256))\":{\"notice\":\"Deposits tokens in a stream.\"},\"getBalance(uint256)\":{\"notice\":\"Retrieves the balance of the stream, i.e. the total deposited amounts subtracted by the total withdrawn amounts, denoted in token's decimals.\"},\"getRatePerSecond(uint256)\":{\"notice\":\"Retrieves the rate per second of the stream, denoted as a fixed-point number where 1e18 is 1 token per second.\"},\"getRecipient(uint256)\":{\"notice\":\"Retrieves the stream's recipient.\"},\"getSender(uint256)\":{\"notice\":\"Retrieves the stream's sender.\"},\"getSnapshotDebtScaled(uint256)\":{\"notice\":\"Retrieves the snapshot debt of the stream, denoted as a fixed-point number where 1e18 is 1 token.\"},\"getSnapshotTime(uint256)\":{\"notice\":\"Retrieves the snapshot time of the stream, which is a Unix timestamp.\"},\"getStream(uint256)\":{\"notice\":\"Retrieves the stream entity.\"},\"getToken(uint256)\":{\"notice\":\"Retrieves the token of the stream.\"},\"getTokenDecimals(uint256)\":{\"notice\":\"Retrieves the token decimals of the stream.\"},\"isPaused(uint256)\":{\"notice\":\"Returns whether a stream is paused.\"},\"isStream(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream exists.\"},\"isTransferable(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream NFT is transferable.\"},\"isVoided(uint256)\":{\"notice\":\"Retrieves a flag indicating whether the stream is voided.\"},\"nextStreamId()\":{\"notice\":\"Counter for stream ids.\"},\"nftDescriptor()\":{\"notice\":\"Contract that generates the non-fungible token URI.\"},\"ongoingDebtScaledOf(uint256)\":{\"notice\":\"Returns the amount of debt accrued since the snapshot time until now, denoted as a fixed-point number where 1e18 is 1 token.\"},\"pause(uint256)\":{\"notice\":\"Pauses the stream.\"},\"protocolFee(address)\":{\"notice\":\"Protocol fee for the provided ERC-20 token, denoted as a fixed-point percentage where 1e18 is 100%.\"},\"protocolRevenue(address)\":{\"notice\":\"Protocol revenue accrued for the provided ERC-20 token, denoted in token's decimals.\"},\"recover(address,address)\":{\"notice\":\"Recover the surplus amount of tokens.\"},\"refund(uint256,uint128)\":{\"notice\":\"Refunds the provided amount of tokens from the stream to the sender's address.\"},\"refundAndPause(uint256,uint128)\":{\"notice\":\"Refunds the provided amount of tokens from the stream to the sender's address.\"},\"refundMax(uint256)\":{\"notice\":\"Refunds the entire refundable amount of tokens from the stream to the sender's address.\"},\"refundableAmountOf(uint256)\":{\"notice\":\"Returns the amount that the sender can be refunded from the stream, denoted in token's decimals.\"},\"restart(uint256,uint128)\":{\"notice\":\"Restarts the stream with the provided rate per second.\"},\"restartAndDeposit(uint256,uint128,uint128)\":{\"notice\":\"Restarts the stream with the provided rate per second, and makes a deposit.\"},\"setNFTDescriptor(address)\":{\"notice\":\"Sets a new NFT descriptor contract, which produces the URI describing the Sablier stream NFTs.\"},\"setProtocolFee(address,uint256)\":{\"notice\":\"Sets a new protocol fee that will be charged on all the withdrawals from streams created with the provided ERC-20 token.\"},\"statusOf(uint256)\":{\"notice\":\"Returns the stream's status.\"},\"totalDebtOf(uint256)\":{\"notice\":\"Returns the total amount owed by the sender to the recipient, denoted in token's decimals.\"},\"transferAdmin(address)\":{\"notice\":\"Transfers the contract admin to a new address.\"},\"uncoveredDebtOf(uint256)\":{\"notice\":\"Returns the amount of debt not covered by the stream balance, denoted in token's decimals.\"},\"void(uint256)\":{\"notice\":\"Voids a stream.\"},\"withdraw(uint256,address,uint128)\":{\"notice\":\"Withdraws the provided `amount` minus the protocol fee to the provided `to` address.\"},\"withdrawMax(uint256,address)\":{\"notice\":\"Withdraws the entire withdrawable amount minus the protocol fee to the provided `to` address.\"},\"withdrawableAmountOf(uint256)\":{\"notice\":\"Calculates the amount that the recipient can withdraw from the stream, denoted in token decimals. This is an alias for `coveredDebtOf`.\"}},\"notice\":\"Creates and manages Flow streams with linear streaming functions.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISablierFlow.sol\":\"ISablierFlow\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"none\"},\"optimizer\":{\"enabled\":true,\"runs\":10000},\"remappings\":[\":@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/\",\":@prb/math/=node_modules/@prb/math/\",\":forge-std/=node_modules/forge-std/\",\":solady/=node_modules/solady/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol\":{\"keccak256\":\"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a\",\"dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol\":{\"keccak256\":\"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd\",\"dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc\"]},\"node_modules/@openzeppelin/contracts/interfaces/IERC721.sol\":{\"keccak256\":\"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b\",\"dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c\",\"dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol\":{\"keccak256\":\"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7\",\"dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n\"]},\"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol\":{\"keccak256\":\"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02\",\"dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df\",\"dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@prb/math/src/UD21x18.sol\":{\"keccak256\":\"0xb0176747ae9c9f329bce39730d4d315b839e73a815494ddf2de2094aa9056957\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://534a82fe091627f9d01e665ac763daf56981b30b3976269f8e5c33a84a2dbebc\",\"dweb:/ipfs/QmYiiGJNr4S4ypYB4KGBPMTMiNskert8Cp4s6uf1CU3k73\"]},\"node_modules/@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"node_modules/@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"node_modules/@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"node_modules/@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"node_modules/@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"node_modules/@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"node_modules/@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"node_modules/@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"node_modules/@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"node_modules/@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"node_modules/@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"node_modules/@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"node_modules/@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"node_modules/@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"node_modules/@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"node_modules/@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"node_modules/@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"node_modules/@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"node_modules/@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"node_modules/@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"node_modules/@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"node_modules/@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"node_modules/@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"node_modules/@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"node_modules/@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"node_modules/@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"node_modules/@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"node_modules/@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"node_modules/@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"node_modules/@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"src/interfaces/IAdminable.sol\":{\"keccak256\":\"0xa279c49e51228b571329164e36250e82b2c1378e8b549194ab7dd90fca9c3b2b\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://b0af605b82e64679db7039fb378fc206c4a000f8cd24b3ff17b019e27b81be8f\",\"dweb:/ipfs/QmUSr73cbnG7K79mVE9Nwcou5nJZEK2ZGekt3KpkfpxL4Z\"]},\"src/interfaces/IBatch.sol\":{\"keccak256\":\"0x6d3aab84cb0529afc1e8b4a2ad4f89feb15c76b6a515a14fdf4b98887d856ae4\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://77e68471ec663dda763ac40bb7c35d47b2a87e262461dad9a2f03377f928e758\",\"dweb:/ipfs/QmdvAq7XyNAUA8uLhnFrWuBgZAjNjoq6BaY5AyjFKvC8Xh\"]},\"src/interfaces/IFlowNFTDescriptor.sol\":{\"keccak256\":\"0xdf964042ae7c74f03909d020fbb63e0ae56aeb2fa47213e3775a1e3263d00e54\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0d4ede276be940185ea0b638c8f38f68232b6f4394ce0a69c2c729bc761aec82\",\"dweb:/ipfs/QmSgivdvgxrY7n6XbLQcGp645nRw1y2272iJUVhQyfnWUp\"]},\"src/interfaces/ISablierFlow.sol\":{\"keccak256\":\"0x927e8a530af9585cd6228ad0b3ac32cd1c3313093e5733e13d3545b6c756883f\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://66caa48250e672af1af324602482bf9261182be9954f2c48df3be4fe3f41661d\",\"dweb:/ipfs/QmUEPLrxrTzeFuj3Tr2GpGSQUcJoGcvbvSN7iSNek47Lki\"]},\"src/interfaces/ISablierFlowBase.sol\":{\"keccak256\":\"0xc62fbd975f27964a6c8772fd23a2a2d7335b73c02c496ff3648126818a86d1cb\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://f9af47aa84cc5bac30d454c47c40c519f874fd4bde08b39f49c68487a7d514dc\",\"dweb:/ipfs/QmdmJGv3jR7H1GZh6XG5fJrsRcXmSJpTFCayAP6XYZybcA\"]},\"src/types/DataTypes.sol\":{\"keccak256\":\"0xaaa5b90094cfafd31ec968c769c88ff91b27677d6dcea172b0d4672a537f0a10\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://16b34fa9fa2fa7b791631c6a819b554692b8aeb8bb89c671fb0f6179c9e88e9d\",\"dweb:/ipfs/Qmcg91DDt8AjjnGrgHnDQogsq4Us8YPCfCHVG4DJVDNSB6\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.26+commit.8a97fa7a"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"uint256","name":"totalDebt","type":"uint256","indexed":false},{"internalType":"UD21x18","name":"oldRatePerSecond","type":"uint128","indexed":false},{"internalType":"UD21x18","name":"newRatePerSecond","type":"uint128","indexed":false}],"type":"event","name":"AdjustFlowStream","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"approved","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Approval","anonymous":false},{"inputs":[{"internalType":"address","name":"owner","type":"address","indexed":true},{"internalType":"address","name":"operator","type":"address","indexed":true},{"internalType":"bool","name":"approved","type":"bool","indexed":false}],"type":"event","name":"ApprovalForAll","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_fromTokenId","type":"uint256","indexed":false},{"internalType":"uint256","name":"_toTokenId","type":"uint256","indexed":false}],"type":"event","name":"BatchMetadataUpdate","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"uint256","name":"feeAmount","type":"uint256","indexed":true}],"type":"event","name":"CollectFees","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint128","name":"revenue","type":"uint128","indexed":false}],"type":"event","name":"CollectProtocolRevenue","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":false},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128","indexed":false},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"bool","name":"transferable","type":"bool","indexed":false}],"type":"event","name":"CreateFlowStream","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"funder","type":"address","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false}],"type":"event","name":"DepositFlowStream","anonymous":false},{"inputs":[{"internalType":"uint256","name":"_tokenId","type":"uint256","indexed":false}],"type":"event","name":"MetadataUpdate","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"uint256","name":"totalDebt","type":"uint256","indexed":false}],"type":"event","name":"PauseFlowStream","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":false},{"internalType":"uint256","name":"surplus","type":"uint256","indexed":false}],"type":"event","name":"Recover","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"uint128","name":"amount","type":"uint128","indexed":false}],"type":"event","name":"RefundFromFlowStream","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128","indexed":false}],"type":"event","name":"RestartFlowStream","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"contract IFlowNFTDescriptor","name":"oldNFTDescriptor","type":"address","indexed":false},{"internalType":"contract IFlowNFTDescriptor","name":"newNFTDescriptor","type":"address","indexed":false}],"type":"event","name":"SetNFTDescriptor","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"UD60x18","name":"oldProtocolFee","type":"uint256","indexed":false},{"internalType":"UD60x18","name":"newProtocolFee","type":"uint256","indexed":false}],"type":"event","name":"SetProtocolFee","anonymous":false},{"inputs":[{"internalType":"address","name":"from","type":"address","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"uint256","name":"tokenId","type":"uint256","indexed":true}],"type":"event","name":"Transfer","anonymous":false},{"inputs":[{"internalType":"address","name":"oldAdmin","type":"address","indexed":true},{"internalType":"address","name":"newAdmin","type":"address","indexed":true}],"type":"event","name":"TransferAdmin","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"sender","type":"address","indexed":true},{"internalType":"address","name":"recipient","type":"address","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"uint256","name":"newTotalDebt","type":"uint256","indexed":false},{"internalType":"uint256","name":"writtenOffDebt","type":"uint256","indexed":false}],"type":"event","name":"VoidFlowStream","anonymous":false},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256","indexed":true},{"internalType":"address","name":"to","type":"address","indexed":true},{"internalType":"contract IERC20","name":"token","type":"address","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"uint128","name":"withdrawAmount","type":"uint128","indexed":false},{"internalType":"uint128","name":"protocolFeeAmount","type":"uint128","indexed":false}],"type":"event","name":"WithdrawFromFlowStream","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_FEE","outputs":[{"internalType":"UD60x18","name":"fee","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"UD21x18","name":"newRatePerSecond","type":"uint128"}],"stateMutability":"payable","type":"function","name":"adjustRatePerSecond"},{"inputs":[],"stateMutability":"view","type":"function","name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"aggregateBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"approve"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"stateMutability":"view","type":"function","name":"balanceOf","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}]},{"inputs":[{"internalType":"bytes[]","name":"calls","type":"bytes[]"}],"stateMutability":"payable","type":"function","name":"batch","outputs":[{"internalType":"bytes[]","name":"results","type":"bytes[]"}]},{"inputs":[],"stateMutability":"nonpayable","type":"function","name":"collectFees"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"collectProtocolRevenue"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"coveredDebtOf","outputs":[{"internalType":"uint128","name":"coveredDebt","type":"uint128"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"bool","name":"transferable","type":"bool"}],"stateMutability":"payable","type":"function","name":"create","outputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"bool","name":"transferable","type":"bool"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"createAndDeposit","outputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"depletionTimeOf","outputs":[{"internalType":"uint256","name":"depletionTime","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"}],"stateMutability":"payable","type":"function","name":"deposit"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"depositAndPause"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"totalAmount","type":"uint128"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"struct Broker","name":"broker","type":"tuple","components":[{"internalType":"address","name":"account","type":"address"},{"internalType":"UD60x18","name":"fee","type":"uint256"}]}],"stateMutability":"payable","type":"function","name":"depositViaBroker"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getApproved","outputs":[{"internalType":"address","name":"operator","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getBalance","outputs":[{"internalType":"uint128","name":"balance","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRatePerSecond","outputs":[{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getRecipient","outputs":[{"internalType":"address","name":"recipient","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSender","outputs":[{"internalType":"address","name":"sender","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSnapshotDebtScaled","outputs":[{"internalType":"uint256","name":"snapshotDebtScaled","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getSnapshotTime","outputs":[{"internalType":"uint40","name":"snapshotTime","type":"uint40"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getStream","outputs":[{"internalType":"struct Flow.Stream","name":"stream","type":"tuple","components":[{"internalType":"uint128","name":"balance","type":"uint128"},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"},{"internalType":"address","name":"sender","type":"address"},{"internalType":"uint40","name":"snapshotTime","type":"uint40"},{"internalType":"bool","name":"isStream","type":"bool"},{"internalType":"bool","name":"isTransferable","type":"bool"},{"internalType":"bool","name":"isVoided","type":"bool"},{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"uint8","name":"tokenDecimals","type":"uint8"},{"internalType":"uint256","name":"snapshotDebtScaled","type":"uint256"}]}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getToken","outputs":[{"internalType":"contract IERC20","name":"token","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"getTokenDecimals","outputs":[{"internalType":"uint8","name":"tokenDecimals","type":"uint8"}]},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"stateMutability":"view","type":"function","name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"isPaused","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"isStream","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"isTransferable","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"isVoided","outputs":[{"internalType":"bool","name":"result","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"name","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nextStreamId","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"nftDescriptor","outputs":[{"internalType":"contract IFlowNFTDescriptor","name":"","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ongoingDebtScaledOf","outputs":[{"internalType":"uint256","name":"ongoingDebtScaled","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"ownerOf","outputs":[{"internalType":"address","name":"owner","type":"address"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"pause"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"protocolFee","outputs":[{"internalType":"UD60x18","name":"","type":"uint256"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"}],"stateMutability":"view","type":"function","name":"protocolRevenue","outputs":[{"internalType":"uint128","name":"","type":"uint128"}]},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"recover"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"refund"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"refundAndPause"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"refundMax"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"refundableAmountOf","outputs":[{"internalType":"uint128","name":"refundableAmount","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"}],"stateMutability":"payable","type":"function","name":"restart"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"UD21x18","name":"ratePerSecond","type":"uint128"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"restartAndDeposit"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"safeTransferFrom"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"stateMutability":"nonpayable","type":"function","name":"setApprovalForAll"},{"inputs":[{"internalType":"contract IFlowNFTDescriptor","name":"newNFTDescriptor","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setNFTDescriptor"},{"inputs":[{"internalType":"contract IERC20","name":"token","type":"address"},{"internalType":"UD60x18","name":"newProtocolFee","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setProtocolFee"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"statusOf","outputs":[{"internalType":"enum Flow.Status","name":"status","type":"uint8"}]},{"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":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"view","type":"function","name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"totalDebtOf","outputs":[{"internalType":"uint256","name":"totalDebt","type":"uint256"}]},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferAdmin"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"transferFrom"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"uncoveredDebtOf","outputs":[{"internalType":"uint256","name":"uncoveredDebt","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"payable","type":"function","name":"void"},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"stateMutability":"payable","type":"function","name":"withdraw","outputs":[{"internalType":"uint128","name":"withdrawnAmount","type":"uint128"},{"internalType":"uint128","name":"protocolFeeAmount","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"stateMutability":"payable","type":"function","name":"withdrawMax","outputs":[{"internalType":"uint128","name":"withdrawnAmount","type":"uint128"},{"internalType":"uint128","name":"protocolFeeAmount","type":"uint128"}]},{"inputs":[{"internalType":"uint256","name":"streamId","type":"uint256"}],"stateMutability":"view","type":"function","name":"withdrawableAmountOf","outputs":[{"internalType":"uint128","name":"withdrawableAmount","type":"uint128"}]}],"devdoc":{"kind":"dev","methods":{"MAX_FEE()":{"details":"This value is hard coded as a constant."},"adjustRatePerSecond(uint256,uint128)":{"details":"Emits a {AdjustFlowStream} and {MetadataUpdate} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a paused stream. - `msg.sender` must be the stream's sender. - `newRatePerSecond` must not equal to the current rate per second.","params":{"newRatePerSecond":"The new rate per second, denoted as a fixed-point number where 1e18 is 1 token per second.","streamId":"The ID of the stream to adjust."}},"aggregateBalance(address)":{"params":{"token":"The ERC-20 token for the query."}},"approve(address,uint256)":{"details":"Gives permission to `to` to transfer `tokenId` token to another account. The approval is cleared when the token is transferred. Only a single account can be approved at a time, so approving the zero address clears previous approvals. Requirements: - The caller must own the token or be an approved operator. - `tokenId` must exist. Emits an {Approval} event."},"balanceOf(address)":{"details":"Returns the number of tokens in ``owner``'s account."},"batch(bytes[])":{"details":"Since `msg.value` can be reused across calls, be VERY CAREFUL when using it. Refer to https://paradigm.xyz/2021/08/two-rights-might-make-a-wrong for more information.","params":{"calls":"An array of inputs for each call."},"returns":{"results":"An array of results from each call. Empty when the calls do not return anything."}},"collectFees()":{"details":"Emits a {CollectFees} event. Notes: - If the admin is a contract, it must be able to receive native token payments, e.g., ETH for Ethereum Mainnet."},"collectProtocolRevenue(address,address)":{"details":"Emits a {CollectProtocolRevenue} event. Requirements: - `msg.sender` must be the contract admin. - The accrued protocol revenue must be greater than zero.","params":{"to":"The address to send the protocol revenue.","token":"The contract address of the ERC-20 token for which to claim protocol revenue."}},"coveredDebtOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"create(address,address,uint128,address,bool)":{"details":"Emits {CreateFlowStream} event. Requirements: - Must not be delegate called. - `sender` must not be the zero address. - `recipient` must not be the zero address. - The `token`'s decimals must be less than or equal to 18.","params":{"ratePerSecond":"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.","recipient":"The address receiving the tokens.","sender":"The address streaming the tokens, which is able to adjust and pause the stream. It doesn't have to be the same as `msg.sender`.","token":"The contract address of the ERC-20 token to be streamed.","transferable":"Boolean indicating if the stream NFT is transferable."},"returns":{"streamId":"The ID of the newly created stream."}},"createAndDeposit(address,address,uint128,address,bool,uint128)":{"details":"Emits a {Transfer}, {CreateFlowStream}, and {DepositFlowStream} event. Notes: - Refer to the notes in {deposit}. Requirements: - Refer to the requirements in {create} and {deposit}.","params":{"amount":"The deposit amount, denoted in token's decimals.","ratePerSecond":"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.","recipient":"The address receiving the tokens.","sender":"The address streaming the tokens. It doesn't have to be the same as `msg.sender`.","token":"The contract address of the ERC-20 token to be streamed.","transferable":"Boolean indicating if the stream NFT is transferable."},"returns":{"streamId":"The ID of the newly created stream."}},"depletionTimeOf(uint256)":{"details":"Reverts on the following conditions: - If `streamId` references a paused or a null stream. - If stream balance is zero.","params":{"streamId":"The stream ID for the query."}},"deposit(uint256,uint128,address,address)":{"details":"Emits a {Transfer} and {DepositFlowStream} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `amount` must be greater than zero. - `sender` and `recipient` must match the stream's sender and recipient addresses.","params":{"amount":"The deposit amount, denoted in token's decimals.","recipient":"The stream's recipient address.","sender":"The stream's sender address.","streamId":"The ID of the stream to deposit to."}},"depositAndPause(uint256,uint128)":{"details":"Emits a {Transfer}, {DepositFlowStream} and {PauseFlowStream} event. Notes: - Refer to the notes in {deposit} and {pause}. Requirements: - Refer to the requirements in {deposit} and {pause}.","params":{"amount":"The deposit amount, denoted in token's decimals.","streamId":"The ID of the stream to deposit to, and then pause."}},"depositViaBroker(uint256,uint128,address,address,(address,uint256))":{"details":"Emits a {Transfer} and {DepositFlowStream} event. Notes: - Refer to the notes in {deposit}. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `totalAmount` must be greater than zero. Otherwise it will revert inside {deposit}. - `broker.account` must not be 0 address. - `broker.fee` must not be greater than `MAX_FEE`. It can be zero.","params":{"broker":"Struct encapsulating (i) the address of the broker assisting in creating the stream, and (ii) the percentage fee paid to the broker from `totalAmount`, denoted as a fixed-point percentage.","recipient":"The stream's recipient address.","sender":"The stream's sender address.","streamId":"The ID of the stream to deposit on.","totalAmount":"The total amount, including the deposit and any broker fee, denoted in token's decimals."}},"getApproved(uint256)":{"details":"Returns the account approved for `tokenId` token. Requirements: - `tokenId` must exist."},"getBalance(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"getRatePerSecond(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The ID of the stream to make the query for."}},"getRecipient(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"getSender(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"getSnapshotDebtScaled(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"getSnapshotTime(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The ID of the stream to make the query for."}},"getStream(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"getToken(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The ID of the stream to make the query for."}},"getTokenDecimals(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The ID of the stream to make the query for."}},"isApprovedForAll(address,address)":{"details":"Returns if the `operator` is allowed to manage all of the assets of `owner`. See {setApprovalForAll}"},"isPaused(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"isStream(uint256)":{"details":"Does not revert if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"isTransferable(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"isVoided(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"name()":{"details":"Returns the token collection name."},"nextStreamId()":{"returns":{"_0":"The next stream ID."}},"ongoingDebtScaledOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"ownerOf(uint256)":{"details":"Returns the owner of the `tokenId` token. Requirements: - `tokenId` must exist."},"pause(uint256)":{"details":"Emits {PauseFlowStream} event. Notes: - It updates snapshot debt and snapshot time. - It sets the rate per second to zero. Requirements: - Must not be delegate called. - `streamId` must not reference a null or an already paused stream. - `msg.sender` must be the stream's sender.","params":{"streamId":"The ID of the stream to pause."}},"recover(address,address)":{"details":"Emits a {Recover} event. Notes: - The surplus amount is defined as the difference between the total balance of the contract for the provided ERC-20 token and the sum of balances of all streams created using the same ERC-20 token. Requirements: - `msg.sender` must be the contract admin. - The surplus amount must be greater than zero.","params":{"to":"The address to send the surplus amount.","token":"The contract address of the ERC-20 token to recover for."}},"refund(uint256,uint128)":{"details":"Emits a {Transfer} and {RefundFromFlowStream} event. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `msg.sender` must be the sender. - `amount` must be greater than zero and must not exceed the refundable amount.","params":{"amount":"The amount to refund, denoted in token's decimals.","streamId":"The ID of the stream to refund from."}},"refundAndPause(uint256,uint128)":{"details":"Emits a {Transfer}, {RefundFromFlowStream} and {PauseFlowStream} event. Notes: - Refer to the notes in {pause}. Requirements: - Refer to the requirements in {refund} and {pause}.","params":{"amount":"The amount to refund, denoted in token's decimals.","streamId":"The ID of the stream to refund from and then pause."}},"refundMax(uint256)":{"details":"Emits a {Transfer} and {RefundFromFlowStream} event. Requirements: - Refer to the requirements in {refund}.","params":{"streamId":"The ID of the stream to refund from."}},"refundableAmountOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"restart(uint256,uint128)":{"details":"Emits {RestartFlowStream} event. Notes: - It updates snapshot debt and snapshot time. Requirements: - Must not be delegate called. - `streamId` must not reference a null, or a voided stream. - `msg.sender` must be the stream's sender. - `ratePerSecond` must be greater than zero.","params":{"ratePerSecond":"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.","streamId":"The ID of the stream to restart."}},"restartAndDeposit(uint256,uint128,uint128)":{"details":"Emits a {RestartFlowStream}, {Transfer}, and {DepositFlowStream} event. Notes: - Refer to the notes in {restart} and {deposit}. Requirements: - `amount` must be greater than zero. - Refer to the requirements in {restart}.","params":{"amount":"The deposit amount, denoted in token's decimals.","ratePerSecond":"The amount by which the debt is increasing every second, denoted as a fixed-point number where 1e18 is 1 token per second.","streamId":"The ID of the stream to restart."}},"safeTransferFrom(address,address,uint256)":{"details":"Safely transfers `tokenId` token from `from` to `to`, checking first that contract recipients are aware of the ERC721 protocol to prevent tokens from being forever locked. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must have been allowed to move this token by either {approve} or   {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"safeTransferFrom(address,address,uint256,bytes)":{"details":"Safely transfers `tokenId` token from `from` to `to`. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must exist and be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. - If `to` refers to a smart contract, it must implement {IERC721Receiver-onERC721Received}, which is called upon   a safe transfer. Emits a {Transfer} event."},"setApprovalForAll(address,bool)":{"details":"Approve or remove `operator` as an operator for the caller. Operators can call {transferFrom} or {safeTransferFrom} for any token owned by the caller. Requirements: - The `operator` cannot be the address zero. Emits an {ApprovalForAll} event."},"setNFTDescriptor(address)":{"details":"Emits a {SetNFTDescriptor} and {BatchMetadataUpdate} event. Notes: - Does not revert if the NFT descriptor is the same. Requirements: - `msg.sender` must be the contract admin.","params":{"newNFTDescriptor":"The address of the new NFT descriptor contract."}},"setProtocolFee(address,uint256)":{"details":"Emits a {SetProtocolFee} and {BatchMetadataUpdate} event. Notes: - Does not revert if the fee is the same. - It can be zero. Requirements: - `msg.sender` must be the contract admin. - `newProtocolFee` must not be greater than `MAX_FEE`.","params":{"newProtocolFee":"The new protocol fee, denoted as a fixed-point percentage where 1e18 is 100%.","token":"The contract address of the ERC-20 token to update the fee for."}},"statusOf(uint256)":{"details":"Reverts if `streamId` references a null stream. Integrators should exercise caution when depending on the return value of this function as streams can be paused and resumed at any moment.","params":{"streamId":"The stream ID for the query."}},"supportsInterface(bytes4)":{"details":"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[EIP section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"symbol()":{"details":"Returns the token collection symbol."},"tokenURI(uint256)":{"details":"Returns the Uniform Resource Identifier (URI) for `tokenId` token."},"totalDebtOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"transferAdmin(address)":{"details":"Notes: - Does not revert if the admin is the same. - This function can potentially leave the contract without an admin, thereby removing any functionality that is only available to the admin. Requirements: - `msg.sender` must be the contract admin.","params":{"newAdmin":"The address of the new admin."}},"transferFrom(address,address,uint256)":{"details":"Transfers `tokenId` token from `from` to `to`. WARNING: Note that the caller is responsible to confirm that the recipient is capable of receiving ERC721 or else they may be permanently lost. Usage of {safeTransferFrom} prevents loss, though the caller must understand this adds an external call which potentially creates a reentrancy vulnerability. Requirements: - `from` cannot be the zero address. - `to` cannot be the zero address. - `tokenId` token must be owned by `from`. - If the caller is not `from`, it must be approved to move this token by either {approve} or {setApprovalForAll}. Emits a {Transfer} event."},"uncoveredDebtOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."}},"void(uint256)":{"details":"Emits {VoidFlowStream} event. Notes: - It sets snapshot time to the `block.timestamp` - Voiding an insolvent stream sets the snapshot debt to the stream's balance making the uncovered debt to become zero. - Voiding a solvent stream updates the snapshot debt by adding up ongoing debt. - It sets the rate per second to zero. - A voided stream cannot be restarted. Requirements: - Must not be delegate called. - `streamId` must not reference a null or a voided stream. - `msg.sender` must either be the stream's sender, recipient or an approved third party.","params":{"streamId":"The ID of the stream to void."}},"withdraw(uint256,address,uint128)":{"details":"Emits a {Transfer} and {WithdrawFromFlowStream} event. Notes: - It sets the snapshot time to the `block.timestamp` if `amount` is greater than snapshot debt. - A protocol fee may be charged on the withdrawn amount if the protocol fee is enabled for the streaming token. Requirements: - Must not be delegate called. - `streamId` must not reference a null stream. - `to` must not be the zero address. - `to` must be the recipient if `msg.sender` is not the stream's recipient. - `amount` must  be greater than zero and must not exceed the withdrawable amount.","params":{"amount":"The amount to withdraw, denoted in token's decimals.","streamId":"The ID of the stream to withdraw from.","to":"The address receiving the withdrawn tokens."},"returns":{"protocolFeeAmount":"The protocol fee amount, denoted in the token's decimals.","withdrawnAmount":"The amount withdrawn to the recipient, denoted in token's decimals. This is input amount minus the protocol fee."}},"withdrawMax(uint256,address)":{"details":"Emits a {Transfer} and {WithdrawFromFlowStream} event. Notes: - Refer to the notes in {withdraw}. Requirements: - Refer to the requirements in {withdraw}.","params":{"streamId":"The ID of the stream to withdraw from.","to":"The address receiving the withdrawn tokens."},"returns":{"protocolFeeAmount":"The protocol fee amount, denoted in the token's decimals.","withdrawnAmount":"The amount withdrawn to the recipient, denoted in token's decimals."}},"withdrawableAmountOf(uint256)":{"details":"Reverts if `streamId` references a null stream.","params":{"streamId":"The stream ID for the query."},"returns":{"withdrawableAmount":"The amount that the recipient can withdraw."}}},"version":1},"userdoc":{"kind":"user","methods":{"MAX_FEE()":{"notice":"Retrieves the maximum fee that can be charged by the broker and the protocol, denoted as a fixed-point percentage where 1e18 is 100%."},"adjustRatePerSecond(uint256,uint128)":{"notice":"Changes the stream's rate per second."},"admin()":{"notice":"The address of the admin account or contract."},"aggregateBalance(address)":{"notice":"Retrieves the sum of balances of all streams."},"batch(bytes[])":{"notice":"Allows batched calls to self, i.e., `this` contract."},"collectFees()":{"notice":"Collects the accrued fees by transferring them to the contract admin."},"collectProtocolRevenue(address,address)":{"notice":"Collect the protocol revenue accrued for the provided ERC-20 token."},"coveredDebtOf(uint256)":{"notice":"Returns the amount of debt covered by the stream balance, denoted in token's decimals."},"create(address,address,uint128,address,bool)":{"notice":"Creates a new Flow stream by setting the snapshot time to `block.timestamp` and leaving the balance to zero. The stream is wrapped in an ERC-721 NFT."},"createAndDeposit(address,address,uint128,address,bool,uint128)":{"notice":"Creates a new Flow stream by setting the snapshot time to `block.timestamp` and the balance to `amount`. The stream is wrapped in an ERC-721 NFT."},"depletionTimeOf(uint256)":{"notice":"Returns the time at which the total debt exceeds stream balance. If the total debt is less than or equal to stream balance, it returns 0."},"deposit(uint256,uint128,address,address)":{"notice":"Makes a deposit in a stream."},"depositAndPause(uint256,uint128)":{"notice":"Deposits tokens in a stream and pauses it."},"depositViaBroker(uint256,uint128,address,address,(address,uint256))":{"notice":"Deposits tokens in a stream."},"getBalance(uint256)":{"notice":"Retrieves the balance of the stream, i.e. the total deposited amounts subtracted by the total withdrawn amounts, denoted in token's decimals."},"getRatePerSecond(uint256)":{"notice":"Retrieves the rate per second of the stream, denoted as a fixed-point number where 1e18 is 1 token per second."},"getRecipient(uint256)":{"notice":"Retrieves the stream's recipient."},"getSender(uint256)":{"notice":"Retrieves the stream's sender."},"getSnapshotDebtScaled(uint256)":{"notice":"Retrieves the snapshot debt of the stream, denoted as a fixed-point number where 1e18 is 1 token."},"getSnapshotTime(uint256)":{"notice":"Retrieves the snapshot time of the stream, which is a Unix timestamp."},"getStream(uint256)":{"notice":"Retrieves the stream entity."},"getToken(uint256)":{"notice":"Retrieves the token of the stream."},"getTokenDecimals(uint256)":{"notice":"Retrieves the token decimals of the stream."},"isPaused(uint256)":{"notice":"Returns whether a stream is paused."},"isStream(uint256)":{"notice":"Retrieves a flag indicating whether the stream exists."},"isTransferable(uint256)":{"notice":"Retrieves a flag indicating whether the stream NFT is transferable."},"isVoided(uint256)":{"notice":"Retrieves a flag indicating whether the stream is voided."},"nextStreamId()":{"notice":"Counter for stream ids."},"nftDescriptor()":{"notice":"Contract that generates the non-fungible token URI."},"ongoingDebtScaledOf(uint256)":{"notice":"Returns the amount of debt accrued since the snapshot time until now, denoted as a fixed-point number where 1e18 is 1 token."},"pause(uint256)":{"notice":"Pauses the stream."},"protocolFee(address)":{"notice":"Protocol fee for the provided ERC-20 token, denoted as a fixed-point percentage where 1e18 is 100%."},"protocolRevenue(address)":{"notice":"Protocol revenue accrued for the provided ERC-20 token, denoted in token's decimals."},"recover(address,address)":{"notice":"Recover the surplus amount of tokens."},"refund(uint256,uint128)":{"notice":"Refunds the provided amount of tokens from the stream to the sender's address."},"refundAndPause(uint256,uint128)":{"notice":"Refunds the provided amount of tokens from the stream to the sender's address."},"refundMax(uint256)":{"notice":"Refunds the entire refundable amount of tokens from the stream to the sender's address."},"refundableAmountOf(uint256)":{"notice":"Returns the amount that the sender can be refunded from the stream, denoted in token's decimals."},"restart(uint256,uint128)":{"notice":"Restarts the stream with the provided rate per second."},"restartAndDeposit(uint256,uint128,uint128)":{"notice":"Restarts the stream with the provided rate per second, and makes a deposit."},"setNFTDescriptor(address)":{"notice":"Sets a new NFT descriptor contract, which produces the URI describing the Sablier stream NFTs."},"setProtocolFee(address,uint256)":{"notice":"Sets a new protocol fee that will be charged on all the withdrawals from streams created with the provided ERC-20 token."},"statusOf(uint256)":{"notice":"Returns the stream's status."},"totalDebtOf(uint256)":{"notice":"Returns the total amount owed by the sender to the recipient, denoted in token's decimals."},"transferAdmin(address)":{"notice":"Transfers the contract admin to a new address."},"uncoveredDebtOf(uint256)":{"notice":"Returns the amount of debt not covered by the stream balance, denoted in token's decimals."},"void(uint256)":{"notice":"Voids a stream."},"withdraw(uint256,address,uint128)":{"notice":"Withdraws the provided `amount` minus the protocol fee to the provided `to` address."},"withdrawMax(uint256,address)":{"notice":"Withdraws the entire withdrawable amount minus the protocol fee to the provided `to` address."},"withdrawableAmountOf(uint256)":{"notice":"Calculates the amount that the recipient can withdraw from the stream, denoted in token decimals. This is an alias for `coveredDebtOf`."}},"version":1}},"settings":{"remappings":["@openzeppelin/contracts/=node_modules/@openzeppelin/contracts/","@prb/math/=node_modules/@prb/math/","forge-std/=node_modules/forge-std/","solady/=node_modules/solady/"],"optimizer":{"enabled":true,"runs":10000},"metadata":{"bytecodeHash":"none"},"compilationTarget":{"src/interfaces/ISablierFlow.sol":"ISablierFlow"},"evmVersion":"shanghai","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/interfaces/IERC165.sol":{"keccak256":"0xde7e9fd9aee8d4f40772f96bb3b58836cbc6dfc0227014a061947f8821ea9724","urls":["bzz-raw://11fea9f8bc98949ac6709f0c1699db7430d2948137aa94d5a9e95a91f61a710a","dweb:/ipfs/QmQdfRXxQjwP6yn3DVo1GHPpriKNcFghSPi94Z1oKEFUNS"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC4906.sol":{"keccak256":"0xb31b86c03f4677dcffa4655285d62433509513be9bafa0e04984565052d34e44","urls":["bzz-raw://a89c6fb0cd5fef4244500b633f63def9f2bb2134debb961e590bd5a2910662fd","dweb:/ipfs/QmNqWyCxyopvb99RbRomPpfTZGXRi5MnzgpFXE2BFLLgMc"],"license":"MIT"},"node_modules/@openzeppelin/contracts/interfaces/IERC721.sol":{"keccak256":"0xc4d7ebf63eb2f6bf3fee1b6c0ee775efa9f31b4843a5511d07eea147e212932d","urls":["bzz-raw://01c66a2fad66bc710db7510419a7eee569b40b67cd9f01b70a3fc90d6f76c03b","dweb:/ipfs/QmT1CjJZq4eTNA4nu8E9ZrWfaZu6ReUsDbjcK8DbEFqwx5"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol":{"keccak256":"0xc6a8ff0ea489379b61faa647490411b80102578440ab9d84e9a957cc12164e70","urls":["bzz-raw://0ea104e577e63faea3b69c415637e99e755dcbf64c5833d7140c35a714d6d90c","dweb:/ipfs/Qmau6x4Ns9XdyynRCNNp3RhLqijJjFm7z5fyZazfYFGYdq"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/IERC721.sol":{"keccak256":"0x5ef46daa3b58ef2702279d514780316efaa952915ee1aa3396f041ee2982b0b4","urls":["bzz-raw://2f8f2a76e23b02fc69e8cd24c3cb47da6c7af3a2d6c3a382f8ac25c6e094ade7","dweb:/ipfs/QmPV4ZS4tPVv4mTCf9ejyZ1ai57EEibDRj7mN2ARDCLV5n"],"license":"MIT"},"node_modules/@openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol":{"keccak256":"0x37d1aaaa5a2908a09e9dcf56a26ddf762ecf295afb5964695937344fc6802ce1","urls":["bzz-raw://ed0bfc1b92153c5000e50f4021367b931bbe96372ac6facec3c4961b72053d02","dweb:/ipfs/Qmbwp8VDerjS5SV1quwHH1oMXxPQ93fzfLVqJ2RCqbowGE"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x4296879f55019b23e135000eb36896057e7101fb7fb859c5ef690cf14643757b","urls":["bzz-raw://87b3541437c8c443ccd36795e56a338ed12855eec17f8da624511b8d1a7e14df","dweb:/ipfs/QmeJQCtZrQjtJLr6u7ZHWeH3pBnjtLWzvRrKViAi7UZqxL"],"license":"MIT"},"node_modules/@prb/math/src/Common.sol":{"keccak256":"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99","urls":["bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05","dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42"],"license":"MIT"},"node_modules/@prb/math/src/UD21x18.sol":{"keccak256":"0xb0176747ae9c9f329bce39730d4d315b839e73a815494ddf2de2094aa9056957","urls":["bzz-raw://534a82fe091627f9d01e665ac763daf56981b30b3976269f8e5c33a84a2dbebc","dweb:/ipfs/QmYiiGJNr4S4ypYB4KGBPMTMiNskert8Cp4s6uf1CU3k73"],"license":"MIT"},"node_modules/@prb/math/src/UD60x18.sol":{"keccak256":"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48","urls":["bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9","dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp"],"license":"MIT"},"node_modules/@prb/math/src/sd1x18/Casting.sol":{"keccak256":"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c","urls":["bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11","dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu"],"license":"MIT"},"node_modules/@prb/math/src/sd1x18/Constants.sol":{"keccak256":"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8","urls":["bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab","dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos"],"license":"MIT"},"node_modules/@prb/math/src/sd1x18/Errors.sol":{"keccak256":"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6","urls":["bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca","dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE"],"license":"MIT"},"node_modules/@prb/math/src/sd1x18/ValueType.sol":{"keccak256":"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0","urls":["bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353","dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6"],"license":"MIT"},"node_modules/@prb/math/src/sd21x18/Casting.sol":{"keccak256":"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36","urls":["bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2","dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd"],"license":"MIT"},"node_modules/@prb/math/src/sd21x18/Constants.sol":{"keccak256":"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4","urls":["bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396","dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3"],"license":"MIT"},"node_modules/@prb/math/src/sd21x18/Errors.sol":{"keccak256":"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a","urls":["bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee","dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML"],"license":"MIT"},"node_modules/@prb/math/src/sd21x18/ValueType.sol":{"keccak256":"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092","urls":["bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880","dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/Casting.sol":{"keccak256":"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39","urls":["bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d","dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/Constants.sol":{"keccak256":"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a","urls":["bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f","dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/Errors.sol":{"keccak256":"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2","urls":["bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf","dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/Helpers.sol":{"keccak256":"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716","urls":["bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed","dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/Math.sol":{"keccak256":"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84","urls":["bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462","dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD"],"license":"MIT"},"node_modules/@prb/math/src/sd59x18/ValueType.sol":{"keccak256":"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d","urls":["bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919","dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb"],"license":"MIT"},"node_modules/@prb/math/src/ud21x18/Casting.sol":{"keccak256":"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65","urls":["bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09","dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL"],"license":"MIT"},"node_modules/@prb/math/src/ud21x18/Constants.sol":{"keccak256":"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601","urls":["bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60","dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV"],"license":"MIT"},"node_modules/@prb/math/src/ud21x18/Errors.sol":{"keccak256":"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415","urls":["bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80","dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq"],"license":"MIT"},"node_modules/@prb/math/src/ud21x18/ValueType.sol":{"keccak256":"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25","urls":["bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af","dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU"],"license":"MIT"},"node_modules/@prb/math/src/ud2x18/Casting.sol":{"keccak256":"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6","urls":["bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae","dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL"],"license":"MIT"},"node_modules/@prb/math/src/ud2x18/Constants.sol":{"keccak256":"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc","urls":["bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9","dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC"],"license":"MIT"},"node_modules/@prb/math/src/ud2x18/Errors.sol":{"keccak256":"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd","urls":["bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437","dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i"],"license":"MIT"},"node_modules/@prb/math/src/ud2x18/ValueType.sol":{"keccak256":"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0","urls":["bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41","dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Casting.sol":{"keccak256":"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6","urls":["bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780","dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Constants.sol":{"keccak256":"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90","urls":["bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b","dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Conversions.sol":{"keccak256":"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2","urls":["bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932","dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Errors.sol":{"keccak256":"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044","urls":["bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8","dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Helpers.sol":{"keccak256":"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268","urls":["bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5","dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/Math.sol":{"keccak256":"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc","urls":["bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6","dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr"],"license":"MIT"},"node_modules/@prb/math/src/ud60x18/ValueType.sol":{"keccak256":"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3","urls":["bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47","dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n"],"license":"MIT"},"src/interfaces/IAdminable.sol":{"keccak256":"0xa279c49e51228b571329164e36250e82b2c1378e8b549194ab7dd90fca9c3b2b","urls":["bzz-raw://b0af605b82e64679db7039fb378fc206c4a000f8cd24b3ff17b019e27b81be8f","dweb:/ipfs/QmUSr73cbnG7K79mVE9Nwcou5nJZEK2ZGekt3KpkfpxL4Z"],"license":"GPL-3.0-or-later"},"src/interfaces/IBatch.sol":{"keccak256":"0x6d3aab84cb0529afc1e8b4a2ad4f89feb15c76b6a515a14fdf4b98887d856ae4","urls":["bzz-raw://77e68471ec663dda763ac40bb7c35d47b2a87e262461dad9a2f03377f928e758","dweb:/ipfs/QmdvAq7XyNAUA8uLhnFrWuBgZAjNjoq6BaY5AyjFKvC8Xh"],"license":"GPL-3.0-or-later"},"src/interfaces/IFlowNFTDescriptor.sol":{"keccak256":"0xdf964042ae7c74f03909d020fbb63e0ae56aeb2fa47213e3775a1e3263d00e54","urls":["bzz-raw://0d4ede276be940185ea0b638c8f38f68232b6f4394ce0a69c2c729bc761aec82","dweb:/ipfs/QmSgivdvgxrY7n6XbLQcGp645nRw1y2272iJUVhQyfnWUp"],"license":"GPL-3.0-or-later"},"src/interfaces/ISablierFlow.sol":{"keccak256":"0x927e8a530af9585cd6228ad0b3ac32cd1c3313093e5733e13d3545b6c756883f","urls":["bzz-raw://66caa48250e672af1af324602482bf9261182be9954f2c48df3be4fe3f41661d","dweb:/ipfs/QmUEPLrxrTzeFuj3Tr2GpGSQUcJoGcvbvSN7iSNek47Lki"],"license":"GPL-3.0-or-later"},"src/interfaces/ISablierFlowBase.sol":{"keccak256":"0xc62fbd975f27964a6c8772fd23a2a2d7335b73c02c496ff3648126818a86d1cb","urls":["bzz-raw://f9af47aa84cc5bac30d454c47c40c519f874fd4bde08b39f49c68487a7d514dc","dweb:/ipfs/QmdmJGv3jR7H1GZh6XG5fJrsRcXmSJpTFCayAP6XYZybcA"],"license":"GPL-3.0-or-later"},"src/types/DataTypes.sol":{"keccak256":"0xaaa5b90094cfafd31ec968c769c88ff91b27677d6dcea172b0d4672a537f0a10","urls":["bzz-raw://16b34fa9fa2fa7b791631c6a819b554692b8aeb8bb89c671fb0f6179c9e88e9d","dweb:/ipfs/Qmcg91DDt8AjjnGrgHnDQogsq4Us8YPCfCHVG4DJVDNSB6"],"license":"GPL-3.0-or-later"}},"version":1},"id":85}