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

# User Force Deallocate

> Low-level instruction to execute a force deallocate policy transaction

# createUserForceDeallocateInstruction

Allows any user to execute a force deallocate policy transaction on the vault. This reclaims tokens from a strategy position when a force-deallocate policy exists, burning the caller's LP tokens in exchange for underlying tokens. The instruction recalculates AUM and verifies the outcome to ensure the vault remains solvent.

## Usage

```typescript theme={null}
import { createUserForceDeallocateInstruction } from "@exponent-labs/exponent-sdk/client/vaults";
import { PublicKey, SystemProgram } from "@solana/web3.js";

const ix = createUserForceDeallocateInstruction(
  {
    payer: userKeypair.publicKey,
    vault: vaultAddress,
    exponentPrices: exponentPricesAddress,
    squadsSettings: squadsSettingsAddress,
    squadsTransaction: squadsTransactionPda,
    squadsPolicy: squadsPolicyAddress,
    userTokenAccount: userTokenAccountAddress,
    mintLp: lpMintAddress,
    squadsProgram: SQUADS_PROGRAM_ID,
    tokenProgram: TOKEN_PROGRAM_ID,
    systemProgram: SystemProgram.programId,
  },
  {
    policySeed: BigInt(1),
    tokenEntryIndex: 0,
    lpToBurn: BigInt(500_000),
    expectedTokenAmount: BigInt(495_000),
  }
);
```

## Accounts

| Name                | Signer | Writable | Description                                     |
| ------------------- | ------ | -------- | ----------------------------------------------- |
| `payer`             | Yes    | Yes      | User executing the force deallocate (pays fees) |
| `vault`             | No     | Yes      | Vault account                                   |
| `exponentPrices`    | No     | No       | ExponentPrices account for token valuations     |
| `squadsSettings`    | No     | Yes      | Squads multisig settings account                |
| `squadsTransaction` | No     | Yes      | Squads transaction account                      |
| `squadsPolicy`      | No     | No       | Squads policy account for force deallocate      |
| `userTokenAccount`  | No     | Yes      | User token account to receive underlying tokens |
| `mintLp`            | No     | No       | LP token mint                                   |
| `squadsProgram`     | No     | No       | Squads program                                  |
| `tokenProgram`      | No     | No       | SPL Token program                               |
| `systemProgram`     | No     | No       | System program                                  |

## Args

| Name                  | Type  | Description                                              |
| --------------------- | ----- | -------------------------------------------------------- |
| `policySeed`          | `u64` | Seed identifying the force-deallocate policy             |
| `tokenEntryIndex`     | `u32` | Index of the token entry in the vault to deallocate from |
| `lpToBurn`            | `u64` | Amount of LP tokens to burn                              |
| `expectedTokenAmount` | `u64` | Expected amount of underlying tokens to receive          |

## Returns

`TransactionInstruction` — a transaction instruction ready to be added to a transaction.
