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

# ZLP liquidity

> Deposit into the ZLP pool, request a withdrawal and collect it.

## Deposit

```ts theme={null}
await zeus.setup.approveToken('USDC', undefined, 'liquidity')
const deposit = await zeus.lp.deposit({ token: 'USDC', amount: 10000, minZlp: 7900 })
console.log(deposit.zlpAmount)
```

Deposits mint and stake ZLP in one transaction. The RewardRouter pulls the token, so it needs its own approval with `'liquidity'`. Pay `ETH` to deposit native ETH.

## Withdraw

Withdrawals go through a queue: request first, collect after the cooldown.

```ts theme={null}
await zeus.lp.requestWithdrawal({ zlpAmount: 1000 })
const queue = await zeus.lp.withdrawals()
await zeus.lp.collect({ tokenOut: 'USDC', zlpAmount: 1000, minOut: 1240 })
```

> [!NOTE]
>
> Freshly deposited ZLP stays locked for the deposit cooldown. A request before it ends throws `LiquidityLocked`.

`withdrawals()` shows each deposit's lock, every request with its maturity date and what is claimable now. `collect` redeems matured requests, at most 10 per call unless you pass `maxRequests`.

## Pool state

```ts theme={null}
const { aumUsd, zlpSupply, zlpPrice } = await zeus.lp.poolState()
```


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