# ARKs

ARKs are the protocol's mechanism for deploying assets into different yield-generating strategies.

Each ARK represents a specific investment strategy or position, like lending on a DeFi platform or staking tokens. ARKs work together in Fleets to generate yield for users who deposit into Lazy Vaults.

When you deposit funds into a Lazy Vault, your assets are handled by the `FleetCommander`, which distributes them across multiple ARKs based on current market conditions and yield opportunities. Each Fleet has a Buffer ARK that acts as an entry and exit point, keeping some funds readily available for withdrawals while the rest are deployed in yield-generating ARKs.

## Core Functions

### Board Operation

```solidity
function board(uint256 amount, bytes calldata data) external
```

Deposits assets into the underlying protocol. The `data` parameter allows passing protocol-specific information needed for the deposit. Implementation varies by ARK type.

### Disembark Operation

```solidity
function disembark(uint256 amount, bytes calldata data) external
```

Withdraws assets from the underlying protocol. Like board, `data` parameter usage depends on the specific ARK implementation.

### Harvest Operation

```solidity
function harvest(bytes calldata additionalData) external returns (address[] memory rewardTokens, uint256[] memory rewardAmounts)
```

Collects accumulated rewards from the underlying protocol. Returns arrays of reward token addresses and corresponding amounts.
