Skip to main content

ISuperfluidPool

This is the technical reference related to the interface for any super token pool regardless of the distribution schemes.

ABI

In order to interact with the ISuperfluidPool contract, you can use the following ABI:

Click here to show ISuperfluidPool ABI

[
{
"inputs": [],
"name": "SUPERFLUID_POOL_INVALID_TIME",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_NOT_GDA",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_NOT_POOL_ADMIN_OR_GDA",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_NO_POOL_MEMBERS",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_NO_ZERO_ADDRESS",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_SELF_TRANSFER_NOT_ALLOWED",
"type": "error"
},
{
"inputs": [],
"name": "SUPERFLUID_POOL_TRANSFER_UNITS_NOT_ALLOWED",
"type": "error"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Approval",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract ISuperfluidToken",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "int256",
"name": "claimedAmount",
"type": "int256"
},
{
"indexed": false,
"internalType": "int256",
"name": "totalClaimed",
"type": "int256"
}
],
"name": "DistributionClaimed",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "contract ISuperfluidToken",
"name": "token",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "member",
"type": "address"
},
{
"indexed": false,
"internalType": "uint128",
"name": "oldUnits",
"type": "uint128"
},
{
"indexed": false,
"internalType": "uint128",
"name": "newUnits",
"type": "uint128"
}
],
"name": "MemberUnitsUpdated",
"type": "event"
},
{
"anonymous": false,
"inputs": [
{
"indexed": true,
"internalType": "address",
"name": "from",
"type": "address"
},
{
"indexed": true,
"internalType": "address",
"name": "to",
"type": "address"
},
{
"indexed": false,
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "Transfer",
"type": "event"
},
{
"inputs": [],
"name": "admin",
"outputs": [
{
"internalType": "address",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "owner",
"type": "address"
},
{
"internalType": "address",
"name": "spender",
"type": "address"
}
],
"name": "allowance",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "approve",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "account",
"type": "address"
}
],
"name": "balanceOf",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
}
],
"name": "claimAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "claimAll",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "subtractedValue",
"type": "uint256"
}
],
"name": "decreaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "distributionFromAnyAddress",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
},
{
"internalType": "uint32",
"name": "time",
"type": "uint32"
}
],
"name": "getClaimable",
"outputs": [
{
"internalType": "int256",
"name": "",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
}
],
"name": "getClaimableNow",
"outputs": [
{
"internalType": "int256",
"name": "claimableBalance",
"type": "int256"
},
{
"internalType": "uint256",
"name": "timestamp",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "uint32",
"name": "time",
"type": "uint32"
}
],
"name": "getDisconnectedBalance",
"outputs": [
{
"internalType": "int256",
"name": "balance",
"type": "int256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
}
],
"name": "getMemberFlowRate",
"outputs": [
{
"internalType": "int96",
"name": "",
"type": "int96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
}
],
"name": "getTotalAmountReceivedByMember",
"outputs": [
{
"internalType": "uint256",
"name": "totalAmountReceived",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalConnectedFlowRate",
"outputs": [
{
"internalType": "int96",
"name": "",
"type": "int96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalConnectedUnits",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalDisconnectedFlowRate",
"outputs": [
{
"internalType": "int96",
"name": "",
"type": "int96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalDisconnectedUnits",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalFlowRate",
"outputs": [
{
"internalType": "int96",
"name": "",
"type": "int96"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "getTotalUnits",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
}
],
"name": "getUnits",
"outputs": [
{
"internalType": "uint128",
"name": "",
"type": "uint128"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "spender",
"type": "address"
},
{
"internalType": "uint256",
"name": "addedValue",
"type": "uint256"
}
],
"name": "increaseAllowance",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "superToken",
"outputs": [
{
"internalType": "contract ISuperfluidToken",
"name": "",
"type": "address"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [],
"name": "totalSupply",
"outputs": [
{
"internalType": "uint256",
"name": "",
"type": "uint256"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transfer",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "from",
"type": "address"
},
{
"internalType": "address",
"name": "to",
"type": "address"
},
{
"internalType": "uint256",
"name": "value",
"type": "uint256"
}
],
"name": "transferFrom",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
},
{
"inputs": [],
"name": "transferabilityForUnitsOwner",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "view",
"type": "function"
},
{
"inputs": [
{
"internalType": "address",
"name": "memberAddr",
"type": "address"
},
{
"internalType": "uint128",
"name": "newUnits",
"type": "uint128"
}
],
"name": "updateMemberUnits",
"outputs": [
{
"internalType": "bool",
"name": "",
"type": "bool"
}
],
"stateMutability": "nonpayable",
"type": "function"
}
]

struct PoolIndexData

struct PoolIndexData {
uint128 totalUnits;
uint32 wrappedSettledAt;
int96 wrappedFlowRate;
int256 wrappedSettledValue;
}

struct MemberData

struct MemberData {
uint128 ownedUnits;
uint32 syncedSettledAt;
int96 syncedFlowRate;
int256 syncedSettledValue;
int256 settledValue;
int256 claimedValue;
}

SUPERFLUID_POOL_INVALID_TIME

error SUPERFLUID_POOL_INVALID_TIME()

SUPERFLUID_POOL_NO_POOL_MEMBERS

error SUPERFLUID_POOL_NO_POOL_MEMBERS()

SUPERFLUID_POOL_NO_ZERO_ADDRESS

error SUPERFLUID_POOL_NO_ZERO_ADDRESS()

SUPERFLUID_POOL_NOT_POOL_ADMIN_OR_GDA

error SUPERFLUID_POOL_NOT_POOL_ADMIN_OR_GDA()

SUPERFLUID_POOL_NOT_GDA

error SUPERFLUID_POOL_NOT_GDA()

SUPERFLUID_POOL_TRANSFER_UNITS_NOT_ALLOWED

error SUPERFLUID_POOL_TRANSFER_UNITS_NOT_ALLOWED()

Event MemberUnitsUpdated

event MemberUnitsUpdated(
contract ISuperfluidToken token,
address member,
uint128 oldUnits,
uint128 newUnits
)

Parameters

NameTypeDescription
tokencontract ISuperfluidToken
memberaddress
oldUnitsuint128
newUnitsuint128

Event DistributionClaimed

event DistributionClaimed(
contract ISuperfluidToken token,
address member,
int256 claimedAmount,
int256 totalClaimed
)

Parameters

NameTypeDescription
tokencontract ISuperfluidToken
memberaddress
claimedAmountint256
totalClaimedint256

Fn transferabilityForUnitsOwner

function transferabilityForUnitsOwner(
)
external
returns (bool)

A boolean indicating whether pool members can transfer their units

Fn distributionFromAnyAddress

function distributionFromAnyAddress(
)
external
returns (bool)

A boolean indicating whether addresses other than the pool admin can distribute via the pool

Fn admin

function admin(
)
external
returns (address)

The admin is the creator of the pool and has permissions to update member units and is the recipient of the adjustment flow rate

The pool admin

Fn superToken

function superToken(
)
external
returns (contract ISuperfluidToken)

The SuperToken for the pool

Fn getTotalUnits

function getTotalUnits(
)
external
returns (uint128)

The total units of the pool

Fn getTotalConnectedUnits

function getTotalConnectedUnits(
)
external
returns (uint128)

The total number of units of connected members

Fn getTotalDisconnectedUnits

function getTotalDisconnectedUnits(
)
external
returns (uint128)

The total number of units of disconnected members

Fn getUnits

function getUnits(
address memberAddress
)
external
returns (uint128)

Parameters

NameTypeDescription
memberAddressaddressThe address of the member

The total number of units for memberAddress

Fn getTotalFlowRate

function getTotalFlowRate(
)
external
returns (int96)

The total flow rate of the pool

Fn getTotalConnectedFlowRate

function getTotalConnectedFlowRate(
)
external
returns (int96)

The flow rate of the connected members

Fn getTotalDisconnectedFlowRate

function getTotalDisconnectedFlowRate(
)
external
returns (int96)

The flow rate of the disconnected members

Fn getDisconnectedBalance

function getDisconnectedBalance(
uint32 time
)
external
returns (int256 balance)

Parameters

NameTypeDescription
timeuint32The time to query

The balance of all the disconnected members at time

Fn getMemberFlowRate

function getMemberFlowRate(
address memberAddress
)
external
returns (int96)

Parameters

NameTypeDescription
memberAddressaddressThe address of the member

The flow rate a member is receiving from the pool

Fn getClaimable

function getClaimable(
address memberAddr,
uint32 time
)
external
returns (int256)

Parameters

NameTypeDescription
memberAddraddressThe address of the member
timeuint32The time to query

The claimable balance for memberAddr at time in the pool

Fn getClaimableNow

function getClaimableNow(
address memberAddr
)
external
returns (int256 claimableBalance, uint256 timestamp)

Parameters

NameTypeDescription
memberAddraddressThe address of the member

The claimable balance for memberAddr at block.timestamp in the pool

Fn updateMemberUnits

function updateMemberUnits(
address memberAddr,
uint128 newUnits
)
external
returns (bool)

Parameters

NameTypeDescription
memberAddraddressThe address of the member
newUnitsuint128The new units for the member

Sets memberAddr ownedUnits to newUnits

Fn claimAll

function claimAll(
address memberAddr
)
external
returns (bool)

Parameters

NameTypeDescription
memberAddraddressThe address of the member

Claims the claimable balance for memberAddr at block.timestamp

Fn claimAll

function claimAll(
)
external
returns (bool)

Claims the claimable balance for msg.sender at block.timestamp

Fn increaseAllowance

function increaseAllowance(
address spender,
uint256 addedValue
)
external
returns (bool)

Parameters

NameTypeDescription
spenderaddressThe address of the spender
addedValueuint256The amount to increase the allowance by

Return Values

NameTypeDescription
[0]booltrue if successful

Increases the allowance of spender by addedValue

Fn decreaseAllowance

function decreaseAllowance(
address spender,
uint256 subtractedValue
)
external
returns (bool)

Parameters

NameTypeDescription
spenderaddressThe address of the spender
subtractedValueuint256The amount to decrease the allowance by

Return Values

NameTypeDescription
[0]booltrue if successful

Decreases the allowance of spender by subtractedValue