Credit Accounts

Manage leveraged positions on Gearbox from Solidity. This guide covers discovering markets, opening accounts, managing positions, and monitoring health.

For SDK credit account operations, see Credit Accounts.

Discovering Markets

Find credit managers and their facades programmatically using ContractsRegister:

import {IAddressProviderV3} from "@gearbox-protocol/core-v3/contracts/interfaces/IAddressProviderV3.sol";
import {IContractsRegister} from "@gearbox-protocol/core-v3/contracts/interfaces/IContractsRegister.sol";
import {ICreditManagerV3} from "@gearbox-protocol/core-v3/contracts/interfaces/ICreditManagerV3.sol";

IAddressProviderV3 ap = IAddressProviderV3(ADDRESS_PROVIDER);
address cr = ap.getAddressOrRevert("CONTRACTS_REGISTER", 3_10);

// Get all credit managers
address[] memory allCMs = IContractsRegister(cr).getCreditManagers();

Example: Find USDC credit managers

function findUSDCCreditManagers(address addressProvider, address usdc)
    external view returns (address[] memory facades)
{
    IAddressProviderV3 ap = IAddressProviderV3(addressProvider);
    address cr = ap.getAddressOrRevert("CONTRACTS_REGISTER", 3_10);
    address[] memory allCMs = IContractsRegister(cr).getCreditManagers();

    uint256 count;
    for (uint256 i = 0; i < allCMs.length; i++) {
        if (ICreditManagerV3(allCMs[i]).underlying() == usdc) count++;
    }

    facades = new address[](count);
    uint256 j;
    for (uint256 i = 0; i < allCMs.length; i++) {
        ICreditManagerV3 cm = ICreditManagerV3(allCMs[i]);
        if (cm.underlying() == usdc) {
            facades[j++] = cm.creditFacade();
        }
    }
}

Opening a Credit Account

Open a leveraged position by providing collateral and borrowing funds through the CreditFacade:

Example:

Debt Limits

Check borrowing constraints before opening:

Managing Active Positions

Execute operations on existing credit accounts using multicalls:

Adding Collateral

Deposit additional tokens to improve health factor:

Increasing Debt

Borrow more funds from the pool:

Executing Swaps via Adapters

Trade collateral through whitelisted protocols. First, discover the adapter:

Example: Swap using Uniswap V3 adapter

Withdrawing Collateral

Remove excess collateral while maintaining health:

Monitoring Account Health

Calculate health factor to check liquidation risk:

Example:

CollateralDebtData Structure

Closing Positions

Close account and return remaining funds after repaying debt:

Example: Unwind position and close

Configuration and Limits

Query market parameters and restrictions:

Debt Limits

Liquidation Thresholds

Forbidden Tokens

Collateral Tokens

Enumerate all allowed collateral:

Fee Configuration

Complete Example

Full integration showing position lifecycle:

For architectural background, see Credit Suite Architecture.

Last updated