> For the complete documentation index, see [llms.txt](https://docs.trilobyte.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.trilobyte.finance/user-guides/for-pool-managers.md).

# For Pool Managers

This guide explains how Pool Managers operate within Trilobyte — from onboarding to vault management.

## What is a Pool Manager?

Pool Managers are **professional underwriters** who bridge borrowers and investors. They evaluate businesses, structure loans, and take financial responsibility for the vaults they create — their own collateral is the anchor of each vault's **junior tranche**.

## Getting Started

### 1. Get Approved

Pool Managers must be approved by the protocol's **Operations Admin**:

* An Ops Admin calls `approve_pool_manager(manager, caller, max_credit)` — a single call that registers and activates you with a **credit limit**
* Your credit limit caps the total outstanding principal across all your active vaults

### 2. Deposit Collateral

Before creating vaults, you must deposit collateral:

* Call `deposit_collateral(manager, token, amount)` on the Globals contract, using an asset on the **collateral asset whitelist**
* Collateral must cover a percentage of each vault's principal (set by the global `default_collateral_ratio`)
* Collateral is locked when you create a vault — and counts toward that vault's **junior tranche target** — and released when the vault is fully repaid

{% hint style="warning" %}
Your collateral is **slashed first** if any of your vaults default, into the vault's recovery pool. This is your skin in the game — it aligns your incentives with investors, senior tranche first.
{% endhint %}

## Creating a Vault

### 1. Structure the Loan

Negotiate terms with the borrower off-chain:

* **Principal** — Loan amount (must be within global min/max bounds)
* **Interest rate** — Annual rate in basis points (must be within global bounds)
* **Loan term** — Duration in months (must be within global min/max bounds)
* **Leverage ratio** — How large senior capital may be as a multiple of junior (e.g. 400 = 4.00x); bounded by a separate Globals cap depending on whether the loan is collateral-backed
* **Reporting interval** — Optional cadence at which you must confirm you've reported to the protocol (0 = no covenant)
* **Permissioned** — Whether to restrict investors to an allowlist
* **Related party** — Disclose the deal if it's related under your firm's policy, even if the addresses don't literally match
* **Funding deadline** — Optional deadline for full funding (0 = no deadline)
* **Approval deadline** — Optional deadline for your approval after funding (0 = no deadline)
* **Grace period** — Seconds after a missed payment before default can be triggered
* **Collateral fields** — Optional borrower real-world-asset pledge parameters

{% hint style="warning" %}
The borrower can never be your own address — the Factory rejects `create_vault` if `borrower == manager`.
{% endhint %}

### 2. Deploy via Factory

Call `create_vault(params, salt)` on the Factory contract. The Factory will:

1. Verify you are an approved, active manager, and not delinquent (no previous defaults)
2. Check your **credit limit** (`outstanding + principal ≤ max_credit`)
3. Check the compliance gate for you, if the protocol has one configured (action `Manage`)
4. Validate all loan parameters against global settings, including your leverage ratio against the cap for this loan's collateral type
5. Check the loan against protocol-wide **borrower and manager exposure caps**
6. **Lock your collateral** and credit it toward the vault's junior tranche target
7. **Increment your and the borrower's outstanding principal**
8. Deploy a new Vault smart contract

### 3. Lock the Junior Tranche

Once junior capital (your collateral credit plus any junior investor deposits) reaches `junior_target`, call `lock_junior(manager)`. This opens the vault to senior deposits. Junior deposits can still continue afterward — locking only stops junior **withdrawals**, so the real junior target can still be reached in full even if you locked early on the collateral credit alone.

### 4. Manage the Allowlist (Permissioned Vaults)

For permissioned vaults, manage who can invest, in either tranche:

* `add_to_allowlist(caller, investor)` — Allow an address to deposit
* `remove_from_allowlist(caller, investor)` — Revoke access

## Managing Active Vaults

### Approve & Disburse

Once the vault is fully funded (phase = AwaitingApproval):

* Call `approve_and_disburse(caller, pledge_id)` to release funds to the borrower (`pledge_id` is required if the vault requires borrower collateral)
* This calculates the shared installment, sets the payment schedule, and transitions to Active

### Monitor Repayments

Track vault health using query functions:

| Function                                                                      | What It Shows                                |
| ----------------------------------------------------------------------------- | -------------------------------------------- |
| `get_payments_made()`                                                         | Number of fully-paid periods                 |
| `get_outstanding()` / `get_outstanding_senior()` / `get_outstanding_junior()` | Remaining principal, total and per tranche   |
| `get_arrears()`                                                               | Any carried shortfall, per bucket            |
| `get_next_due()`                                                              | Next payment due date                        |
| `get_missed_payments()`                                                       | Consecutive missed payments                  |
| `get_late_fees()`                                                             | Accumulated late fees                        |
| `get_covenant_status()`                                                       | Borrower-current and reporting-overdue flags |
| `get_senior_nav()` / `get_junior_nav()`                                       | NAV after any write-down                     |
| `get_cash_pool()`                                                             | Total borrower cash pool                     |

### Apply Late Fees

If a payment is overdue (`now > next_due`):

* Call `apply_late_fee(caller)` to apply the governed late-fee penalty (default 18% p.a.), split across the senior and junior arrears
* This increments the missed payments counter (at most once per still-open period)
* Use this to signal vault distress and incentivise borrower repayment

### Reporting Covenant

If the vault has a `reporting_interval`, call `mark_report_received()` on that cadence. If you miss it, anyone can call `check_reporting()`, which flags the vault overdue and counts toward the NAV write-down until you next report.

### Renegotiation

When terms need adjustment:

1. Call `propose_renegotiation(caller, new_interest_rate, new_loan_term)` — enters Renegotiation phase. Bounded by the global rate limits and how far you can cut the current rate in one round.
2. Approving now requires **both you and the borrower**: `approve_renegotiation(caller, borrower)` requires both addresses to authorize the call. Or call `reject_renegotiation(caller)` to cancel and restore Active.

Renegotiation can only be proposed from the **Active** phase — it's a pre-default workout. Once a loan has defaulted, your collateral is already slashed and it can no longer be renegotiated.

## Collateral Management

| Function                                     | Description                                                         |
| -------------------------------------------- | ------------------------------------------------------------------- |
| `deposit_collateral(manager, token, amount)` | Stake collateral tokens (must be on the collateral asset whitelist) |
| `withdraw_collateral(manager, amount)`       | Withdraw unlocked (staked − locked) collateral                      |
| `get_manager_collateral(manager)`            | View staked and locked amounts                                      |
| `get_available_collateral(manager)`          | View withdrawable balance                                           |

### Collateral Lifecycle

```
Deposit → Staked
               ↓ (vault created — credited toward junior_target)
            Locked
               ↓ (vault fully repaid)
            Released → Staked (withdrawable)
               ↓ (vault defaulted)
            Slashed into the vault's recovery pool (lost, senior paid first)
```

## Delinquency

If one of your vaults defaults:

* You are marked **delinquent** in the Globals contract
* You are **blocked** from creating new vaults via the Factory
* Your `delinquency_count` is incremented
* Only an **Operations Admin** can clear your delinquency after review

{% hint style="danger" %}
Delinquency is a serious flag. It indicates a failure in underwriting or borrower management. The Operations Admin will review the circumstances before clearing it.
{% endhint %}

## Key Constraints

| Constraint                                                     | Enforced By       |
| -------------------------------------------------------------- | ----------------- |
| Must be approved and active                                    | Factory           |
| Must not be delinquent                                         | Factory           |
| Cannot be your own borrower                                    | Factory           |
| Outstanding ≤ credit limit                                     | Factory           |
| Sufficient collateral, in a whitelisted collateral asset       | Factory / Globals |
| Borrower and manager exposure caps against `total_outstanding` | Factory           |
| Leverage ratio within the cap for the collateral type          | Factory           |
| Parameters within global bounds                                | Factory           |

*As of September 2026.*
