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

# Supported Assets

> Assets, chains, deposit amounts, minimums, and strategies accepted by the SDK.

This is the list the SDK enforces. `depositFunds` and `sendDeposit` take a public asset symbol and a public strategy name. Depositing an asset on a chain where it is not listed throws before any transfer.

The shared vault is separate and accepts **USDC on Base only**. Everything below is the personal Safe.

## Strategies

Pass one of these strings. The default is `"conservative"`.

| Strategy | What it allocates to | Withdrawals |
| - | - | - |
| `"conservative"` | Lowest-risk pools | Instant |
| `"aggressive"` | Conservative pools, plus higher-yield pools | Instant |
| `"yieldmaxxing"` | Aggressive pools, plus async vaults (ERC-7540) | Delayed, within about 24 hours |

Each tier includes the one below it. `"yieldmaxxing"` is the only tier that holds NVDAc. On `"conservative"` or `"aggressive"`, NVDAc resolves to no protocol and the agent never deploys it.

On `depositFunds` / `sendDeposit`, `strategy` applies to the **first deposit only**. Later deposits ignore it and do not error. Change an existing account with `setAssetStrategy`:

```typescript theme={null}
await sdk.setAssetStrategy({ asset: "USDC", strategy: "aggressive" });

// NVDAc only has protocols under yieldmaxxing. Chains default to Base.
await sdk.setAssetStrategy({ asset: "NVDAc", strategy: "yieldmaxxing" });
```

`updateUserProfile` stores the strategy name but does not pick protocols. Use `setAssetStrategy` (one asset) or `setStrategyWithProtocols` (one asset, or every managed asset) so the protocol list matches the tier.

## Ethereum Mainnet (1)

| Asset | Decimals | Token | Minimum after deposit | Minimum in least units |
| - | - | - | - | - |
| USDC | 6 | `0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48` | 10,000 USDC | `"10000000000"` |
| WETH | 18 | `0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2` | \$10,000 | live price |
| EURC | 6 | `0x1aBaEA1f7C830bD89Acc67eC4af516284b1bC33c` | 10,000 EURC | `"10000000000"` |
| USDT | 6 | `0xdAC17F958D2ee523a2206206994597C13D831ec7` | 10,000 USDT | `"10000000000"` |
| PYUSD | 6 | `0x6c3ea9036406852006290770BEdFcAbA0e23A0e8` | 10,000 PYUSD | `"10000000000"` |

All three strategies. WETH must be wrapped ETH, not native ETH.

## Base (8453)

| Asset | Decimals | Token | Minimum after deposit | Minimum in least units |
| - | - | - | - | - |
| USDC | 6 | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` | 10 USDC | `"10000000"` |
| WETH | 18 | `0x4200000000000000000000000000000000000006` | \$10 | live price |
| EURC | 6 | `0x60a3E35Cc302bFA44Cb288Bc5a4F316Fdb1adb42` | 10 EURC | `"10000000"` |
| NVDAc | 8 | `0xb20000000000000000000078ee7ce2fE4908108C` | \$10 | live price |

USDC, WETH, and EURC accept all three strategies. NVDAc accepts only `"yieldmaxxing"`.

NVDAc is Coinbase's tokenized NVIDIA share. Withdrawals are delayed. Deposits pause while the equity market is closed, typically over the weekend: the tokens sit in the Safe and deploy at the next open. `getPortfolio` returns copy for that case in `pauseMessageByToken["NVDAc"]`.

## Arbitrum (42161)

| Asset | Decimals | Token | Minimum after deposit | Minimum in least units |
| - | - | - | - | - |
| USDC | 6 | `0xaf88d065e77c8cC2239327C5EDb3A432268e5831` | 10 USDC | `"10000000"` |
| WETH | 18 | `0x82aF49447D8a07e3bd95BD0d56f35241523fBab1` | \$10 | live price |

All three strategies. EURC, USDT, PYUSD, and NVDAc are not on Arbitrum.

## Amounts

`amount` is a **string of least units**, not a decimal number.

| You want to deposit | Pass |
| - | - |
| 10 USDC, EURC, USDT, or PYUSD | `"10000000"` |
| 10,000 USDC, EURC, USDT, or PYUSD | `"10000000000"` |
| 0.5 WETH | `"500000000000000000"` |
| 1 WETH | `"1000000000000000000"` |
| 1 NVDAc | `"100000000"` |

```typescript theme={null}
// 10 USDC on Base. Meets the Base minimum.
await sdk.depositFunds(userAddress, 8453, "10000000", "USDC");

// 10,000 USDC on Ethereum. Meets the mainnet minimum.
await sdk.depositFunds(userAddress, 1, "10000000000", "USDC", "conservative");

// 1 NVDAc on Base. First deposit must pass "yieldmaxxing".
await sdk.depositFunds(userAddress, 8453, "100000000", "NVDAc", "yieldmaxxing");
```

## How the minimum is checked

The SDK checks the **Safe balance of that asset after the deposit** (what is already there + what you send). A top-up smaller than the minimum is allowed when the Safe already holds enough.

Stablecoin minimums are a fixed token amount. WETH and NVDAc are a **dollar** minimum. The SDK reads the live price at deposit time (`GET /api/v2/price?token=eth` and `?token=nvdac`), so the token amount moves with the market. At $225 a share, $10 of NVDAc is about `0.044` NVDAc (`"4444444"` at 8 decimals).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.