Skip to main content
The program IDLs (Interface Definition Language) are required for interacting with the Multiliquid Swap and Treasury Programs via the Anchor framework or @solana/web3.js. They define all instructions, accounts, types, and events. IDL descriptions use capital provider terminology. Program identifiers and error messages retain their on-chain values.
Each code block includes a built-in copy button. Click the copy icon in the top-right corner to copy the full IDL to your clipboard.

Swap Program

Handles all swap operations between RWAs and stablecoins, asset configuration, pair management, liquidity operations, and fee collection. Program ID: HaWDr94LKJQT2fXuHJGsSGeQf6M7S68FXpEQLcE5RYs6
swap_program.json

Treasury Program

Handles asset deposits and redemptions, receipt-token minting and burning, user positions, daily APY rates, and manager configuration. Program ID: GBPx215wQtoweA8NdeLuYkJ8VotSHuGLKUZKoJMMM8of deposit and redeem accept amount, nav_account_count, apy_account_count, exact_mode, and amount_threshold. Amounts use native token units, and the optional threshold must be serialized even when it is None. Treasury records principal and yield separately in UserPosition. Redemption consumes pending deposits newest-first, then settled principal and yield proportionally. Only consumed principal is burned from the receipt-token balance. Stable deposits begin earning after 24 hours and merge once the earning-start day’s APY has been posted. RWA deposits accrue from the deposit timestamp and merge after 24 hours once the deposit day’s APY is available. accrue_interest settles posted yield without moving tokens; redemption can include partial-day yield using the latest posted rate, subject to max_unposted_yield_seconds. UserPosition can grow beyond its initial 50 pending-deposit slots. The configured limit is 50–300 slots; decoders must include the reallocated tail. The SDK’s treasuryProgramClient position decoder handles this layout.
treasury.json

Usage

Fetch from On-Chain

The published swap IDL can be fetched directly. At verification on 2026-09-24, it still contained the earlier interface, and the Treasury IDL had not been published on-chain. The embedded IDLs above provide the current release interfaces for client construction.

Load from File

Fetch Programmatically

Deriving PDAs

Pair derivation uses the stored quote/base mint order. New pairs require ascending mint-byte order; existing pairs retain their stored order. All program accounts are Program-Derived Addresses. Use the program ID and the appropriate seeds to derive any account address:
For program and account addresses, see the Deployments page.