carbon_jupiter_perpetuals_decoder/instructions/
update_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 = "0x90c8f9ff6cd9f974")]
9pub struct UpdateDecreasePositionRequest2 {
10    pub params: UpdateDecreasePositionRequest2Params,
11}
12
13pub struct UpdateDecreasePositionRequest2InstructionAccounts {
14    pub owner: solana_pubkey::Pubkey,
15    pub perpetuals: solana_pubkey::Pubkey,
16    pub pool: solana_pubkey::Pubkey,
17    pub position: solana_pubkey::Pubkey,
18    pub position_request: solana_pubkey::Pubkey,
19    pub custody: solana_pubkey::Pubkey,
20    pub custody_doves_price_account: solana_pubkey::Pubkey,
21    pub custody_pythnet_price_account: solana_pubkey::Pubkey,
22}
23
24impl carbon_core::deserialize::ArrangeAccounts for UpdateDecreasePositionRequest2 {
25    type ArrangedAccounts = UpdateDecreasePositionRequest2InstructionAccounts;
26
27    fn arrange_accounts(
28        accounts: &[solana_instruction::AccountMeta],
29    ) -> Option<Self::ArrangedAccounts> {
30        let [owner, perpetuals, pool, position, position_request, custody, custody_doves_price_account, custody_pythnet_price_account, _remaining @ ..] =
31            accounts
32        else {
33            return None;
34        };
35
36        Some(UpdateDecreasePositionRequest2InstructionAccounts {
37            owner: owner.pubkey,
38            perpetuals: perpetuals.pubkey,
39            pool: pool.pubkey,
40            position: position.pubkey,
41            position_request: position_request.pubkey,
42            custody: custody.pubkey,
43            custody_doves_price_account: custody_doves_price_account.pubkey,
44            custody_pythnet_price_account: custody_pythnet_price_account.pubkey,
45        })
46    }
47}