# 1inch Fusion+

`FusionTaker` implementation of taker provides an ability to take asset using [1inch Fusion+](https://portal.1inch.dev/documentation/apis/swap/fusion-plus/introduction) protocol.

The taker comes with `FusionGiver` contract that serves as starting point of the take process. First, solver calls `fillOrder` contract function, that has the same parameters as the one in `IOrderMixin` interface of Limit Order Protocol. The order must contain post-interaction to deploy `EscrowSrc` via escrow factory with pool asset deposit to it from the maker. The `FusionGiver` becomes 1inch taker of the order, providing the *original* taker with `IEscrowSrc` required functionality - withdraw, cancel, rescue (calls should be to the `FusionGiver` contract). Public phases can be called directly on the escrow contract.

Once source escrow is created, the solver obtains proof of `SrcEscrowCreated` event and calls the `take` function of the pool with `FusionTaker` as `taker` and corresponding `takerData`. After validation, `EscrowDst` deploy is called on factory with `FusionTaker` assigned as 1inch order taker. Pool asset is transferred then to the escrow contract.

Then the order proceeds according to the 1inch Fusion+ protocol. On success, the maker asset in source chain is transferred to the pool (transiting though `FusionGiver` contract if it's a *public* withdraw), on cancel - back to the maker. On destination chain, cancellation returns asset back to pool (possibly though `FusionTaker`), on success - to a specified receiver.


---

# 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.swaps.io/flex-liquidity-pools/takers/1inch-fusion+.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.
