#[macro_use]
mod macros;
mod approve;
mod burn;
mod burn_checked;
mod close;
mod compressible;
mod create;
mod create_ata;
mod create_mint;
mod create_mints;
#[cfg(not(target_os = "solana"))]
mod decompress;
mod decompress_mint;
mod freeze;
mod mint_to;
mod mint_to_checked;
mod revoke;
mod thaw;
mod transfer;
mod transfer_checked;
mod transfer_from_spl;
mod transfer_interface;
mod transfer_to_spl;
pub use approve::*;
pub use burn::*;
pub use burn_checked::*;
pub use close::{CloseAccount, CloseAccountCpi};
pub use compressible::{CompressibleParams, CompressibleParamsCpi};
pub use create::*;
pub use create_ata::{
derive_associated_token_account, derive_associated_token_account as derive_token_ata,
CreateAssociatedTokenAccount, CreateTokenAtaCpi as CreateAssociatedAccountCpi,
CreateTokenAtaCpi,
};
pub use create_mint::*;
pub use create_mints::*;
#[cfg(not(target_os = "solana"))]
pub use decompress::Decompress;
pub use decompress_mint::*;
pub use freeze::*;
pub use light_token_interface::{
instructions::{
extensions::{CompressToPubkey, ExtensionInstructionData, TokenMetadataInstructionData},
mint_action::MintWithContext,
},
state::{AdditionalMetadata, Token, TokenDataVersion},
};
pub use mint_to::{MintTo, MintToCpi};
pub use mint_to_checked::*;
pub use revoke::{Revoke, RevokeCpi};
use solana_account_info::AccountInfo;
use solana_pubkey::Pubkey;
pub use thaw::{Thaw, ThawCpi};
pub use transfer::*;
pub use transfer_checked::*;
pub use transfer_from_spl::{TransferFromSpl, TransferFromSplCpi};
pub use transfer_interface::{
SplInterface, SplInterfaceCpi, TransferInterface, TransferInterfaceCpi,
};
pub use transfer_to_spl::{TransferToSpl, TransferToSplCpi};
#[derive(Clone)]
pub struct SystemAccountInfos<'info> {
pub light_system_program: AccountInfo<'info>,
pub cpi_authority_pda: AccountInfo<'info>,
pub registered_program_pda: AccountInfo<'info>,
pub account_compression_authority: AccountInfo<'info>,
pub account_compression_program: AccountInfo<'info>,
pub system_program: AccountInfo<'info>,
}
#[derive(Debug, Clone, Copy)]
pub struct SystemAccounts {
pub light_system_program: Pubkey,
pub cpi_authority_pda: Pubkey,
pub registered_program_pda: Pubkey,
pub account_compression_authority: Pubkey,
pub account_compression_program: Pubkey,
pub system_program: Pubkey,
}
impl Default for SystemAccounts {
fn default() -> Self {
use light_compressed_token_sdk::utils::TokenDefaultAccounts;
let defaults = TokenDefaultAccounts::default();
Self {
light_system_program: defaults.light_system_program,
cpi_authority_pda: defaults.cpi_authority_pda,
registered_program_pda: defaults.registered_program_pda,
account_compression_authority: defaults.account_compression_authority,
account_compression_program: defaults.account_compression_program,
system_program: defaults.system_program,
}
}
}
pub use crate::{
constants::{
compression_authority_pda, config_pda, rent_sponsor_pda, LIGHT_TOKEN_CONFIG,
LIGHT_TOKEN_CPI_AUTHORITY, LIGHT_TOKEN_PROGRAM_ID,
RENT_SPONSOR_V1 as LIGHT_TOKEN_RENT_SPONSOR,
},
cpi_authority, id,
spl_interface::get_spl_interface_pda_and_bump,
utils::{get_associated_token_address, get_associated_token_address_and_bump},
};