# Params

## BattleBurnParams

Params used by burn function in the core Battle contracts

```javascript
struct BattleBurnParams {
    int24 tickLower;
    int24 tickUpper;
    LiquidityType liquidityType;
    uint128 liquidityAmount;
}
```

**Params:**

| **Name**        | **Type**      | **Description**                                                     |
| --------------- | ------------- | ------------------------------------------------------------------- |
| tickLower       | int24         | The lower tick boundary of the position for which to burn liquidity |
| tickUpper       | int24         | The upper tick boundary of the position for which to burn liquidity |
| liquidityType   | LiquidityType | The chosen liquidity type can be Collateral, Spear, or Shield       |
| liquidityAmount | uint128       | The amount of liquidity to be burnt                                 |

## BattleMintParams

Params used by mint function in the core Battle contracts

```javascript
struct BattleMintParams {
    address recipient;
    int24 tickLower;
    int24 tickUpper;
    LiquidityType liquidityType;
    uint128 amount;
    uint128 seed;
    bytes data;
}
```

**Params:**

| **Name**      | **Type**      | **Description**                                                                               |
| ------------- | ------------- | --------------------------------------------------------------------------------------------- |
| recipient     | address       | The address for which the liquidity will be added                                             |
| tickLower     | int24         | The lower tick boundary of the position in which to add liquidity                             |
| tickUpper     | int24         | The upper tick boundary of the position in which to add liquidity                             |
| liquidityType | LiquidityType | The chosen liquidity type can be Collateral, Spear, or Shield                                 |
| amount        | uint128       | The amount of liquidity to be added                                                           |
| seed          | uint128       | The token amount provided for the position, of the collateral, Spear or Shield liquidity type |
| data          | bytes         | Any data to be passed through to the callback                                                 |

## BattleTradeParams

Params used by trade function in the core Battle contracts

```javascript
struct BattleTradeParams {
    address recipient;
    TradeType tradeType;
    uint256 amountSpecified;
    uint160 sqrtPriceLimitX96;
    bytes data;
}
```

**Params:**

| **Name**          | **Type**  | **Description**                                                                                                                          |
| ----------------- | --------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| recipient         | address   | The address to receive the output of the swap                                                                                            |
| tradeType         | TradeType | The type of trade to perform                                                                                                             |
| amountSpecified   | uint256   | The amount of the swap, which implicitly configures the swap as exact input of collateral or exact output of Spear or Shield token delta |
| sqrtPriceLimitX96 | uint160   | The Q64.96 sqrtPrice limit                                                                                                               |
| data              | bytes     | Any data to be passed through to the callback                                                                                            |

## ComputeTradeStepParams

Paramaters used for step computations in a trade

```javascript
struct ComputeTradeStepParams {
    TradeType tradeType;
    uint160 sqrtRatioCurrentX96;
    uint160 sqrtRatioTargetX96;
    uint128 liquidity;
    int256 amountRemaining;
    uint256 unit;
}
```

**Params:**

| **Name**            | **Type**  | **Description**                                                                     |
| ------------------- | --------- | ----------------------------------------------------------------------------------- |
| tradeType           | TradeType | The type of trade to be executed, whether to `BUY_SPEAR` or `BUY_SHIELD`            |
| sqrtRatioCurrentX96 | uint160   | The current sqrt ratio of the pool                                                  |
| sqrtRatioTargetX96  | uint160   | The price that cannot be exceeded, from which the direction of the swap is inferred |
| liquidity           | uint128   | The usable liquidity                                                                |
| amountRemaining     | int256    | How much input or output amount is remaining to be swapped in/out                   |
| unit                | uint256   | The token decimal unit, e.g. a token with 18 decimals has a unit of 10\*\*18        |

## CreateBattleParams

The info struct used in the creation of an options pool, ie, a Battle.

```javascript
struct CreateBattleParams {
    address collateralToken;
    string underlying;
    uint256 expiries;
    uint256 strikeValue;
}
```

**Params:**

| **Name**        | **Type** | **Description**                                       |
| --------------- | -------- | ----------------------------------------------------- |
| collateralToken | address  | The supported collateral token address for the battle |
| underlying      | string   | The underlying asset symbol                           |
| expiries        | uint256  | The of expiry timestamp of the battle                 |
| strikeValue     | uint256  | The value of an option's strike price                 |

## DeploymentParams

Parameters used for deploying battles

```javascript
struct DeploymentParams {
    address arenaAddr;
    BattleKey battleKey;
    address oracleAddr;
    address cOracleAddr;
    Fee fee;
    address spear;
    address shield;
    address manager;
    uint160 sqrtPriceX96;
}
```

**Params:**

| **Name**     | **Type** | **Description**                                   |
| ------------ | -------- | ------------------------------------------------- |
| arenaAddr    | address  | The address for the arena contract                |
| battleKey    | bytes32  | The battle Key containing a pool's specifications |
| oracleAddr   | address  | The address for the oracle                        |
| cOracleAddr  | address  | the contract address for a chainlink price feed   |
| fee          | Fee      | The fee structure for the battle                  |
| spear        | address  | The address of the Spear tokens for a pool        |
| shield       | address  | The address of the Shield tokens for a pool       |
| manager      | address  | The address for the manager contract              |
| sqrtPriceX96 | uint160  | The starting sqrt ratio when initiating a battle  |

## ModifyPositionParams

Info struct used to modify position parameters

```javascript
struct ModifyPositionParams {
    int24 tickLower;
    int24 tickUpper;
    LiquidityType liquidityType;
    int128 liquidityDelta;
}
```

**Params:**

| **Name**       | **Type**      | **Description**                                               |
| -------------- | ------------- | ------------------------------------------------------------- |
| tickLower      | int24         | The lower tick boundary of the position                       |
| tickUpper      | int24         | The upper tick boundary of the position                       |
| liquidityType  | LiquidityType | The chosen liquidity type can be Collateral, Spear, or Shield |
| liquidityDelta | int24         | The change in liquidity                                       |

## UpdatePositionParams

Info struct used to update position parameters

```javascript
struct UpdatePositionParams {
    ModifyPositionParams mpParams;
    int24 tick;
}
```

**Params:**

| **Name** | **Type**             | **Description**                           |
| -------- | -------------------- | ----------------------------------------- |
| mpParams | ModifyPositionParams | The parameters for modifying the position |
| tick     | int24                | The current tick                          |


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.divergence-protocol.com/technical-reference/core/params.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
