> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tplus.cx/llms.txt
> Use this file to discover all available pages before exploring further.

# Registry

> Onchain source of listed assets, risk parameters, withdrawal delays, and the fee account.

The Registry is the onchain source of listed assets, per-asset risk parameters, withdrawal-delay parameters, and the protocol fee account. The clearing engine and OMS mirror it; clients read it through OMS endpoints rather than calling onchain.

| Data                           | Endpoint                        |
| ------------------------------ | ------------------------------- |
| Listed assets and deposit caps | `GET /registry/assets`          |
| Risk parameters                | `GET /registry/risk-parameters` |
| Token decimals                 | `POST /registry/decimals`       |
| Vault addresses                | `GET /registry/vaults`          |

## Assets

```solidity theme={null}
struct ChainId {
    uint64 routingId;   // 0 = EVM
    uint64 vmId;        // chain id, e.g. 42161 for Arbitrum
}

struct AssetData {
    uint16  index;
    bytes32 assetAddress;
    ChainId chainId;
    uint256 maxDeposits;     // total deposit cap for this (asset, chain)
    uint256 max1hrDeposits;  // rolling 1-hour deposit cap
    uint256 minWeight;
}

function getAssets(uint16 start, uint16 end) external view returns (AssetData[] memory);
```

The same `index` can span multiple chains; deposit caps determine whether a deposit credits a fungible asset or an isolated, chain-specific one. Fungibility and caps: [Deposits](/funds/deposits#fungibility).

## Risk parameters

```solidity theme={null}
struct RiskParameters {
    uint8   collateralFactor;
    uint8   liabilityFactor;
    uint256 maxCollateral;
    uint256 maxOpenInterest;
    uint256 maxSpotOpenInterest;
    uint256 maxUtilization;
    bool    isolatedOnly;
    uint256[] interestKinks;
    uint256[] kinkInterestRates;
    uint256[] usdInterestKinks;
    uint256[] usdKinkInterestRates;
    uint256 skewModifier;
    uint256 skewCliff;
    int256  baseFundingRate;
    uint256 premiumClamp;
    uint256[] initialMarginClamps;
    uint256[] initialMarginFactors;
    uint256 maxFundingRate;
    uint256 maxUtilizationRate;
    uint256 bufferMultiple;
}

function getRiskParameters(uint16 start, uint16 end) external view returns (RiskParameters[] memory);
```

| Field group                                                                      | Controls                                         |
| -------------------------------------------------------------------------------- | ------------------------------------------------ |
| `collateralFactor`, `liabilityFactor`                                            | Margin weights on collateral and liabilities     |
| `maxCollateral`, `maxOpenInterest`, `maxSpotOpenInterest`, `maxUtilization`      | Position and utilization caps                    |
| `initialMarginClamps`, `initialMarginFactors`                                    | Tiered initial-margin schedule                   |
| `baseFundingRate`, `maxFundingRate`, `skewModifier`, `skewCliff`, `premiumClamp` | Funding-rate curve                               |
| `interestKinks`, `kinkInterestRates`, `usdInterestKinks`, `usdKinkInterestRates` | Borrow-rate curves                               |
| `bufferMultiple`, `isolatedOnly`                                                 | Auto-reduce buffer and isolated-only restriction |

How these are applied: [Margin](/trading/margin) and [Fees & rates](/trading/fees-and-rates).

## Withdrawal delays

```solidity theme={null}
struct WithdrawalDelayParameters {
    uint256 minDelay;
    uint256 maxDelay;
    uint256[] delayClamps;
    uint256[] delayValues;
}

function getWithdrawalDelayParameters()
    external view returns (WithdrawalDelayParameters memory);
```

The withdrawal queue derives each delay from these bounds; see [Withdrawals](/funds/withdrawals#process).

## Fee account

```solidity theme={null}
function feeAccount() external view returns (bytes32);
```

Updates to assets, risk parameters, and delays are governance-gated and timelocked. See [Credential Manager](/contracts/credential-manager) and the [trust model](/security/trust-model#trust-hierarchy).
