> For the complete documentation index, see [llms.txt](https://docs.artinals.com/artinals-protocol/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.artinals.com/artinals-protocol/integration-and-workflows/typical-user-journeys/providing-liquidity-and-trading-nfts-trade.md).

# Providing Liquidity and Trading NFTs (TRADE)

**Workflow**:

1. **Initialize a Trading Pool**: Call `create_pool(...)` to provide some NFTs and tokens to form the initial reserves of a new liquidity pool.
2. **Add or Remove Liquidity**: Use `add_liquidity(...)` or `remove_liquidity(...)` to adjust your position, earning LP tokens representing your share.
3. **Trading**: Other users can now `swap_tokens_for_nfts_with_slippage(...)` or `swap_nfts_for_tokens_with_slippage(...)`, dynamically adjusting the pool’s price as they trade.
4. **Fee Distribution**: The pool accumulates fees from trades. Periodically distribute fees to recipients or the contract owner using fee withdrawal functions.

**Result**: A continuous market where NFTs can be bought and sold at algorithmically determined prices, offering liquidity providers a chance to earn fees and traders flexible buying options.

**Example Script**:

```move
// Pseudocode:
create_pool(
  collection_pool,
  collection_cap,
  initial_nfts,
  initial_tokens,
  user_balance,
  fee_percent = 30,
  min_price = 500,
  max_price = 5000,
  ...
);
```
