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 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125
| use crate::curve::CurveCalculator; use crate::error::ErrorCode; use crate::states::*; use crate::utils::*; use anchor_lang::prelude::*; use anchor_spl::{ associated_token::AssociatedToken, token::Token, token_interface::{Mint, TokenAccount, TokenInterface}, };
#[derive(Accounts)] pub struct Initialize<'info> { #[account(mut)] pub creator: Signer<'info>,
pub amm_config: Box<Account<'info, AmmConfig>>,
#[account( seeds = [crate::AUTH_SEED.as_bytes()], bump, )] pub authority: UncheckedAccount<'info>,
#[account(mut)] pub pool_state: UncheckedAccount<'info>,
#[account( constraint = token_0_mint.key() < token_1_mint.key(), mint::token_program = token_0_program, )] pub token_0_mint: Box<InterfaceAccount<'info, Mint>>,
#[account(mint::token_program = token_1_program)] pub token_1_mint: Box<InterfaceAccount<'info, Mint>>,
#[account( init, seeds = [POOL_LP_MINT_SEED.as_bytes(), pool_state.key().as_ref()], bump, mint::decimals = 9, mint::authority = authority, payer = creator, mint::token_program = token_program, )] pub lp_mint: Box<InterfaceAccount<'info, Mint>>,
#[account( mut, token::mint = token_0_mint, token::authority = creator, )] pub creator_token_0: Box<InterfaceAccount<'info, TokenAccount>>,
#[account( mut, token::mint = token_1_mint, token::authority = creator, )] pub creator_token_1: Box<InterfaceAccount<'info, TokenAccount>>,
#[account( init, associated_token::mint = lp_mint, associated_token::authority = creator, payer = creator, token::token_program = token_program, )] pub creator_lp_token: Box<InterfaceAccount<'info, TokenAccount>>,
#[account( mut, seeds = [POOL_VAULT_SEED.as_bytes(), pool_state.key().as_ref(), token_0_mint.key().as_ref()], bump, )] pub token_0_vault: UncheckedAccount<'info>,
#[account( mut, seeds = [POOL_VAULT_SEED.as_bytes(), pool_state.key().as_ref(), token_1_mint.key().as_ref()], bump, )] pub token_1_vault: UncheckedAccount<'info>,
#[account(mut, address = crate::create_pool_fee_reveiver::ID)] pub create_pool_fee: Box<InterfaceAccount<'info, TokenAccount>>,
#[account( init, seeds = [OBSERVATION_SEED.as_bytes(), pool_state.key().as_ref()], bump, payer = creator, space = ObservationState::LEN )] pub observation_state: AccountLoader<'info, ObservationState>,
pub token_program: Program<'info, Token>, pub token_0_program: Interface<'info, TokenInterface>, pub token_1_program: Interface<'info, TokenInterface>, pub associated_token_program: Program<'info, AssociatedToken>, pub system_program: Program<'info, System>, pub rent: Sysvar<'info, Rent>, }
|