gmsol-sdk 0.9.0

GMX-Solana is an extension of GMX on the Solana blockchain.
Documentation
use gmsol_programs::anchor_lang::ToAccountMetas;
use solana_sdk::{instruction::AccountMeta, pubkey::Pubkey};

pub(super) struct PostUpdate {
    pub(super) payer: Pubkey,
    pub(super) encoded_vaa: Pubkey,
    pub(super) config: Pubkey,
    pub(super) treasury: Pubkey,
    pub(super) price_update_account: Pubkey,
    pub(super) system_program: Pubkey,
    pub(super) write_authority: Pubkey,
}

impl ToAccountMetas for PostUpdate {
    fn to_account_metas(&self, _is_signer: Option<bool>) -> Vec<AccountMeta> {
        vec![
            AccountMeta::new(self.payer, true),
            AccountMeta::new_readonly(self.encoded_vaa, false),
            AccountMeta::new_readonly(self.config, false),
            AccountMeta::new(self.treasury, false),
            AccountMeta::new(self.price_update_account, true),
            AccountMeta::new_readonly(self.system_program, false),
            AccountMeta::new_readonly(self.write_authority, true),
        ]
    }
}

pub(super) struct ReclaimRent {
    pub(super) payer: Pubkey,
    pub(super) price_update_account: Pubkey,
}

impl ToAccountMetas for ReclaimRent {
    fn to_account_metas(&self, _is_signer: Option<bool>) -> Vec<AccountMeta> {
        vec![
            AccountMeta::new(self.payer, true),
            AccountMeta::new(self.price_update_account, false),
        ]
    }
}