# Liquidate Vault

### Initialize

This function is used to initialize the contract and set up the necessary interfaces.

```solidity
liquidateVault.initialize();
```

### Register Liquidate Position

This function allows an address to register a position for liquidation.

```solidity
liquidateVault.registerLiquidatePosition(
    uint256 _posId
);
```

### Liquidate Position

This function allows an address to liquidate a position if it meets certain conditions.

```solidity
liquidateVault.liquidatePosition(
    uint256 _posId
);
```

### Validate Liquidation With Posid

This function is used to check if a position is eligible for liquidation.

**Example Input:**

```solidity
liquidateVault.validateLiquidationWithPosid(
    uint256 _posId
);
```

**Example Output:**

```
// Returns a boolean indicating whether the position is liquidatable, and three integers representing pnl, fundingFee, and borrowFee respectively.
```

### Validate Liquidation With Posid And Price

This function is used to check if a position is eligible for liquidation, given a specific price.

**Example Input:**

```solidity
liquidateVault.validateLiquidationWithPosidAndPrice(
    uint256 _posId,
    uint256 _price
);
```

**Example Output:**

```
// Returns a boolean indicating whether the position is liquidatable, and three integers representing pnl, fundingFee, and borrowFee respectively.
```

### Validate Liquidation

This function calculates the profit and loss (PnL), funding fee, and borrow fee for a position and checks if the position is eligible for liquidation.

**Example Input:**

```solidity
liquidateVault.validateLiquidation(
    uint256 _tokenId,
    bool _isLong,
    uint256 _size,
    uint256 _averagePrice,
    uint256 _lastPrice,
    uint256 _lastIncreasedTime,
    uint256 _accruedBorrowFee,
    int256 _fundingIndex,
    uint256 _collateral
);
```

**Example Output:**

```
// Returns a boolean indicating whether the position is liquidatable, and three integers representing pnl, fundingFee, and borrowFee respectively.
```
