Hyperstack uses IDL (Interface Definition Language) files to generate type-safe bindings for your data streams. An IDL is a JSON file that describes a Solana program’s accounts, instructions, and custom types. To build a custom stack, you need the IDL for the program you want to track.Documentation Index
Fetch the complete documentation index at: https://mintlify.com/hypertekorg/hyperstack/llms.txt
Use this file to discover all available pages before exploring further.
Methods to Find IDLs
Follow these steps in order to find the IDL for any Solana program.1. Program GitHub Repository
Most Solana projects are open source. Search GitHub for the protocol name followed by “idl.json” or look in the project’s repository. Common locations include:target/idl/program_name.jsonidl/program_name.json- The “Releases” page as an attached asset
2. Anchor CLI Fetch
If a program is built with Anchor and the developers uploaded the IDL on-chain, you can fetch it directly using the Anchor CLI:<PROGRAM_ID> with the program’s on-chain address. Not every program has an IDL on-chain, so this may return an error if it’s missing.
3. NPM or Rust Packages
Many protocols publish SDKs for developers. These packages often include the IDL file so the SDK can encode and decode instructions.- NPM: Check
node_modules/@protocol-name/sdk/dist/idl.jsonor similar paths - Crates.io: Some Rust crates include the IDL as a resource
4. Block Explorers
Explorers like Solscan or Solana.fm sometimes host IDLs for verified programs. Look for a “Contract” or “IDL” tab when viewing a program address. You can often download the JSON directly from these pages.5. Manual Creation
If an IDL isn’t available, you can create one manually by examining the program’s source code. Tools like Kinobi or Codama can generate IDLs by parsing the Rust source.Where to Put IDLs
In a Hyperstack project, store your IDL files in anidl/ directory at the root of your stack:
#[hyperstack] macro:
Using Multiple IDLs
For multi-program stacks, pass an array of IDL paths:Common IDL Locations
| Protocol | Program ID | Source |
|---|---|---|
| ORE | oreoU2P8bN6jkk3jbaiVxYnG1dCXcYxwhwyK9jSybcp | GitHub |
| System Program | 11111111111111111111111111111111 | Built-in |
| Token Program | TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA | Built-in |
Exploring IDLs with the CLI
Once you have an IDL file, usehs idl to explore it before writing your stack:
Example: Exploring the ORE IDL
register_from.
IDL Structure
An IDL contains:Metadata
name field determines the SDK module prefix (e.g., ore → ore_sdk).
Accounts
ore_sdk::accounts::Round::id, ore_sdk::accounts::Round::motherlode, etc.
Instructions
ore_sdk::instructions::Deploy(instruction type)accounts::round,accounts::miner,accounts::authority(account references)args::amount,args::square(instruction arguments)
Next Steps
- Stack Definitions — Learn how to use IDLs in your stack
- Rust DSL — Complete macro reference for mapping IDL fields
- Your First Stack — Build a complete example