> For the complete documentation index, see [llms.txt](https://docs.yuzu.finance/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.yuzu.finance/technical/smart-contracts/yuzu-amm-testnet/router/aggregator-integration.md).

# Aggregator Integration

### Get Amount In

`router::get_amount_in`

#### **Description**

This function calculates the required input amount of token **X** to receive a specific output amount of token **Y**.

#### **Usage**

* **Checks**: Ensures that a pair exists between token **X** and token **Y** before proceeding.
* **Returns**: The amount of token **X** required for the swap.

#### **Parameters**

| Input Value    | Type  | Description                               |
| -------------- | ----- | ----------------------------------------- |
| `y_out_amount` | `u64` | The desired output amount of token **Y**. |

#### **Code**

```move
public fun get_amount_in<X, Y>(y_out_amount: u64): u64 {
    assert!(swap::is_pair_created<X, Y>(), errors::pair_not_created());
    let is_x_to_y = swap_utils::sort_token_type<X, Y>();
    get_amount_in_internal<X, Y>(is_x_to_y, y_out_amount)
}
```

***

### Get Amount Out

`router::get_amount_out`

#### **Description**

This function calculates the output amount of token **Y** given an input amount of token **X**.

#### **Usage**

* **Checks**: Ensures that a pair exists between token **X** and token **Y** before proceeding.
* **Returns**: The amount of token **Y** that will be received for the swap.

#### **Parameters**

| Input Value   | Type  | Description                      |
| ------------- | ----- | -------------------------------- |
| `x_in_amount` | `u64` | The input amount of token **X**. |

#### **Code**

```move
public fun get_amount_out<X, Y>(x_in_amount: u64): u64 {
    assert!(swap::is_pair_created<X, Y>(), errors::pair_not_created());
    let is_x_to_y = swap_utils::sort_token_type<X, Y>();
    get_amount_out_internal<X, Y>(is_x_to_y, x_in_amount)
} 
```
