carbon_jupiter_perpetuals_decoder/instructions/
instant_decrease_position.rs

1use super::super::types::*;
2
3use carbon_core::{borsh, CarbonDeserialize};
4
5#[derive(
6    CarbonDeserialize, Debug, serde::Serialize, serde::Deserialize, PartialEq, Eq, Clone, Hash,
7)]
8#[carbon(discriminator = "0x2e17f02c1e8a5e8c")]
9pub struct InstantDecreasePosition {
10    pub params: InstantDecreasePositionParams,
11}
12
13pub struct InstantDecreasePositionInstructionAccounts {
14    pub keeper: solana_pubkey::Pubkey,
15    pub api_keeper: solana_pubkey::Pubkey,
16    pub owner: solana_pubkey::Pubkey,
17    pub receiving_account: solana_pubkey::Pubkey,
18    pub transfer_authority: solana_pubkey::Pubkey,
19    pub perpetuals: solana_pubkey::Pubkey,
20    pub pool: solana_pubkey::Pubkey,
21    pub position: solana_pubkey::Pubkey,
22    pub custody: solana_pubkey::Pubkey,
23    pub custody_doves_price_account: solana_pubkey::Pubkey,
24    pub custody_pythnet_price_account: solana_pubkey::Pubkey,
25    pub collateral_custody: solana_pubkey::Pubkey,
26    pub collateral_custody_doves_price_account: solana_pubkey::Pubkey,
27    pub collateral_custody_pythnet_price_account: solana_pubkey::Pubkey,
28    pub collateral_custody_token_account: solana_pubkey::Pubkey,
29    pub desired_mint: solana_pubkey::Pubkey,
30    pub referral: solana_pubkey::Pubkey,
31    pub token_program: solana_pubkey::Pubkey,
32    pub associated_token_program: solana_pubkey::Pubkey,
33    pub system_program: solana_pubkey::Pubkey,
34    pub event_authority: solana_pubkey::Pubkey,
35    pub program: solana_pubkey::Pubkey,
36}
37
38impl carbon_core::deserialize::ArrangeAccounts for InstantDecreasePosition {
39    type ArrangedAccounts = InstantDecreasePositionInstructionAccounts;
40
41    fn arrange_accounts(
42        accounts: &[solana_instruction::AccountMeta],
43    ) -> Option<Self::ArrangedAccounts> {
44        let [keeper, api_keeper, owner, receiving_account, transfer_authority, perpetuals, pool, position, custody, custody_doves_price_account, custody_pythnet_price_account, collateral_custody, collateral_custody_doves_price_account, collateral_custody_pythnet_price_account, collateral_custody_token_account, desired_mint, referral, token_program, associated_token_program, system_program, event_authority, program, _remaining @ ..] =
45            accounts
46        else {
47            return None;
48        };
49
50        Some(InstantDecreasePositionInstructionAccounts {
51            keeper: keeper.pubkey,
52            api_keeper: api_keeper.pubkey,
53            owner: owner.pubkey,
54            receiving_account: receiving_account.pubkey,
55            transfer_authority: transfer_authority.pubkey,
56            perpetuals: perpetuals.pubkey,
57            pool: pool.pubkey,
58            position: position.pubkey,
59            custody: custody.pubkey,
60            custody_doves_price_account: custody_doves_price_account.pubkey,
61            custody_pythnet_price_account: custody_pythnet_price_account.pubkey,
62            collateral_custody: collateral_custody.pubkey,
63            collateral_custody_doves_price_account: collateral_custody_doves_price_account.pubkey,
64            collateral_custody_pythnet_price_account: collateral_custody_pythnet_price_account
65                .pubkey,
66            collateral_custody_token_account: collateral_custody_token_account.pubkey,
67            desired_mint: desired_mint.pubkey,
68            referral: referral.pubkey,
69            token_program: token_program.pubkey,
70            associated_token_program: associated_token_program.pubkey,
71            system_program: system_program.pubkey,
72            event_authority: event_authority.pubkey,
73            program: program.pubkey,
74        })
75    }
76}