#[account]
pub struct ActionProposal {
/// The vault this proposal belongs to
pub vault: Pubkey,
/// Sequential proposal identifier
pub proposal_id: u64,
/// The manager who created this proposal
pub proposer: Pubkey,
/// Serialized ProposalAction data (VaultSettingsAction or PositionUpdate)
pub action_data: Vec<u8>,
/// Unix timestamp when the proposal was created
pub created_at: i64,
/// Unix timestamp when voting ends
pub voting_ends_at: i64,
/// Seconds to wait after approval before execution is allowed
pub timelock_seconds: u32,
/// Unix timestamp when the proposal becomes executable (after timelock)
pub executable_at: i64,
/// Current status of the proposal
pub status: ProposalStatus,
/// Total LP tokens staked to reject
pub reject_votes: u64,
/// Total LP tokens staked to opt-out
pub opt_out_votes: u64,
/// PDA bump seed
pub bump: u8,
/// Reserved bytes for future use
pub reserved: [u8; 32],
}