#[account]
pub struct ExponentStrategyVault {
/// Address to address lookup table (ALT)
pub address_lookup_table: Pubkey,
/// Squads settings account (policies, signers, configuration)
/// Derived as: ["smart_account", "settings", seed]
pub squads_settings: Pubkey,
/// Squads smart account (holds funds, signs CPIs as vault)
/// Derived as: ["smart_account", settings, "smart_account", account_index]
pub squads_vault: Pubkey,
/// Token entries defining accepted deposit tokens
pub token_entries: Vec<TokenEntry>,
/// Underlying mint used to validate all price references
pub underlying_mint: Pubkey,
/// SPL mint for this vault's LP tokens
pub mint_lp: Pubkey,
/// LP token escrow (holds staked LP tokens)
pub token_lp_escrow: Pubkey,
/// Fee to the treasury in LP basis points
pub fee_treasury_lp_bps: u16,
/// Fee treasury account
pub fee_treasury: Pubkey,
/// The vault PDA's own address (for self-reference in CPIs)
pub self_address: Pubkey,
/// PDA bump seed
pub signer_bump: [u8; 1],
/// Bitfield of vault status flags
pub status_flags: u8,
/// AUM and LP financial state
pub financials: VaultFinancials,
/// Strategy positions for AUM calculation
pub strategy_positions: Vec<StrategyPosition>,
/// Maximum LP token supply allowed
pub max_lp_supply: u64,
/// 8-byte seed used to derive the vault PDA
pub seed_id: [u8; 8],
/// Role membership lists (manager, curator, allocator, sentinel)
pub roles: VaultRoles,
/// Governance voting configuration for proposal rejection
pub proposal_vote_config: ProposalVoteConfig,
/// Reserve configuration (share BPS, lock time)
pub reserves_config: VaultConfig,
}