pub mod constants;

pub mod single;
pub use single::*;

pub mod operations;

// KLend program
#[allow(
    clippy::allow_attributes,
    clippy::allow_attributes_without_reason,
    clippy::unwrap_used,
    clippy::expect_used,
    clippy::panic,
    clippy::arithmetic_side_effects,
    unused_must_use,
    unused_imports,
    clippy::too_many_arguments,
    ambiguous_glob_reexports,
    clippy::new_without_default,
    missing_docs,
    unused_qualifications
)]
mod generated_klend {
    use anchor_lang::declare_program;
    declare_program!(klend);
}
pub use generated_klend::klend as klend_program;

// Pyra program
#[allow(
    clippy::allow_attributes,
    clippy::allow_attributes_without_reason,
    clippy::unwrap_used,
    clippy::expect_used,
    clippy::panic,
    clippy::arithmetic_side_effects,
    unused_must_use,
    unused_imports,
    clippy::too_many_arguments,
    ambiguous_glob_reexports,
    clippy::new_without_default,
    missing_docs,
    unused_qualifications
)]
mod generated_pyra {
    use anchor_lang::declare_program;
    declare_program!(pyra);
}
pub use generated_pyra::pyra as pyra_program;

// Re-export shared accounts with correct names, autogenerated ones incorrect
pub mod shared_accounts {
    pub use crate::pyra_program::client::accounts::{
        BorrowTimeLock as WithdrawOrderAccounts, CollateralSwapAccounts as SwapAccounts,
        CollateralSwapKaminoFromAccounts as KaminoAccounts,
        CollateralSwapKaminoFromCToken as KaminoCTokenAccounts,
        CollateralSwapKaminoOracles as KaminoOraclesAccounts, DepositBaseAccounts as BaseAccounts,
        SpendCredit as SpendAccounts,
    };
}
