User-Facing Functions
deploy
params: DeployParams struct containing deployment configuration
lender: Address of the deployed lender contractcoin: Address of the deployed stablecoin contractvault: Address of the deployed vault contract
params.collateralmust be a valid ERC20 tokenparams.feedmust be a valid Chainlink price feedparams.collateralFactormust be between 0 and 10000 (0-100% in bps)params.operatorandparams.managermay beaddress(0)if you prefer no operator/manager
- Calculates deterministic addresses using CREATE3
- Deploys contracts in order: Lender → Coin → Vault
- Initializes contracts with proper cross-references
- Records deployment in factory registry
Deployed(lender, coin, vault)
deploymentsLength
uint256: Number of deployments
operator
address: Current operator address
feeRecipient
address: Fee recipient address
feeBps
uint256: Default fee in bps (e.g., 100 = 1%)
getFeeOf
_lender: Address of the lender deployment
uint256: Fee rate in bps
isDeployed
deployment: Address to check
bool: True if address was deployed by this factory
customFeeBps
lender: Address of the lender deployment
uint256: Custom fee in bps, 0 if using default fee
Operator Functions
setPendingOperator
_pendingOperator: Address to set as pending operator
msg.sendermust be current operator
acceptOperator
msg.sendermust be pending operator
setFeeRecipient
_feeRecipient: New fee recipient address
msg.sendermust be current operator
setFeeBps
_feeBps: New fee rate in bps (max 1000 = 10%)
msg.sendermust be current operator_feeBpsmust be ≤ 1000
setCustomFeeBps
_address: Lender deployment address_feeBps: Custom fee rate in bps (max 1000 = 10%)
msg.sendermust be current operator_feeBpsmust be ≤ 1000
pullReserves
_deployment: Lender deployment address
msg.sendermust be fee recipient_deploymentmust be a valid deployment
Events
CustomFeeBpsSet
lender: Lender deployment addressfeeBps: New custom fee rate
Deployed
lender: Lender contract addresscoin: Stablecoin contract addressvault: Vault contract address

