Documentation Index
Fetch the complete documentation index at: https://v2-docs.exponent.finance/llms.txt
Use this file to discover all available pages before exploring further.
This page covers concepts specific to Exponent Core. For general protocol concepts, see:
- SY, PT, YT — Token mechanics, exchange rate, pricing
- Strip, Trade, and Redeem — The full strip → trade → yield → merge → redeem flow
- Maturity — Before/at/after maturity behavior
Vault
An Exponent Core vault is a single yield stripping market with a fixed maturity date. It holds the underlying in the form of SY in escrow, tracks the SY exchange rate, and mints PT and YT when users strip. Each vault also owns its ownYieldTokenPosition — this collects yield on unstaked YT (YT that was minted via strip but hasn’t been deposited into a user’s position). When a user deposits YT into their own position, yield tracking transfers from the vault’s position to theirs.
In the SDK, the Vault class is the primary entry point for interacting with a market. See the Vault Account Reference for the full onchain struct.
Yield Token Position
YT is a regular SPL token — the program cannot track yield on tokens held in a wallet. To earn yield, you deposit YT into aYieldTokenPosition, a per-user, per-vault PDA that escrows your YT and records the current SY exchange rate as your entry point (last_seen_index).
When you later stage yield, the program computes the delta between your entry rate and the current rate to determine how much interest you’ve earned. Earned amounts move into the position’s staged field, where they can be collected.
See the YieldTokenPosition Account Reference for the full onchain struct.
Yield Collection
Collecting yield is a multi-step process:- Initialize position — Create a
YieldTokenPositionfor the user viaixInitializeYieldPosition. One-time per vault. - Deposit YT — Transfer YT into the position via
ixDepositYt. Yield tracking starts from this point. - Stage yield — Call
ixStageYieldto compute earned interest and emissions. This updateslast_seen_indexand moves earned amounts intostaged. - Collect — Call
ixCollectInterest(for SY interest) orixCollectEmission(for reward tokens) to withdraw staged amounts.
Emissions
Emissions are auxiliary reward tokens distributed to YT depositors, separate from SY interest. For example, a vault wrapping a Kamino lending position might distribute KMNO tokens as emissions. Each vault can have multiple emission tokens. The vault tracks each emission’s index viaEmissionInfo, and each yield position tracks its own per-emission state via YieldTokenTracker.
Emissions use a per-share index model:
current_index— the vault’sEmissionInfo.final_index, synced from the SY program’sSyState.emission_indexeslast_seen_index— the position’sYieldTokenTracker.last_seen_index, updated when yield is stagedsy_balance— the position’s SY-equivalent balance (YT converted to SY atfinal_sy_exchange_rate)
ixStageYield first (updates both interest and emission trackers), then ixCollectEmission with the emission index (0-based, matching the vault’s emission list).