#![allow(clippy::result_large_err)]
mod error;
mod instructions;
mod math;
mod state;
use {
anchor_lang::prelude::*,
instructions::*,
state::perpetuals::{PriceAndFee, ProfitAndLoss, SwapAmountAndFees},
};
solana_security_txt::security_txt! {
name: "Perpetuals",
project_url: "https://github.com/askibin/perpetuals",
contacts: "email:solana.farms@protonmail.com",
policy: "",
preferred_languages: "en",
auditors: ""
}
declare_id!("PERP9EeXeGnyEqGmxGSan4nGRAFNLwTufLJmiYsTJ8j");
#[program]
pub mod perpetuals {
use super::*;
pub fn init(ctx: Context<Init>, params: InitParams) -> Result<()> {
instructions::init(ctx, ¶ms)
}
pub fn add_pool<'info>(
ctx: Context<'_, '_, '_, 'info, AddPool<'info>>,
params: AddPoolParams,
) -> Result<u8> {
instructions::add_pool(ctx, ¶ms)
}
pub fn remove_pool<'info>(
ctx: Context<'_, '_, '_, 'info, RemovePool<'info>>,
params: RemovePoolParams,
) -> Result<u8> {
instructions::remove_pool(ctx, ¶ms)
}
pub fn add_token<'info>(
ctx: Context<'_, '_, '_, 'info, AddToken<'info>>,
params: AddTokenParams,
) -> Result<u8> {
instructions::add_token(ctx, ¶ms)
}
pub fn remove_token<'info>(
ctx: Context<'_, '_, '_, 'info, RemoveToken<'info>>,
params: RemoveTokenParams,
) -> Result<u8> {
instructions::remove_token(ctx, ¶ms)
}
pub fn set_admin_signers<'info>(
ctx: Context<'_, '_, '_, 'info, SetAdminSigners<'info>>,
params: SetAdminSignersParams,
) -> Result<u8> {
instructions::set_admin_signers(ctx, ¶ms)
}
pub fn set_token_config<'info>(
ctx: Context<'_, '_, '_, 'info, SetTokenConfig<'info>>,
params: SetTokenConfigParams,
) -> Result<u8> {
instructions::set_token_config(ctx, ¶ms)
}
pub fn set_borrow_rate<'info>(
ctx: Context<'_, '_, '_, 'info, SetBorrowRate<'info>>,
params: SetBorrowRateParams,
) -> Result<u8> {
instructions::set_borrow_rate(ctx, ¶ms)
}
pub fn set_permissions<'info>(
ctx: Context<'_, '_, '_, 'info, SetPermissions<'info>>,
params: SetPermissionsParams,
) -> Result<u8> {
instructions::set_permissions(ctx, ¶ms)
}
pub fn withdraw_fees<'info>(
ctx: Context<'_, '_, '_, 'info, WithdrawFees<'info>>,
params: WithdrawFeesParams,
) -> Result<u8> {
instructions::withdraw_fees(ctx, ¶ms)
}
pub fn test_init(ctx: Context<TestInit>, params: TestInitParams) -> Result<()> {
instructions::test_init(ctx, ¶ms)
}
pub fn set_test_oracle_price<'info>(
ctx: Context<'_, '_, '_, 'info, SetTestOraclePrice<'info>>,
params: SetTestOraclePriceParams,
) -> Result<u8> {
instructions::set_test_oracle_price(ctx, ¶ms)
}
pub fn set_test_time<'info>(
ctx: Context<'_, '_, '_, 'info, SetTestTime<'info>>,
params: SetTestTimeParams,
) -> Result<u8> {
instructions::set_test_time(ctx, ¶ms)
}
pub fn swap(ctx: Context<Swap>, params: SwapParams) -> Result<()> {
instructions::swap(ctx, ¶ms)
}
pub fn add_liquidity(ctx: Context<AddLiquidity>, params: AddLiquidityParams) -> Result<()> {
instructions::add_liquidity(ctx, ¶ms)
}
pub fn remove_liquidity(
ctx: Context<RemoveLiquidity>,
params: RemoveLiquidityParams,
) -> Result<()> {
instructions::remove_liquidity(ctx, ¶ms)
}
pub fn open_position(ctx: Context<OpenPosition>, params: OpenPositionParams) -> Result<()> {
instructions::open_position(ctx, ¶ms)
}
pub fn add_collateral(ctx: Context<AddCollateral>, params: AddCollateralParams) -> Result<()> {
instructions::add_collateral(ctx, ¶ms)
}
pub fn remove_collateral(
ctx: Context<RemoveCollateral>,
params: RemoveCollateralParams,
) -> Result<()> {
instructions::remove_collateral(ctx, ¶ms)
}
pub fn close_position(ctx: Context<ClosePosition>, params: ClosePositionParams) -> Result<()> {
instructions::close_position(ctx, ¶ms)
}
pub fn liquidate(ctx: Context<Liquidate>, params: LiquidateParams) -> Result<()> {
instructions::liquidate(ctx, ¶ms)
}
pub fn get_entry_price_and_fee(
ctx: Context<GetEntryPriceAndFee>,
params: GetEntryPriceAndFeeParams,
) -> Result<PriceAndFee> {
instructions::get_entry_price_and_fee(ctx, ¶ms)
}
pub fn get_exit_price_and_fee(
ctx: Context<GetExitPriceAndFee>,
params: GetExitPriceAndFeeParams,
) -> Result<PriceAndFee> {
instructions::get_exit_price_and_fee(ctx, ¶ms)
}
pub fn get_pnl(ctx: Context<GetPnl>, params: GetPnlParams) -> Result<ProfitAndLoss> {
instructions::get_pnl(ctx, ¶ms)
}
pub fn get_liquidation_price(
ctx: Context<GetLiquidationPrice>,
params: GetLiquidationPriceParams,
) -> Result<u64> {
instructions::get_liquidation_price(ctx, ¶ms)
}
pub fn get_swap_amount_and_fees(
ctx: Context<GetSwapAmountAndFees>,
params: GetSwapAmountAndFeesParams,
) -> Result<SwapAmountAndFees> {
instructions::get_swap_amount_and_fees(ctx, ¶ms)
}
}