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

# chains: Core types

> Core types: 7 exports of the chains module of @eco-incorp/sauce, including ChainDeployment, ProtocolInfo, ProtocolCategory, ContractABI, SauceFunction, SauceParam.

Two registries ship: `CANONICAL_CHAINS` (40 chains, 39 EVM plus Solana) read by `requireChain`, `resolveChain` and the slug and id lookups, and the `chains` record read by `getChain`, which carries 33 of the EVM chains. The same exports are available from the root and from `@eco-incorp/sauce/chains`.

This page covers `sdk/dist/core/types.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>

### `ChainDeployment`

*Interface* · `sdk/dist/core/types.d.ts`

Chain ID to deployment addresses mapping

```typescript theme={null}
export interface ChainDeployment {
    chainId: number;
    chainName: string;
    addresses: Record<string, Address>;
}
```

### `ProtocolInfo`

*Interface* · `sdk/dist/core/types.d.ts`

Protocol metadata

```typescript theme={null}
export interface ProtocolInfo {
    name: string;
    slug: string;
    description: string;
    website: string;
    github?: string;
    npm?: string;
    category: ProtocolCategory;
    chains: ChainDeployment[];
    audited: boolean;
    tvl?: string;
    deprecated?: boolean;
}
```

### `ProtocolCategory`

*Type* · `sdk/dist/core/types.d.ts`

```typescript theme={null}
export type ProtocolCategory = "dex" | "lending" | "bridge" | "yield" | "derivatives" | "staking" | "oracle" | "cdp" | "insurance" | "launchpad" | "nft-marketplace" | "liquid-staking" | "restaking" | "rwa" | "payments" | "privacy" | "governance" | "options" | "perpetuals" | "synthetics" | "aggregator" | "cross-chain" | "infrastructure";
```

### `ContractABI`

*Interface* · `sdk/dist/core/types.d.ts`

ABI entry for a protocol contract

```typescript theme={null}
export interface ContractABI {
    contractName: string;
    abi: readonly object[];
    address?: Address;
}
```

### `SauceFunction`

*Interface* · `sdk/dist/core/types.d.ts`

A Sauce function that interacts with a protocol

```typescript theme={null}
export interface SauceFunction {
    name: string;
    description: string;
    params: SauceParam[];
    returns?: string;
    sauceScript: string;
}
```

### `SauceParam`

*Interface* · `sdk/dist/core/types.d.ts`

```typescript theme={null}
export interface SauceParam {
    name: string;
    type: "Address" | "Uint256" | "Bytes" | "Bytes32" | "Bool";
    description: string;
}
```

### `Chain`

*Interface* · `sdk/dist/core/types.d.ts`

EVM chain definition

```typescript theme={null}
export interface Chain {
    id: number;
    name: string;
    nativeCurrency: {
        name: string;
        symbol: string;
        decimals: number;
    };
    rpcUrls: string[];
    blockExplorerUrls: string[];
    testnet: boolean;
}
```
