UNPKG

@sablier/evm-utils

Version:

Utilities solidity files used across Sablier's smart contracts

1 lines 103 kB
{"abi":[{"type":"function","name":"FEE_COLLECTOR_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"FEE_MANAGEMENT_ROLE","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"MAX_FEE_USD","inputs":[],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"MINIMAL_INTERFACE_ID","inputs":[],"outputs":[{"name":"","type":"bytes4","internalType":"bytes4"}],"stateMutability":"view"},{"type":"function","name":"admin","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"calculateMinFeeWei","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"calculateMinFeeWeiFor","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"convertUSDFeeToWei","inputs":[{"name":"feeUSD","type":"uint256","internalType":"uint256"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"disableCustomFeeUSDFor","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"},{"name":"user","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"execute","inputs":[{"name":"target","type":"address","internalType":"address"},{"name":"data","type":"bytes","internalType":"bytes"}],"outputs":[{"name":"result","type":"bytes","internalType":"bytes"}],"stateMutability":"nonpayable"},{"type":"function","name":"getMinFeeUSD","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"getMinFeeUSDFor","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"},{"name":"user","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"uint256","internalType":"uint256"}],"stateMutability":"view"},{"type":"function","name":"grantRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"hasRoleOrIsAdmin","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"oracle","inputs":[],"outputs":[{"name":"","type":"address","internalType":"address"}],"stateMutability":"view"},{"type":"function","name":"proxiableUUID","inputs":[],"outputs":[{"name":"","type":"bytes32","internalType":"bytes32"}],"stateMutability":"view"},{"type":"function","name":"revokeRole","inputs":[{"name":"role","type":"bytes32","internalType":"bytes32"},{"name":"account","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setCustomFeeUSDFor","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"},{"name":"user","type":"address","internalType":"address"},{"name":"customFeeUSD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setMinFeeUSD","inputs":[{"name":"protocol","type":"uint8","internalType":"enum ISablierComptroller.Protocol"},{"name":"newMinFeeUSD","type":"uint256","internalType":"uint256"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"setOracle","inputs":[{"name":"newOracle","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"supportsInterface","inputs":[{"name":"interfaceId","type":"bytes4","internalType":"bytes4"}],"outputs":[{"name":"","type":"bool","internalType":"bool"}],"stateMutability":"view"},{"type":"function","name":"transferAdmin","inputs":[{"name":"newAdmin","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"function","name":"transferFees","inputs":[{"name":"protocolAddresses","type":"address[]","internalType":"address[]"},{"name":"feeRecipient","type":"address","internalType":"address"}],"outputs":[],"stateMutability":"nonpayable"},{"type":"event","name":"DisableCustomFeeUSD","inputs":[{"name":"protocol","type":"uint8","indexed":true,"internalType":"enum ISablierComptroller.Protocol"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"previousMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"Execute","inputs":[{"name":"target","type":"address","indexed":true,"internalType":"address"},{"name":"data","type":"bytes","indexed":false,"internalType":"bytes"},{"name":"result","type":"bytes","indexed":false,"internalType":"bytes"}],"anonymous":false},{"type":"event","name":"RoleGranted","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"RoleRevoked","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"account","type":"address","indexed":true,"internalType":"address"},{"name":"role","type":"bytes32","indexed":true,"internalType":"bytes32"}],"anonymous":false},{"type":"event","name":"SetCustomFeeUSD","inputs":[{"name":"protocol","type":"uint8","indexed":true,"internalType":"enum ISablierComptroller.Protocol"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"user","type":"address","indexed":true,"internalType":"address"},{"name":"previousMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetMinFeeUSD","inputs":[{"name":"protocol","type":"uint8","indexed":true,"internalType":"enum ISablierComptroller.Protocol"},{"name":"caller","type":"address","indexed":false,"internalType":"address"},{"name":"previousMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"},{"name":"newMinFeeUSD","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false},{"type":"event","name":"SetOracle","inputs":[{"name":"admin","type":"address","indexed":true,"internalType":"address"},{"name":"previousOracle","type":"address","indexed":false,"internalType":"address"},{"name":"newOracle","type":"address","indexed":false,"internalType":"address"}],"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":"TransferFees","inputs":[{"name":"feeRecipient","type":"address","indexed":true,"internalType":"address"},{"name":"feeAmount","type":"uint256","indexed":false,"internalType":"uint256"}],"anonymous":false}],"bytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"deployedBytecode":{"object":"0x","sourceMap":"","linkReferences":{}},"methodIdentifiers":{"FEE_COLLECTOR_ROLE()":"62a2a47c","FEE_MANAGEMENT_ROLE()":"8afaa8b8","MAX_FEE_USD()":"78ef7aea","MINIMAL_INTERFACE_ID()":"c34df33e","admin()":"f851a440","calculateMinFeeWei(uint8)":"baf8f4b9","calculateMinFeeWeiFor(uint8,address)":"419d289d","convertUSDFeeToWei(uint256)":"b0fa59e8","disableCustomFeeUSDFor(uint8,address)":"2fa32f4a","execute(address,bytes)":"1cff79cd","getMinFeeUSD(uint8)":"b9fbe2f8","getMinFeeUSDFor(uint8,address)":"88dc31a8","grantRole(bytes32,address)":"2f2ff15d","hasRoleOrIsAdmin(bytes32,address)":"e1678c6e","oracle()":"7dc0d1d0","proxiableUUID()":"52d1902d","revokeRole(bytes32,address)":"d547741f","setCustomFeeUSDFor(uint8,address,uint256)":"d09e86d9","setMinFeeUSD(uint8,uint256)":"9f467352","setOracle(address)":"7adbf973","supportsInterface(bytes4)":"01ffc9a7","transferAdmin(address)":"75829def","transferFees(address[],address)":"f2fc84b7"},"rawMetadata":"{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousMinFeeUSD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinFeeUSD\",\"type\":\"uint256\"}],\"name\":\"DisableCustomFeeUSD\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"name\":\"Execute\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"RoleGranted\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"}],\"name\":\"RoleRevoked\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousMinFeeUSD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinFeeUSD\",\"type\":\"uint256\"}],\"name\":\"SetCustomFeeUSD\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"caller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"previousMinFeeUSD\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"newMinFeeUSD\",\"type\":\"uint256\"}],\"name\":\"SetMinFeeUSD\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"admin\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"previousOracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOracle\",\"type\":\"address\"}],\"name\":\"SetOracle\",\"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\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"TransferFees\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"FEE_COLLECTOR_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"FEE_MANAGEMENT_ROLE\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_FEE_USD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMAL_INTERFACE_ID\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"admin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"}],\"name\":\"calculateMinFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"calculateMinFeeWeiFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"feeUSD\",\"type\":\"uint256\"}],\"name\":\"convertUSDFeeToWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"disableCustomFeeUSDFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"target\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"execute\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"result\",\"type\":\"bytes\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"}],\"name\":\"getMinFeeUSD\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getMinFeeUSDFor\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"grantRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"hasRoleOrIsAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"oracle\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"proxiableUUID\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"role\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"revokeRole\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"customFeeUSD\",\"type\":\"uint256\"}],\"name\":\"setCustomFeeUSDFor\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"enum ISablierComptroller.Protocol\",\"name\":\"protocol\",\"type\":\"uint8\"},{\"internalType\":\"uint256\",\"name\":\"newMinFeeUSD\",\"type\":\"uint256\"}],\"name\":\"setMinFeeUSD\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newOracle\",\"type\":\"address\"}],\"name\":\"setOracle\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newAdmin\",\"type\":\"address\"}],\"name\":\"transferAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"protocolAddresses\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"feeRecipient\",\"type\":\"address\"}],\"name\":\"transferFees\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"events\":{\"RoleGranted(address,address,bytes32)\":{\"params\":{\"account\":\"The address of the account to which the role is granted.\",\"admin\":\"The address of the admin that granted the role.\",\"role\":\"The identifier of the role.\"}},\"RoleRevoked(address,address,bytes32)\":{\"params\":{\"account\":\"The address of the account from which the role is revoked.\",\"admin\":\"The address of the admin that revoked the role.\",\"role\":\"The identifier of the role.\"}},\"TransferAdmin(address,address)\":{\"params\":{\"newAdmin\":\"The address of the new admin.\",\"oldAdmin\":\"The address of the old admin.\"}}},\"kind\":\"dev\",\"methods\":{\"MAX_FEE_USD()\":{\"details\":\"This is a constant state variable and is 100e8, which is equivalent to $100.\"},\"MINIMAL_INTERFACE_ID()\":{\"details\":\"Any new comptroller must support the minimal interface ID made up of the following functions: 1. {calculateMinFeeWeiFor} - used by protocols inherited from {IComptrollerable}. 2. {convertUSDFeeToWei} - used by protocols inherited from {IComptrollerable}. 3. {execute} - used by comptroller admin to perform necessary operations. 4. {getMinFeeUSDFor} - used by protocols inherited from {IComptrollerable}.\"},\"calculateMinFeeWei(uint8)\":{\"details\":\"See the documentation for {convertUSDFeeToWei} for more details.\",\"params\":{\"protocol\":\"The protocol as defined in {Protocol} enum.\"}},\"calculateMinFeeWeiFor(uint8,address)\":{\"details\":\"If the custom fee is enabled, it returns the custom fee, otherwise it returns the default minimum fee. See the documentation for {convertUSDFeeToWei} for more details.\",\"params\":{\"protocol\":\"The protocol as defined in {Protocol} enum.\",\"user\":\"The user address.\"}},\"convertUSDFeeToWei(uint256)\":{\"details\":\"The price is considered to be 0 if: 1. The oracle is not set. 2. The min USD fee is 0. 3. The oracle price is \\u2264 0. 4. The oracle's update timestamp is in the future. 5. The oracle price hasn't been updated in the last 24 hours.\",\"params\":{\"feeUSD\":\"The fee in USD, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\"},\"returns\":{\"_0\":\"The fee in wei, denominated in 18 decimals (1e18 = 1 native token).\"}},\"disableCustomFeeUSDFor(uint8,address)\":{\"details\":\"Emits a {DisableCustomFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role.\",\"params\":{\"protocol\":\"The protocol as defined in {Protocol} enum.\",\"user\":\"The user address.\"}},\"execute(address,bytes)\":{\"details\":\"Emits an {Execute} event. Requirements: - `msg.sender` must be the admin. - `target` must be a contract.\",\"params\":{\"data\":\"Function selector plus ABI encoded data.\",\"target\":\"The address of the target contract on which the data is executed.\"},\"returns\":{\"result\":\"The result from the call.\"}},\"getMinFeeUSD(uint8)\":{\"details\":\"The fee is denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\"},\"getMinFeeUSDFor(uint8,address)\":{\"details\":\"The fee is denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\"},\"grantRole(bytes32,address)\":{\"details\":\"Emits {RoleGranted} event. Requirements: - `msg.sender` must be the admin.\",\"params\":{\"account\":\"The address of the account to which the role is granted.\",\"role\":\"The identifier of the role.\"}},\"oracle()\":{\"details\":\"A zero address indicates that the oracle is not set.\"},\"proxiableUUID()\":{\"details\":\"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy.\"},\"revokeRole(bytes32,address)\":{\"details\":\"Emits {RoleRevoked} event. Requirements: - `msg.sender` must be the admin.\",\"params\":{\"account\":\"The address of the account from which the role is revoked.\",\"role\":\"The identifier of the role.\"}},\"setCustomFeeUSDFor(uint8,address,uint256)\":{\"details\":\"Emits a {SetCustomFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role. - `customFeeUSD` must be less than or equal to {MAX_FEE_USD}.\",\"params\":{\"customFeeUSD\":\"The custom USD fee to set, denominated in 8 decimals.\",\"protocol\":\"The protocol as defined in {Protocol} enum.\",\"user\":\"The user address.\"}},\"setMinFeeUSD(uint8,uint256)\":{\"details\":\"Emits a {SetMinFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role. - `newMinFeeUSD` must be less than or equal to {MAX_FEE_USD}.\",\"params\":{\"newMinFeeUSD\":\"The custom USD fee to set, denominated in 8 decimals.\",\"protocol\":\"The protocol as defined in {Protocol} enum.\"}},\"setOracle(address)\":{\"details\":\"Emits a {SetOracle} event. Requirements: - `msg.sender` must be the admin. - If `newOracle` is not the zero address, the call to it must not fail.\",\"params\":{\"newOracle\":\"The new oracle contract address. It can be the zero address.\"}},\"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"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.\"}},\"transferFees(address[],address)\":{\"details\":\"Emits a {TransferFees} event. Notes: - If `feeRecipient` is a contract, it must be able to receive native tokens, e.g., ETH for Ethereum Mainnet. - `protocolAddresses` can be empty. Requirements: `feeRecipient` must not be the zero address. - If `msg.sender` has neither the {IRoleAdminable.FEE_COLLECTOR_ROLE} role nor is the contract admin, then `feeRecipient` must be the admin address. - `protocolAddresses` must implement the {IComptrollerable} interface.\",\"params\":{\"feeRecipient\":\"The address to which the entire fee from this contract is transferred.\",\"protocolAddresses\":\"An array of addresses of the Sablier protocols from which fees is transferred from.\"}}},\"title\":\"ISablierComptroller\",\"version\":1},\"userdoc\":{\"events\":{\"DisableCustomFeeUSD(uint8,address,address,uint256,uint256)\":{\"notice\":\"Emitted when the admin or the fee manager disables the custom USD fee for the provided user.\"},\"Execute(address,bytes,bytes)\":{\"notice\":\"Emitted when a target contract is called.\"},\"RoleGranted(address,address,bytes32)\":{\"notice\":\"Emitted when `account` is granted `role`.\"},\"RoleRevoked(address,address,bytes32)\":{\"notice\":\"Emitted when `account` is revoked `role`.\"},\"SetCustomFeeUSD(uint8,address,address,uint256,uint256)\":{\"notice\":\"Emitted when the admin or the fee manager sets the custom USD fee for the provided user.\"},\"SetMinFeeUSD(uint8,address,uint256,uint256)\":{\"notice\":\"Emitted when the admin or the fee manager sets a new minimum USD fee.\"},\"SetOracle(address,address,address)\":{\"notice\":\"Emitted when the oracle contract address is set by the admin.\"},\"TransferAdmin(address,address)\":{\"notice\":\"Emitted when the admin is transferred.\"},\"TransferFees(address,uint256)\":{\"notice\":\"Emitted when the admin or the fee collector transfers the accrued fees to the fee recipient.\"}},\"kind\":\"user\",\"methods\":{\"FEE_COLLECTOR_ROLE()\":{\"notice\":\"A role with the authority to collect fees from the Sablier contracts.\"},\"FEE_MANAGEMENT_ROLE()\":{\"notice\":\"A role with the authority to update fees across the Sablier contracts.\"},\"MAX_FEE_USD()\":{\"notice\":\"Retrieves the maximum USD fee that can be set for claiming an airdrop or withdrawing from a stream.\"},\"MINIMAL_INTERFACE_ID()\":{\"notice\":\"The minimal interface ID of the comptroller.\"},\"admin()\":{\"notice\":\"The address of the admin account or contract.\"},\"calculateMinFeeWei(uint8)\":{\"notice\":\"Calculates the minimum fee in wei for the given protocol.\"},\"calculateMinFeeWeiFor(uint8,address)\":{\"notice\":\"Calculates the minimum fee in wei for the provided user for the given protocol.\"},\"convertUSDFeeToWei(uint256)\":{\"notice\":\"Converts the fee amount from USD to Wei.\"},\"disableCustomFeeUSDFor(uint8,address)\":{\"notice\":\"Disables the custom USD fee for the provided user for the given protocol, defaulting to the minimum fee.\"},\"execute(address,bytes)\":{\"notice\":\"Executes an external call to any contract and function.\"},\"getMinFeeUSD(uint8)\":{\"notice\":\"Get the minimum fee in USD for the given protocol, paid in the native token of the chain, e.g., ETH for Ethereum Mainnet. Use {calculateMinFeeWei} to retrieve the fee in wei.\"},\"getMinFeeUSDFor(uint8,address)\":{\"notice\":\"Get the minimum fee in USD for the provided user for the given protocol, paid in the native token of the chain, e.g., ETH for Ethereum Mainnet. Use {calculateMinFeeWeiFor} to retrieve the fee in wei.\"},\"grantRole(bytes32,address)\":{\"notice\":\"Grants `role` to `account`. Reverts if `account` already has the role.\"},\"hasRoleOrIsAdmin(bytes32,address)\":{\"notice\":\"Returns `true` if `account` has the `role` or is the admin.\"},\"oracle()\":{\"notice\":\"Retrieves the oracle contract address, which provides price data for the native token.\"},\"revokeRole(bytes32,address)\":{\"notice\":\"Revokes `role` from `account`. Reverts if `account` does not have the role.\"},\"setCustomFeeUSDFor(uint8,address,uint256)\":{\"notice\":\"Sets the custom USD fee for the provided user for the given protocol.\"},\"setMinFeeUSD(uint8,uint256)\":{\"notice\":\"Sets a new min USD fee for the given protocol.\"},\"setOracle(address)\":{\"notice\":\"Sets the oracle contract address. The zero address can be used to disable the oracle.\"},\"transferAdmin(address)\":{\"notice\":\"Transfers the contract admin to a new address.\"},\"transferFees(address[],address)\":{\"notice\":\"Transfers fees from the given protocol addresses to this contract, and then transfer the entire balance of this contract to the fee recipient.\"}},\"notice\":\"Manage fees across all Sablier protocols. State-changing functions are only accessible to the admin and the fee manager.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISablierComptroller.sol\":\"ISablierComptroller\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":100000000},\"remappings\":[\":@arbitrum/=node_modules/@arbitrum/\",\":@chainlink/=node_modules/@chainlink/\",\":@eth-optimism/=node_modules/@eth-optimism/\",\":@offchainlabs/=node_modules/@offchainlabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@scroll-tech/=node_modules/@scroll-tech/\",\":@zksync/=node_modules/@zksync/\",\":forge-std/=node_modules/forge-std/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"src/interfaces/IAdminable.sol\":{\"keccak256\":\"0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126\",\"dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4\"]},\"src/interfaces/IRoleAdminable.sol\":{\"keccak256\":\"0x9fb77d7cfe69d0612514d9ce87377b34b5cab37d011ddfe8299d4da6568f7148\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://6fdef13e46066763f8496a3b940dd464ee13edf85592e4c45c4b27e78a564233\",\"dweb:/ipfs/QmUcknJPPm9KEnAUrgoY1mrSUcQmwokbu8K5SUaB1rU1fi\"]},\"src/interfaces/ISablierComptroller.sol\":{\"keccak256\":\"0x510664025dc3ca300105f58d6e2e0714ad494bfa3064f31f12d7cbea1daf80e9\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://38a8374ac5ca248df00bba9c33f65befd05e413b94726be4ce19fd2346e28e2b\",\"dweb:/ipfs/QmQvYdgBmA5e4PDWJKNFY1Nbn3pj8pqEsTE2oAE5KKEvFM\"]}},\"version\":1}","metadata":{"compiler":{"version":"0.8.29+commit.ab55807c"},"language":"Solidity","output":{"abi":[{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"previousMinFeeUSD","type":"uint256","indexed":false},{"internalType":"uint256","name":"newMinFeeUSD","type":"uint256","indexed":false}],"type":"event","name":"DisableCustomFeeUSD","anonymous":false},{"inputs":[{"internalType":"address","name":"target","type":"address","indexed":true},{"internalType":"bytes","name":"data","type":"bytes","indexed":false},{"internalType":"bytes","name":"result","type":"bytes","indexed":false}],"type":"event","name":"Execute","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true}],"type":"event","name":"RoleGranted","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"address","name":"account","type":"address","indexed":true},{"internalType":"bytes32","name":"role","type":"bytes32","indexed":true}],"type":"event","name":"RoleRevoked","anonymous":false},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"address","name":"user","type":"address","indexed":true},{"internalType":"uint256","name":"previousMinFeeUSD","type":"uint256","indexed":false},{"internalType":"uint256","name":"newMinFeeUSD","type":"uint256","indexed":false}],"type":"event","name":"SetCustomFeeUSD","anonymous":false},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8","indexed":true},{"internalType":"address","name":"caller","type":"address","indexed":false},{"internalType":"uint256","name":"previousMinFeeUSD","type":"uint256","indexed":false},{"internalType":"uint256","name":"newMinFeeUSD","type":"uint256","indexed":false}],"type":"event","name":"SetMinFeeUSD","anonymous":false},{"inputs":[{"internalType":"address","name":"admin","type":"address","indexed":true},{"internalType":"address","name":"previousOracle","type":"address","indexed":false},{"internalType":"address","name":"newOracle","type":"address","indexed":false}],"type":"event","name":"SetOracle","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":"address","name":"feeRecipient","type":"address","indexed":true},{"internalType":"uint256","name":"feeAmount","type":"uint256","indexed":false}],"type":"event","name":"TransferFees","anonymous":false},{"inputs":[],"stateMutability":"view","type":"function","name":"FEE_COLLECTOR_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"FEE_MANAGEMENT_ROLE","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MAX_FEE_USD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"MINIMAL_INTERFACE_ID","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"admin","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"}],"stateMutability":"view","type":"function","name":"calculateMinFeeWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"},{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"calculateMinFeeWeiFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"uint256","name":"feeUSD","type":"uint256"}],"stateMutability":"view","type":"function","name":"convertUSDFeeToWei","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"},{"internalType":"address","name":"user","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"disableCustomFeeUSDFor"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"bytes","name":"data","type":"bytes"}],"stateMutability":"nonpayable","type":"function","name":"execute","outputs":[{"internalType":"bytes","name":"result","type":"bytes"}]},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"}],"stateMutability":"view","type":"function","name":"getMinFeeUSD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"},{"internalType":"address","name":"user","type":"address"}],"stateMutability":"view","type":"function","name":"getMinFeeUSDFor","outputs":[{"internalType":"uint256","name":"","type":"uint256"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"grantRole"},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"view","type":"function","name":"hasRoleOrIsAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"oracle","outputs":[{"internalType":"address","name":"","type":"address"}]},{"inputs":[],"stateMutability":"view","type":"function","name":"proxiableUUID","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}]},{"inputs":[{"internalType":"bytes32","name":"role","type":"bytes32"},{"internalType":"address","name":"account","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"revokeRole"},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"},{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"customFeeUSD","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setCustomFeeUSDFor"},{"inputs":[{"internalType":"enum ISablierComptroller.Protocol","name":"protocol","type":"uint8"},{"internalType":"uint256","name":"newMinFeeUSD","type":"uint256"}],"stateMutability":"nonpayable","type":"function","name":"setMinFeeUSD"},{"inputs":[{"internalType":"address","name":"newOracle","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"setOracle"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"stateMutability":"view","type":"function","name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}]},{"inputs":[{"internalType":"address","name":"newAdmin","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferAdmin"},{"inputs":[{"internalType":"address[]","name":"protocolAddresses","type":"address[]"},{"internalType":"address","name":"feeRecipient","type":"address"}],"stateMutability":"nonpayable","type":"function","name":"transferFees"}],"devdoc":{"kind":"dev","methods":{"MAX_FEE_USD()":{"details":"This is a constant state variable and is 100e8, which is equivalent to $100."},"MINIMAL_INTERFACE_ID()":{"details":"Any new comptroller must support the minimal interface ID made up of the following functions: 1. {calculateMinFeeWeiFor} - used by protocols inherited from {IComptrollerable}. 2. {convertUSDFeeToWei} - used by protocols inherited from {IComptrollerable}. 3. {execute} - used by comptroller admin to perform necessary operations. 4. {getMinFeeUSDFor} - used by protocols inherited from {IComptrollerable}."},"calculateMinFeeWei(uint8)":{"details":"See the documentation for {convertUSDFeeToWei} for more details.","params":{"protocol":"The protocol as defined in {Protocol} enum."}},"calculateMinFeeWeiFor(uint8,address)":{"details":"If the custom fee is enabled, it returns the custom fee, otherwise it returns the default minimum fee. See the documentation for {convertUSDFeeToWei} for more details.","params":{"protocol":"The protocol as defined in {Protocol} enum.","user":"The user address."}},"convertUSDFeeToWei(uint256)":{"details":"The price is considered to be 0 if: 1. The oracle is not set. 2. The min USD fee is 0. 3. The oracle price is ≤ 0. 4. The oracle's update timestamp is in the future. 5. The oracle price hasn't been updated in the last 24 hours.","params":{"feeUSD":"The fee in USD, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1."},"returns":{"_0":"The fee in wei, denominated in 18 decimals (1e18 = 1 native token)."}},"disableCustomFeeUSDFor(uint8,address)":{"details":"Emits a {DisableCustomFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role.","params":{"protocol":"The protocol as defined in {Protocol} enum.","user":"The user address."}},"execute(address,bytes)":{"details":"Emits an {Execute} event. Requirements: - `msg.sender` must be the admin. - `target` must be a contract.","params":{"data":"Function selector plus ABI encoded data.","target":"The address of the target contract on which the data is executed."},"returns":{"result":"The result from the call."}},"getMinFeeUSD(uint8)":{"details":"The fee is denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1."},"getMinFeeUSDFor(uint8,address)":{"details":"The fee is denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1."},"grantRole(bytes32,address)":{"details":"Emits {RoleGranted} event. Requirements: - `msg.sender` must be the admin.","params":{"account":"The address of the account to which the role is granted.","role":"The identifier of the role."}},"oracle()":{"details":"A zero address indicates that the oracle is not set."},"proxiableUUID()":{"details":"Returns the storage slot that the proxiable contract assumes is being used to store the implementation address. IMPORTANT: A proxy pointing at a proxiable contract should not be considered proxiable itself, because this risks bricking a proxy that upgrades to it, by delegating to itself until out of gas. Thus it is critical that this function revert if invoked through a proxy."},"revokeRole(bytes32,address)":{"details":"Emits {RoleRevoked} event. Requirements: - `msg.sender` must be the admin.","params":{"account":"The address of the account from which the role is revoked.","role":"The identifier of the role."}},"setCustomFeeUSDFor(uint8,address,uint256)":{"details":"Emits a {SetCustomFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role. - `customFeeUSD` must be less than or equal to {MAX_FEE_USD}.","params":{"customFeeUSD":"The custom USD fee to set, denominated in 8 decimals.","protocol":"The protocol as defined in {Protocol} enum.","user":"The user address."}},"setMinFeeUSD(uint8,uint256)":{"details":"Emits a {SetMinFeeUSD} event. Notes: - In case of airdrops, the new fee applies only to the future campaigns created by the user. Past campaigns are not affected. - In case of streams, the new fee applies immediately to all the streams created by user. Requirements: - `msg.sender` must be either the admin or have the {IRoleAdminable.FEE_MANAGEMENT_ROLE} role. - `newMinFeeUSD` must be less than or equal to {MAX_FEE_USD}.","params":{"newMinFeeUSD":"The custom USD fee to set, denominated in 8 decimals.","protocol":"The protocol as defined in {Protocol} enum."}},"setOracle(address)":{"details":"Emits a {SetOracle} event. Requirements: - `msg.sender` must be the admin. - If `newOracle` is not the zero address, the call to it must not fail.","params":{"newOracle":"The new oracle contract address. It can be the zero address."}},"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[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."},"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."}},"transferFees(address[],address)":{"details":"Emits a {TransferFees} event. Notes: - If `feeRecipient` is a contract, it must be able to receive native tokens, e.g., ETH for Ethereum Mainnet. - `protocolAddresses` can be empty. Requirements: `feeRecipient` must not be the zero address. - If `msg.sender` has neither the {IRoleAdminable.FEE_COLLECTOR_ROLE} role nor is the contract admin, then `feeRecipient` must be the admin address. - `protocolAddresses` must implement the {IComptrollerable} interface.","params":{"feeRecipient":"The address to which the entire fee from this contract is transferred.","protocolAddresses":"An array of addresses of the Sablier protocols from which fees is transferred from."}}},"version":1},"userdoc":{"kind":"user","methods":{"FEE_COLLECTOR_ROLE()":{"notice":"A role with the authority to collect fees from the Sablier contracts."},"FEE_MANAGEMENT_ROLE()":{"notice":"A role with the authority to update fees across the Sablier contracts."},"MAX_FEE_USD()":{"notice":"Retrieves the maximum USD fee that can be set for claiming an airdrop or withdrawing from a stream."},"MINIMAL_INTERFACE_ID()":{"notice":"The minimal interface ID of the comptroller."},"admin()":{"notice":"The address of the admin account or contract."},"calculateMinFeeWei(uint8)":{"notice":"Calculates the minimum fee in wei for the given protocol."},"calculateMinFeeWeiFor(uint8,address)":{"notice":"Calculates the minimum fee in wei for the provided user for the given protocol."},"convertUSDFeeToWei(uint256)":{"notice":"Converts the fee amount from USD to Wei."},"disableCustomFeeUSDFor(uint8,address)":{"notice":"Disables the custom USD fee for the provided user for the given protocol, defaulting to the minimum fee."},"execute(address,bytes)":{"notice":"Executes an external call to any contract and function."},"getMinFeeUSD(uint8)":{"notice":"Get the minimum fee in USD for the given protocol, paid in the native token of the chain, e.g., ETH for Ethereum Mainnet. Use {calculateMinFeeWei} to retrieve the fee in wei."},"getMinFeeUSDFor(uint8,address)":{"notice":"Get the minimum fee in USD for the provided user for the given protocol, paid in the native token of the chain, e.g., ETH for Ethereum Mainnet. Use {calculateMinFeeWeiFor} to retrieve the fee in wei."},"grantRole(bytes32,address)":{"notice":"Grants `role` to `account`. Reverts if `account` already has the role."},"hasRoleOrIsAdmin(bytes32,address)":{"notice":"Returns `true` if `account` has the `role` or is the admin."},"oracle()":{"notice":"Retrieves the oracle contract address, which provides price data for the native token."},"revokeRole(bytes32,address)":{"notice":"Revokes `role` from `account`. Reverts if `account` does not have the role."},"setCustomFeeUSDFor(uint8,address,uint256)":{"notice":"Sets the custom USD fee for the provided user for the given protocol."},"setMinFeeUSD(uint8,uint256)":{"notice":"Sets a new min USD fee for the given protocol."},"setOracle(address)":{"notice":"Sets the oracle contract address. The zero address can be used to disable the oracle."},"transferAdmin(address)":{"notice":"Transfers the contract admin to a new address."},"transferFees(address[],address)":{"notice":"Transfers fees from the given protocol addresses to this contract, and then transfer the entire balance of this contract to the fee recipient."}},"version":1}},"settings":{"remappings":["@arbitrum/=node_modules/@arbitrum/","@chainlink/=node_modules/@chainlink/","@eth-optimism/=node_modules/@eth-optimism/","@offchainlabs/=node_modules/@offchainlabs/","@openzeppelin/=node_modules/@openzeppelin/","@scroll-tech/=node_modules/@scroll-tech/","@zksync/=node_modules/@zksync/","forge-std/=node_modules/forge-std/"],"optimizer":{"enabled":true,"runs":100000000},"metadata":{"bytecodeHash":"ipfs"},"compilationTarget":{"src/interfaces/ISablierComptroller.sol":"ISablierComptroller"},"evmVersion":"shanghai","libraries":{},"viaIR":true},"sources":{"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol":{"keccak256":"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d","urls":["bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196","dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"],"license":"MIT"},"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol":{"keccak256":"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb