1pub use pinocchio::account_info::AccountInfo;
109
110pub type CpiAccounts<'c> = light_sdk_types::cpi_accounts::v2::CpiAccounts<'c, AccountInfo>;
114
115pub type CompressCtx<'a> =
116 light_sdk_types::interface::program::compression::processor::CompressCtx<'a, AccountInfo>;
117
118pub type CompressDispatchFn =
119 light_sdk_types::interface::program::compression::processor::CompressDispatchFn<AccountInfo>;
120
121pub type DecompressCtx<'a> =
122 light_sdk_types::interface::program::decompression::processor::DecompressCtx<'a, AccountInfo>;
123
124pub type ValidatedPdaContext =
125 light_sdk_types::interface::program::validation::ValidatedPdaContext<AccountInfo>;
126
127pub type CpiContextWriteAccounts<'a> =
128 light_sdk_types::cpi_context_write::CpiContextWriteAccounts<'a, AccountInfo>;
129
130#[cfg(all(not(target_os = "solana"), feature = "std"))]
131pub type PackedAccounts =
132 light_sdk_types::pack_accounts::PackedAccounts<solana_instruction::AccountMeta>;
133
134pub use light_account_checks::close_account;
137#[cfg(feature = "token")]
138pub use light_compressed_account::instruction_data::compressed_proof::CompressedProof;
139pub use light_sdk_types::interface::account::compression_info::{
141 claim_completed_epoch_rent, CompressAs, CompressedAccountData, CompressedInitSpace,
142 CompressionInfo, CompressionInfoField, CompressionState, HasCompressionInfo, Space,
143 COMPRESSION_INFO_SIZE, OPTION_COMPRESSION_INFO_SPACE,
144};
145#[cfg(all(not(target_os = "solana"), feature = "std"))]
146pub use light_sdk_types::interface::account::pack::Pack;
147#[cfg(feature = "token")]
149pub use light_sdk_types::interface::account::token_seeds::{
150 PackedTokenData, TokenDataWithPackedSeeds, TokenDataWithSeeds,
151};
152#[cfg(feature = "token")]
154pub use light_sdk_types::interface::cpi::create_mints::{
155 derive_mint_compressed_address as derive_mint_compressed_address_generic,
156 get_output_queue_next_index, CreateMints, CreateMintsCpi, CreateMintsParams,
157 CreateMintsStaticAccounts, SingleMintParams, DEFAULT_RENT_PAYMENT, DEFAULT_WRITE_TOP_UP,
158};
159#[cfg(feature = "token")]
161pub use light_sdk_types::interface::cpi::create_token_accounts::{
162 derive_associated_token_account as derive_associated_token_account_generic,
163 CreateTokenAccountCpi, CreateTokenAccountRentFreeCpi, CreateTokenAtaCpi,
164 CreateTokenAtaCpiIdempotent, CreateTokenAtaRentFreeCpi,
165};
166pub use light_sdk_types::interface::cpi::invoke::invoke_light_system_program;
168#[cfg(feature = "token")]
169pub use light_sdk_types::interface::program::decompression::processor::process_decompress_accounts_idempotent;
170#[cfg(feature = "token")]
171pub use light_sdk_types::interface::program::decompression::token::prepare_token_account_for_decompression;
172#[cfg(feature = "token")]
173pub use light_sdk_types::interface::program::variant::{PackedTokenSeeds, UnpackedTokenSeeds};
174pub use light_sdk_types::interface::{
175 account::{
176 light_account::{AccountType, LightAccount},
177 pack::Unpack,
178 pda_seeds::{HasTokenVariant, PdaSeedDerivation},
179 size::Size,
180 },
181 accounts::{
182 finalize::{LightFinalize, LightPreInit},
183 init_compressed_account::{prepare_compressed_account_on_init, reimburse_rent},
184 },
185 cpi::{
186 account::CpiAccountsTrait,
187 invoke::{invoke_write_pdas_to_cpi_context, InvokeLightSystemProgram},
188 LightCpi,
189 },
190 create_accounts_proof::CreateAccountsProof,
191 program::{
192 compression::{
193 pda::prepare_account_for_compression,
194 processor::{process_compress_pda_accounts_idempotent, CompressAndCloseParams},
195 },
196 config::{
197 create::process_initialize_light_config, process_initialize_light_config_checked,
198 process_update_light_config, InitializeLightConfigParams, LightConfig,
199 UpdateLightConfigParams, LIGHT_CONFIG_SEED, MAX_ADDRESS_TREES_PER_SPACE,
200 },
201 decompression::{
202 pda::prepare_account_for_decompression,
203 processor::{
204 process_decompress_pda_accounts_idempotent, DecompressIdempotentParams,
205 DecompressVariant,
206 },
207 },
208 validation::{
209 extract_tail_accounts, is_pda_initialized, should_skip_compression,
210 split_at_system_accounts_offset, validate_compress_accounts,
211 validate_decompress_accounts,
212 },
213 variant::{IntoVariant, LightAccountVariantTrait, PackedLightAccountVariantTrait},
214 },
215 rent,
216};
217#[cfg(feature = "token")]
218pub use light_token_interface::instructions::extensions::ExtensionInstructionData as TokenExtensionInstructionData;
219#[cfg(feature = "token")]
221pub use light_token_interface::instructions::extensions::TokenMetadataInstructionData;
222
223#[cfg(feature = "token")]
224pub mod token {
225 pub use light_sdk_types::interface::{
226 account::token_seeds::{
227 ExtensionInstructionData, MultiInputTokenDataWithContext, PackedTokenData,
228 TokenDataWithPackedSeeds, TokenDataWithSeeds,
229 },
230 program::decompression::token::prepare_token_account_for_decompression,
231 };
232}
233
234pub mod compression_info {
235 pub use light_sdk_types::interface::account::compression_info::*;
236}
237
238pub use light_sdk_types::cpi_accounts::CpiAccountsConfig;
241
242#[cfg(all(not(target_os = "solana"), feature = "std"))]
243pub mod interface {
244 pub mod instruction {
245 pub use light_sdk_types::pack_accounts::PackedAccounts;
246 }
247}
248
249pub mod account_meta {
250 pub use light_sdk_types::instruction::account_meta::*;
251}
252
253pub extern crate light_account_checks;
256pub use light_account_checks::{
258 account_info::pinocchio::OwnedAccountMeta, discriminator::Discriminator as LightDiscriminator,
259 packed_accounts, AccountInfoTrait, AccountMetaTrait,
260};
261pub use light_compressed_account::instruction_data::{
262 compressed_proof::ValidityProof, cpi_context::CompressedCpiContext,
263 with_account_info::InstructionDataInvokeCpiWithAccountInfo,
264};
265pub use light_macros::{derive_light_cpi_signer, derive_light_cpi_signer_pda, pubkey_array};
266#[cfg(feature = "std")]
268pub extern crate solana_instruction;
269#[cfg(feature = "std")]
270pub extern crate solana_pubkey;
271pub use light_sdk_macros::{
272 AnchorDiscriminator as Discriminator, CompressAs, HasCompressionInfo, LightAccount,
273 LightDiscriminator, LightHasher, LightHasherSha, LightPinocchioAccount, LightProgramPinocchio,
274};
275pub use light_sdk_types::{constants, error::LightSdkTypesError, instruction::*, CpiSigner};
276
277pub fn light_err(e: LightSdkTypesError) -> pinocchio::program_error::ProgramError {
284 pinocchio::program_error::ProgramError::Custom(u32::from(e))
285}
286
287pub fn derive_rent_sponsor_pda(program_id: &[u8; 32]) -> ([u8; 32], u8) {
292 <AccountInfo as AccountInfoTrait>::find_program_address(
293 &[constants::RENT_SPONSOR_SEED],
294 program_id,
295 )
296}
297
298#[cfg(feature = "token")]
302pub fn find_mint_address(mint_seed: &[u8; 32]) -> ([u8; 32], u8) {
303 light_sdk_types::interface::cpi::create_mints::find_mint_address::<AccountInfo>(mint_seed)
304}
305
306#[cfg(feature = "token")]
308pub fn derive_mint_compressed_address(
309 mint_seed: &[u8; 32],
310 address_tree_pubkey: &[u8; 32],
311) -> [u8; 32] {
312 derive_mint_compressed_address_generic::<AccountInfo>(mint_seed, address_tree_pubkey)
313}
314
315#[cfg(feature = "token")]
319pub fn derive_associated_token_account(owner: &[u8; 32], mint: &[u8; 32]) -> ([u8; 32], u8) {
320 derive_associated_token_account_generic::<AccountInfo>(owner, mint)
321}