# Cross-Chain Swap Logic

**Import Statements:**

Ordiswap imports multiple modules (`factory`, `orderbook`, `thorswap`) and various utilities and configurations, including constants and functions.

***

#### **Order Type Constants:**

Ordiswap defines constants (`ORDER_TYPE_BTC_ETH`, `ORDER_TYPE_ETH_BTC`, `ORDER_TYPE_BRC_ETH`, `ORDER_TYPE_ETH_BRC`) representing different types of bridge orders.

***

#### **Send Bitcoin with Data:**

`sendBtcWithData`: Sends Bitcoin with data to a specified recipient address. It retrieves inputs, calculates fees, creates a raw transaction, signs it, and sends it. It supports attaching additional data to the transaction.

***

#### **Success and Fail Order Processing:**

`successProcess`: Updates a bridge order with success details and status.

`failProcess`: Updates a bridge order with failure details and status.

***

#### **Order Retrieval and Listing:**

`getOrder`: Retrieves a bridge order from the DB collection based on a given filter.

`getOrderList`: Retrieves a list of bridge orders based on specified filter, sort, start, and limit parameters.

***

#### **Add Order:**

`addOrder`: Adds a bridge order to the DB collection. It also interacts with Thorswap if the order type is related to BTC-ETH, ETH-BTC, or ETH-BRC.

***

#### **BRC-ETH Order Processing:**

`processBrcEthOrder`: Processes a BRC-ETH-related bridge order. It interacts with Ordiswap, obtains Thorswap quotes, and handles Bitcoin transactions with data.

***

#### **ETH-BRC Order Processing:**

`processEthBrcOrder`: Processes an ETH-BRC-related bridge order. It interacts with Thorswap, Ordiswap, and handles Bitcoin transactions with data.

***

#### **Bridge Order Processing Thread:**

`bridgeThread`: Runs an infinite loop to periodically process bridge orders. It fetches pending bridge orders, processes each order based on its type, and then waits for a specified duration.

***

#### **Error Handling:**

Ordiswap includes error handling for various scenarios, logging errors for further analysis.

***

#### System Flow:

#### **Order Placement:**

Users can add a bridge order (`addOrder`) with various types, including BTC-ETH, ETH-BTC, BRC-ETH, ETH-BRC. The system checks conditions for each type and may interact with Thorswap or Ordiswap accordingly.

**Order Processing:**

The background thread (`bridgeThread`) continuously processes ordered bridge orders. It interacts with Thorswap, Ordiswap, and handles Bitcoin transactions based on the type of order.

***


---

# 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://ordiswap.gitbook.io/ordiswap/ordiswap-off-chain-engine/protocol-structure/cross-chain-swap-logic.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.
