> 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-dlmm-sdk/calculate-fee.md).

# Calculate Fee

The `FeeUtils` class provides several utility methods for fee calculations:

**1. `getVariableFee(variableParameters: VariableParameters): string`**

Calculates the variable fee based on pool parameters and market volatility.

```typescript
import { FeeUtils } from '@cetusprotocol/dlmm-sdk'

const variableFee = FeeUtils.getVariableFee(pool.variable_parameters)
console.log('Variable fee:', variableFee)
console.log('Variable fee percentage:', d(variableFee).div(d(FEE_PRECISION)).toString())
```

**2. `calculateCompositionFee(amount: string, total_fee_rate: string): string`**

Calculates composition fees for liquidity operations.

```typescript
const compositionFee = FeeUtils.calculateCompositionFee(amount, total_fee_rate)
```

**3. `calculateProtocolFee(fee_amount: string, protocol_fee_rate: string): string`**

Calculates protocol fees based on fee amount and protocol fee rate.

```typescript
const protocolFee = FeeUtils.calculateProtocolFee(fee_amount, protocol_fee_rate)
```

**4. `getProtocolFees(fee_a: string, fee_b: string, protocol_fee_rate: string)`**

Calculates protocol fees for both tokens in a pair.

```typescript
const { protocol_fee_a, protocol_fee_b } = FeeUtils.getProtocolFees(fee_a, fee_b, protocol_fee_rate)
console.log('Protocol fee A:', protocol_fee_a)
console.log('Protocol fee B:', protocol_fee_b)
```

**5. `getCompositionFees(active_bin: BinAmount, used_bin: BinAmount, variableParameters: VariableParameters)`**

Calculates composition fees for active and used bins, considering variable parameters.

```typescript
const { fees_a, fees_b } = FeeUtils.getCompositionFees(active_bin, used_bin, variableParameters)
console.log('Composition fees A:', fees_a)
console.log('Composition fees B:', fees_b)
```
