> ## Documentation Index
> Fetch the complete documentation index at: https://docs.eco.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ramses (ramses)

> Arbitrum-native ve(3,3) DEX with concentrated liquidity support. Features gauge voting, bribes, and protocol-owned liquidity mechanisms.

Arbitrum-native ve(3,3) DEX with concentrated liquidity support. Features gauge voting, bribes, and protocol-owned liquidity mechanisms. Solidly-fork architecture.

| Fact | Value |
| - | - |
| Category | DEX |
| Family | none |
| Namespace | `Ramses` on arbitrum |
| Chains | arbitrum |

## What it offers

* **swap**: Swap tokens with route-based routing specifying stable or volatile pool type

## Notes

* Solidly-fork routes contain `{from, to, stable}` tuples (NO `factory` field, unlike Velodrome/Aerodrome)
* Two pool types: `stable=true` for correlated assets, `stable=false` for uncorrelated
* ve(3,3) model: RAM token holders vote-lock to direct gauge emissions and receive bribes
* Arbitrum-only deployment; competes with Camelot on Arbitrum
* Ramses also has concentrated liquidity pools (CL) but the SDK currently exposes the V2 Solidly interface
* LP tokens can be staked in gauges for RAM emissions
* Input token must be ERC20-approved to the Router

## Its names in a program

On Arbitrum One, `Ramses` is a namespace: its contracts need no import.

```ts theme={null}
function main() {
  // Arbitrum One's router, `0xAAA87963EFeB6f7E0a2711F397663105Acb1805e`.
  require(Ramses.Router != 0);
}
```

## Deployments

| Chain | Contract | Address | In a program |
| - | - | - | - |
| [Arbitrum One](https://docs.eco.com/sauce-sdk/reference/chains/arbitrum.md) | router | `0xAAA87963EFeB6f7E0a2711F397663105Acb1805e` | `Ramses.Router` |

## ABI

### `RamsesRouterABI`

`import RamsesRouterABI from "./protocols/ramses/RamsesRouterABI.json";` Speaks for: router.

* `swapExactTokensForTokens(uint256 amountIn, uint256 amountOutMin, (address from, address to, bool stable)[] routes, address to, uint256 deadline) returns (uint256[] amounts)`
* `addLiquidity(address tokenA, address tokenB, bool stable, uint256 amountADesired, uint256 amountBDesired, uint256 amountAMin, uint256 amountBMin, address to, uint256 deadline) returns (uint256 amountA, uint256 amountB, uint256 liquidity)`

## Next steps

* [Protocols](https://docs.eco.com/sauce-sdk/reference/protocols.md): the other protocols, by what they do.
* [Protocols and tokens](https://docs.eco.com/sauce/names.md): calling a contract by its namespace, or through its ABI.
* [Glossary](https://docs.eco.com/sauce/glossary.md): the words these pages use, in plain terms.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.