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

# enableSplitting

Enable splitting for the user's account. Controls how funds are distributed across DeFi pools. Requires SIWE authentication.

## Signature

```typescript theme={null}
enableSplitting(minSplits?: number): Promise<UpdateUserProfileResponse>
```

## Parameters

| Parameter | Type   | Required | Description                                          |
| --------- | ------ | -------- | ---------------------------------------------------- |
| minSplits | number | No       | Minimum number of pools to split across (default: 1) |

## Splitting Modes

### Smart Splitting (minSplits = 1)

When `minSplits` is set to **1** (default), you're eligible for **smart splitting**:

> To maximize your returns, we automatically distribute your funds – when beneficial – across multiple DeFi pools. Your funds may not split depending on opportunities.

The system intelligently decides when splitting is advantageous based on current market conditions and opportunities.

### Forced Splitting (minSplits > 1)

When `minSplits` is set to **2, 3, or 4**, you enable **forced splitting**:

> Force split your funds across multiple pools for improved risk diversification. Split up to 4 DeFi pools.

This guarantees your funds will always be distributed across the specified minimum number of pools.

## Returns

Response indicating success and updated user details

## Return Type

```typescript theme={null}
interface UpdateUserProfileResponse {
  success: boolean;
  userId: string;
  smartWallet?: Address;
  chains?: number[];
  strategy?: string;
  protocols?: string[];
  autoSelectProtocols?: boolean;
  omniAccount?: boolean;
  autocompounding?: boolean;
  agentName?: string;
  crosschainStrategy?: boolean;
  executorProxy?: boolean;
  splitting?: boolean;
  minSplits?: number;
  customization?: Record<string, any>;
}
```

## Example

```typescript theme={null}
await sdk.connectAccount(privateKey, chainId);

// Enable smart splitting (default, minSplits = 1)
const result = await sdk.enableSplitting();
console.log("Smart splitting enabled:", result.success);

// Enable forced splitting across 3 pools minimum
const result2 = await sdk.enableSplitting(3);
console.log("Forced splitting enabled:", result2.success);

// Verify splitting is enabled
const userDetails = await sdk.getUserDetails();
console.log("Splitting:", userDetails.splitting); // true
console.log("Min splits:", userDetails.minSplits); // 3
```

## Notes

* User must be authenticated (automatically done via `connectAccount()`)
* Maximum supported value for `minSplits` is **4**
* Use `disableSplitting()` to turn off this feature
* Use `updateMinSplits()` to change the number of pools without toggling splitting
