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

# routes: Token registry

> Token registry: 5 exports of the routes module of @eco-incorp/sauce, including knownTokenSymbols, registryTokenAddress, resolveTokenMap, TOKEN_REGISTRY, TokenRegistryRow.

The `routes` namespace packages a Sauce program as an Eco intent. `Base(body, options)` and the other chain globals (installed by importing the root package) forward to `routes.openRoute(destination, body, options)`, which returns a `PendingSauceRoute`; `.nest(...)` adds child intents and `.reward(...)` returns a `BuiltIntent`.

```typescript theme={null}
import { routes } from "@eco-incorp/sauce";
```

This page covers `sdk/dist/routes/token-registry.d.ts`.

<Note>
  Generated from the type declarations shipped in `@eco-incorp/sauce` 0.99.4. Each entry shows the package authors' JSDoc and declaration for this SDK version. For runtime compatibility and deployed addresses, see [architecture and deployments](/programmable-transactions/sauce/architecture-and-deployments).
</Note>

### `routes.knownTokenSymbols`

*Function* · `sdk/dist/routes/token-registry.d.ts`

Every symbol this registry knows for `chain`, sorted for stable diagnostics/tests.

```typescript theme={null}
export declare function knownTokenSymbols(chain: CanonicalChain): readonly string[];
```

### `routes.registryTokenAddress`

*Function* · `sdk/dist/routes/token-registry.d.ts`

The registry's own address for `symbol` on `chain`, or `undefined` if unregistered. EVM-only --
an svm chain always returns `undefined` (no `TOKEN_REGISTRY` key exists for an svm chain id).

```typescript theme={null}
export declare function registryTokenAddress(chain: CanonicalChain, symbol: string): bigint | undefined;
```

### `routes.resolveTokenMap`

*Function* · `sdk/dist/routes/token-registry.d.ts`

THE one precedence resolver every token-address consumer goes through: registry rows for `chain`
first (skipped entirely for a non-evm chain -- there are none to skip in practice, since no
`TOKEN_REGISTRY` key is ever an svm chain id, but the `chain.kind` guard makes that explicit
rather than incidental), then `callerTokens` merged PER KEY on top -- overriding one symbol (e.g.
`USDC`) never drops an unrelated registry symbol (e.g. `WETH`) for the same chain.

```typescript theme={null}
export declare function resolveTokenMap(chain: CanonicalChain, callerTokens?: Readonly<Record<string, AddressInput>>): ReadonlyMap<string, bigint>;
```

### `routes.TOKEN_REGISTRY`

*Variable* · `sdk/dist/routes/token-registry.d.ts`

Keyed by canonical EVM chain id (`CanonicalChain.id`).

```typescript theme={null}
TOKEN_REGISTRY: Readonly<Record<number, readonly TokenRegistryRow[]>>
```

### `routes.TokenRegistryRow`

*Interface* · `sdk/dist/routes/token-registry.d.ts`

```typescript theme={null}
export interface TokenRegistryRow {
    readonly symbol: string;
    readonly address: `0x${string}`;
    readonly decimals: number;
    readonly source: string;
}
```
