# ActionSwapCT

{% hint style="info" %}
**Source:** `src/fira_bonding/router/ActionSwapCTV3.sol`
{% endhint %}

## Overview

CT is not directly traded in the AMM — the pool only has BT and FW. CT swaps are synthesized:

### Buy CT (FW → CT)

Send FW to CT contract → mint BT+CT → sell BT back to market for FW → net output is CT. The callback mechanism handles this atomically: the market sends FW to the router first (flash-loan style), the router mints BT+CT using that FW to repay the BT debt.

### Sell CT (CT → FW)

Buy BT from the market using FW → pair with user's CT → redeem BT+CT for FW → net output is FW minus the BT cost.

## Functions

* **`swapExactTokenForCt`** — User token → FW → CT (via synthesis)
* **`swapExactFwForCt`** — FW → CT
* **`swapExactCtForToken`** — CT → FW → user token
* **`swapExactCtForFw`** — CT → FW

## Callback handling

The flash-style swaps use `ActionCallbackV3` to handle the market's callback. The callback data encodes the action type and parameters, and the callback contract performs the BT+CT minting or redemption needed to settle the flash swap.
