# ActionBorrow

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

## Functions

### `supplyAndBorrowSingleToken`

Supply collateral → borrow BT → swap BT to FW → redeem FW to desired token. All in one transaction.

### `borrowSingleToken`

Same flow but assumes collateral is already supplied.

### `repay`

Converts input token to BT and repays the lending market:

* **Pre-expiry:** Input token → FW (mint) → BT (AMM swap) → repay. Refunds excess BT.
* **Post-expiry:** Input token → FW (mint) → BT+CT (via `CT.mintBC`) → repay with BT. CT is minted but has zero value post-expiry.

## Key details

* The borrow position is owned by `msg.sender`, but the router is the token receiver — BT is held transiently and swapped immediately.
* `tokensToRepay` must be ≤ current debt, otherwise reverts with `"AB: repay too much"`.
* Requires the user to have authorized the router on the LendingMarket (`setAuthorization(router, true)`).


---

# 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.fira.money/developers/protocol-contracts/router/action-borrow.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.
