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
Name | Type | Description |
---|---|---|
token | contract ISuperfluidToken | |
member | address | |
oldUnits | uint128 | |
newUnits | uint128 |
Event DistributionClaimed
event DistributionClaimed(
contract ISuperfluidToken token,
address member,
int256 claimedAmount,
int256 totalClaimed
)
Parameters
Name | Type | Description |
---|---|---|
token | contract ISuperfluidToken | |
member | address | |
claimedAmount | int256 | |
totalClaimed | int256 |
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
Name | Type | Description |
---|---|---|
memberAddress | address | The 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
Name | Type | Description |
---|---|---|
time | uint32 | The time to query |
The balance of all the disconnected members at time
Fn getMemberFlowRate
function getMemberFlowRate(
address memberAddress
)
external
returns (int96)
Parameters
Name | Type | Description |
---|---|---|
memberAddress | address | The 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
Name | Type | Description |
---|---|---|
memberAddr | address | The address of the member |
time | uint32 | The 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
Name | Type | Description |
---|---|---|
memberAddr | address | The 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
Name | Type | Description |
---|---|---|
memberAddr | address | The address of the member |
newUnits | uint128 | The new units for the member |
Sets memberAddr
ownedUnits to newUnits
Fn claimAll
function claimAll(
address memberAddr
)
external
returns (bool)
Parameters
Name | Type | Description |
---|---|---|
memberAddr | address | The 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
Name | Type | Description |
---|---|---|
spender | address | The address of the spender |
addedValue | uint256 | The amount to increase the allowance by |
Return Values
Name | Type | Description |
---|---|---|
[0] | bool | true if successful |
Increases the allowance of spender
by addedValue
Fn decreaseAllowance
function decreaseAllowance(
address spender,
uint256 subtractedValue
)
external
returns (bool)
Parameters
Name | Type | Description |
---|---|---|
spender | address | The address of the spender |
subtractedValue | uint256 | The amount to decrease the allowance by |
Return Values
Name | Type | Description |
---|---|---|
[0] | bool | true if successful |
Decreases the allowance of spender
by subtractedValue