classDiagram
class DebtDAOAgent {
+desc: Generalized ABM, Mesa, and Onchain interaction logic
}
class CreditActor {
+desc: Generalized (un)SecuredLine interaction logic
+attr: RISK_SEEKING
+attr: RISK_AVERSION
+attr: PREFFERRED_ASSET
+attr: preferred_rate
+attr: max_rate
+attr:
}
class Borrower {
+desc: Specialized actions and attributes for CreditActor type
+attr: target_borrow_rate
}
class AutomatedBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 100
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 500
+attr: vault_yield
}
class AggressiveBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 10
+attr: RISK_SEEKING = 80
+attr: target_borrow_rate = 1500
}
class BullishBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 0
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 2500
}
class EliteTraderBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 100
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 1000
}
class Lender {
+desc: Specialized actions and attributes for CreditActor type
+attr: RISK_SEEKING
}
class AggressiveLender {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_SEEKING
}
class Spigot {
+NOTE: Not an agent
+desc: Specialized actions and attributes for CreditActor type
+attr: REVENUE_EPOCH_LENGTH # time for 100% revenue to accrue
+attr: contracts[] # revenue generators attached to spigots
+attr: revenue_distribution[] # % of revenue per contract
+attr: assets[] # assets earned as revenue by contracts
+attr: asset_distribution[] # % of revenue per asset
}
Borrower --> Spigot: owns
class Arbiter {
+attr: LIQUIDATION_LATENCY
+attr: borrower vs lender bias
+attr: collateral preferences
+attr: max trade slipage
+attr:
}
class PoolActor {
+desc: Generalized Pool interaction logic
+attr: PREFERRED_ASSET
}
class PoolDelegate {
+attr: RISK SEEKING
}
class PoolDepositor {
+attr: RISK SEEKING
}
class PoolSnitch {
+attr: MAX_BASE_GAS
+attr: MAX_TIP
+attr: MIN_TOTAL_PROFIT
+attr: MIN_PROFIT_MARGIN
}
DebtDAOAgent --> CreditActor: parent
DebtDAOAgent --> Arbiter: parent
Borrower --> AggressiveBorrower : parent
CreditActor --> Borrower: parent
Lender --> AggressiveLender : parent
CreditActor --> Lender: parent
DebtDAOAgent --> PoolActor: parent
PoolActor --> PoolDelegate: parent
CreditActor --> PoolDelegate: parent
PoolActor --> PoolDepositor: parent
PoolActor --> PoolSnitch: parent
classDiagram
class DebtDAOAgent {
+desc: Generalized ABM, Mesa, and Onchain interaction logic
}
class CreditActor {
+desc: Generalized (un)SecuredLine interaction logic
+attr: RISK_SEEKING
+attr: RISK_AVERSION
+attr: PREFFERRED_ASSET
+attr: preferred_rate
+attr: max_rate
+attr:
}
class Borrower {
+desc: Specialized actions and attributes for CreditActor type
+attr: target_borrow_rate
}
class AutomatedBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 100
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 500
+attr: vault_yield
}
class AggressiveBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 10
+attr: RISK_SEEKING = 80
+attr: target_borrow_rate = 1500
}
class BullishBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 0
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 2500
}
class EliteTraderBorrower {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_AVERSION = 100
+attr: RISK_SEEKING = 100
+attr: target_borrow_rate = 1000
}
class Lender {
+desc: Specialized actions and attributes for CreditActor type
+attr: RISK_SEEKING
}
class AggressiveLender {
+desc: Specialized behaviour model for CreditActor type
+attr: RISK_SEEKING
}
class Spigot {
+NOTE: Not an agent
+desc: Specialized actions and attributes for CreditActor type
+attr: REVENUE_EPOCH_LENGTH # time for 100% revenue to accrue
+attr: contracts[] # revenue generators attached to spigots
+attr: revenue_distribution[] # % of revenue per contract
+attr: assets[] # assets earned as revenue by contracts
+attr: asset_distribution[] # % of revenue per asset
}
Borrower --> Spigot: owns
class Arbiter {
+attr: LIQUIDATION_LATENCY
+attr: borrower vs lender bias
+attr: collateral preferences
+attr: max trade slipage
+attr:
}
class PoolActor {
+desc: Generalized Pool interaction logic
+attr: PREFERRED_ASSET
}
class PoolDelegate {
+attr: RISK SEEKING
}
class PoolDepositor {
+attr: RISK SEEKING
}
class PoolSnitch {
+attr: MAX_BASE_GAS
+attr: MAX_TIP
+attr: MIN_TOTAL_PROFIT
+attr: MIN_PROFIT_MARGIN
}
DebtDAOAgent --> CreditActor: parent
DebtDAOAgent --> Arbiter: parent
Borrower --> AggressiveBorrower : parent
CreditActor --> Borrower: parent
Lender --> AggressiveLender : parent
CreditActor --> Lender: parent
DebtDAOAgent --> PoolActor: parent
PoolActor --> PoolDelegate: parent
CreditActor --> PoolDelegate: parent
PoolActor --> PoolDepositor: parent
PoolActor --> PoolSnitch: parent