carbon_jupiter_perpetuals_decoder/instructions/
create_decrease_position_request2.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 = "0x6940c952fa0e6d4d")]
9pub struct CreateDecreasePositionRequest2 {
10    pub params: CreateDecreasePositionRequest2Params,
11}
12
13pub struct CreateDecreasePositionRequest2InstructionAccounts {
14    pub owner: solana_pubkey::Pubkey,
15    pub receiving_account: solana_pubkey::Pubkey,
16    pub perpetuals: solana_pubkey::Pubkey,
17    pub pool: solana_pubkey::Pubkey,
18    pub position: solana_pubkey::Pubkey,
19    pub position_request: solana_pubkey::Pubkey,
20    pub position_request_ata: solana_pubkey::Pubkey,
21    pub custody: solana_pubkey::Pubkey,
22    pub custody_doves_price_account: solana_pubkey::Pubkey,
23    pub custody_pythnet_price_account: solana_pubkey::Pubkey,
24    pub collateral_custody: solana_pubkey::Pubkey,
25    pub desired_mint: solana_pubkey::Pubkey,
26    pub referral: solana_pubkey::Pubkey,
27    pub token_program: solana_pubkey::Pubkey,
28    pub associated_token_program: solana_pubkey::Pubkey,
29    pub system_program: solana_pubkey::Pubkey,
30    pub event_authority: solana_pubkey::Pubkey,
31    pub program: solana_pubkey::Pubkey,
32}
33
34impl carbon_core::deserialize::ArrangeAccounts for CreateDecreasePositionRequest2 {
35    type ArrangedAccounts = CreateDecreasePositionRequest2InstructionAccounts;
36
37    fn arrange_accounts(
38        accounts: &[solana_instruction::AccountMeta],
39    ) -> Option<Self::ArrangedAccounts> {
40        let [owner, receiving_account, perpetuals, pool, position, position_request, position_request_ata, custody, custody_doves_price_account, custody_pythnet_price_account, collateral_custody, desired_mint, referral, token_program, associated_token_program, system_program, event_authority, program, _remaining @ ..] =
41            accounts
42        else {
43            return None;
44        };
45
46        Some(CreateDecreasePositionRequest2InstructionAccounts {
47            owner: owner.pubkey,
48            receiving_account: receiving_account.pubkey,
49            perpetuals: perpetuals.pubkey,
50            pool: pool.pubkey,
51            position: position.pubkey,
52            position_request: position_request.pubkey,
53            position_request_ata: position_request_ata.pubkey,
54            custody: custody.pubkey,
55            custody_doves_price_account: custody_doves_price_account.pubkey,
56            custody_pythnet_price_account: custody_pythnet_price_account.pubkey,
57            collateral_custody: collateral_custody.pubkey,
58            desired_mint: desired_mint.pubkey,
59            referral: referral.pubkey,
60            token_program: token_program.pubkey,
61            associated_token_program: associated_token_program.pubkey,
62            system_program: system_program.pubkey,
63            event_authority: event_authority.pubkey,
64            program: program.pubkey,
65        })
66    }
67}