> ## 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.

# Solutions for DeFi protocols

> Accept deposits from any chain in one click, automate cross-chain treasury rebalancing, and deepen your protocol's effective liquidity, without forcing users to bridge.

DeFi protocols are limited by the chain they're on. A vault on Arbitrum doesn't see capital sitting on Optimism. Users abandon at the bridging step. Eco gives you cross-chain reach without deploying anywhere new.

## The pain you're solving

* Users on chain A want to deposit into your vault on chain B but get lost in the bridge UI
* Treasury sits idle on one chain while opportunities exist on another
* Cross-chain rewards distribution forces users to claim on a chain they don't use
* Adding a new chain means deploying contracts, bridging liquidity, maintaining infrastructure

## What Eco gives you

| Capability                                     | Product                                                                            |
| ---------------------------------------------- | ---------------------------------------------------------------------------------- |
| One-tx cross-chain deposit into your contracts | [Routes destination calls](/routes/capabilities/destination-calls)                 |
| Conditional treasury rebalancing               | [Routes](/routes/overview) and [Programmable Transactions](/transactions/overview) |
| Universal deposit address per user             | [Programmable Addresses](/addresses/overview)                                      |
| Cross-chain reward distribution                | [Routes API](/routes/integrate/api)                                                |
| Best-execution internal routing                | [Programmable Transactions](/transactions/overview)                                |

## Recommended product mix

| Use case                                   | Use                                                        |
| ------------------------------------------ | ---------------------------------------------------------- |
| One-click cross-chain deposits             | [Routes](/routes/overview) and destination calls           |
| Treasury rebalancing                       | [Routes API](/routes/integrate/api) (programmatic intents) |
| Pre-positioned deposit addresses for users | [Programmable Addresses](/addresses/overview)              |
| Best-price internal swaps                  | [Programmable Transactions](/transactions/overview)        |

## Patterns

### "Deposit from any chain" button

User clicks Deposit on your Arbitrum vault. Your frontend builds a Routes intent with `route.tokens` = \[USDC on Arbitrum] and `route.calls` = \[`approve(vault)`, `vault.deposit(amount, user)`]. User signs once on their source chain. The whole sequence executes atomically, or refunds.

→ [Destination calls](/routes/capabilities/destination-calls)

### Auto-rebalance treasury

Run a service that watches utilization on each deployed chain. When a threshold trips, publish a Routes intent moving USDC from over-supplied chain to under-supplied. Settlement guarantees mean no partial-state reconciliation.

→ [Recipe: Treasury rebalancing](/recipes/treasury-rebalancing)

### Withdraw to any chain

User specifies a withdrawal address on any supported chain. Your contract publishes a Routes intent funded from your treasury, with the user's address as the recipient. User receives funds on their chain of choice.

## Get started

→ [Destination calls](/routes/capabilities/destination-calls), the primary capability you'll use
