1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
pub mod constants;
pub mod context;
pub mod curve;
pub mod depeg;
pub mod error;
pub mod event;
mod math;
pub mod state;
pub mod utils;
pub mod vault_utils;

use crate::context::*;
use anchor_lang::prelude::*;
use curve::curve_type::CurveType;

#[cfg(feature = "staging")]
declare_id!("ammbh4CQztZ6txJ8AaQgPsWjd6o7GhmvopS2JAo5bCB");

#[cfg(not(feature = "staging"))]
declare_id!("Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB");

#[program]
#[allow(unused_variables)]
pub mod amm {

    use super::*;
    /// Swap token A to B, or vice versa. An amount of trading fee will be charged for liquidity provider, and the admin of the pool.
    pub fn swap<'a, 'b, 'c, 'info>(
        ctx: Context<'a, 'b, 'c, 'info, Swap<'info>>,
        in_amount: u64,
        minimum_out_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Withdraw only single token from the pool. Only supported by pool with stable swap curve.
    pub fn remove_liquidity_single_side(
        ctx: Context<RemoveLiquiditySingleSide>,
        pool_token_amount: u64,
        minimum_out_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Deposit tokens to the pool in an imbalance ratio. Only supported by pool with stable swap curve.
    pub fn add_imbalance_liquidity(
        ctx: Context<AddOrRemoveBalanceLiquidity>,
        minimum_pool_token_amount: u64,
        token_a_amount: u64,
        token_b_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Withdraw tokens from the pool in a balanced ratio.
    pub fn remove_balance_liquidity(
        ctx: Context<AddOrRemoveBalanceLiquidity>,
        pool_token_amount: u64,
        minimum_a_token_out: u64,
        minimum_b_token_out: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Deposit tokens to the pool in a balanced ratio.
    pub fn add_balance_liquidity(
        ctx: Context<AddOrRemoveBalanceLiquidity>,
        pool_token_amount: u64,
        maximum_token_a_amount: u64,
        maximum_token_b_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Get the general information of the pool by using simulate.
    pub fn get_pool_info(ctx: Context<GetPoolInfo>) -> Result<()> {
        Ok(())
    }

    /// initialize_permissionless_pool
    #[deprecated(note = "use initialize_permissionless_pool_with_fee_tier")]
    pub fn initialize_permissionless_pool(
        ctx: Context<InitializePermissionlessPool>,
        curve_type: CurveType,
        token_a_amount: u64,
        token_b_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Initialize permissionless pool with customized fee tier
    pub fn initialize_permissionless_pool_with_fee_tier(
        ctx: Context<InitializePermissionlessPoolWithFeeTier>,
        curve_type: CurveType,
        trade_fee_bps: u64,
        token_a_amount: u64,
        token_b_amount: u64,
    ) -> Result<()> {
        Ok(())
    }

    /// Bootstrap pool liquidity when it is depleted
    pub fn bootstrap_liquidity(
        ctx: Context<BootstrapLiquidity>,
        token_a_amount: u64,
        token_b_amount: u64,
    ) -> Result<()> {
        Ok(())
    }
}