1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| use anchor_lang::{ prelude::*, solana_program::{instruction::Instruction, program::invoke_signed}, }; use anchor_spl::token_interface::{Mint, TokenAccount, TokenInterface}; use crate::jupiter_aggregator::program::Jupiter;
const VAULT_SEED: &[u8] = b"vault";
#[derive(Accounts)] pub struct JupSwapIn<'info> {
pub input_mint: InterfaceAccount<'info, Mint>,
pub input_mint_program: Interface<'info, TokenInterface>,
pub output_mint: InterfaceAccount<'info, Mint>,
pub output_mint_program: Interface<'info, TokenInterface>,
#[account( mut, seeds = [VAULT_SEED], bump )] pub vault: SystemAccount<'info>,
#[account( mut, associated_token::mint = input_mint, associated_token::authority = vault, associated_token::token_program = input_mint_program, )] pub vault_input_token_account: InterfaceAccount<'info, TokenAccount>,
#[account( mut, associated_token::mint = output_mint, associated_token::authority = vault, associated_token::token_program = output_mint_program, )] pub vault_output_token_account: InterfaceAccount<'info, TokenAccount>,
pub jupiter_program: Program<'info, Jupiter>, }
|