Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt

Use this file to discover all available pages before exploring further.

This page summarizes the presale account model from the local Anchor source and bundled IDL. For exact layouts, use the published IDL and generated TypeScript types exported by @meteora-ag/presale.

Address Map

AddressHow it is chosenUse
PresalePDA from presale, base, base mint, and quote mintMain vault state for one presale. Stores creator, mints, vaults, caps, lifecycle timestamps, mode, whitelist mode, fee totals, token program flags, and registries.
Presale authorityPDA from presale_authorityProgram signing authority over base and quote token vaults. Deployed address: 4Xgt6XKZiowAGNdPWngVAwpYbSwAmbBnRBPtCFXhrypc.
Base token vaultPDA token account from base_vault and PresaleProgram-controlled token account holding presale base tokens.
Quote token vaultPDA token account from quote_vault and PresaleProgram-controlled token account holding buyer deposits and deposit fees.
EscrowPDA from escrow, Presale, buyer owner, and registry indexBuyer state for deposits, claimed amount, pending claim amount, remaining quote withdrawal status, and per-buyer deposit cap.
FixedPricePresaleExtraArgsPDA from fixed_price_param and PresaleTemporary fixed-price parameter account used when initializing a fixed-price presale.
MerkleRootConfigPDA from merkle_root, Presale, and versionMerkle root for permissioned Merkle proof escrow creation.
OperatorPDA from operator, creator, and operator ownerPermission account that lets an operator create authority-permissioned escrows for a creator.
PermissionedServerMetadataPDA from server_metadata and PresaleOptional URL used by permissioned clients to fetch Merkle proofs or partially signed escrow-creation transactions.
Event authorityAnchor event-CPI PDARequired by event-emitting instructions as generated by Anchor clients.

PDA Seeds

SDK helperSeedsUse
derivePresale(mint, quote, base, programId)["presale", base, mint, quote]Main presale account. The SDK names the base mint parameter mint.
derivePresaleAuthority(programId)["presale_authority"]Vault authority PDA.
derivePresaleVault(presale, programId)["base_vault", presale]Base token vault.
deriveQuoteTokenVault(presale, programId)["quote_vault", presale]Quote token vault.
deriveFixedPricePresaleExtraArgs(presale, programId)["fixed_price_param", presale]Fixed-price extra-args account.
deriveEscrow(presale, owner, registryIndex, programId)["escrow", presale, owner, registryIndex]Buyer escrow account.
deriveMerkleRootConfig(presale, programId, version)["merkle_root", presale, version]Merkle root account for one version.
deriveOperator(creator, operator, programId)["operator", creator, operator]Operator permission account.
derivePermissionedServerMetadata(presale, programId)["server_metadata", presale]Permissioned metadata URL account.
deriveMetaplexMetadata(mint)["metadata", Metaplex program, mint]Metaplex metadata PDA used by SDK initialization helpers when needed.

Constants

ConstantValueMeaning
MINIMUM_PRESALE_DURATION60 secondsMinimum presale window.
MAXIMUM_PRESALE_DURATION2_592_000 secondsMaximum presale window, equal to 30 days.
MAXIMUM_DURATION_UNTIL_PRESALE2_592_000 secondsMaximum delay between initialization and start, equal to 30 days.
MAXIMUM_LOCK_AND_VEST_DURATION315_360_000 secondsMaximum lock plus vest duration, equal to 10 years.
SCALE_OFFSET64Q64 price scale offset.
SCALE_MULTIPLIER2^64Q64 price scale multiplier.
MAX_PRESALE_REGISTRY_COUNT5Maximum number of registries in one presale account.
MAX_DEPOSIT_FEE_BPS5000Maximum deposit fee, equal to 50%.
DEFAULT_PERMISSIONLESS_REGISTRY_INDEX0Registry index used by permissionless presales.
PRESALE_MEMOPresaleMemo text used when destination Token 2022 accounts require incoming transfer memos.

Enums

EnumValues
BoolType0 false, 1 true.
PresaleMode0 fixed price, 1 prorata, 2 FCFS.
WhitelistMode0 permissionless, 1 permission with Merkle proof, 2 permission with authority.
UnsoldTokenAction0 refund to creator, 1 burn.
PresaleProgress0 not started, 1 ongoing, 2 completed, 3 failed.
TokenProgramFlags0 SPL Token, 1 Token 2022.
AccountsType0 transfer-hook accounts for base mint, 1 transfer-hook accounts for quote mint.

Presale

Presale is the primary state account. Padding fields are reserved and omitted from the table.
FieldTypeUse
ownerPubkeyPresale creator.
quote_mintPubkeyQuote token mint accepted for deposits.
base_mintPubkeyBase token mint sold in the presale.
base_token_vaultPubkeyProgram-controlled base token vault.
quote_token_vaultPubkeyProgram-controlled quote token vault.
basePubkeyBase key used in the presale PDA seeds.
presale_modeu8PresaleMode enum value.
whitelist_modeu8WhitelistMode enum value.
presale_maximum_capu64Target or maximum quote amount.
presale_minimum_capu64Minimum quote amount required for success.
presale_start_timeu64Unix timestamp when deposits open. The program clamps a past start time to the current timestamp during initialization.
presale_end_timeu64Unix timestamp when deposits close. FCFS and fixed-price modes can end early when the cap is reached unless disabled.
presale_supplyu64Total base token supply allocated across initialized registries.
total_depositu64Total quote amount deposited, excluding deposit fees.
total_escrowu64Total active escrow accounts.
created_atu64Initialization timestamp.
lock_durationu64Duration after presale end before vested token flow starts.
vest_durationu64Linear vesting duration after vesting_start_time.
immediate_release_timestampu64Timestamp when the immediate-release allocation becomes claimable.
vesting_start_timeu64Lock end time and vesting start.
vesting_end_timeu64Vesting end time.
total_claimed_tokenu64Total base token claimed across escrows.
total_refunded_quote_tokenu64Total quote token refunded through remaining-quote withdrawals.
total_deposit_feeu64Total quote fee accrued from deposits.
deposit_fee_collectedu8Boolean-like flag set after creator collects deposit fees.
has_creator_withdrawnu8Boolean-like flag set after creator withdraws completed or failed presale funds.
base_token_program_flagu8SPL Token or Token 2022 flag for base mint.
quote_token_program_flagu8SPL Token or Token 2022 flag for quote mint.
total_presale_registry_countu8Count of initialized registries.
unsold_token_actionu8Refund or burn action for unsold base tokens.
is_unsold_token_action_performedu8Boolean-like flag set after unsold base token action.
immediate_release_bpsu16Immediate release share in basis points.
presale_mode_raw_data[u128; 3]Mode-specific packed data. Fixed price stores q_price, disable_withdraw, and early-end flag; FCFS stores the early-end flag.
presale_registries[PresaleRegistry; 5]Fixed-capacity registry array.

PresaleRegistry

Registries are embedded in the Presale account. They let permissioned launches segment users into buckets with different supply and deposit caps.
FieldTypeUse
presale_supplyu64Base token supply allocated to the registry.
total_depositu64Total quote amount deposited in this registry.
total_escrowu64Number of escrows in this registry.
total_claimed_tokenu64Total base token claimed by this registry.
total_refunded_quote_tokenu64Total quote token refunded by this registry.
buyer_minimum_deposit_capu64Minimum quote amount a buyer must maintain after deposit or withdrawal.
buyer_maximum_deposit_capu64Maximum quote amount a buyer can deposit.
total_deposit_feeu64Deposit fee accrued for this registry.
deposit_fee_bpsu16Deposit fee charged to buyers, up to 5000 bps.

Escrow

An Escrow belongs to one owner, one presale, and one registry.
FieldTypeUse
presalePubkeyParent presale account.
ownerPubkeyBuyer that owns the escrow.
total_depositu64Current quote amount deposited by the buyer, excluding deposit fees.
total_claimed_tokenu64Base token already claimed.
is_remaining_quote_withdrawnu8Boolean-like flag for failed-presale or prorata overflow refunds.
registry_indexu8Registry bucket used by this escrow.
pending_claim_tokenu64Claimable base token accumulated by refresh_escrow or claim.
deposit_max_capu64Escrow-specific deposit cap. For permissionless escrows, this defaults to the registry maximum.
created_atu64Escrow creation timestamp.
total_deposit_feeu64Deposit fee paid by this escrow.
last_refreshed_atu64Last refresh timestamp.

Supporting Accounts

AccountFieldsUse
FixedPricePresaleExtraArgsdisable_withdraw, q_price, owner, presaleStores fixed-price initialization inputs. The SDK creates this before initialize_presale and can close it afterward.
MerkleRootConfigroot, presale, versionStores one Merkle root version for PermissionWithMerkleProof escrow creation.
Operatorowner, creatorAllows owner to create permissioned authority escrows for the creator.
PermissionedServerMetadatapresale, server_urlStores a creator-managed URL for retrieving Merkle proofs or partially signed escrow-creation transactions.

Initialization Args

TypeFieldsUse
PresaleArgspresale_maximum_cap, presale_minimum_cap, presale_start_time, presale_end_time, whitelist_mode, presale_mode, unsold_token_action, disable_earlier_presale_end_once_cap_reachedCommon presale configuration.
LockedVestingArgsimmediately_release_bps, lock_duration, vest_duration, immediate_release_timestampOptional lock and vesting schedule. Zero values mean no locked vesting.
PresaleRegistryArgsbuyer_minimum_deposit_cap, buyer_maximum_deposit_cap, presale_supply, deposit_fee_bpsRegistry configuration supplied during initialization.
InitializeFixedPricePresaleExtraArgspresale, disable_withdraw, q_priceFixed-price mode setup account input.
CreateMerkleRootConfigParamsroot, versionMerkle root config input.
CreatePermissionedEscrowWithMerkleProofParamsproof, registry_index, deposit_capMerkle proof escrow input.
CreatePermissionedEscrowWithCreatorParamsregistry_index, deposit_capAuthority-permissioned escrow input.
RemainingAccountsInfoslicesDescribes Token 2022 transfer-hook remaining-account slices.

Token 2022 Support

Presale Vault supports SPL Token and Token 2022 mints when the Token 2022 extension set is supported by the program.
Extension or behaviorSupport
Transfer FeeSupported. The program calculates included and excluded fee amounts.
Metadata PointerSupported.
Token MetadataSupported.
Transfer HookSupported when required hook accounts are passed through RemainingAccountsInfo and remaining accounts.
Native Token 2022 mintNot supported.
Other Token 2022 extensionsNot supported.