mod approve;
mod approve_checked;
mod burn;
mod burn_checked;
mod close;
mod compressible;
mod create;
mod create_ata;
mod create_mint;
mod create_mints;
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 approve_checked::*;
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::*;
pub use decompress::Decompress;
pub use decompress_mint::*;
pub use freeze::*;
use light_compressible::config::CompressibleConfig;
pub use light_token_interface::{
instructions::{
extensions::{CompressToPubkey, ExtensionInstructionData, TokenMetadataInstructionData},
mint_action::MintWithContext,
},
state::{AdditionalMetadata, Token, TokenDataVersion},
};
use light_token_types::POOL_SEED;
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, 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 crate::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 const LIGHT_TOKEN_PROGRAM_ID: Pubkey = pubkey!("cTokenmWW8bLPjZEBAUgYy3zKxQZW6VKi7bqNFEVv3m");
pub const LIGHT_TOKEN_CPI_AUTHORITY: Pubkey =
pubkey!("GXtd2izAiMJPwMEjfgTRH3d7k9mjn4Jq3JrWFv9gySYy");
pub const COMPRESSIBLE_CONFIG_V1: Pubkey = pubkey!("ACXg8a7VaqecBWrSbdu73W4Pg9gsqXJ3EXAqkHyhvVXg");
pub const RENT_SPONSOR: Pubkey = pubkey!("r18WwUxfG8kQ69bQPAB2jV6zGNKy3GosFGctjQoV4ti");
pub fn id() -> Pubkey {
LIGHT_TOKEN_PROGRAM_ID
}
pub fn cpi_authority() -> Pubkey {
LIGHT_TOKEN_CPI_AUTHORITY
}
pub fn get_spl_interface_pda_and_bump(mint: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(&[POOL_SEED, mint.as_ref()], &LIGHT_TOKEN_PROGRAM_ID)
}
pub fn get_associated_token_address(owner: &Pubkey, mint: &Pubkey) -> Pubkey {
get_associated_token_address_and_bump(owner, mint).0
}
pub fn get_associated_token_address_and_bump(owner: &Pubkey, mint: &Pubkey) -> (Pubkey, u8) {
Pubkey::find_program_address(
&[&owner.to_bytes(), &id().to_bytes(), &mint.to_bytes()],
&id(),
)
}
pub fn config_pda() -> Pubkey {
COMPRESSIBLE_CONFIG_V1
}
pub fn rent_sponsor_pda() -> Pubkey {
RENT_SPONSOR
}
pub fn compression_authority_pda() -> Pubkey {
CompressibleConfig::light_token_v1_compression_authority_pda()
}