use anchor_lang::prelude::*; declare_id!("Fg6PaFpoGXkYsidMpWTK6W2BeZ7FEfcYkg476zPFsLnS"); #[program] pub mod account_command { use super::*; pub fn initialize( ctx: Context, balance: f32, amount: u32, memo: String, values: Vec, ) -> Result<()> { let my_account = &mut ctx.accounts.my_account; my_account.balance = balance; my_account.delegate_pubkey = ctx.accounts.user.key().clone(); my_account.sub = Sub { values, state: State::Confirmed { amount, memo }, }; Ok(()) } } #[derive(Clone, AnchorDeserialize, AnchorSerialize)] pub enum State { Pending, Confirmed { amount: u32, memo: String }, } #[derive(Clone, AnchorDeserialize, AnchorSerialize)] pub struct Sub { pub values: Vec, pub state: State, } #[account] pub struct MyAccount { pub balance: f32, pub delegate_pubkey: Pubkey, pub sub: Sub, } #[derive(Accounts)] pub struct Initialize<'info> { #[account(init, payer = user, space = 8 + 1000)] pub my_account: Account<'info, MyAccount>, #[account(mut)] pub user: Signer<'info>, pub system_program: Program<'info, System>, }