> For the complete documentation index, see [llms.txt](https://docs.osero.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.osero.com/osero-sdk/core-concepts/supported-chains.md).

# Supported Chains

`@osero/client` maintains a registry of all supported chains, token addresses, and PSM contract addresses. These are exported from the package root and can be used directly in your application.

***

## Supported chains

| Chain            | Chain ID | PSM contract                                | Status |
| ---------------- | -------- | ------------------------------------------- | ------ |
| Ethereum Mainnet | 1        | Spark `UsdsPsmWrapper` (wraps Sky Lite PSM) | Live   |
| OP Mainnet       | 10       | Spark PSM3                                  | Live   |
| Unichain         | 130      | Spark PSM3                                  | Live   |
| Base             | 8453     | Spark PSM3                                  | Live   |
| Arbitrum One     | 42161    | Spark PSM3                                  | Live   |

Additional chains (Avalanche and others) will be added in future `@osero/client` releases once Sky/Spark deploy their PSM stack to them. Adding a chain requires an SDK upgrade — `SUPPORTED_CHAIN_IDS`, the chain registry, the token registry, and `PSM_ADDRESSES` are all source-of-truth inside the package.

***

## Routing by chain

The SDK routes differently depending on the target chain:

**Ethereum Mainnet** uses Sky's `UsdsPsmWrapper`, which is a wrapper around the original Maker/Sky PSM. Minting sUSDS on mainnet is a two-phase operation: USDC → USDS via the wrapper, then USDS → sUSDS via the ERC-4626 sUSDS vault.

**All L2 chains** use the Spark PSM3, which supports direct USDC → sUSDS swaps in a single operation. This makes L2 minting and redemption simpler and cheaper in terms of transaction count.

***

## Accessing chain and contract data

All addresses are re-exported from the package root:

```typescript
import {
  SUPPORTED_CHAIN_IDS,
  CHAINS,
  PSM_ADDRESSES,
  getToken,
} from '@osero/client';

// List of all supported chain IDs
console.log(SUPPORTED_CHAIN_IDS);
// [1, 10, 130, 8453, 42161]

// PSM contract address on Base
console.log(PSM_ADDRESSES[8453].psm);

// sUSDS token address on Ethereum Mainnet
console.log(getToken(1, 'sUSDS').address);

// USDC token address on Arbitrum One
console.log(getToken(42161, 'USDC').address);
```

***

## Token decimals reference

| Token | Decimals | Notes                                         |
| ----- | -------- | --------------------------------------------- |
| USDC  | 6        | Input token for all mint actions              |
| USDS  | 18       | Output of `mintUsds`; input of `redeemUsds`   |
| sUSDS | 18       | Output of `mintSUsds`; input of `redeemSUsds` |

Always use `parseUnits` and `formatUnits` from viem (or equivalent) when converting between human-readable amounts and the raw `bigint` values the SDK expects.

```typescript
import { parseUnits, formatUnits } from 'viem';

// Preparing an input amount
const amount = parseUnits('100', 6); // 100 USDC → 100_000_000n

// Formatting an output amount for display
const humanReadable = formatUnits(rawSUsdsBalance, 18);
```

***

## Chain-specific notes

### Ethereum Mainnet (Chain ID: 1)

* Routes through Sky's `UsdsPsmWrapper` contract
* `mintSUsds` is a four-transaction, two-phase `MultiStepExecution`
* `redeemSUsds` is a three-transaction, two-phase `MultiStepExecution`
* Higher gas costs than L2s; consider user experience implications

### Base (Chain ID: 8453)

* Routes through Spark PSM3
* All operations are two-transaction `Erc20ApprovalRequired` plans
* Recommended chain for most consumer-facing integrations due to low fees and fast finality

### Arbitrum One (Chain ID: 42161)

* Routes through Spark PSM3
* Two-transaction plans for all operations
* Low fees; suitable for both retail and institutional use cases

### OP Mainnet (Chain ID: 10)

* Routes through Spark PSM3
* Two-transaction plans for all operations

### Unichain (Chain ID: 130)

* Routes through Spark PSM3
* Two-transaction plans for all operations


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.osero.com/osero-sdk/core-concepts/supported-chains.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
