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

# contracts: Descriptors, links and registry

> Descriptors, links and registry: the declaration and description of each of the 17 exports of @eco-incorp/sauce.

The `contracts` namespace describes each registry protocol's contracts: per-chain addresses, each bound to the ABI the registry checked against the deployed code. `contracts.on(chain)` returns typed accessors (`contracts.on("base").Uniswap.UniversalRouter`) whose methods build `ContractCall` objects you run with your own viem client.

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

Generated from the type declarations of `@eco-incorp/sauce`.

### `contracts.ContractDescriptor`

*Interface* · `@eco-incorp/sauce`

```typescript theme={null}
export interface ContractDescriptor {
    readonly protocol: string;
    readonly protocolName: string;
    readonly contract: string;
    readonly kind: ContractKind;
    readonly roleKey?: string;
    readonly abiExport?: string;
    readonly abi: Abi;
    readonly methods: readonly DescriptorMethod[];
    readonly perChainAddress: Readonly<Record<number, Address>>;
    readonly chains: readonly ChainSlug[];
    readonly coverage: ContractCoverage;
}
```

### `contracts.ContractCoverage`

*Interface* · `@eco-incorp/sauce`

```typescript theme={null}
export interface ContractCoverage {
    readonly abiSource: "sdk-registry";
    readonly completeness: "partial" | "unknown";
    readonly typeFidelity: "exact" | "widened";
    readonly methodCount: number;
    readonly caveats: readonly string[];
}
```

### `contracts.ContractKind`

*Type* · `@eco-incorp/sauce`

What KIND of thing a descriptor represents. Not a boolean: the vendored
registry data genuinely contains three structurally different shapes
sharing one `addresses.ts`/`abis.ts` file pair per protocol.

```typescript theme={null}
export type ContractKind = "singleton" | "address-only" | "interface";
```

### `contracts.DescriptorMethod`

*Interface* · `@eco-incorp/sauce`

```typescript theme={null}
export interface DescriptorMethod {
    readonly name: string;
    readonly signature: string;
    readonly selector: Hex;
    readonly inputs: readonly AbiParameter[];
    readonly outputs: readonly AbiParameter[];
    readonly stateMutability: StateMutability;
    readonly returns?: readonly MethodReturn[];
}
```

### `contracts.MethodReturn`

*Interface* · `@eco-incorp/sauce`

One address output of a method, and the registry contract it is.

```typescript theme={null}
export interface MethodReturn {
    readonly path: readonly string[];
    readonly protocol: string;
    readonly contract: string;
}
```

### `contracts.ResolvedContract`

*Interface* · `@eco-incorp/sauce`

```typescript theme={null}
export interface ResolvedContract {
    readonly descriptor: ContractDescriptor;
    readonly chain: CanonicalChain;
    readonly address?: Address;
    readonly methods: ReadonlyMap<string, DescriptorMethod>;
}
```

### `contracts.StateMutability`

*Type* · `@eco-incorp/sauce`

```typescript theme={null}
export type StateMutability = "pure" | "view" | "nonpayable" | "payable";
```

### `contracts.ContractLink`

*Interface* · `@eco-incorp/sauce`

One registry contract: a protocol's addresses.ts role key, its abis.ts export, and the name it has
in a namespace (`Base.UniswapV3.QuoterV2`, `UniswapV3.QuoterV2` in a program).

Every role with an EVM address is a contract:

* `singleton` - a role bound to an ABI;
* `address-only` - a role bound to no ABI, or to one the evidence marks `unverifiable` (its
  address only, no methods);
* `interface` - an ABI bound to no role: no fixed address, so a caller binds one with `.at(...)`.

A contract is named by its role key, first letter upper-cased, with the ABI export's spelling for
the role's leading words wherever the export spells the same words (`clFactory` under
`SlipstreamCLFactoryABI` is `CLFactory`). An interface, or a role bound to different ABIs on
different chains, is named after its ABI export (`deriveContractName`). The generator refuses a
name two contracts of one protocol would share.

```typescript theme={null}
export interface ContractLink {
    readonly protocol: string;
    readonly roleKey?: string;
    readonly abiExport?: string;
    readonly contract: string;
    readonly kind: ContractKind;
    readonly chains?: readonly number[];
    readonly typeFidelity?: "widened";
    readonly caveats?: readonly string[];
}
```

### `contracts.ContractLinkEntry`

*Type* · `@eco-incorp/sauce`

```typescript theme={null}
export type ContractLinkEntry = (typeof CONTRACT_LINKS)[number];
```

### `contracts.ReturnedContractLink`

*Interface* · `@eco-incorp/sauce`

A registry function whose address output the registry knows the contract of: a factory's pool,
a pool's tokens, a vault's asset. An annotation names
an ABI the registry already holds to its deployments; it says only which
of them an address a function returns speaks. Where the actions suites' replayed mainnet state
holds the contracts, they call each result as its annotation says (`names.mainnet`,
`swap.mainnet`).

```typescript theme={null}
export interface ReturnedContractLink {
    readonly protocol: string;
    readonly abiExport: string;
    readonly signature: string;
    readonly path: readonly string[];
    readonly returns: {
        readonly protocol: string;
        readonly contract: string;
    };
}
```

### `contracts.DESCRIPTORS`

*Variable* · `@eco-incorp/sauce`

The whole flat registry, built once at module load. Stable order: as declared in CONTRACT\_LINKS.

```typescript theme={null}
DESCRIPTORS: readonly ContractDescriptor[]
```

### `contracts.byChain`

*Variable* · `@eco-incorp/sauce`

REVERSE INDEX: chain slug -> descriptors with an address on that chain (kind:"interface" descriptors are always excluded - see listInterfaces).

```typescript theme={null}
byChain: ReadonlyMap<ChainSlug, readonly ContractDescriptor[]>
```

### `contracts.byProtocol`

*Variable* · `@eco-incorp/sauce`

protocol slug (normalized) -> its descriptors, in DESCRIPTORS order.

```typescript theme={null}
byProtocol: ReadonlyMap<string, readonly ContractDescriptor[]>
```

### `contracts.byProtocolAndContract`

*Variable* · `@eco-incorp/sauce`

protocol slug (normalized) -> contract name (normalized) -> descriptor.

```typescript theme={null}
byProtocolAndContract: ReadonlyMap<string, ReadonlyMap<string, ContractDescriptor>>
```

### `contracts.CONTRACT_LINKS`

*Variable* · `@eco-incorp/sauce`

One entry per contract: 312 contracts across 133 protocols.

```typescript theme={null}
CONTRACT_LINKS: readonly [
    {
        readonly protocol: "aave-v2";
        readonly contract: "LendingPool";
        readonly kind: "singleton";
        readonly roleKey: "lendingPool";
        readonly abiExport: "LendingPoolABI";
    },
    {
        readonly protocol: "aave-v3";
        readonly contract: "Pool";
        readonly kind: "singleton";
        readonly roleKey: "pool";
        readonly abiExport: "PoolABI";
    },
    {
        readonly protocol: "aave-v3";
        readonly contract: "PoolAddressesProvider";
        readonly kind: "address-only";
        readonly roleKey: "poolAddressesProvider";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "MainSpoke";
        readonly kind: "singleton";
        readonly roleKey: "mainSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "ForexSpoke";
        readonly kind: "singleton";
        readonly roleKey: "forexSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "BluechipSpoke";
        readonly kind: "singleton";
        readonly roleKey: "bluechipSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "EthenaCorrelatedSpoke";
        readonly kind: "singleton";
        readonly roleKey: "ethenaCorrelatedSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "EthenaEcosystemSpoke";
        readonly kind: "singleton";
        readonly roleKey: "ethenaEcosystemSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "GoldSpoke";
        readonly kind: "singleton";
        readonly roleKey: "goldSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "PaxgGoldSpoke";
        readonly kind: "singleton";
        readonly roleKey: "paxgGoldSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "LombardBtcSpoke";
        readonly kind: "singleton";
        readonly roleKey: "lombardBtcSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "UsdgPendleSpoke";
        readonly kind: "singleton";
        readonly roleKey: "usdgPendleSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "EtherfiESpoke";
        readonly kind: "singleton";
        readonly roleKey: "etherfiESpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "KelpESpoke";
        readonly kind: "singleton";
        readonly roleKey: "kelpESpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "LidoESpoke";
        readonly kind: "singleton";
        readonly roleKey: "lidoESpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "UsdgMapleESpoke";
        readonly kind: "singleton";
        readonly roleKey: "usdgMapleESpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "Mag7Spoke";
        readonly kind: "singleton";
        readonly roleKey: "mag7Spoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "AvaxCorrelatedSpoke";
        readonly kind: "singleton";
        readonly roleKey: "avaxCorrelatedSpoke";
        readonly abiExport: "AaveV4SpokeABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "CoreHub";
        readonly kind: "singleton";
        readonly roleKey: "coreHub";
        readonly abiExport: "AaveV4HubABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "PlusHub";
        readonly kind: "singleton";
        readonly roleKey: "plusHub";
        readonly abiExport: "AaveV4HubABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "PrimeHub";
        readonly kind: "singleton";
        readonly roleKey: "primeHub";
        readonly abiExport: "AaveV4HubABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "GlobalDollarHub";
        readonly kind: "singleton";
        readonly roleKey: "globalDollarHub";
        readonly abiExport: "AaveV4HubABI";
    },
    {
        readonly protocol: "aave-v4";
        readonly contract: "EquitiesHub";
        readonly kind: "singleton";
        readonly roleKey: "equitiesHub";
        readonly abiExport: "AaveV4HubABI";
    },
    {
        readonly protocol: "abracadabra";
        readonly contract: "Cauldron";
        readonly kind: "interface";
        readonly abiExport: "CauldronABI";
    },
    {
        readonly protocol: "abracadabra";
        readonly contract: "DegenBox";
        readonly kind: "singleton";
        readonly roleKey: "degenBox";
        readonly abiExport: "DegenBoxABI";
    },
    {
        readonly protocol: "abracadabra";
        readonly contract: "Mim";
        readonly kind: "address-only";
        readonly roleKey: "mim";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "across";
        readonly contract: "HubPool";
        readonly kind: "singleton";
        readonly roleKey: "hubPool";
        readonly abiExport: "AcrossHubPoolABI";
    },
    {
        readonly protocol: "across";
        readonly contract: "SpokePool";
        readonly kind: "singleton";
        readonly roleKey: "spokePool";
        readonly abiExport: "AcrossSpokePoolABI";
    },
    {
        readonly protocol: "aerodrome";
        readonly contract: "PoolFactory";
        readonly kind: "singleton";
        readonly roleKey: "poolFactory";
        readonly abiExport: "AerodromePoolFactoryABI";
    },
    {
        readonly protocol: "aerodrome";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "AerodromeRouterABI";
    },
    {
        readonly protocol: "aerodrome";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "AerodromePoolABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "CLFactory";
        readonly kind: "singleton";
        readonly roleKey: "clFactory";
        readonly abiExport: "SlipstreamCLFactoryABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "CLFactoryGaugeCaps";
        readonly kind: "singleton";
        readonly roleKey: "clFactoryGaugeCaps";
        readonly abiExport: "SlipstreamCLFactoryABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "CLFactoryGaugesV3";
        readonly kind: "singleton";
        readonly roleKey: "clFactoryGaugesV3";
        readonly abiExport: "SlipstreamCLFactoryABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "NonfungiblePositionManager";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManager";
        readonly abiExport: "SlipstreamPositionManagerABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "NonfungiblePositionManagerGaugeCaps";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManagerGaugeCaps";
        readonly abiExport: "SlipstreamPositionManagerABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "NonfungiblePositionManagerGaugesV3";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManagerGaugesV3";
        readonly abiExport: "SlipstreamPositionManagerABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "Metarouter";
        readonly kind: "singleton";
        readonly roleKey: "metarouter";
        readonly abiExport: "AeroMetarouterABI";
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "AerodromeSlipstreamPoolABI";
    },
    {
        readonly protocol: "aevo";
        readonly contract: "DepositContract";
        readonly kind: "singleton";
        readonly roleKey: "depositContract";
        readonly abiExport: "DepositContractABI";
    },
    {
        readonly protocol: "alchemix";
        readonly contract: "AlchemistAlUSD";
        readonly kind: "singleton";
        readonly roleKey: "alchemistAlUSD";
        readonly abiExport: "AlchemistABI";
    },
    {
        readonly protocol: "alchemix";
        readonly contract: "AlchemistAlETH";
        readonly kind: "singleton";
        readonly roleKey: "alchemistAlETH";
        readonly abiExport: "AlchemistABI";
    },
    {
        readonly protocol: "alchemix";
        readonly contract: "AlUSD";
        readonly kind: "address-only";
        readonly roleKey: "alUSD";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "alchemix";
        readonly contract: "AlETH";
        readonly kind: "address-only";
        readonly roleKey: "alETH";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "ambient";
        readonly contract: "CrocSwapDex";
        readonly kind: "singleton";
        readonly roleKey: "crocSwapDex";
        readonly abiExport: "CrocSwapDexABI";
    },
    {
        readonly protocol: "arbitrum-bridge";
        readonly contract: "L1GatewayRouter";
        readonly kind: "singleton";
        readonly roleKey: "l1GatewayRouter";
        readonly abiExport: "ArbitrumL1GatewayRouterABI";
    },
    {
        readonly protocol: "arbitrum-bridge";
        readonly contract: "L2GatewayRouter";
        readonly kind: "address-only";
        readonly roleKey: "l2GatewayRouter";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "arrakis";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "ArrakisRouterABI";
    },
    {
        readonly protocol: "arrakis";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "ArrakisVaultABI";
    },
    {
        readonly protocol: "arrakis";
        readonly contract: "Factory";
        readonly kind: "address-only";
        readonly roleKey: "factory";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "axelar";
        readonly contract: "GasService";
        readonly kind: "singleton";
        readonly roleKey: "gasService";
        readonly abiExport: "AxelarGasServiceABI";
    },
    {
        readonly protocol: "axelar";
        readonly contract: "Gateway";
        readonly kind: "singleton";
        readonly roleKey: "gateway";
        readonly abiExport: "AxelarGatewayABI";
    },
    {
        readonly protocol: "axelar";
        readonly contract: "ITS";
        readonly kind: "singleton";
        readonly roleKey: "its";
        readonly abiExport: "AxelarITSABI";
    },
    {
        readonly protocol: "balancer-v2";
        readonly contract: "Vault";
        readonly kind: "singleton";
        readonly roleKey: "vault";
        readonly abiExport: "BalancerV2VaultABI";
    },
    {
        readonly protocol: "base-bridge";
        readonly contract: "L1StandardBridge";
        readonly kind: "singleton";
        readonly roleKey: "l1StandardBridge";
        readonly abiExport: "BaseL1StandardBridgeABI";
    },
    {
        readonly protocol: "base-bridge";
        readonly contract: "L2StandardBridge";
        readonly kind: "address-only";
        readonly roleKey: "l2StandardBridge";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "baseswap";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "BaseSwapRouterABI";
    },
    {
        readonly protocol: "beefy";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "BeefyVaultABI";
    },
    {
        readonly protocol: "beefy";
        readonly contract: "BIFI";
        readonly kind: "address-only";
        readonly roleKey: "BIFI";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "benqi";
        readonly contract: "Comptroller";
        readonly kind: "singleton";
        readonly roleKey: "comptroller";
        readonly abiExport: "BenqiComptrollerABI";
    },
    {
        readonly protocol: "benqi";
        readonly contract: "QiToken";
        readonly kind: "interface";
        readonly abiExport: "QiTokenABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "CamelotV2RouterABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V3SwapRouter";
        readonly kind: "singleton";
        readonly roleKey: "v3SwapRouter";
        readonly abiExport: "CamelotV3SwapRouterABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V2Factory";
        readonly kind: "singleton";
        readonly roleKey: "v2Factory";
        readonly abiExport: "CamelotV2FactoryABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V2Pair";
        readonly kind: "interface";
        readonly abiExport: "CamelotV2PairABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V3Factory";
        readonly kind: "singleton";
        readonly roleKey: "v3Factory";
        readonly abiExport: "CamelotV3FactoryABI";
    },
    {
        readonly protocol: "camelot";
        readonly contract: "V3Pool";
        readonly kind: "interface";
        readonly abiExport: "CamelotV3PoolABI";
    },
    {
        readonly protocol: "cbeth";
        readonly contract: "CbETH";
        readonly kind: "singleton";
        readonly roleKey: "cbETH";
        readonly abiExport: "CbETHABI";
        readonly caveats: readonly [
            "exchangeRate() is not available on base: Base cbETH is the bridged OptimismMintableERC20; the exchange rate lives only on the Ethereum StakedTokenV1",
            "mint(address,uint256) is not available on base: Base cbETH's mint is the bridge's (returns nothing); the ABI describes the Ethereum token, whose mint returns bool"
        ];
    },
    {
        readonly protocol: "cctp";
        readonly contract: "TokenMessenger";
        readonly kind: "singleton";
        readonly roleKey: "tokenMessenger";
        readonly abiExport: "TokenMessengerABI";
    },
    {
        readonly protocol: "celer";
        readonly contract: "Bridge";
        readonly kind: "singleton";
        readonly roleKey: "bridge";
        readonly abiExport: "CelerBridgeABI";
    },
    {
        readonly protocol: "chainlink";
        readonly contract: "EthUsdFeed";
        readonly kind: "singleton";
        readonly roleKey: "ethUsdFeed";
        readonly abiExport: "AggregatorV3ABI";
    },
    {
        readonly protocol: "chainlink";
        readonly contract: "FeedRegistry";
        readonly kind: "singleton";
        readonly roleKey: "feedRegistry";
        readonly abiExport: "FeedRegistryABI";
    },
    {
        readonly protocol: "chainlink";
        readonly contract: "VrfV2Coordinator";
        readonly kind: "address-only";
        readonly roleKey: "vrfV2Coordinator";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "chainlink-ccip";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "CCIPRouterABI";
    },
    {
        readonly protocol: "circle-gateway";
        readonly contract: "GatewayWallet";
        readonly kind: "singleton";
        readonly roleKey: "gatewayWallet";
        readonly abiExport: "GatewayWalletABI";
    },
    {
        readonly protocol: "circle-gateway";
        readonly contract: "GatewayMinter";
        readonly kind: "singleton";
        readonly roleKey: "gatewayMinter";
        readonly abiExport: "GatewayMinterABI";
    },
    {
        readonly protocol: "compound-v2";
        readonly contract: "CUSDC";
        readonly kind: "singleton";
        readonly roleKey: "cUSDC";
        readonly abiExport: "CErc20ABI";
    },
    {
        readonly protocol: "compound-v2";
        readonly contract: "Comptroller";
        readonly kind: "singleton";
        readonly roleKey: "comptroller";
        readonly abiExport: "ComptrollerABI";
    },
    {
        readonly protocol: "compound-v2";
        readonly contract: "CETH";
        readonly kind: "address-only";
        readonly roleKey: "cETH";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "compound-v3";
        readonly contract: "CUSDCv3";
        readonly kind: "singleton";
        readonly roleKey: "cUSDCv3";
        readonly abiExport: "CometABI";
    },
    {
        readonly protocol: "compound-v3";
        readonly contract: "CWETHv3";
        readonly kind: "singleton";
        readonly roleKey: "cWETHv3";
        readonly abiExport: "CometABI";
    },
    {
        readonly protocol: "compound-v3";
        readonly contract: "CUSDTv3";
        readonly kind: "singleton";
        readonly roleKey: "cUSDTv3";
        readonly abiExport: "CometABI";
    },
    {
        readonly protocol: "connext";
        readonly contract: "EverclearSpoke";
        readonly kind: "singleton";
        readonly roleKey: "everclearSpoke";
        readonly abiExport: "EverclearSpokeABI";
    },
    {
        readonly protocol: "convex";
        readonly contract: "BaseRewardPool";
        readonly kind: "interface";
        readonly abiExport: "BaseRewardPoolABI";
    },
    {
        readonly protocol: "convex";
        readonly contract: "Booster";
        readonly kind: "singleton";
        readonly roleKey: "booster";
        readonly abiExport: "BoosterABI";
    },
    {
        readonly protocol: "convex";
        readonly contract: "CvxRewardPool";
        readonly kind: "address-only";
        readonly roleKey: "cvxRewardPool";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "cowswap";
        readonly contract: "GPv2Settlement";
        readonly kind: "singleton";
        readonly roleKey: "gpv2Settlement";
        readonly abiExport: "GPv2SettlementABI";
    },
    {
        readonly protocol: "crvusd";
        readonly contract: "CrvUSD";
        readonly kind: "singleton";
        readonly roleKey: "crvusd";
        readonly abiExport: "CrvUSDERC20ABI";
    },
    {
        readonly protocol: "curve";
        readonly contract: "AddressProvider";
        readonly kind: "singleton";
        readonly roleKey: "addressProvider";
        readonly abiExport: "CurveAddressProviderABI";
    },
    {
        readonly protocol: "curve";
        readonly contract: "RouterNG";
        readonly kind: "singleton";
        readonly roleKey: "routerNG";
        readonly abiExport: "CurveRouterNGABI";
    },
    {
        readonly protocol: "curve";
        readonly contract: "StableSwap";
        readonly kind: "interface";
        readonly abiExport: "CurveStableSwapABI";
    },
    {
        readonly protocol: "curve";
        readonly contract: "ThreePool";
        readonly kind: "singleton";
        readonly roleKey: "threePool";
        readonly abiExport: "CurveThreePoolABI";
    },
    {
        readonly protocol: "curve";
        readonly contract: "CrvToken";
        readonly kind: "address-only";
        readonly roleKey: "crvToken";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "debridge";
        readonly contract: "DlnDestination";
        readonly kind: "singleton";
        readonly roleKey: "dlnDestination";
        readonly abiExport: "DlnDestinationABI";
    },
    {
        readonly protocol: "debridge";
        readonly contract: "DlnSource";
        readonly kind: "singleton";
        readonly roleKey: "dlnSource";
        readonly abiExport: "DlnSourceABI";
    },
    {
        readonly protocol: "dodo";
        readonly contract: "DODOV2Proxy";
        readonly kind: "singleton";
        readonly roleKey: "dodoV2Proxy";
        readonly abiExport: "DODOV2ProxyABI";
    },
    {
        readonly protocol: "eigenlayer";
        readonly contract: "DelegationManager";
        readonly kind: "singleton";
        readonly roleKey: "delegationManager";
        readonly abiExport: "DelegationManagerABI";
    },
    {
        readonly protocol: "eigenlayer";
        readonly contract: "StETHStrategy";
        readonly kind: "singleton";
        readonly roleKey: "stETHStrategy";
        readonly abiExport: "StrategyABI";
    },
    {
        readonly protocol: "eigenlayer";
        readonly contract: "RETHStrategy";
        readonly kind: "singleton";
        readonly roleKey: "rETHStrategy";
        readonly abiExport: "StrategyABI";
    },
    {
        readonly protocol: "eigenlayer";
        readonly contract: "CbETHStrategy";
        readonly kind: "singleton";
        readonly roleKey: "cbETHStrategy";
        readonly abiExport: "StrategyABI";
    },
    {
        readonly protocol: "eigenlayer";
        readonly contract: "StrategyManager";
        readonly kind: "singleton";
        readonly roleKey: "strategyManager";
        readonly abiExport: "StrategyManagerABI";
    },
    {
        readonly protocol: "ens";
        readonly contract: "BaseRegistrar";
        readonly kind: "singleton";
        readonly roleKey: "baseRegistrar";
        readonly abiExport: "BaseRegistrarABI";
    },
    {
        readonly protocol: "ens";
        readonly contract: "Registry";
        readonly kind: "singleton";
        readonly roleKey: "registry";
        readonly abiExport: "ENSRegistryABI";
    },
    {
        readonly protocol: "erc20";
        readonly contract: "ERC20";
        readonly kind: "interface";
        readonly abiExport: "ERC20ABI";
    },
    {
        readonly protocol: "erc3156";
        readonly contract: "FlashLender";
        readonly kind: "interface";
        readonly abiExport: "FlashLenderABI";
    },
    {
        readonly protocol: "erc4626";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "VaultABI";
    },
    {
        readonly protocol: "ethena";
        readonly contract: "Susde";
        readonly kind: "singleton";
        readonly roleKey: "susde";
        readonly abiExport: "StakedUSDeABI";
    },
    {
        readonly protocol: "ethena";
        readonly contract: "USDe";
        readonly kind: "singleton";
        readonly roleKey: "usde";
        readonly abiExport: "USDeABI";
    },
    {
        readonly protocol: "etherfi";
        readonly contract: "EETH";
        readonly kind: "singleton";
        readonly roleKey: "eETH";
        readonly abiExport: "EETHABI";
    },
    {
        readonly protocol: "etherfi";
        readonly contract: "LiquidityPool";
        readonly kind: "singleton";
        readonly roleKey: "liquidityPool";
        readonly abiExport: "LiquidityPoolABI";
    },
    {
        readonly protocol: "etherfi";
        readonly contract: "WeETH";
        readonly kind: "singleton";
        readonly roleKey: "weETH";
        readonly abiExport: "WeETHABI";
    },
    {
        readonly protocol: "euler-v2";
        readonly contract: "EthereumVaultConnector";
        readonly kind: "singleton";
        readonly roleKey: "ethereumVaultConnector";
        readonly abiExport: "EVCABI";
    },
    {
        readonly protocol: "euler-v2";
        readonly contract: "EVault";
        readonly kind: "interface";
        readonly abiExport: "EVaultABI";
    },
    {
        readonly protocol: "fenix";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "FenixRouterABI";
    },
    {
        readonly protocol: "fluid";
        readonly contract: "Lending";
        readonly kind: "interface";
        readonly abiExport: "FluidLendingABI";
    },
    {
        readonly protocol: "fluid";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "FluidVaultABI";
    },
    {
        readonly protocol: "fluid";
        readonly contract: "Liquidity";
        readonly kind: "address-only";
        readonly roleKey: "liquidity";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "frax";
        readonly contract: "Frax";
        readonly kind: "singleton";
        readonly roleKey: "frax";
        readonly abiExport: "FraxERC20ABI";
    },
    {
        readonly protocol: "frax-ether";
        readonly contract: "FrxETHMinter";
        readonly kind: "singleton";
        readonly roleKey: "frxETHMinter";
        readonly abiExport: "FrxETHMinterABI";
    },
    {
        readonly protocol: "frax-ether";
        readonly contract: "SfrxETH";
        readonly kind: "singleton";
        readonly roleKey: "sfrxETH";
        readonly abiExport: "SfrxETHABI";
    },
    {
        readonly protocol: "gains-network";
        readonly contract: "Diamond";
        readonly kind: "singleton";
        readonly roleKey: "diamond";
        readonly abiExport: "DiamondABI";
    },
    {
        readonly protocol: "gains-network";
        readonly contract: "Gns";
        readonly kind: "address-only";
        readonly roleKey: "gns";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "gamma";
        readonly contract: "Hypervisor";
        readonly kind: "interface";
        readonly abiExport: "HypervisorABI";
    },
    {
        readonly protocol: "gamma";
        readonly contract: "UniProxy";
        readonly kind: "singleton";
        readonly roleKey: "uniProxy";
        readonly abiExport: "UniProxyABI";
        readonly chains: readonly [
            137
        ];
    },
    {
        readonly protocol: "gamma";
        readonly contract: "UniProxyLegacy";
        readonly kind: "singleton";
        readonly roleKey: "uniProxy";
        readonly abiExport: "UniProxyLegacyABI";
        readonly chains: readonly [
            1
        ];
    },
    {
        readonly protocol: "gelato";
        readonly contract: "Automate";
        readonly kind: "singleton";
        readonly roleKey: "automate";
        readonly abiExport: "GelatoAutomateABI";
    },
    {
        readonly protocol: "gho";
        readonly contract: "Gho";
        readonly kind: "singleton";
        readonly roleKey: "gho";
        readonly abiExport: "GhoTokenABI";
    },
    {
        readonly protocol: "gmx-v1";
        readonly contract: "PositionRouter";
        readonly kind: "singleton";
        readonly roleKey: "positionRouter";
        readonly abiExport: "PositionRouterABI";
    },
    {
        readonly protocol: "gmx-v1";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "RouterABI";
    },
    {
        readonly protocol: "gmx-v1";
        readonly contract: "Vault";
        readonly kind: "singleton";
        readonly roleKey: "vault";
        readonly abiExport: "VaultABI";
    },
    {
        readonly protocol: "gmx-v1";
        readonly contract: "Glp";
        readonly kind: "address-only";
        readonly roleKey: "glp";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "gmx-v2";
        readonly contract: "ExchangeRouter";
        readonly kind: "singleton";
        readonly roleKey: "exchangeRouter";
        readonly abiExport: "ExchangeRouterABI";
    },
    {
        readonly protocol: "gmx-v2";
        readonly contract: "DataStore";
        readonly kind: "address-only";
        readonly roleKey: "dataStore";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "harvest";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "VaultABI";
    },
    {
        readonly protocol: "harvest";
        readonly contract: "Controller";
        readonly kind: "address-only";
        readonly roleKey: "controller";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "harvest";
        readonly contract: "Farm";
        readonly kind: "address-only";
        readonly roleKey: "farm";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "harvest";
        readonly contract: "DepositHelper";
        readonly kind: "address-only";
        readonly roleKey: "depositHelper";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "hegic";
        readonly contract: "OperationalTreasury";
        readonly kind: "singleton";
        readonly roleKey: "operationalTreasury";
        readonly abiExport: "HegicABI";
    },
    {
        readonly protocol: "hegic";
        readonly contract: "Hegic";
        readonly kind: "address-only";
        readonly roleKey: "hegic";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "hop";
        readonly contract: "L1EthBridge";
        readonly kind: "singleton";
        readonly roleKey: "l1EthBridge";
        readonly abiExport: "HopL1BridgeABI";
    },
    {
        readonly protocol: "hop";
        readonly contract: "L1UsdcBridge";
        readonly kind: "singleton";
        readonly roleKey: "l1UsdcBridge";
        readonly abiExport: "HopL1BridgeABI";
    },
    {
        readonly protocol: "hop";
        readonly contract: "L2AmmWrapper";
        readonly kind: "singleton";
        readonly roleKey: "l2AmmWrapper";
        readonly abiExport: "HopL2AmmWrapperABI";
    },
    {
        readonly protocol: "hyperlane";
        readonly contract: "Mailbox";
        readonly kind: "singleton";
        readonly roleKey: "mailbox";
        readonly abiExport: "HyperlaneMailboxABI";
    },
    {
        readonly protocol: "instadapp";
        readonly contract: "FlashloanAggregator";
        readonly kind: "singleton";
        readonly roleKey: "flashloanAggregator";
        readonly abiExport: "FlashAggregatorABI";
    },
    {
        readonly protocol: "kelp";
        readonly contract: "LRTDepositPool";
        readonly kind: "singleton";
        readonly roleKey: "lrtDepositPool";
        readonly abiExport: "LRTDepositPoolABI";
    },
    {
        readonly protocol: "kelp";
        readonly contract: "RsETH";
        readonly kind: "singleton";
        readonly roleKey: "rsETH";
        readonly abiExport: "RsETHABI";
    },
    {
        readonly protocol: "kim";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "KimRouterABI";
    },
    {
        readonly protocol: "kyberswap";
        readonly contract: "ElasticRouter";
        readonly kind: "singleton";
        readonly roleKey: "elasticRouter";
        readonly abiExport: "KyberSwapElasticRouterABI";
    },
    {
        readonly protocol: "kyberswap";
        readonly contract: "MetaAggregationRouterV2";
        readonly kind: "singleton";
        readonly roleKey: "metaAggregationRouterV2";
        readonly abiExport: "KyberSwapMetaAggregationRouterABI";
    },
    {
        readonly protocol: "kyberswap";
        readonly contract: "ElasticFactory";
        readonly kind: "address-only";
        readonly roleKey: "elasticFactory";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "kyberswap-aggregator";
        readonly contract: "MetaAggregationRouter";
        readonly kind: "singleton";
        readonly roleKey: "metaAggregationRouter";
        readonly abiExport: "KyberSwapMetaAggregationRouterABI";
    },
    {
        readonly protocol: "layerbank";
        readonly contract: "LToken";
        readonly kind: "interface";
        readonly abiExport: "LTokenABI";
    },
    {
        readonly protocol: "layerbank";
        readonly contract: "Core";
        readonly kind: "singleton";
        readonly roleKey: "core";
        readonly abiExport: "LayerBankCoreABI";
    },
    {
        readonly protocol: "layerzero";
        readonly contract: "EndpointV2";
        readonly kind: "singleton";
        readonly roleKey: "endpointV2";
        readonly abiExport: "LayerZeroEndpointV2ABI";
    },
    {
        readonly protocol: "level-finance";
        readonly contract: "LiquidityPool";
        readonly kind: "singleton";
        readonly roleKey: "liquidityPool";
        readonly abiExport: "LiquidityPoolABI";
    },
    {
        readonly protocol: "lido";
        readonly contract: "StETH";
        readonly kind: "singleton";
        readonly roleKey: "stETH";
        readonly abiExport: "LidoABI";
    },
    {
        readonly protocol: "lido";
        readonly contract: "WstETH";
        readonly kind: "singleton";
        readonly roleKey: "wstETH";
        readonly abiExport: "WstETHABI";
        readonly chains: readonly [
            1
        ];
    },
    {
        readonly protocol: "lido";
        readonly contract: "WstETHBridged";
        readonly kind: "singleton";
        readonly roleKey: "wstETH";
        readonly abiExport: "WstETHBridgedABI";
        readonly chains: readonly [
            42161
        ];
    },
    {
        readonly protocol: "lifi";
        readonly contract: "LiFiDiamond";
        readonly kind: "singleton";
        readonly roleKey: "lifiDiamond";
        readonly abiExport: "LiFiDiamondABI";
        readonly caveats: readonly [
            "startBridgeTokensViaAcrossV4((bytes32,string,string,address,address,address,uint256,uint256,bool,bool),(bytes32,bytes32,bytes32,bytes32,uint256,uint128,bytes32,uint32,uint32,uint32,bytes)) is not available on gnosis: this chain's diamond has no Across V4 facet: facetAddress returns zero for the selector",
            "startBridgeTokensViaAcrossV4((bytes32,string,string,address,address,address,uint256,uint256,bool,bool),(bytes32,bytes32,bytes32,bytes32,uint256,uint128,bytes32,uint32,uint32,uint32,bytes)) is not available on fantom: this chain's diamond has no Across V4 facet: facetAddress returns zero for the selector",
            "startBridgeTokensViaAcrossV4((bytes32,string,string,address,address,address,uint256,uint256,bool,bool),(bytes32,bytes32,bytes32,bytes32,uint256,uint128,bytes32,uint32,uint32,uint32,bytes)) is not available on avalanche: this chain's diamond has no Across V4 facet: facetAddress returns zero for the selector"
        ];
    },
    {
        readonly protocol: "linea-bridge";
        readonly contract: "L1MessageService";
        readonly kind: "singleton";
        readonly roleKey: "l1MessageService";
        readonly abiExport: "LineaL1MessageServiceABI";
    },
    {
        readonly protocol: "linea-bridge";
        readonly contract: "L2MessageService";
        readonly kind: "address-only";
        readonly roleKey: "l2MessageService";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "liquity-v1";
        readonly contract: "BorrowerOperations";
        readonly kind: "singleton";
        readonly roleKey: "borrowerOperations";
        readonly abiExport: "BorrowerOperationsABI";
    },
    {
        readonly protocol: "liquity-v1";
        readonly contract: "Lusd";
        readonly kind: "address-only";
        readonly roleKey: "lusd";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "liquity-v2";
        readonly contract: "Bold";
        readonly kind: "singleton";
        readonly roleKey: "bold";
        readonly abiExport: "BoldTokenABI";
    },
    {
        readonly protocol: "lynex";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "LynexRouterABI";
    },
    {
        readonly protocol: "maker";
        readonly contract: "Pot";
        readonly kind: "singleton";
        readonly roleKey: "pot";
        readonly abiExport: "PotABI";
    },
    {
        readonly protocol: "maker";
        readonly contract: "SDAI";
        readonly kind: "singleton";
        readonly roleKey: "sDAI";
        readonly abiExport: "SavingsDaiABI";
    },
    {
        readonly protocol: "maker";
        readonly contract: "Dai";
        readonly kind: "address-only";
        readonly roleKey: "dai";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "maker";
        readonly contract: "Usds";
        readonly kind: "address-only";
        readonly roleKey: "usds";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "maker";
        readonly contract: "Vat";
        readonly kind: "address-only";
        readonly roleKey: "vat";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "mantle-meth";
        readonly contract: "METH";
        readonly kind: "singleton";
        readonly roleKey: "mETH";
        readonly abiExport: "METHABI";
    },
    {
        readonly protocol: "mantle-meth";
        readonly contract: "Staking";
        readonly kind: "singleton";
        readonly roleKey: "staking";
        readonly abiExport: "METHStakingABI";
    },
    {
        readonly protocol: "maverick";
        readonly contract: "V2Factory";
        readonly kind: "singleton";
        readonly roleKey: "v2Factory";
        readonly abiExport: "MaverickV2FactoryABI";
        readonly caveats: readonly [
            "lookup(address,address,uint256,uint256) is checked against the deployed bytecode only: the MaverickV2Factory has no verified source on Sourcify, Blockscout or Routescan; the selector is proven by the factory bytecode, and the address[] output is not verifiable"
        ];
    },
    {
        readonly protocol: "maverick";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "MaverickV2RouterABI";
    },
    {
        readonly protocol: "maverick";
        readonly contract: "V2Pool";
        readonly kind: "interface";
        readonly abiExport: "MaverickV2PoolABI";
    },
    {
        readonly protocol: "moonwell";
        readonly contract: "MToken";
        readonly kind: "interface";
        readonly abiExport: "MTokenABI";
    },
    {
        readonly protocol: "moonwell";
        readonly contract: "Comptroller";
        readonly kind: "singleton";
        readonly roleKey: "comptroller";
        readonly abiExport: "MoonwellComptrollerABI";
    },
    {
        readonly protocol: "morpho-blue";
        readonly contract: "Morpho";
        readonly kind: "singleton";
        readonly roleKey: "morpho";
        readonly abiExport: "MorphoABI";
    },
    {
        readonly protocol: "morpho-blue";
        readonly contract: "Bundler3";
        readonly kind: "address-only";
        readonly roleKey: "bundler3";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "mux-protocol";
        readonly contract: "LiquidityPool";
        readonly kind: "singleton";
        readonly roleKey: "liquidityPool";
        readonly abiExport: "LiquidityPoolABI";
    },
    {
        readonly protocol: "mux-protocol";
        readonly contract: "OrderBook";
        readonly kind: "singleton";
        readonly roleKey: "orderBook";
        readonly abiExport: "OrderBookABI";
    },
    {
        readonly protocol: "olympus";
        readonly contract: "Staking";
        readonly kind: "singleton";
        readonly roleKey: "staking";
        readonly abiExport: "StakingABI";
    },
    {
        readonly protocol: "olympus";
        readonly contract: "Ohm";
        readonly kind: "address-only";
        readonly roleKey: "ohm";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "olympus";
        readonly contract: "StakingHelper";
        readonly kind: "address-only";
        readonly roleKey: "stakingHelper";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "oneinch";
        readonly contract: "AggregationRouterV6";
        readonly kind: "singleton";
        readonly roleKey: "aggregationRouterV6";
        readonly abiExport: "AggregationRouterV6ABI";
    },
    {
        readonly protocol: "openocean";
        readonly contract: "ExchangeV2";
        readonly kind: "singleton";
        readonly roleKey: "exchangeV2";
        readonly abiExport: "OpenOceanExchangeV2ABI";
    },
    {
        readonly protocol: "optimism-bridge";
        readonly contract: "L1StandardBridge";
        readonly kind: "singleton";
        readonly roleKey: "l1StandardBridge";
        readonly abiExport: "OptimismL1StandardBridgeABI";
    },
    {
        readonly protocol: "optimism-bridge";
        readonly contract: "L2StandardBridge";
        readonly kind: "address-only";
        readonly roleKey: "l2StandardBridge";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "opyn";
        readonly contract: "Controller";
        readonly kind: "singleton";
        readonly roleKey: "controller";
        readonly abiExport: "ControllerABI";
    },
    {
        readonly protocol: "opyn";
        readonly contract: "OSQTH";
        readonly kind: "address-only";
        readonly roleKey: "oSQTH";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "PancakeSwapV2FactoryABI";
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "PancakeSwapV2RouterABI";
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly contract: "Pair";
        readonly kind: "interface";
        readonly abiExport: "PancakeSwapV2PairABI";
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "PancakeSwapV3FactoryABI";
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly contract: "NonfungiblePositionManager";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManager";
        readonly abiExport: "PancakeSwapV3NFPMABI";
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly contract: "SmartRouter";
        readonly kind: "singleton";
        readonly roleKey: "smartRouter";
        readonly abiExport: "PancakeSwapV3SmartRouterABI";
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "PancakeSwapV3PoolABI";
    },
    {
        readonly protocol: "paraswap";
        readonly contract: "AugustusV5";
        readonly kind: "singleton";
        readonly roleKey: "augustusV5";
        readonly abiExport: "AugustusV5ABI";
        readonly caveats: readonly [
            "simpleSwap((address,address,uint256,uint256,uint256,address[],bytes,uint256[],uint256[],address,address,uint256,bytes,uint256,bytes16)) is not available on base: Augustus V5 on Base has no SimpleSwap router registered: getImplementation returns zero for the selector"
        ];
    },
    {
        readonly protocol: "paraswap";
        readonly contract: "AugustusV6";
        readonly kind: "address-only";
        readonly roleKey: "augustusV6";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "pendle";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "PendleRouterABI";
    },
    {
        readonly protocol: "permit2";
        readonly contract: "Permit2";
        readonly kind: "singleton";
        readonly roleKey: "permit2";
        readonly abiExport: "Permit2ABI";
    },
    {
        readonly protocol: "perpetual-protocol";
        readonly contract: "ClearingHouse";
        readonly kind: "singleton";
        readonly roleKey: "clearingHouse";
        readonly abiExport: "ClearingHouseABI";
    },
    {
        readonly protocol: "perpetual-protocol";
        readonly contract: "Vault";
        readonly kind: "singleton";
        readonly roleKey: "vault";
        readonly abiExport: "VaultABI";
    },
    {
        readonly protocol: "polygon-bridge";
        readonly contract: "RootChainManager";
        readonly kind: "singleton";
        readonly roleKey: "rootChainManager";
        readonly abiExport: "PolygonRootChainManagerABI";
    },
    {
        readonly protocol: "polygon-bridge";
        readonly contract: "Erc20Predicate";
        readonly kind: "address-only";
        readonly roleKey: "erc20Predicate";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "polygon-bridge";
        readonly contract: "EtherPredicate";
        readonly kind: "address-only";
        readonly roleKey: "etherPredicate";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "polygon-bridge";
        readonly contract: "ChildChainManager";
        readonly kind: "address-only";
        readonly roleKey: "childChainManager";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "premia";
        readonly contract: "Diamond";
        readonly kind: "interface";
        readonly abiExport: "DiamondABI";
    },
    {
        readonly protocol: "premia";
        readonly contract: "PoolFactory";
        readonly kind: "address-only";
        readonly roleKey: "poolFactory";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "puffer";
        readonly contract: "PufferVault";
        readonly kind: "singleton";
        readonly roleKey: "pufferVault";
        readonly abiExport: "PufferVaultABI";
    },
    {
        readonly protocol: "puffer";
        readonly contract: "PufETH";
        readonly kind: "address-only";
        readonly roleKey: "pufETH";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "pyth";
        readonly contract: "Oracle";
        readonly kind: "singleton";
        readonly roleKey: "oracle";
        readonly abiExport: "PythOracleABI";
        readonly caveats: readonly [
            "updatePriceFeeds(bytes[]) is checked against the deployed bytecode only: the Pyth implementation behind the proxy (0x3f38404a2e3cb949bcdfa19a5c3bdf3fe375feb0) has no verified source on Sourcify, Blockscout or Routescan; the selector is proven by its bytecode",
            "getUpdateFee(bytes[]) is checked against the deployed bytecode only: the Pyth implementation behind the proxy (0x3f38404a2e3cb949bcdfa19a5c3bdf3fe375feb0) has no verified source on Sourcify, Blockscout or Routescan; the selector is proven by its bytecode",
            "getPrice(bytes32) is checked against the deployed bytecode only: the Pyth implementation behind the proxy (0x3f38404a2e3cb949bcdfa19a5c3bdf3fe375feb0) has no verified source on Sourcify, Blockscout or Routescan; the selector is proven by its bytecode; the PythStructs.Price output types come from the Pyth SDK and are not verifiable"
        ];
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "QuickSwapV2RouterABI";
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V3SwapRouter";
        readonly kind: "singleton";
        readonly roleKey: "v3SwapRouter";
        readonly abiExport: "QuickSwapV3SwapRouterABI";
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V2Factory";
        readonly kind: "singleton";
        readonly roleKey: "v2Factory";
        readonly abiExport: "QuickSwapV2FactoryABI";
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V2Pair";
        readonly kind: "interface";
        readonly abiExport: "QuickSwapV2PairABI";
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V3Factory";
        readonly kind: "singleton";
        readonly roleKey: "v3Factory";
        readonly abiExport: "QuickSwapV3FactoryABI";
    },
    {
        readonly protocol: "quickswap";
        readonly contract: "V3Pool";
        readonly kind: "interface";
        readonly abiExport: "QuickSwapV3PoolABI";
    },
    {
        readonly protocol: "radiant";
        readonly contract: "LendingPool";
        readonly kind: "address-only";
        readonly roleKey: "lendingPool";
        readonly caveats: readonly [
            "RadiantLendingPoolABI does not describe this deployment: the only listed deployment (Arbitrum LendingPool proxy 0xF4B1486DD74D07706052A33d31d7c0AAFD0659E1) now delegates to a three-function stub (0x3d4c56cdb97355807157f5c7d4f54957f0e9af44): deposit/withdraw/borrow/repay no longer exist on-chain, and no verified source exists for the stub"
        ];
    },
    {
        readonly protocol: "ramses";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "RamsesRouterABI";
    },
    {
        readonly protocol: "reflexer";
        readonly contract: "CoinJoin";
        readonly kind: "singleton";
        readonly roleKey: "coinJoin";
        readonly abiExport: "CoinJoinABI";
    },
    {
        readonly protocol: "reflexer";
        readonly contract: "ETHJoin";
        readonly kind: "singleton";
        readonly roleKey: "ethJoin";
        readonly abiExport: "ETHJoinABI";
    },
    {
        readonly protocol: "reflexer";
        readonly contract: "SAFEEngine";
        readonly kind: "singleton";
        readonly roleKey: "safeEngine";
        readonly abiExport: "SAFEEngineABI";
    },
    {
        readonly protocol: "reflexer";
        readonly contract: "Rai";
        readonly kind: "address-only";
        readonly roleKey: "rai";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "renzo";
        readonly contract: "EzETH";
        readonly kind: "singleton";
        readonly roleKey: "ezETH";
        readonly abiExport: "EzETHABI";
    },
    {
        readonly protocol: "renzo";
        readonly contract: "RestakeManager";
        readonly kind: "singleton";
        readonly roleKey: "restakeManager";
        readonly abiExport: "RestakeManagerABI";
    },
    {
        readonly protocol: "rocket-pool";
        readonly contract: "RETH";
        readonly kind: "singleton";
        readonly roleKey: "rETH";
        readonly abiExport: "RETHABI";
    },
    {
        readonly protocol: "rocket-pool";
        readonly contract: "RocketDepositPool";
        readonly kind: "singleton";
        readonly roleKey: "rocketDepositPool";
        readonly abiExport: "RocketDepositPoolABI";
    },
    {
        readonly protocol: "sablier";
        readonly contract: "LockupLinear";
        readonly kind: "singleton";
        readonly roleKey: "lockupLinear";
        readonly abiExport: "LockupLinearABI";
    },
    {
        readonly protocol: "safe";
        readonly contract: "SafeV141";
        readonly kind: "singleton";
        readonly roleKey: "safeV141";
        readonly abiExport: "SafeABI";
    },
    {
        readonly protocol: "safe";
        readonly contract: "SafeL2V130";
        readonly kind: "singleton";
        readonly roleKey: "safeL2V130";
        readonly abiExport: "SafeABI";
    },
    {
        readonly protocol: "scroll-bridge";
        readonly contract: "L1GatewayRouter";
        readonly kind: "singleton";
        readonly roleKey: "l1GatewayRouter";
        readonly abiExport: "ScrollL1GatewayRouterABI";
    },
    {
        readonly protocol: "scroll-bridge";
        readonly contract: "L1ScrollMessenger";
        readonly kind: "singleton";
        readonly roleKey: "l1ScrollMessenger";
        readonly abiExport: "ScrollL1MessengerABI";
    },
    {
        readonly protocol: "scroll-bridge";
        readonly contract: "L2ScrollMessenger";
        readonly kind: "address-only";
        readonly roleKey: "l2ScrollMessenger";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "scroll-bridge";
        readonly contract: "L2GatewayRouter";
        readonly kind: "address-only";
        readonly roleKey: "l2GatewayRouter";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "seaport";
        readonly contract: "SeaportV16";
        readonly kind: "singleton";
        readonly roleKey: "seaportV16";
        readonly abiExport: "SeaportABI";
    },
    {
        readonly protocol: "silo";
        readonly contract: "Silo";
        readonly kind: "interface";
        readonly abiExport: "SiloABI";
    },
    {
        readonly protocol: "silo";
        readonly contract: "SiloRepository";
        readonly kind: "singleton";
        readonly roleKey: "siloRepository";
        readonly abiExport: "SiloRepositoryABI";
    },
    {
        readonly protocol: "socket";
        readonly contract: "SocketGateway";
        readonly kind: "singleton";
        readonly roleKey: "socketGateway";
        readonly abiExport: "SocketGatewayABI";
    },
    {
        readonly protocol: "sommelier";
        readonly contract: "Cellar";
        readonly kind: "interface";
        readonly abiExport: "CellarABI";
    },
    {
        readonly protocol: "sommelier";
        readonly contract: "CellarRouter";
        readonly kind: "address-only";
        readonly roleKey: "cellarRouter";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "spark";
        readonly contract: "Pool";
        readonly kind: "singleton";
        readonly roleKey: "pool";
        readonly abiExport: "SparkPoolABI";
    },
    {
        readonly protocol: "spark";
        readonly contract: "PoolAddressesProvider";
        readonly kind: "address-only";
        readonly roleKey: "poolAddressesProvider";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "spookyswap";
        readonly contract: "V2Router";
        readonly kind: "singleton";
        readonly roleKey: "v2Router";
        readonly abiExport: "SpookySwapRouterABI";
        readonly caveats: readonly [
            "swapExactTokensForTokens(uint256,uint256,address[],address,uint256) is checked against the deployed bytecode only: the Fantom router has no verified source on Sourcify, and neither Blockscout nor Routescan serves Fantom keylessly; the selector is proven by the router bytecode (a UniswapV2Router02 fork: factory() and WETH() answer)",
            "addLiquidity(address,address,uint256,uint256,uint256,uint256,address,uint256) is checked against the deployed bytecode only: the Fantom router has no verified source on Sourcify, and neither Blockscout nor Routescan serves Fantom keylessly; the selector is proven by the router bytecode (a UniswapV2Router02 fork: factory() and WETH() answer)",
            "removeLiquidity(address,address,uint256,uint256,uint256,address,uint256) is checked against the deployed bytecode only: the Fantom router has no verified source on Sourcify, and neither Blockscout nor Routescan serves Fantom keylessly; the selector is proven by the router bytecode (a UniswapV2Router02 fork: factory() and WETH() answer)"
        ];
    },
    {
        readonly protocol: "squid";
        readonly contract: "SquidRouter";
        readonly kind: "singleton";
        readonly roleKey: "squidRouter";
        readonly abiExport: "SquidRouterABI";
    },
    {
        readonly protocol: "stader";
        readonly contract: "ETHx";
        readonly kind: "singleton";
        readonly roleKey: "ETHx";
        readonly abiExport: "ETHxABI";
    },
    {
        readonly protocol: "stader";
        readonly contract: "StakePoolManager";
        readonly kind: "singleton";
        readonly roleKey: "stakePoolManager";
        readonly abiExport: "StakePoolManagerABI";
    },
    {
        readonly protocol: "stargate";
        readonly contract: "PoolNative";
        readonly kind: "singleton";
        readonly roleKey: "poolNative";
        readonly abiExport: "StargatePoolABI";
    },
    {
        readonly protocol: "stargate";
        readonly contract: "PoolUSDC";
        readonly kind: "singleton";
        readonly roleKey: "poolUSDC";
        readonly abiExport: "StargatePoolABI";
    },
    {
        readonly protocol: "stargate";
        readonly contract: "PoolUSDT";
        readonly kind: "singleton";
        readonly roleKey: "poolUSDT";
        readonly abiExport: "StargatePoolABI";
    },
    {
        readonly protocol: "superfluid";
        readonly contract: "CFAForwarder";
        readonly kind: "singleton";
        readonly roleKey: "cfaForwarder";
        readonly abiExport: "CFAForwarderABI";
    },
    {
        readonly protocol: "superfluid";
        readonly contract: "Host";
        readonly kind: "address-only";
        readonly roleKey: "host";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "SushiSwapV2FactoryABI";
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "SushiSwapV2RouterABI";
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly contract: "Pair";
        readonly kind: "interface";
        readonly abiExport: "SushiSwapV2PairABI";
    },
    {
        readonly protocol: "swell";
        readonly contract: "RswETH";
        readonly kind: "singleton";
        readonly roleKey: "rswETH";
        readonly abiExport: "RswETHABI";
    },
    {
        readonly protocol: "swell";
        readonly contract: "SwETH";
        readonly kind: "singleton";
        readonly roleKey: "swETH";
        readonly abiExport: "SwETHABI";
    },
    {
        readonly protocol: "synapse";
        readonly contract: "SynapseBridge";
        readonly kind: "singleton";
        readonly roleKey: "synapseBridge";
        readonly abiExport: "SynapseBridgeABI";
    },
    {
        readonly protocol: "synapse";
        readonly contract: "CctpRouter";
        readonly kind: "address-only";
        readonly roleKey: "cctpRouter";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "syncswap";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "SyncSwapRouterABI";
    },
    {
        readonly protocol: "synthetix-v3";
        readonly contract: "CoreProxy";
        readonly kind: "singleton";
        readonly roleKey: "coreProxy";
        readonly abiExport: "CoreProxyABI";
    },
    {
        readonly protocol: "synthetix-v3";
        readonly contract: "PerpsMarketProxy";
        readonly kind: "singleton";
        readonly roleKey: "perpsMarketProxy";
        readonly abiExport: "PerpsMarketProxyABI";
    },
    {
        readonly protocol: "synthra-v3";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "SynthraV3FactoryABI";
        readonly caveats: readonly [
            "getPool(address,address,uint24) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "createPool(address,address,uint24) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode"
        ];
    },
    {
        readonly protocol: "synthra-v3";
        readonly contract: "SwapRouter02";
        readonly kind: "singleton";
        readonly roleKey: "swapRouter02";
        readonly abiExport: "SynthraV3SwapRouter02ABI";
        readonly caveats: readonly [
            "exactInputSingle((address,address,uint24,address,uint256,uint256,uint160)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "exactInput((bytes,address,uint256,uint256)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "exactOutputSingle((address,address,uint24,address,uint256,uint256,uint160)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "exactOutput((bytes,address,uint256,uint256)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode"
        ];
    },
    {
        readonly protocol: "synthra-v3";
        readonly contract: "QuoterV2";
        readonly kind: "singleton";
        readonly roleKey: "quoterV2";
        readonly abiExport: "SynthraV3QuoterV2ABI";
        readonly caveats: readonly [
            "quoteExactInputSingle((address,address,uint256,uint24,uint160)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode"
        ];
    },
    {
        readonly protocol: "synthra-v3";
        readonly contract: "NonfungiblePositionManager";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManager";
        readonly abiExport: "SynthraV3NonfungiblePositionManagerABI";
        readonly caveats: readonly [
            "mint((address,address,uint24,int24,int24,uint256,uint256,uint256,uint256,address,uint256)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "increaseLiquidity((uint256,uint256,uint256,uint256,uint256,uint256)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "decreaseLiquidity((uint256,uint128,uint256,uint256,uint256)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode",
            "collect((uint256,address,uint128,uint128)) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge), nor on Robinhood Chain's; Synthra V3 is a Uniswap V3 fork (renamed pool callbacks only), so the fragment is Uniswap V3's, and the selector is proven by the bytecode"
        ];
    },
    {
        readonly protocol: "synthra-v3";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "SynthraV3PoolABI";
    },
    {
        readonly protocol: "thales";
        readonly contract: "SpeedMarketsAMM";
        readonly kind: "singleton";
        readonly roleKey: "speedMarketsAMM";
        readonly abiExport: "SpeedMarketsAMMABI";
    },
    {
        readonly protocol: "thales";
        readonly contract: "ThalesAMM";
        readonly kind: "singleton";
        readonly roleKey: "thalesAMM";
        readonly abiExport: "ThalesAMMABI";
    },
    {
        readonly protocol: "thales";
        readonly contract: "PositionalMarket";
        readonly kind: "interface";
        readonly abiExport: "PositionalMarketABI";
    },
    {
        readonly protocol: "thena";
        readonly contract: "RouterV2";
        readonly kind: "singleton";
        readonly roleKey: "routerV2";
        readonly abiExport: "ThenaRouterABI";
    },
    {
        readonly protocol: "thruster";
        readonly contract: "V3SwapRouter";
        readonly kind: "singleton";
        readonly roleKey: "v3SwapRouter";
        readonly abiExport: "ThrusterV3SwapRouterABI";
    },
    {
        readonly protocol: "tokemak";
        readonly contract: "Autopool";
        readonly kind: "interface";
        readonly abiExport: "AutopoolABI";
    },
    {
        readonly protocol: "tokemak";
        readonly contract: "Toke";
        readonly kind: "address-only";
        readonly roleKey: "toke";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "tokemak";
        readonly contract: "SystemRegistry";
        readonly kind: "address-only";
        readonly roleKey: "systemRegistry";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "tokemak";
        readonly contract: "AutopoolRegistry";
        readonly kind: "address-only";
        readonly roleKey: "autopoolRegistry";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "trader-joe";
        readonly contract: "LBFactory";
        readonly kind: "singleton";
        readonly roleKey: "lbFactory";
        readonly abiExport: "LBFactoryABI";
    },
    {
        readonly protocol: "trader-joe";
        readonly contract: "LBRouter";
        readonly kind: "singleton";
        readonly roleKey: "lbRouter";
        readonly abiExport: "LBRouterABI";
    },
    {
        readonly protocol: "trader-joe";
        readonly contract: "LBPair";
        readonly kind: "interface";
        readonly abiExport: "LBPairABI";
    },
    {
        readonly protocol: "uniswap-v2";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "UniswapV2FactoryABI";
    },
    {
        readonly protocol: "uniswap-v2";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "UniswapV2RouterABI";
    },
    {
        readonly protocol: "uniswap-v2";
        readonly contract: "Pair";
        readonly kind: "interface";
        readonly abiExport: "UniswapV2PairABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "UniswapV3FactoryABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "NonfungiblePositionManager";
        readonly kind: "singleton";
        readonly roleKey: "nonfungiblePositionManager";
        readonly abiExport: "UniswapV3NonfungiblePositionManagerABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "QuoterV2";
        readonly kind: "singleton";
        readonly roleKey: "quoterV2";
        readonly abiExport: "UniswapV3QuoterV2ABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "SwapRouter";
        readonly kind: "singleton";
        readonly roleKey: "swapRouter";
        readonly abiExport: "UniswapV3SwapRouterABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "SwapRouter02";
        readonly kind: "singleton";
        readonly roleKey: "swapRouter02";
        readonly abiExport: "UniswapV3SwapRouter02ABI";
    },
    {
        readonly protocol: "uniswap-v3";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "UniswapV3PoolABI";
    },
    {
        readonly protocol: "uniswap-v4";
        readonly contract: "PoolManager";
        readonly kind: "singleton";
        readonly roleKey: "poolManager";
        readonly abiExport: "UniswapV4PoolManagerABI";
    },
    {
        readonly protocol: "uniswap-v4";
        readonly contract: "PositionManager";
        readonly kind: "singleton";
        readonly roleKey: "positionManager";
        readonly abiExport: "UniswapV4PositionManagerABI";
    },
    {
        readonly protocol: "uniswap-v4";
        readonly contract: "UniversalRouter";
        readonly kind: "singleton";
        readonly roleKey: "universalRouter";
        readonly abiExport: "UniswapV4UniversalRouterABI";
    },
    {
        readonly protocol: "uniswap-v4";
        readonly contract: "StateView";
        readonly kind: "singleton";
        readonly roleKey: "stateView";
        readonly abiExport: "UniswapV4StateViewABI";
    },
    {
        readonly protocol: "unitflow-v3";
        readonly contract: "Factory";
        readonly kind: "singleton";
        readonly roleKey: "factory";
        readonly abiExport: "UnitFlowV3FactoryABI";
        readonly caveats: readonly [
            "getPool(address,address,uint24) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge); the fragment is IUnitFlowV3Factory's (UnitFlow-Finance/UnitFlowV3-contract) and the selector is proven by the factory bytecode",
            "feeAmountTickSpacing(uint24) is checked against the deployed bytecode only: the Arc deployment has no verified source on Sourcify, and Arc's explorer API is not served keylessly (Cloudflare challenge); the fragment is IUnitFlowV3Factory's (UnitFlow-Finance/UnitFlowV3-contract) and the selector is proven by the factory bytecode"
        ];
    },
    {
        readonly protocol: "unitflow-v3";
        readonly contract: "Router";
        readonly kind: "singleton";
        readonly roleKey: "router";
        readonly abiExport: "UnitFlowV3RouterABI";
    },
    {
        readonly protocol: "unitflow-v3";
        readonly contract: "Quoter";
        readonly kind: "singleton";
        readonly roleKey: "quoter";
        readonly abiExport: "UnitFlowV3QuoterABI";
    },
    {
        readonly protocol: "unitflow-v3";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "UnitFlowV3PoolABI";
    },
    {
        readonly protocol: "velodrome";
        readonly contract: "PoolFactory";
        readonly kind: "singleton";
        readonly roleKey: "poolFactory";
        readonly abiExport: "VelodromePoolFactoryABI";
    },
    {
        readonly protocol: "velodrome";
        readonly contract: "RouterV2";
        readonly kind: "singleton";
        readonly roleKey: "routerV2";
        readonly abiExport: "VelodromeRouterABI";
    },
    {
        readonly protocol: "velodrome";
        readonly contract: "Pool";
        readonly kind: "interface";
        readonly abiExport: "VelodromePoolABI";
    },
    {
        readonly protocol: "venus";
        readonly contract: "VBNB";
        readonly kind: "singleton";
        readonly roleKey: "vBNB";
        readonly abiExport: "VBNBABI";
    },
    {
        readonly protocol: "venus";
        readonly contract: "VToken";
        readonly kind: "interface";
        readonly abiExport: "VTokenABI";
    },
    {
        readonly protocol: "venus";
        readonly contract: "Comptroller";
        readonly kind: "singleton";
        readonly roleKey: "comptroller";
        readonly abiExport: "VenusComptrollerABI";
        readonly caveats: readonly [
            "enterMarkets(address[]) is checked against the deployed bytecode only: the Diamond routes it (facetAddress) to MarketFacet 0x21f8e1471b153f49be1d645a008e4a57434eed23, which has no verified source on Sourcify or Routescan; the selector is proven by the routing only",
            "exitMarket(address) is checked against the deployed bytecode only: the Diamond routes it (facetAddress) to MarketFacet 0x21f8e1471b153f49be1d645a008e4a57434eed23, which has no verified source on Sourcify or Routescan; the selector is proven by the routing only"
        ];
    },
    {
        readonly protocol: "vertex";
        readonly contract: "Clearinghouse";
        readonly kind: "singleton";
        readonly roleKey: "clearinghouse";
        readonly abiExport: "ClearinghouseABI";
    },
    {
        readonly protocol: "vertex";
        readonly contract: "Endpoint";
        readonly kind: "singleton";
        readonly roleKey: "endpoint";
        readonly abiExport: "EndpointABI";
    },
    {
        readonly protocol: "wormhole";
        readonly contract: "CoreBridge";
        readonly kind: "singleton";
        readonly roleKey: "coreBridge";
        readonly abiExport: "WormholeCoreBridgeABI";
    },
    {
        readonly protocol: "wormhole";
        readonly contract: "TokenBridge";
        readonly kind: "singleton";
        readonly roleKey: "tokenBridge";
        readonly abiExport: "WormholeTokenBridgeABI";
    },
    {
        readonly protocol: "yearn-v3";
        readonly contract: "Vault";
        readonly kind: "interface";
        readonly abiExport: "YearnV3VaultABI";
    },
    {
        readonly protocol: "yearn-v3";
        readonly contract: "VaultFactory";
        readonly kind: "address-only";
        readonly roleKey: "vaultFactory";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    },
    {
        readonly protocol: "zerolend";
        readonly contract: "Pool";
        readonly kind: "singleton";
        readonly roleKey: "pool";
        readonly abiExport: "ZeroLendPoolABI";
    },
    {
        readonly protocol: "zerox";
        readonly contract: "ExchangeProxy";
        readonly kind: "singleton";
        readonly roleKey: "exchangeProxy";
        readonly abiExport: "ExchangeProxyABI";
    },
    {
        readonly protocol: "zksync-bridge";
        readonly contract: "DiamondProxy";
        readonly kind: "singleton";
        readonly roleKey: "diamondProxy";
        readonly abiExport: "ZkSyncDiamondProxyABI";
    },
    {
        readonly protocol: "zksync-bridge";
        readonly contract: "L2Bridge";
        readonly kind: "address-only";
        readonly roleKey: "l2Bridge";
        readonly caveats: readonly [
            "the registry has no ABI for this contract: its address only"
        ];
    }
]
```

### `contracts.RETURNED_CONTRACTS`

*Variable* · `@eco-incorp/sauce`

58 function outputs whose contract the registry knows.

```typescript theme={null}
RETURNED_CONTRACTS: readonly [
    {
        readonly protocol: "across";
        readonly abiExport: "AcrossHubPoolABI";
        readonly signature: "pooledTokens(address)";
        readonly path: readonly [
            "lpToken"
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "aerodrome";
        readonly abiExport: "AerodromePoolFactoryABI";
        readonly signature: "getPool(address,address,bool)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "aerodrome";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "aerodrome";
        readonly abiExport: "AerodromePoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "aerodrome";
        readonly abiExport: "AerodromePoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly abiExport: "SlipstreamCLFactoryABI";
        readonly signature: "getPool(address,address,int24)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "aerodrome-slipstream";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly abiExport: "SlipstreamPositionManagerABI";
        readonly signature: "factory()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "aerodrome-slipstream";
            readonly contract: "CLFactory";
        };
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly abiExport: "AerodromeSlipstreamPoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "aerodrome-slipstream";
        readonly abiExport: "AerodromeSlipstreamPoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "beefy";
        readonly abiExport: "BeefyVaultABI";
        readonly signature: "want()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV2FactoryABI";
        readonly signature: "getPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "camelot";
            readonly contract: "V2Pair";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV2PairABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV2PairABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV3FactoryABI";
        readonly signature: "poolByPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "camelot";
            readonly contract: "V3Pool";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "camelot";
        readonly abiExport: "CamelotV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "convex";
        readonly abiExport: "BoosterABI";
        readonly signature: "poolInfo(uint256)";
        readonly path: readonly [
            "lptoken"
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "convex";
        readonly abiExport: "BoosterABI";
        readonly signature: "poolInfo(uint256)";
        readonly path: readonly [
            "token"
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "convex";
        readonly abiExport: "BoosterABI";
        readonly signature: "poolInfo(uint256)";
        readonly path: readonly [
            "crvRewards"
        ];
        readonly returns: {
            readonly protocol: "convex";
            readonly contract: "BaseRewardPool";
        };
    },
    {
        readonly protocol: "erc4626";
        readonly abiExport: "VaultABI";
        readonly signature: "asset()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "fluid";
        readonly abiExport: "FluidLendingABI";
        readonly signature: "asset()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "layerbank";
        readonly abiExport: "LTokenABI";
        readonly signature: "underlying()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "maverick";
        readonly abiExport: "MaverickV2PoolABI";
        readonly signature: "tokenA()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "maverick";
        readonly abiExport: "MaverickV2PoolABI";
        readonly signature: "tokenB()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly abiExport: "PancakeSwapV2FactoryABI";
        readonly signature: "getPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "pancakeswap-v2";
            readonly contract: "Pair";
        };
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly abiExport: "PancakeSwapV2PairABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "pancakeswap-v2";
        readonly abiExport: "PancakeSwapV2PairABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly abiExport: "PancakeSwapV3FactoryABI";
        readonly signature: "getPool(address,address,uint24)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "pancakeswap-v3";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly abiExport: "PancakeSwapV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "pancakeswap-v3";
        readonly abiExport: "PancakeSwapV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV2FactoryABI";
        readonly signature: "getPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "quickswap";
            readonly contract: "V2Pair";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV2PairABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV2PairABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV3FactoryABI";
        readonly signature: "poolByPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "quickswap";
            readonly contract: "V3Pool";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "quickswap";
        readonly abiExport: "QuickSwapV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly abiExport: "SushiSwapV2FactoryABI";
        readonly signature: "getPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "sushiswap-v2";
            readonly contract: "Pair";
        };
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly abiExport: "SushiSwapV2PairABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "sushiswap-v2";
        readonly abiExport: "SushiSwapV2PairABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "synthra-v3";
        readonly abiExport: "SynthraV3FactoryABI";
        readonly signature: "getPool(address,address,uint24)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "synthra-v3";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "synthra-v3";
        readonly abiExport: "SynthraV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "synthra-v3";
        readonly abiExport: "SynthraV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "trader-joe";
        readonly abiExport: "LBFactoryABI";
        readonly signature: "getLBPairInformation(address,address,uint256)";
        readonly path: readonly [
            "LBPair"
        ];
        readonly returns: {
            readonly protocol: "trader-joe";
            readonly contract: "LBPair";
        };
    },
    {
        readonly protocol: "trader-joe";
        readonly abiExport: "LBPairABI";
        readonly signature: "getTokenX()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "trader-joe";
        readonly abiExport: "LBPairABI";
        readonly signature: "getTokenY()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "uniswap-v2";
        readonly abiExport: "UniswapV2FactoryABI";
        readonly signature: "getPair(address,address)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "uniswap-v2";
            readonly contract: "Pair";
        };
    },
    {
        readonly protocol: "uniswap-v2";
        readonly abiExport: "UniswapV2PairABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "uniswap-v2";
        readonly abiExport: "UniswapV2PairABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "uniswap-v3";
        readonly abiExport: "UniswapV3FactoryABI";
        readonly signature: "getPool(address,address,uint24)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "uniswap-v3";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "uniswap-v3";
        readonly abiExport: "UniswapV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "uniswap-v3";
        readonly abiExport: "UniswapV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "uniswap-v4";
        readonly abiExport: "UniswapV4StateViewABI";
        readonly signature: "poolManager()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "uniswap-v4";
            readonly contract: "PoolManager";
        };
    },
    {
        readonly protocol: "unitflow-v3";
        readonly abiExport: "UnitFlowV3FactoryABI";
        readonly signature: "getPool(address,address,uint24)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "unitflow-v3";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "unitflow-v3";
        readonly abiExport: "UnitFlowV3RouterABI";
        readonly signature: "factory()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "unitflow-v3";
            readonly contract: "Factory";
        };
    },
    {
        readonly protocol: "unitflow-v3";
        readonly abiExport: "UnitFlowV3PoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "unitflow-v3";
        readonly abiExport: "UnitFlowV3PoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "velodrome";
        readonly abiExport: "VelodromePoolFactoryABI";
        readonly signature: "getPool(address,address,bool)";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "velodrome";
            readonly contract: "Pool";
        };
    },
    {
        readonly protocol: "velodrome";
        readonly abiExport: "VelodromePoolABI";
        readonly signature: "token0()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    },
    {
        readonly protocol: "velodrome";
        readonly abiExport: "VelodromePoolABI";
        readonly signature: "token1()";
        readonly path: readonly [
        ];
        readonly returns: {
            readonly protocol: "erc20";
            readonly contract: "ERC20";
        };
    }
]
```

### `contracts.ChainContracts`

*Interface* · `@eco-incorp/sauce`

The contract tree every chain accessor carries: one namespace per registry protocol and one
per family alias. Chain-independent: whether a contract is deployed on a chain is its
`.available`.

```typescript theme={null}
export interface ChainContracts {
    readonly AaveV2: AaveV2Contracts;
    readonly AaveV3: AaveV3Contracts;
    readonly AaveV4: AaveV4Contracts;
    readonly Abracadabra: AbracadabraContracts;
    readonly Across: AcrossContracts;
    readonly Aerodrome: AerodromeContracts;
    readonly AerodromeSlipstream: AerodromeSlipstreamContracts;
    readonly Aevo: AevoContracts;
    readonly Alchemix: AlchemixContracts;
    readonly Ambient: AmbientContracts;
    readonly ArbitrumBridge: ArbitrumBridgeContracts;
    readonly Arrakis: ArrakisContracts;
    readonly Axelar: AxelarContracts;
    readonly BalancerV2: BalancerV2Contracts;
    readonly BaseBridge: BaseBridgeContracts;
    readonly Baseswap: BaseswapContracts;
    readonly Beefy: BeefyContracts;
    readonly Benqi: BenqiContracts;
    readonly Camelot: CamelotContracts;
    readonly Cbeth: CbethContracts;
    readonly Cctp: CctpContracts;
    readonly Celer: CelerContracts;
    readonly Chainlink: ChainlinkContracts;
    readonly ChainlinkCcip: ChainlinkCcipContracts;
    readonly CircleGateway: CircleGatewayContracts;
    readonly CompoundV2: CompoundV2Contracts;
    readonly CompoundV3: CompoundV3Contracts;
    readonly Connext: ConnextContracts;
    readonly Convex: ConvexContracts;
    readonly Cowswap: CowswapContracts;
    readonly Crvusd: CrvusdContracts;
    readonly Curve: CurveContracts;
    readonly Debridge: DebridgeContracts;
    readonly Dodo: DodoContracts;
    readonly Eigenlayer: EigenlayerContracts;
    readonly Ens: EnsContracts;
    readonly Erc20: Erc20Contracts;
    readonly Erc3156: Erc3156Contracts;
    readonly Erc4626: Erc4626Contracts;
    readonly Ethena: EthenaContracts;
    readonly Etherfi: EtherfiContracts;
    readonly EulerV2: EulerV2Contracts;
    readonly Fenix: FenixContracts;
    readonly Fluid: FluidContracts;
    readonly Frax: FraxContracts;
    readonly FraxEther: FraxEtherContracts;
    readonly GainsNetwork: GainsNetworkContracts;
    readonly Gamma: GammaContracts;
    readonly Gelato: GelatoContracts;
    readonly Gho: GhoContracts;
    readonly GmxV1: GmxV1Contracts;
    readonly GmxV2: GmxV2Contracts;
    readonly Harvest: HarvestContracts;
    readonly Hegic: HegicContracts;
    readonly Hop: HopContracts;
    readonly Hyperlane: HyperlaneContracts;
    readonly Instadapp: InstadappContracts;
    readonly Kelp: KelpContracts;
    readonly Kim: KimContracts;
    readonly Kyberswap: KyberswapContracts;
    readonly KyberswapAggregator: KyberswapAggregatorContracts;
    readonly Layerbank: LayerbankContracts;
    readonly Layerzero: LayerzeroContracts;
    readonly LevelFinance: LevelFinanceContracts;
    readonly Lido: LidoContracts;
    readonly Lifi: LifiContracts;
    readonly LineaBridge: LineaBridgeContracts;
    readonly LiquityV1: LiquityV1Contracts;
    readonly LiquityV2: LiquityV2Contracts;
    readonly Lynex: LynexContracts;
    readonly Maker: MakerContracts;
    readonly MantleMeth: MantleMethContracts;
    readonly Maverick: MaverickContracts;
    readonly Moonwell: MoonwellContracts;
    readonly MorphoBlue: MorphoBlueContracts;
    readonly MuxProtocol: MuxProtocolContracts;
    readonly Olympus: OlympusContracts;
    readonly Oneinch: OneinchContracts;
    readonly Openocean: OpenoceanContracts;
    readonly OptimismBridge: OptimismBridgeContracts;
    readonly Opyn: OpynContracts;
    readonly PancakeswapV2: PancakeswapV2Contracts;
    readonly PancakeswapV3: PancakeswapV3Contracts;
    readonly Paraswap: ParaswapContracts;
    readonly Pendle: PendleContracts;
    readonly Permit2: Permit2Contracts;
    readonly PerpetualProtocol: PerpetualProtocolContracts;
    readonly PolygonBridge: PolygonBridgeContracts;
    readonly Premia: PremiaContracts;
    readonly Puffer: PufferContracts;
    readonly Pyth: PythContracts;
    readonly Quickswap: QuickswapContracts;
    readonly Radiant: RadiantContracts;
    readonly Ramses: RamsesContracts;
    readonly Reflexer: ReflexerContracts;
    readonly Renzo: RenzoContracts;
    readonly RocketPool: RocketPoolContracts;
    readonly Sablier: SablierContracts;
    readonly Safe: SafeContracts;
    readonly ScrollBridge: ScrollBridgeContracts;
    readonly Seaport: SeaportContracts;
    readonly Silo: SiloContracts;
    readonly Socket: SocketContracts;
    readonly Sommelier: SommelierContracts;
    readonly Spark: SparkContracts;
    readonly Spookyswap: SpookyswapContracts;
    readonly Squid: SquidContracts;
    readonly Stader: StaderContracts;
    readonly Stargate: StargateContracts;
    readonly Superfluid: SuperfluidContracts;
    readonly SushiswapV2: SushiswapV2Contracts;
    readonly Swell: SwellContracts;
    readonly Synapse: SynapseContracts;
    readonly Syncswap: SyncswapContracts;
    readonly SynthetixV3: SynthetixV3Contracts;
    readonly SynthraV3: SynthraV3Contracts;
    readonly Thales: ThalesContracts;
    readonly Thena: ThenaContracts;
    readonly Thruster: ThrusterContracts;
    readonly Tokemak: TokemakContracts;
    readonly TraderJoe: TraderJoeContracts;
    readonly UniswapV2: UniswapV2Contracts;
    readonly UniswapV3: UniswapV3Contracts;
    readonly UniswapV4: UniswapV4Contracts;
    readonly UnitflowV3: UnitflowV3Contracts;
    readonly Velodrome: VelodromeContracts;
    readonly Venus: VenusContracts;
    readonly Vertex: VertexContracts;
    readonly Wormhole: WormholeContracts;
    readonly YearnV3: YearnV3Contracts;
    readonly Zerolend: ZerolendContracts;
    readonly Zerox: ZeroxContracts;
    readonly ZksyncBridge: ZksyncBridgeContracts;
    readonly Aave: AaveFamilyContracts;
    readonly Balancer: BalancerFamilyContracts;
    readonly Compound: CompoundFamilyContracts;
    readonly Euler: EulerFamilyContracts;
    readonly Gmx: GmxFamilyContracts;
    readonly Liquity: LiquityFamilyContracts;
    readonly Pancakeswap: PancakeswapFamilyContracts;
    readonly Sushiswap: SushiswapFamilyContracts;
    readonly Synthetix: SynthetixFamilyContracts;
    readonly Synthra: SynthraFamilyContracts;
    readonly Uniswap: UniswapFamilyContracts;
    readonly Unitflow: UnitflowFamilyContracts;
    readonly Yearn: YearnFamilyContracts;
}
```


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