[
  {
    "inputs": [
      { "internalType": "address", "name": "initialComptroller", "type": "address" },
      { "internalType": "address", "name": "initialNFTDescriptor", "type": "address" }
    ],
    "stateMutability": "nonpayable",
    "type": "constructor"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "comptroller", "type": "address" },
      { "internalType": "address", "name": "caller", "type": "address" }
    ],
    "name": "Comptrollerable_CallerNotComptroller",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "previousComptroller", "type": "address" },
      { "internalType": "address", "name": "newComptroller", "type": "address" },
      { "internalType": "bytes4", "name": "minimalInterfaceId", "type": "bytes4" }
    ],
    "name": "Comptrollerable_UnsupportedInterfaceId",
    "type": "error"
  },
  { "inputs": [], "name": "DelegateCall", "type": "error" },
  {
    "inputs": [
      { "internalType": "address", "name": "sender", "type": "address" },
      { "internalType": "uint256", "name": "tokenId", "type": "uint256" },
      { "internalType": "address", "name": "owner", "type": "address" }
    ],
    "name": "ERC721IncorrectOwner",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "operator", "type": "address" },
      { "internalType": "uint256", "name": "tokenId", "type": "uint256" }
    ],
    "name": "ERC721InsufficientApproval",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "approver", "type": "address" }],
    "name": "ERC721InvalidApprover",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "operator", "type": "address" }],
    "name": "ERC721InvalidOperator",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "owner", "type": "address" }],
    "name": "ERC721InvalidOwner",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "receiver", "type": "address" }],
    "name": "ERC721InvalidReceiver",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "sender", "type": "address" }],
    "name": "ERC721InvalidSender",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "tokenId", "type": "uint256" }],
    "name": "ERC721NonexistentToken",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlowState_Null",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlowState_StreamPaused",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlowState_StreamVoided",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "address", "name": "caller", "type": "address" }
    ],
    "name": "SablierFlowState_Unauthorized",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
    "name": "SablierFlow_CreateNativeToken",
    "type": "error"
  },
  { "inputs": [], "name": "SablierFlow_CreateRatePerSecondZero", "type": "error" },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_DepositAmountZero",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "feePaid", "type": "uint256" },
      { "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }
    ],
    "name": "SablierFlow_InsufficientFeePayment",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "uint128", "name": "availableAmount", "type": "uint128" },
      { "internalType": "uint128", "name": "amount", "type": "uint128" }
    ],
    "name": "SablierFlow_InvalidCalculation",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
    "name": "SablierFlow_InvalidTokenDecimals",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "nativeToken", "type": "address" }],
    "name": "SablierFlow_NativeTokenAlreadySet",
    "type": "error"
  },
  { "inputs": [], "name": "SablierFlow_NativeTokenZeroAddress", "type": "error" },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_NewRatePerSecondZero",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "recipient", "type": "address" },
      { "internalType": "address", "name": "streamRecipient", "type": "address" }
    ],
    "name": "SablierFlow_NotStreamRecipient",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "address", "name": "sender", "type": "address" },
      { "internalType": "address", "name": "streamSender", "type": "address" }
    ],
    "name": "SablierFlow_NotStreamSender",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_NotTransferable",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "uint128", "name": "amount", "type": "uint128" },
      { "internalType": "uint128", "name": "withdrawableAmount", "type": "uint128" }
    ],
    "name": "SablierFlow_Overdraw",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "UD21x18", "name": "ratePerSecond", "type": "uint128" }
    ],
    "name": "SablierFlow_RatePerSecondNotDifferent",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_RefundAmountZero",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "uint128", "name": "refundAmount", "type": "uint128" },
      { "internalType": "uint128", "name": "refundableAmount", "type": "uint128" }
    ],
    "name": "SablierFlow_RefundOverflow",
    "type": "error"
  },
  { "inputs": [], "name": "SablierFlow_SenderZeroAddress", "type": "error" },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_StreamBalanceZero",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_StreamNotPaused",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "uint40", "name": "snapshotTime", "type": "uint40" }
    ],
    "name": "SablierFlow_StreamPending",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
    "name": "SablierFlow_SurplusZero",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "address", "name": "caller", "type": "address" }
    ],
    "name": "SablierFlow_Unauthorized",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_WithdrawAmountZero",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "SablierFlow_WithdrawToZeroAddress",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "address", "name": "caller", "type": "address" },
      { "internalType": "address", "name": "to", "type": "address" }
    ],
    "name": "SablierFlow_WithdrawalAddressNotRecipient",
    "type": "error"
  },
  {
    "inputs": [
      { "internalType": "uint8", "name": "bits", "type": "uint8" },
      { "internalType": "uint256", "name": "value", "type": "uint256" }
    ],
    "name": "SafeCastOverflowedUintDowncast",
    "type": "error"
  },
  {
    "inputs": [{ "internalType": "address", "name": "token", "type": "address" }],
    "name": "SafeERC20FailedOperation",
    "type": "error"
  },
  {
    "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": false, "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "indexed": false, "internalType": "address", "name": "creator", "type": "address" },
      { "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": false, "internalType": "uint40", "name": "snapshotTime", "type": "uint40" },
      { "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": "contract ISablierComptroller",
        "name": "comptroller",
        "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": false,
        "internalType": "contract ISablierComptroller",
        "name": "oldComptroller",
        "type": "address"
      },
      {
        "indexed": false,
        "internalType": "contract ISablierComptroller",
        "name": "newComptroller",
        "type": "address"
      }
    ],
    "name": "SetComptroller",
    "type": "event"
  },
  {
    "anonymous": false,
    "inputs": [
      {
        "indexed": true,
        "internalType": "contract ISablierComptroller",
        "name": "comptroller",
        "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": "contract ISablierComptroller",
        "name": "comptroller",
        "type": "address"
      },
      { "indexed": false, "internalType": "address", "name": "nativeToken", "type": "address" }
    ],
    "name": "SetNativeToken",
    "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": "contract ISablierComptroller",
        "name": "comptroller",
        "type": "address"
      },
      { "indexed": false, "internalType": "uint256", "name": "feeAmount", "type": "uint256" }
    ],
    "name": "TransferFeesToComptroller",
    "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" }
    ],
    "name": "WithdrawFromFlowStream",
    "type": "event"
  },
  {
    "inputs": [
      { "internalType": "uint256", "name": "streamId", "type": "uint256" },
      { "internalType": "UD21x18", "name": "newRatePerSecond", "type": "uint128" }
    ],
    "name": "adjustRatePerSecond",
    "outputs": [],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }],
    "name": "aggregateAmount",
    "outputs": [{ "internalType": "uint256", "name": "amount", "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": "", "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": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "calculateMinFeeWei",
    "outputs": [{ "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }],
    "stateMutability": "view",
    "type": "function"
  },
  {
    "inputs": [],
    "name": "comptroller",
    "outputs": [{ "internalType": "contract ISablierComptroller", "name": "", "type": "address" }],
    "stateMutability": "view",
    "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": "uint40", "name": "startTime", "type": "uint40" },
      { "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": "uint40", "name": "startTime", "type": "uint40" },
      { "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": "tokenId", "type": "uint256" }],
    "name": "getApproved",
    "outputs": [{ "internalType": "address", "name": "", "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": "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": "nativeToken",
    "outputs": [{ "internalType": "address", "name": "", "type": "address" }],
    "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": "", "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" },
      { "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": [{ "internalType": "uint128", "name": "refundedAmount", "type": "uint128" }],
    "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 ISablierComptroller",
        "name": "newComptroller",
        "type": "address"
      }
    ],
    "name": "setComptroller",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [
      {
        "internalType": "contract IFlowNFTDescriptor",
        "name": "newNFTDescriptor",
        "type": "address"
      }
    ],
    "name": "setNFTDescriptor",
    "outputs": [],
    "stateMutability": "nonpayable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "address", "name": "newNativeToken", "type": "address" }],
    "name": "setNativeToken",
    "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": "streamId", "type": "uint256" }],
    "name": "tokenURI",
    "outputs": [{ "internalType": "string", "name": "uri", "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": [],
    "name": "transferFeesToComptroller",
    "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": "contract IERC20", "name": "token", "type": "address" },
      { "internalType": "address", "name": "to", "type": "address" },
      { "internalType": "uint128", "name": "amount", "type": "uint128" }
    ],
    "name": "transferTokens",
    "outputs": [],
    "stateMutability": "payable",
    "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": [],
    "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" }],
    "stateMutability": "payable",
    "type": "function"
  },
  {
    "inputs": [{ "internalType": "uint256", "name": "streamId", "type": "uint256" }],
    "name": "withdrawableAmountOf",
    "outputs": [{ "internalType": "uint128", "name": "withdrawableAmount", "type": "uint128" }],
    "stateMutability": "view",
    "type": "function"
  }
]
