#![allow(clippy::result_large_err)]
mod error;
mod instructions;
mod math;
mod oracle;
mod state;
use {anchor_lang::prelude::*, instructions::*};
solana_security_txt::security_txt! {
name: "Permissionless TWAMM",
project_url: "https://github.com/askibin/twamm",
contacts: "email:solana.farms@protonmail.com",
policy: "",
preferred_languages: "en",
auditors: ""
}
declare_id!("TWAMdUxafgDN2BJNFaC6pND63tjdLz4AmEKBzuxtbe9");
pub mod jupiter {
solana_program::declare_id!("JUP3c2Uh3WA4Ng34tw6kPd2G4C5BB21Xo36Je1s32Ph");
}
#[derive(Clone)]
pub struct Twamm;
impl anchor_lang::Id for Twamm {
fn id() -> Pubkey {
ID
}
}
#[program]
pub mod twamm {
use super::*;
pub fn init(ctx: Context<Init>, params: InitParams) -> Result<()> {
instructions::init(ctx, ¶ms)
}
pub fn test_init(ctx: Context<TestInit>, params: TestInitParams) -> Result<()> {
instructions::test_init(ctx, ¶ms)
}
pub fn init_token_pair<'info>(
ctx: Context<'_, '_, '_, 'info, InitTokenPair<'info>>,
params: InitTokenPairParams,
) -> Result<u8> {
instructions::init_token_pair(ctx, ¶ms)
}
pub fn set_permissions<'info>(
ctx: Context<'_, '_, '_, 'info, SetPermissions<'info>>,
params: SetPermissionsParams,
) -> Result<u8> {
instructions::set_permissions(ctx, ¶ms)
}
pub fn set_limits<'info>(
ctx: Context<'_, '_, '_, 'info, SetLimits<'info>>,
params: SetLimitsParams,
) -> Result<u8> {
instructions::set_limits(ctx, ¶ms)
}
pub fn set_fees<'info>(
ctx: Context<'_, '_, '_, 'info, SetFees<'info>>,
params: SetFeesParams,
) -> Result<u8> {
instructions::set_fees(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_crank_authority<'info>(
ctx: Context<'_, '_, '_, 'info, SetCrankAuthority<'info>>,
params: SetCrankAuthorityParams,
) -> Result<u8> {
instructions::set_crank_authority(ctx, ¶ms)
}
pub fn set_oracle_config<'info>(
ctx: Context<'_, '_, '_, 'info, SetOracleConfig<'info>>,
params: SetOracleConfigParams,
) -> Result<u8> {
instructions::set_oracle_config(ctx, ¶ms)
}
pub fn set_time_in_force<'info>(
ctx: Context<'_, '_, '_, 'info, SetTimeInForce<'info>>,
params: SetTimeInForceParams,
) -> Result<u8> {
instructions::set_time_in_force(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 delete_test_pool<'info>(
ctx: Context<'_, '_, '_, 'info, DeleteTestPool<'info>>,
params: DeleteTestPoolParams,
) -> Result<u8> {
instructions::delete_test_pool(ctx, ¶ms)
}
pub fn delete_test_pair<'info>(
ctx: Context<'_, '_, '_, 'info, DeleteTestPair<'info>>,
params: DeleteTestPairParams,
) -> Result<u8> {
instructions::delete_test_pair(ctx, ¶ms)
}
pub fn withdraw_fees<'info>(
ctx: Context<'_, '_, '_, 'info, WithdrawFees<'info>>,
params: WithdrawFeesParams,
) -> Result<u8> {
instructions::withdraw_fees(ctx, ¶ms)
}
pub fn get_outstanding_amount(
ctx: Context<GetOutstandingAmount>,
params: GetOutstandingAmountParams,
) -> Result<i64> {
instructions::get_outstanding_amount(ctx, ¶ms)
}
pub fn crank(ctx: Context<Crank>, params: CrankParams) -> Result<i64> {
instructions::crank(ctx, ¶ms)
}
pub fn settle(ctx: Context<Settle>, params: SettleParams) -> Result<i64> {
instructions::settle(ctx, ¶ms)
}
pub fn place_order(ctx: Context<PlaceOrder>, params: PlaceOrderParams) -> Result<()> {
instructions::place_order(ctx, ¶ms)
}
pub fn cancel_order(ctx: Context<CancelOrder>, params: CancelOrderParams) -> Result<()> {
instructions::cancel_order(ctx, ¶ms)
}
}