Skip to main content

carbon_virtual_curve_decoder/instructions/
create_partner_metadata.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 = "0xc0a8eabfbce2e3ff")]
9pub struct CreatePartnerMetadata {
10    pub metadata: CreatePartnerMetadataParameters,
11}
12
13#[derive(Debug, PartialEq, Eq, Clone, Hash, serde::Serialize, serde::Deserialize)]
14pub struct CreatePartnerMetadataInstructionAccounts {
15    pub partner_metadata: solana_pubkey::Pubkey,
16    pub payer: solana_pubkey::Pubkey,
17    pub fee_claimer: solana_pubkey::Pubkey,
18    pub system_program: solana_pubkey::Pubkey,
19    pub event_authority: solana_pubkey::Pubkey,
20    pub program: solana_pubkey::Pubkey,
21}
22
23impl carbon_core::deserialize::ArrangeAccounts for CreatePartnerMetadata {
24    type ArrangedAccounts = CreatePartnerMetadataInstructionAccounts;
25
26    fn arrange_accounts(
27        accounts: &[solana_instruction::AccountMeta],
28    ) -> Option<Self::ArrangedAccounts> {
29        let [partner_metadata, payer, fee_claimer, system_program, event_authority, program, _remaining @ ..] =
30            accounts
31        else {
32            return None;
33        };
34
35        Some(CreatePartnerMetadataInstructionAccounts {
36            partner_metadata: partner_metadata.pubkey,
37            payer: payer.pubkey,
38            fee_claimer: fee_claimer.pubkey,
39            system_program: system_program.pubkey,
40            event_authority: event_authority.pubkey,
41            program: program.pubkey,
42        })
43    }
44}