Skip to main content

Flow

Git Source

Structs

Stream

Struct representing Flow streams.

The fields are arranged like this to save gas via tight variable packing.

struct Stream {
uint128 balance;
UD21x18 ratePerSecond;
address sender;
uint40 snapshotTime;
bool isStream;
bool isTransferable;
bool isVoided;
IERC20 token;
uint8 tokenDecimals;
uint256 snapshotDebtScaled;
}

Properties

NameTypeDescription
balanceuint128The amount of tokens that are currently available in the stream, denoted in the token's decimals. This is the sum of deposited amounts minus the sum of withdrawn amounts.
ratePerSecondUD21x18The payment rate per second, denoted as a fixed-point number where 1e18 is 1 token per second. For example, to stream 1000 tokens per week, this parameter would have the value (10001018)/(7daysinseconds)(1000 * 10^18) / (7 days in seconds).
senderaddressThe address streaming the tokens, with the ability to pause the stream.
snapshotTimeuint40The Unix timestamp used for the ongoing debt calculation.
isStreamboolBoolean indicating if the struct entity exists.
isTransferableboolBoolean indicating if the stream NFT is transferable.
isVoidedboolBoolean indicating if the stream is voided. Voiding any stream is non-reversible and it cannot be restarted. Voiding an insolvent stream sets its uncovered debt to zero.
tokenIERC20The contract address of the ERC-20 token to stream.
tokenDecimalsuint8The decimals of the ERC-20 token to stream.
snapshotDebtScaleduint256The amount of tokens that the sender owed to the recipient at snapshot time, denoted as a 18-decimals fixed-point number. This, along with the ongoing debt, can be used to calculate the total debt at any given point in time.

Enums

Status

Enum representing the different statuses of a stream.

Notes:

  • value0: PENDING Stream scheduled to start in the future.

  • value1: STREAMING_SOLVENT Streaming stream with no uncovered debt.

  • value2: STREAMING_INSOLVENT Streaming stream with uncovered debt.

  • value3: PAUSED_SOLVENT Paused stream with no uncovered debt.

  • value4: PAUSED_INSOLVENT Paused stream with uncovered debt.

  • value5: VOIDED Paused stream with no uncovered debt, which cannot be restarted.

enum Status {
PENDING,
STREAMING_SOLVENT,
STREAMING_INSOLVENT,
PAUSED_SOLVENT,
PAUSED_INSOLVENT,
VOIDED
}