Skip to content
ClearClear
Docs
Protocol/RevolvingIssuer

RevolvingIssuer

Source: contracts/peripherals/RevolvingIssuer.sol · Guide: credit · Upgradeable (UUPS proxy)

3 min readUpdated View source

On this page
Network
Chain id
Address
Base Sepolia
84532

Functions that change state

Function
Who can call
Also
__CreditIssuer_init(address _stableCredit)
onlyInitializing
absorbRepayment(address member, uint256 available, uint256 minRate)
onlyStableCredit
addTier(bytes32 kind, uint256 ratePerCycle, uint64 cycleLength_)
onlyOperator
initialize(address _stableCredit, address _carryTreasury)
Once, when the proxy is initialised
initializeCreditLine(address member, uint256 limit, uint256 initialBalance, uint256 periodLength, uint256 graceLength)
onlyOperator
notNull(member), notInActivePeriod(member)
materialiseCarry(address member)
Anyone
openLine(address member, uint256[] capacities, uint256 periodLength, uint256 graceLength)
onlyOperator
notNull(member), notInActivePeriod(member)
pausePeriodOf(address member)
onlyOperator
renounceOwnership()
The owner
repayCardSpend(bytes32 ref, address member, uint256 amount)
Anyone; acts on the caller's own account
notNull(member)
repayForMember(bytes32 ref, address member, uint256 amount)
Anyone; acts on the caller's own account
notNull(member)
reverseCardSpend(bytes32 ref, uint256 amount)
Anyone; acts on the caller's own account
setAutoRepay(bool enabled)
Anyone; acts on the caller's own account
setCardSettlementAccount(address account)
onlyOperator
notNull(account)
setCardSettler(address settler, bool allowed)
onlyOperator
notNull(settler)
setCarryTreasury(address treasury)
onlyOperator
setExposureSource(address _exposureSource)
onlyOperator
setGraceLengthOf(address member, uint256 graceLength)
onlyOperator
setPeriodExpirationOf(address member, uint256 periodExpiration)
onlyOperator
setTierActive(uint256 tierId, bool active)
onlyOperator
setTierCapacity(address member, uint256 tierId, uint256 capacity)
onlyOperator
setTierCarryRecipient(uint256 tierId, address recipient)
onlyOperator
setTierRate(uint256 tierId, uint256 ratePerCycle)
onlyOperator
settleCardSpend(bytes32 ref, address member, uint256 amount)
Anyone; acts on the caller's own account
notNull(member)
settleFromCollateral(address member, uint256 tierId, uint256 amount)
onlyOperator
syncCreditPeriod(address member)
Anyone
syncCreditPositions(address sender, address recipient, uint256 amount)
onlyStableCredit
transferOwnership(address newOwner)
The owner
underwriteMember(address member)
Anyone
notNull(member), canIssueCreditTo(member)
unpausePeriodOf(address member)
onlyOperator
updateCreditPeriod(address member, uint256 periodExpiration, uint256 graceLength)
onlyOperator
upgradeTo(address newImplementation)
onlyOwner (via _authorizeUpgrade)
upgradeToAndCall(address newImplementation, bytes data)
onlyOwner (via _authorizeUpgrade)
payable
validateCreditTransaction(address sender, address recipient, uint256 amount)
onlyStableCredit

Read functions

Anyone can call these; they change nothing.

Function
Returns
autoRepayEnabled(address)
bool
autoRepaymentOf(bytes32 ref)
uint256
averageBalanceCarriedOf(address member)
uint256
capacityOf(address member, uint256 tierId)
uint256
cardRepaymentOf(bytes32 ref)
uint256
cardSettlementAccount()
address
cardSettlementOf(bytes32 ref)
address member, uint256 amount
carryOf(address member, uint256 tierId)
uint256
carryRecipientOf(uint256 tierId)
address
carryTreasury()
address
creditPeriods(address)
uint256 issuedAt, uint256 expiration, uint256 graceLength, bool paused
cycleLength()
uint64
debtByKind(address member)
bytes32[] kinds, uint256[] amounts
defaultedAt(address)
uint64
drawnOf(address member, uint256 tierId)
uint256
exposureSource()
address
graceExpirationOf(address member)
uint256
hasBalanceToMeasure(address member)
bool
hasDefaulted(address member)
bool
headroomOf(address member, uint256 tierId)
uint256
inActivePeriod(address member)
bool
incomeOf(address)
uint256 creditsReceived, uint256 depositsReceived, uint256 debtSeconds, uint64 lastAccrued, uint64 windowStart
inCompliance(address member)
bool
inDefault(address member)
bool
inExpiredPeriod(address member)
bool
inGracePeriod(address member)
bool
inInitializedPeriod(address member)
bool
isCardSettler(address)
bool
isFrozen(address member)
bool
itdOf(address member)
uint256
meetsITD(address member, uint256 minimumItd)
bool
nextRepaymentRate(address member)
uint256 rate, bool hasPosition
owner()
address
paused()
bool
periodExpirationOf(address member)
uint256
principalOf(address member, uint256 tierId)
uint256
proxiableUUID()
bytes32
stableCredit()
address
tierAt(uint256 tierId)
bytes32 kind, uint256 ratePerCycle, bool active
tierCount()
uint256
totalCapacityOf(address member)
uint256 total
totalDrawnOf(address member)
uint256 total
totalPrincipalOf(address member)
uint256 total

Events

Event
AdminChanged(address previousAdmin, address newAdmin)
AutoRepaid(bytes32 ref indexed, address member indexed, uint256 amount)
AutoRepaySet(address member indexed, bool enabled)
BeaconUpgraded(address beacon indexed)
CardSettlementAccountUpdated(address account)
CardSettlerUpdated(address settler indexed, bool allowed)
CardSpendRepaid(bytes32 ref indexed, address member indexed, uint256 amount)
CardSpendReversed(bytes32 ref indexed, address member indexed, uint256 amount)
CardSpendSettled(bytes32 ref indexed, address member indexed, uint256 amount)
CarryRecipientUpdated(uint256 tierId indexed, address recipient)
CarryTreasuryUpdated(address treasury)
CreditLineDefaulted(address member)
CreditPeriodCreated(address member, uint256 periodExpiration, uint256 graceLength)
CreditPeriodExpired(address member)
CreditTermsPaused(address member)
CreditTermsUnpaused(address member)
GraceLengthUpdated(address member, uint256 graceLength)
Initialized(uint8 version)
OwnershipTransferred(address previousOwner indexed, address newOwner indexed)
Paused(address account)
TierAdded(uint256 tierId indexed, bytes32 kind, uint256 ratePerCycle)
TierCapacityUpdated(address member indexed, uint256 tierId indexed, uint256 capacity)
TierCarryMaterialised(address member indexed, uint256 tierId indexed, uint256 amount)
TierDrawn(address member indexed, uint256 tierId indexed, uint256 amount)
TierRateUpdated(uint256 tierId indexed, uint256 ratePerCycle)
TierRepaid(address member indexed, uint256 tierId indexed, uint256 amount)
Unpaused(address account)
Upgraded(address implementation indexed)

Errors

Error
InvalidCycleLength()
NotInitialized()
RateTooHigh(uint256 ratePerCycle)
RevolvingIssuerAutoRepayAlreadyUsed(bytes32 ref)
RevolvingIssuerAutoRepayNotEnabled(address member)
RevolvingIssuerCapacityBelowDrawn(uint256 tierId, uint256 capacity, uint256 drawn)
RevolvingIssuerCardAlreadyRepaid(bytes32 ref)
RevolvingIssuerCardAlreadySettled(bytes32 ref)
RevolvingIssuerCardAmountZero()
RevolvingIssuerCardFloatCannotCover(uint256 amount, uint256 held)
RevolvingIssuerCardHeadroom(address member, uint256 amount, uint256 headroom)
RevolvingIssuerCardNotSettled(bytes32 ref)
RevolvingIssuerCardRepaymentExceedsDrawn(address member, uint256 amount, uint256 principal)
RevolvingIssuerCardReversalExceedsSettlement(bytes32 ref, uint256 amount, uint256 settled)
RevolvingIssuerCycleMismatch(uint64 expected, uint64 given)
RevolvingIssuerNoCardSettlementAccount()
RevolvingIssuerNoCarryRecipient()
RevolvingIssuerNotCardSettler(address caller)
RevolvingIssuerRatesMustAscend(uint256 previous, uint256 proposed)
RevolvingIssuerUnknownTier(uint256 tierId)