# swap

This entrypoint is designed to swap tokens by a specific DEX.

### Call parameters

<table><thead><tr><th width="185">Field</th><th width="197" align="center">Type</th><th width="448.2">Description</th></tr></thead><tbody><tr><td>pool_id</td><td align="center"><code>nat</code></td><td>pool identifier.</td></tr><tr><td>idx_from</td><td align="center"><code>token_pool_idx_t</code></td><td>index of input token.</td></tr><tr><td>idx_to</td><td align="center"><code>token_pool_idx_t</code></td><td>index of output token.</td></tr><tr><td>amount</td><td align="center"><code>nat</code></td><td>amount of input token.</td></tr><tr><td>min_amount_out</td><td align="center"><code>nat</code></td><td>minimal amount of output token expected to receive.</td></tr><tr><td>deadline</td><td align="center"><code>timestamp</code></td><td>deadline of current operation.</td></tr><tr><td>receiver</td><td align="center"><code>option(address)</code></td><td>optional, address of the receiver of the LP tokens. If not provided the <code>sender</code> address will be used.</td></tr><tr><td>referral</td><td align="center"><code>option(address)</code></td><td>optional, address of the referral of the current operation. If not provided the <code>default_referral</code> address will be used.</td></tr></tbody></table>

```pascaligo
type swap_param_t       is [@layout:comb] record [
  pool_id                 : nat; 
  idx_from                : token_pool_idx_t;
  idx_to                  : token_pool_idx_t;
  amount                  : nat;
  min_amount_out          : nat;
  deadline                : timestamp; 
  receiver                : option(address); 
  referral                : option(address);
]
```
