Skip to main content

JBPayoutRedemptionPaymentTerminal

Generic terminal managing all inflows and outflows of funds into the protocol ecosystem.

Traits​

abstract

Code​

https://github.com/jbx-protocol/juice-contracts-v3/blob/main/contracts/abstract/JBPayoutRedemptionPaymentTerminal.sol

Interfaces​

NameDescription
IJBPayoutRedemptionPaymentTerminalGeneral interface for the methods in this contract that interact with the blockchain's state according to the protocol's rules.

Inheritance​

ContractDescription
JBSingleTokenPaymentTerminalGeneric terminal managing all inflows of funds into the protocol ecosystem for one token.
JBOperatableIncludes convenience functionality for checking a message sender's permissions before executing certain transactions.
OwnableIncludes convenience functionality for checking a message sender's permissions before executing certain transactions.
ReentrancyGuardContract module that helps prevent reentrant calls to a function.

Constructor​

/**
@param _token The token that this terminal manages.
@param _decimals The number of decimals the token fixed point amounts are expected to have.
@param _currency The currency that this terminal's token adheres to for price feeds.
@param _baseWeightCurrency The currency to base token issuance on.
@param _payoutSplitsGroup The group that denotes payout splits from this terminal in the splits store.
@param _operatorStore A contract storing operator assignments.
@param _projects A contract which mints ERC-721's that represent project ownership and transfers.
@param _directory A contract storing directories of terminals and controllers for each project.
@param _splitsStore A contract that stores splits for each project.
@param _prices A contract that exposes price feeds.
@param _store A contract that stores the terminal's data.
@param _owner The address that will own this contract.
*/
constructor( // payable constructor save the gas used to check msg.value==0
address _token,
uint256 _decimals,
uint256 _currency,
uint256 _baseWeightCurrency,
uint256 _payoutSplitsGroup,
IJBOperatorStore _operatorStore,
IJBProjects _projects,
IJBDirectory _directory,
IJBSplitsStore _splitsStore,
IJBPrices _prices,
IJBSingleTokenPaymentTerminalStore _store,
address _owner
) payable JBSingleTokenPaymentTerminal(_token, _decimals, _currency) JBOperatable(_operatorStore) {
baseWeightCurrency = _baseWeightCurrency;
payoutSplitsGroup = _payoutSplitsGroup;
projects = _projects;
directory = _directory;
splitsStore = _splitsStore;
prices = _prices;
store = _store;

transferOwnership(_owner);
}
  • _token is the token that this terminal manages.
  • _decimals is the number of decimals the token fixed point amounts are expected to have.
  • _currency is the currency that this terminal's token adheres to for price feeds. From JBCurrencies.
  • _baseWeightCurrency is the currency to base token issuance on. From JBCurrencies.
  • _payoutSplitsGroup is the group that denotes payout splits from this terminal in the splits store. From JBSplitGroups.
  • _operatorStore is an IJBOperatorStore contract storing operator assignments.
  • _projects is an IJBProjects contract which mints ERC-721's that represent project ownership and transfers.
  • _directory is an IJBDirectory contract storing directories of terminals and controllers for each project.
  • _splitsStore is an IJBSplitsStore contract that stores splits for each project.
  • _prices is an IJBPrices contract that exposes price feeds.
  • _store is a contract that stores the terminal's data.
  • _owner is the address that will own this contract.

Events​

NameData
AddToBalance
  • uint256 indexed projectId
  • uint256 amount
  • uint256 refundedFees
  • string memo
  • address caller
Migrate
DistributePayouts
  • uint256 indexed fundingCycleConfiguration
  • uint256 indexed fundingCycleNumber
  • uint256 indexed projectId
  • address beneficiary
  • uint256 amount
  • uint256 distributedAmount
  • uint256 fee
  • uint256 beneficiaryDistributionAmount
  • string memo
  • address caller
UseAllowance
  • uint256 indexed fundingCycleConfiguration
  • uint256 indexed fundingCycleNumber
  • uint256 indexed projectId
  • address beneficiary
  • uint256 amount
  • uint256 distributedAmount
  • uint256 netDistributedamount
  • string memo
  • address caller
ProcessFee
  • uint256 indexed projectId
  • uint256 indexed amount
  • bool indexed wasHeld
  • address beneficiary
  • address caller
RefundHeldFees
  • uint256 indexed projectId
  • uint256 indexed amount
  • uint256 indexed refundedFees
  • uint256 leftoverAmount
  • address caller
HoldFee
  • uint256 indexed projectId
  • uint256 indexed amount
  • uint256 indexed fee
  • uint256 feeDiscount
  • address beneficiary
  • address caller
Pay
  • uint256 indexed fundingCycleConfiguration
  • uint256 indexed fundingCycleNumber
  • uint256 indexed projectId
  • address beneficiary
  • uint256 amount
  • uint256 beneficiaryTokenCount
  • string memo
  • address payer
  • address caller
DelegateDidPay
RedeemTokens
  • uint256 indexed fundingCycleConfiguration
  • uint256 indexed fundingCycleNumber
  • uint256 indexed projectId
  • address holder
  • address beneficiary
  • uint256 tokenCount
  • uint256 reclaimedAmount
  • string memo
  • bytes metadata
  • address caller
DelegateDidRedeem
DistributeToPayoutSplit
  • uint256 indexed projectId
  • uint256 indexed domain
  • uint256 indexed group
  • JBSplit split
  • uint256 amount
  • address caller
SetFee
  • uint256 fee
  • address caller
SetFeeGauge
SetFeelessAddress
  • address indexed addrs
  • bool indexed flag
  • address caller

Modifiers​

FunctionDefinition
isTerminalOf

Params

  • uint256 _projectId

Properties​

FunctionDefinition
projects

Traits

  • immutable

Returns

directory

Traits

  • immutable

Returns

splitsStore

Traits

  • immutable

Returns

prices

Traits

  • immutable

Returns

store

Traits

  • immutable

Returns

baseWeightCurrency

Traits

  • immutable

Returns

  • uint256
payoutSplitsGroup

Traits

  • immutable

Returns

  • uint256
fee

Returns

  • uint256
feeGauge

Params

Returns

isFeelessAddress

returns

  • bool

Read​

FunctionDefinition
currentEthOverflowOf

Params

  • uint256 _projectId

Returns

  • uint256 ethOverflow
heldFeesOf

Params

  • uint256 _projectId

Returns

supportsInterface

Params

  • uint256 _interfaceId

Returns

  • bool

Write​

FunctionDefinition
pay

Traits

  • payable
  • virtual

Params

  • uint256 _projectId
  • uint256 _amount
  • address _token
  • address _beneficiary
  • uint256 _minReturnedTokens
  • bool _preferClaimedTokens
  • string _memo
  • bytes _metadata

Returns

  • uint256 beneficiaryTokenCount
distributePayoutsOf

Traits

  • virtual

Params

  • uint256 _projectId
  • uint256 _amount
  • uint256 _currency
  • address _token
  • uint256 _minReturnedTokens
  • string _memo

Returns

  • uint256 netLeftoverDistributionAmount
useAllowanceOf

Traits

Params

  • uint256 _projectId
  • uint256 _amount
  • uint256 _currency
  • address _token
  • uint256 _minReturnedTokens
  • address payable _beneficiary
  • string _memo

Returns

  • uint256 netDistributedAmount
redeemTokensOf

Traits

Params

  • address _holder
  • uint256 _projectId
  • uint256 _tokenCount
  • address _token
  • uint256 _minReturnedTokens
  • address payable _beneficiary
  • string _memo
  • bytes _metadata

Returns

  • uint256 reclaimAmount
migrate

Traits

Params

Returns

  • uint256 balance
addToBalanceOf

Traits

  • payable
  • virtual

Params

  • uint256 _projectId
  • uint256 _amount
  • address _token
  • string _memo
processFees

Traits

Params

  • uint256 _projectId
setFee

Traits

Params

  • uint256 _fee
setFeeGauge

Traits

Params

setFeelessAddress

Traits

Params

  • address _address
  • bool _flag
_transferFrom

Traits

  • internal
  • virtual

Params

  • address _from
  • address payable _to
  • uint256 _amount
_beforeTransferTo

Traits

  • internal
  • virtual

Params

  • address _to
  • uint256 _amount