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

# Configuration & networks

> Required read clients, wallet clients, deployment defaults, and optional indexing.

## Supply the network and your read client

```tsx theme={null}
<CTokenProvider network="baseSepolia" publicClient={publicClient}>
  {children}
</CTokenProvider>
```

Supply a viem `publicClient` for the selected chain. Deployments and USDC are preconfigured; indexing defaults off. React uses your `walletClient` prop or the surrounding wagmi connection.

| Setting                      | Base Sepolia                                 | Base                                         |
| ---------------------------- | -------------------------------------------- | -------------------------------------------- |
| `network`                    | `baseSepolia`                                | `base`                                       |
| Chain ID                     | 84532                                        | 8453                                         |
| Factory                      | `0x6f9a0ECD77C3Dade8Dc14a507cAbABFD746575f8` | Same address, on Base                        |
| Vault                        | `0x35A38eFec618cD1924CBf4FB84bE187323Fa7E55` | Same address, on Base                        |
| Session verifier             | `0x8D762303c41F822D3f38f8CE0f0fD1855d602c2A` | Same address, on Base                        |
| Default USDC                 | `0x036CbD53842c5426634e7929541eC2318f3dCF7e` | `0x833589fcd6edb6e08f4c7c32d4f71b54bda02913` |
| Hosted indexer, after opt-in | `https://api.ctoken.testnet.inco.org/api`    | `https://api.ctoken.inco.org/api`            |
| Explorer                     | `https://sepolia.basescan.org`               | `https://basescan.org`                       |

Use the matching HTTPS indexer URL, including `/api`. Only price responses carry a chain ID; history and assets rely on your URL selecting the correct chain.

## All client options

`CTokenClientOptions` applies in both Node and browsers.

| Option              | Type                        | Default / behavior                                                                                                                              |
| ------------------- | --------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| `network`           | `NetworkName`               | Required: `base` or `baseSepolia`.                                                                                                              |
| `walletClient`      | viem `WalletClient`         | Optional for public metadata; required for wallet balance reads, signatures, and writes. Account belongs on this client.                        |
| `contracts`         | `ContractsOverride`         | Optional `{ wrapperFactory?, vault? }`; each missing field retains its network default.                                                         |
| `sessionVerifier`   | `Address`                   | Network verifier above. Override for your deployment.                                                                                           |
| `publicClient`      | viem `PublicClient`         | Required. SDK contract reads, multicalls, explicit unwrap gas estimation, and receipt polling use this client. Must declare the expected chain. |
| `indexer`           | boolean or `IndexerOptions` | Omitted/false: off. true or `{}`: hosted default. `{ url, timeoutMs? }`: custom service. Include `/api` in the URL if your ingress requires it. |
| `indexer.timeoutMs` | positive integer            | 15000; maximum 120000. Total deadline per indexer HTTP request, including retries and body parsing.                                             |
| `incoRpcUrls`       | HTTP(S) string array        | Lightning extracts HTTP URLs from the public transport, including fallback transports. Required explicitly when none can be extracted.          |
| `confirmations`     | positive integer            | 5 for final wrap/send/unwrap receipts. Approval and wrapper creation wait for 1 inclusion.                                                      |
| `sessionTtlHours`   | positive finite number      | 4 hours.                                                                                                                                        |

Configure your paid read endpoint in `publicClient`; keep server credentials behind an application proxy. The wallet signs and submits transactions and may use its transport for transaction preparation.

Pass an application-owned wallet client. Raw `privateKey` and standalone `account` options reject with `INVALID_CONFIG`.

## Optional React overrides

```tsx theme={null}
<CTokenProvider
  network="baseSepolia"
  contracts={{ wrapperFactory: customFactory }}
  sessionVerifier={customVerifier}
  publicClient={publicClient}
  indexer={{ url: customIndexerUrl }}
  tokens={myTokens}
>
  {children}
</CTokenProvider>
```

Override only what you need. `tokens={[]}` disables built-in tokens. Changed contract addresses appear in the widget’s **Custom contracts** panel with explorer links; RPC/indexer URLs stay out of that panel.
