#[cfg(feature = "anchor")]
pub mod anchor;
pub mod consts;
pub mod cpi;
pub mod crank;
pub mod delegate_args;
pub mod ephem;
#[cfg(any(
    feature = "anchor",
    feature = "modular-sdk",
    feature = "solana-program"
))]
pub mod ephemeral_accounts;
mod solana_compat;
pub mod types;
pub mod utils;

#[cfg(feature = "access-control")]
pub mod access_control;
#[cfg(feature = "spl")]
pub mod spl;

pub use dlp_api;
pub use dlp_api::args::CallHandlerArgs;
pub use dlp_api::pda;
pub use dlp_api::{
    commit_record_seeds_from_delegated_account, commit_state_seeds_from_delegated_account,
    delegate_buffer_seeds_from_delegated_account, delegation_metadata_seeds_from_delegated_account,
    delegation_record_seeds_from_delegated_account, ephemeral_balance_seeds_from_payer,
    fees_vault_seeds, program_config_seeds_from_program_id,
    undelegate_buffer_seeds_from_delegated_account, validator_fees_vault_seeds_from_validator,
};
pub use magicblock_magic_program_api::args::{
    ActionArgs, BaseActionArgs, CommitAndUndelegateArgs, CommitTypeArgs, MagicBaseIntentArgs,
    ShortAccountMeta, UndelegateTypeArgs,
};

pub const fn id() -> solana_compat::solana::Pubkey {
    solana_compat::solana::Pubkey::new_from_array(consts::DELEGATION_PROGRAM_ID.to_bytes())
}
