> For the complete documentation index, see [llms.txt](https://cetus-1.gitbook.io/cetus-developer-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://cetus-1.gitbook.io/cetus-developer-docs/developer/via-sdk-v2/sdk-modules/cetusprotocol-farms-sdk/farming.md).

# Farming

1. **Deposit (Stake) Your Position**

```typescript
const clmm_position_id = 'YOUR_CLMM_POSITION_ID'

const payload = sdk.Farms.depositPayload({
  pool_id,
  clmm_position_id,
})
```

2. **Withdraw (Unstake) Your Position**

```typescript
const payload = await sdk.Farms.withdrawPayload({
  pool_id,
  position_nft_id,
})
```

3. **Harvest Your Rewards**

```typescript
const payload = await sdk.Farms.harvestPayload({
  pool_id,
  position_nft_id,
})
```

4. **Batch Harvest and Collect CLMM Fees**

```typescript
const clmm_pool_id = 'YOUR_CLMM_POOL_ID'
const coin_type_a = '0xac2afb455cbcdc2ff1a2e9bbb8aa4ccb4506a544b08c740886892a5cdf92f472::hasui::HASUI'
const coin_type_b = '0x0000000000000000000000000000000000000000000000000000000000000002::sui::SUI'
const farms_list = [
  {
    pool_id,
    position_nft_id,
    clmm_pool_id,
    collect_fee: true,
    collect_farms_rewarder: false,
    clmm_rewarder_types: ['CLMM_REWARDER_TYPE_1'],
    coin_type_a,
    coin_type_b,
  },
]
const clmm_list = [
  {
    pool_id,
    pos_id: position_nft_id,
    collect_fee: true,
    rewarder_coin_types: ['CLMM_REWARDER_TYPE_1'],
    coin_type_a,
    coin_type_b,
  },
]
const payload = await sdk.Farms.batchHarvestAndClmmFeePayload(farms_list, clmm_list)
```
