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

# Contract ABIs

> Download exact, address-matched contract interfaces for publicly listed vibe.market packs.

> [!WARNING]
>
> vibe.market is an **experimental protocol**. An ABI describes a contract interface; it is not an audit, permission to spend, or a guarantee of liquidity or returns. Review the [Terms](https://vibechain.com/terms) and obtain explicit wallet consent before transactions.

For agent-assisted integrations, start with the [canonical skill.md](https://vibechain.com/skill.md), our single agent instruction file. This page is the human contract reference, not another agent skill.

## Download the public pack catalog

> **[Pack ABI catalog](https://vibechain.com/abis/vibemarket/index.json)**
>
> Download the machine-readable index of publicly listed packs, their contract addresses, and the exact ABI files for each contract role.

The catalog covers the packs publicly listed on `/market`, including Classic packs surfaced there. It does not publish hidden, NSFW, unlisted or retired zero-pack deployment families. This is an onchain-interface reference, not a reintroduction of retired HTTP APIs or creator workflows.

The index and its ABI downloads are public static files: no `API-KEY` is required. Website and backend discovery or indexed API requests still require a registered key; see [authentication](/docs/vibemarket/authentication).

## Read the index

| Field | Meaning |
| - | - |
| `schemaVersion` | Catalog format version; currently `1`. Reject unsupported formats. |
| `scope` | `public-market-packs`; this is a public-listing snapshot, not an inventory of every deployed contract. |
| `generatedAt` | Snapshot generation time. It does not establish live contract readiness. |
| `packs` | Pack entries qualified by `slug`, `chainId`, `runtimeId` and `dropId`. Preserve these identities together. |
| `packs[].contracts` | A map from contract role to that pack's `address`, `abi` download URL, `sha256` and `contractName`. Use the roles present in the entry rather than assuming every pack has the same graph. |
| `abis` | Deduplicated file records with `url`, `sha256` and `contractNames`. Multiple packs and contract names can share one exact file. |

Each `abi` URL points to `https://vibechain.com/abis/vibemarket/<sha256>.json`. The response is a **plain JSON ABI array**, not an object containing an `abi` property. Verify the SHA-256 digest of the downloaded file bytes against the catalog before using a cached or downloaded interface.

Identical ABI arrays are consolidated into one content-addressed file. Similar function names do not make two interfaces interchangeable: tuple layouts, argument types, return values, events and custom errors can differ. Distinct interfaces remain separate files.

## Resolve a pack before using its ABI

1. Fetch the index and select the exact pack slug. Keep its chain, runtime and drop identities together; do not select by display name or ticker.
2. Resolve the current pack URL and runtime using [runtime discovery](/docs/vibemarket/api), or the website's pack catalog/page for imported Base packs. For an existing pack, use its resolved graph, not the runtime marked as the destination for new launches.
3. Compare the chain and exact contract addresses from that graph with the selected catalog entry. A numeric drop ID alone is not a deployment identity. If any identity differs, refresh discovery and the index, then stop rather than guessing.
4. Download the ABI for the required contract role, validate its digest, and use it only with that role's matching address and chain. Cache immutable ABI files by their content-addressed URL, not by pack name.
5. Before a wallet transaction, re-check live contract conditions, user-selected limits and wallet consent. An ABI file, indexed quote or catalog entry does not authorize or execute a transaction.

The catalog is a **release snapshot**, not real-time discovery. New listings, migrations or visibility changes may precede the next generated snapshot. A missing entry is not evidence that a contract does not exist; do not substitute the newest or a similar pack's ABI. Historical onchain assets do not become new-runtime assets when a listing changes.

For shared-token packs such as **R7 Existing**, keep the child market and factory separate from the original parent contracts. Use the explicit `parentFactory`, `parentAuthority` and `parentToken` bindings when present. Never substitute a child factory for the original token's factory, even when both packs share one token or ABI file.

For imported Base packs, `runtimeId` is `classic-base`; the `cards`, `token` and `factory` roles identify the actual original drop, token and factory. The Base catalog's namespace address is **not a transaction destination**. Its `dropId` is a decimal-encoded drop address, not a numeric factory drop ID or an NFT token ID. Resolve the pack through the website's pack catalog/page: the Robinhood slug resolver is not the Base resolver. A version label alone is not enough to select the historical implementation.

Keep raw blockchain amounts and identifiers exact with `BigInt` or an exact-decimal library. Verify the selected RPC chain before a read, and do not treat an ABI's function name as proof that the current contract supports the same behavior or economic model as another deployment.


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