TermIssuer
Source: contracts/peripherals/TermIssuer.sol · Guide: credit · Upgradeable (UUPS proxy)
Functions that change state
Function
Who can call
Also
__CreditIssuer_init(address _stableCredit)onlyInitializingabsorbRepayment(address member, uint256 available, uint256 minRate)onlyStableCreditclosePlanForRefund(uint256 planId, uint256 amount, address merchant, uint256 payout)onlyOperatorcollectForMember(bytes32 ref, address member, uint256 amount)Anyone; acts on the caller's own account
notNull(member)declareDefault(address member)Anyone; acts on the caller's own account
notNull(member)initialize(address _stableCredit, address _carryTreasury)Once, when the proxy is initialised
initializeCreditLine(address member, uint256 limit, uint256 initialBalance, uint256 periodLength, uint256 graceLength)onlyOperatornotNull(member), notInActivePeriod(member)materialiseCarry(uint256 planId)Anyone
openPlan(address member, address merchant, uint256 purchase, uint256 payout, uint256 ratePerCycle, uint64 cycleLength, uint32 installments, uint64 installmentLength)onlyOperatornotNull(member)pausePeriodOf(address member)onlyOperatorpayPlan(uint256 planId, uint256 amount)Anyone; acts on the caller's own account
payResidualCarry(address member, uint256 amount)Anyone; acts on the caller's own account
notNull(member)reinstate(address member)Anyone; acts on the caller's own account
notNull(member)renounceOwnership()The owner
repayWrittenOff(address member, uint256 amount)Anyone; acts on the caller's own account
notNull(member)setCarryTreasury(address treasury)onlyOperatorsetFeeRecipient(address recipient)onlyOperatorsetGraceLengthOf(address member, uint256 graceLength)onlyOperatorsetMandateSource(address source)onlyOperatorsetPeriodExpirationOf(address member, uint256 periodExpiration)onlyOperatorsetSplit(uint256 planId, uint32 installments)Checked inside the function
setTermLimit(address member, uint256 limit)onlyOperatornotNull(member)syncCreditPeriod(address member)Anyone
syncCreditPositions(address sender, address recipient, uint256 amount)onlyStableCredittransferOwnership(address newOwner)The owner
underwriteMember(address member)Anyone
notNull(member), canIssueCreditTo(member)unpausePeriodOf(address member)onlyOperatorupdateCreditPeriod(address member, uint256 periodExpiration, uint256 graceLength)onlyOperatorupgradeTo(address newImplementation)onlyOwner (via _authorizeUpgrade)upgradeToAndCall(address newImplementation, bytes data)onlyOwner (via _authorizeUpgrade)payable
validateCreditTransaction(address sender, address recipient, uint256 amount)onlyStableCreditRead functions
Anyone can call these; they change nothing.
Function
Returns
arrearsOf(uint256 planId)uint256
averageBalanceCarriedOf(address member)uint256
carryOn(uint256 planId)uint256
carryTreasury()address
creditPeriods(address)uint256 issuedAt, uint256 expiration, uint256 graceLength, bool paused
debtByKind(address member)bytes32[] kinds, uint256[] amounts
DEFAULT_AFTER_INSTALLMENTS()uint256
defaultableAt(uint256 planId)uint256
defaultedAt(address)uint64
delinquentSince(uint256 planId)uint256
feeRecipient()address
graceExpirationOf(address member)uint256
hasBalanceToMeasure(address member)bool
hasDefaulted(address member)bool
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
installmentsDue(uint256 planId)uint256
isFrozen(address member)bool
isOfferedSplit(uint32 installments)bool
itdOf(address member)uint256
mandateCollectionOf(bytes32 ref)uint256
mandateSource()address
MAX_SPLIT_CHANGES()uint8
meetsITD(address member, uint256 minimumItd)bool
memberDefaultableAt(address member)uint256 soonest
nextRepaymentRate(address member)uint256 rate, bool hasPosition
owedOn(uint256 planId)uint256
owner()address
paused()bool
pendingCarryOn(uint256 planId)uint256
periodExpirationOf(address member)uint256
planAt(uint256 planId)address member, uint256 principal, uint256 principalOutstanding, uint256 repaid, uint64 openedAt, uint32 installments, uint64 installmentLength, uint256 ratePerCycle, bool closed
planCount()uint256
plansOf(address member)uint256[]
proxiableUUID()bytes32
recoveredOf(address)uint256
refundedOf(uint256)uint256
residualCarryOf(address member)uint256
scheduledPrincipalDue(uint256 planId)uint256
scheduleOf(uint256 planId)uint256 installmentAmount, uint256 scheduleTotal, uint32 installments, uint64 scheduleStart
splitAllowance(uint256 planId)uint8 remaining, uint256 availableAt
stableCredit()address
TERM_KIND()bytes32
termLimitOf(address)uint256
termSuspended(address)bool
totalArrearsOf(address member)uint256 total
totalOwedOf(address member)uint256 total
totalPrincipalOf(address member)uint256 total
writtenOffOf(address)uint256
Events
Event
AdminChanged(address previousAdmin, address newAdmin)BeaconUpgraded(address beacon indexed)CarryTreasuryUpdated(address treasury)CollectedForMember(bytes32 ref indexed, address member indexed, uint256 amount)CreditLineDefaulted(address member)CreditPeriodCreated(address member, uint256 periodExpiration, uint256 graceLength)CreditPeriodExpired(address member)CreditTermsPaused(address member)CreditTermsUnpaused(address member)FeeRecipientUpdated(address recipient)GraceLengthUpdated(address member, uint256 graceLength)Initialized(uint8 version)MandateSourceUpdated(address source)OwnershipTransferred(address previousOwner indexed, address newOwner indexed)Paused(address account)PlanCarryMaterialised(uint256 planId indexed, uint256 amount)PlanClosed(uint256 planId indexed)PlanOpened(uint256 planId indexed, address member indexed, uint256 principal, uint256 ratePerCycle, uint32 installments)PlanPaid(uint256 planId indexed, uint256 amount, uint256 principalPortion)PlanRefunded(uint256 planId indexed, uint256 amount)PlanRefundPaid(uint256 planId indexed, uint256 returned, uint256 carryWithheld)PlanSplitChanged(uint256 planId indexed, uint32 installments, uint256 spread, uint256 carriedArrears)ResidualCarryPaid(address member indexed, address payer indexed, uint256 amount)TermDefaulted(address member indexed, uint256 writtenOff)TermLimitUpdated(address member indexed, uint256 limit)TermReinstated(address member indexed)Unpaused(address account)Upgraded(address implementation indexed)WrittenOffRepaid(address member indexed, address payer indexed, uint256 amount)Errors
Error
InvalidCycleLength()NotInitialized()RateTooHigh(uint256 ratePerCycle)TermIssuerBehindSchedule(address member)TermIssuerCollectionUsed(bytes32 ref)TermIssuerExceedsTermLimit(address member, uint256 requested, uint256 limit)TermIssuerInvalidSchedule()TermIssuerMandateOff(address member)TermIssuerNoCarryRecipient()TermIssuerNotCollector(address caller)TermIssuerNotDefaultable(address member)TermIssuerNothingToPay(uint256 planId)TermIssuerNotPlanHolder(address caller)TermIssuerNotReinstatable(address member)TermIssuerPlanClosed(uint256 planId)TermIssuerSplitLimitReached(uint256 planId)TermIssuerSplitNotOffered(uint32 installments)TermIssuerSplitTooSoon(uint256 planId, uint256 availableAt)TermIssuerSuspended(address member)TermIssuerUnknownPlan(uint256 planId)