{"address":"CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C","metadata":{"name":"raydium_cp_swap","version":"0.2.0","spec":"0.1.0","description":"Raydium constant product AMM, supports Token2022 and without Openbook"},"instructions":[{"name":"close_permission_pda","docs":["Close a permission account","","# Arguments","","* `ctx`- The context of accounts",""],"discriminator":[156,84,32,118,69,135,70,123],"accounts":[{"name":"owner","writable":true,"signer":true,"address":"GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"},{"name":"permission_authority"},{"name":"permission","docs":["Initialize config state account to store protocol owner address and fee rates."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,101,114,109,105,115,115,105,111,110]},{"kind":"account","path":"permission_authority"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"collect_creator_fee","docs":["Collect the creator fee","","# Arguments","","* `ctx` - The context of accounts",""],"discriminator":[20,22,86,123,198,28,219,132],"accounts":[{"name":"creator","docs":["Only pool creator can collect fee"],"writable":true,"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["Pool state stores accumulated protocol fee amount"],"writable":true},{"name":"amm_config","docs":["Amm config account stores fund_owner"]},{"name":"token_0_vault","docs":["The address that holds pool tokens for token_0"],"writable":true},{"name":"token_1_vault","docs":["The address that holds pool tokens for token_1"],"writable":true},{"name":"vault_0_mint","docs":["The mint of token_0 vault"]},{"name":"vault_1_mint","docs":["The mint of token_1 vault"]},{"name":"creator_token_0","docs":["The address that receives the collected token_0 fund fees"],"writable":true,"pda":{"seeds":[{"kind":"account","path":"creator"},{"kind":"account","path":"token_0_program"},{"kind":"account","path":"vault_0_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"creator_token_1","docs":["The address that receives the collected token_1 fund fees"],"writable":true,"pda":{"seeds":[{"kind":"account","path":"creator"},{"kind":"account","path":"token_1_program"},{"kind":"account","path":"vault_1_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"token_0_program","docs":["Spl token program or token program 2022"]},{"name":"token_1_program","docs":["Spl token program or token program 2022"]},{"name":"associated_token_program","docs":["Program to create an ATA for receiving position NFT"],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["To create a new program account"],"address":"11111111111111111111111111111111"}],"args":[]},{"name":"collect_fund_fee","docs":["Collect the fund fee accrued to the pool","","# Arguments","","* `ctx` - The context of accounts","* `amount_0_requested` - The maximum amount of token_0 to send, can be 0 to collect fees in only token_1","* `amount_1_requested` - The maximum amount of token_1 to send, can be 0 to collect fees in only token_0",""],"discriminator":[167,138,78,149,223,194,6,126],"accounts":[{"name":"owner","docs":["Only admin or fund_owner can collect fee now"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["Pool state stores accumulated protocol fee amount"],"writable":true},{"name":"amm_config","docs":["Amm config account stores fund_owner"]},{"name":"token_0_vault","docs":["The address that holds pool tokens for token_0"],"writable":true},{"name":"token_1_vault","docs":["The address that holds pool tokens for token_1"],"writable":true},{"name":"vault_0_mint","docs":["The mint of token_0 vault"]},{"name":"vault_1_mint","docs":["The mint of token_1 vault"]},{"name":"recipient_token_0_account","docs":["The address that receives the collected token_0 fund fees"],"writable":true},{"name":"recipient_token_1_account","docs":["The address that receives the collected token_1 fund fees"],"writable":true},{"name":"token_program","docs":["The SPL program to perform token transfers"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_program_2022","docs":["The SPL program 2022 to perform token transfers"],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"amount_0_requested","type":"u64"},{"name":"amount_1_requested","type":"u64"}]},{"name":"collect_protocol_fee","docs":["Collect the protocol fee accrued to the pool","","# Arguments","","* `ctx` - The context of accounts","* `amount_0_requested` - The maximum amount of token_0 to send, can be 0 to collect fees in only token_1","* `amount_1_requested` - The maximum amount of token_1 to send, can be 0 to collect fees in only token_0",""],"discriminator":[136,136,252,221,194,66,126,89],"accounts":[{"name":"owner","docs":["Only admin or owner can collect fee now"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["Pool state stores accumulated protocol fee amount"],"writable":true},{"name":"amm_config","docs":["Amm config account stores owner"]},{"name":"token_0_vault","docs":["The address that holds pool tokens for token_0"],"writable":true},{"name":"token_1_vault","docs":["The address that holds pool tokens for token_1"],"writable":true},{"name":"vault_0_mint","docs":["The mint of token_0 vault"]},{"name":"vault_1_mint","docs":["The mint of token_1 vault"]},{"name":"recipient_token_0_account","docs":["The address that receives the collected token_0 protocol fees"],"writable":true},{"name":"recipient_token_1_account","docs":["The address that receives the collected token_1 protocol fees"],"writable":true},{"name":"token_program","docs":["The SPL program to perform token transfers"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_program_2022","docs":["The SPL program 2022 to perform token transfers"],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"}],"args":[{"name":"amount_0_requested","type":"u64"},{"name":"amount_1_requested","type":"u64"}]},{"name":"create_amm_config","docs":["# Arguments","","* `ctx`- The accounts needed by instruction.","* `index` - The index of amm config, there may be multiple config.","* `trade_fee_rate` - Trade fee rate, can be changed.","* `protocol_fee_rate` - The rate of protocol fee within trade fee.","* `fund_fee_rate` - The rate of fund fee within trade fee.",""],"discriminator":[137,52,237,212,215,117,108,104],"accounts":[{"name":"owner","docs":["Address to be set as protocol owner."],"writable":true,"signer":true,"address":"GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"},{"name":"amm_config","docs":["Initialize config state account to store protocol owner address and fee rates."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[97,109,109,95,99,111,110,102,105,103]},{"kind":"arg","path":"index"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[{"name":"index","type":"u16"},{"name":"trade_fee_rate","type":"u64"},{"name":"protocol_fee_rate","type":"u64"},{"name":"fund_fee_rate","type":"u64"},{"name":"create_pool_fee","type":"u64"},{"name":"creator_fee_rate","type":"u64"}]},{"name":"create_permission_pda","docs":["Create a permission account","","# Arguments","","* `ctx`- The context of accounts",""],"discriminator":[135,136,2,216,137,169,181,202],"accounts":[{"name":"owner","writable":true,"signer":true,"address":"GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"},{"name":"permission_authority"},{"name":"permission","docs":["Initialize config state account to store protocol owner address and fee rates."],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,101,114,109,105,115,115,105,111,110]},{"kind":"account","path":"permission_authority"}]}},{"name":"system_program","address":"11111111111111111111111111111111"}],"args":[]},{"name":"deposit","docs":["Deposit lp token to the pool","","# Arguments","","* `ctx`- The context of accounts","* `lp_token_amount` - Increased number of LPs","* `maximum_token_0_amount` - Maximum token 0 amount to deposit, prevents excessive slippage","* `maximum_token_1_amount` - Maximum token 1 amount to deposit, prevents excessive slippage",""],"discriminator":[242,35,198,137,82,225,242,182],"accounts":[{"name":"owner","docs":["Pays to mint the position"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","writable":true},{"name":"owner_lp_token","docs":["Owner lp token account"],"writable":true},{"name":"token_0_account","docs":["The payer's token account for token_0"],"writable":true},{"name":"token_1_account","docs":["The payer's token account for token_1"],"writable":true},{"name":"token_0_vault","docs":["The address that holds pool tokens for token_0"],"writable":true},{"name":"token_1_vault","docs":["The address that holds pool tokens for token_1"],"writable":true},{"name":"token_program","docs":["token Program"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_program_2022","docs":["Token program 2022"],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"vault_0_mint","docs":["The mint of token_0 vault"]},{"name":"vault_1_mint","docs":["The mint of token_1 vault"]},{"name":"lp_mint","docs":["Lp token mint"],"writable":true}],"args":[{"name":"lp_token_amount","type":"u64"},{"name":"maximum_token_0_amount","type":"u64"},{"name":"maximum_token_1_amount","type":"u64"}]},{"name":"initialize","docs":["Creates a pool for the given token pair and the initial price","","# Arguments","","* `ctx`- The context of accounts","* `init_amount_0` - the initial amount_0 to deposit","* `init_amount_1` - the initial amount_1 to deposit","* `open_time` - the timestamp allowed for swap",""],"discriminator":[175,175,109,31,13,152,155,237],"accounts":[{"name":"creator","docs":["Address paying to create the pool. Can be anyone"],"writable":true,"signer":true},{"name":"amm_config","docs":["Which config the pool belongs to."]},{"name":"authority","docs":["pool vault and lp mint authority"],"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["PDA account:","seeds = [","POOL_SEED.as_bytes(),","amm_config.key().as_ref(),","token_0_mint.key().as_ref(),","token_1_mint.key().as_ref(),","],","","Or random account: must be signed by cli"],"writable":true},{"name":"token_0_mint","docs":["Token_0 mint, the key must smaller than token_1 mint."]},{"name":"token_1_mint","docs":["Token_1 mint, the key must grater then token_0 mint."]},{"name":"lp_mint","docs":["pool lp mint"],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,108,112,95,109,105,110,116]},{"kind":"account","path":"pool_state"}]}},{"name":"creator_token_0","docs":["payer token0 account"],"writable":true},{"name":"creator_token_1","docs":["creator token1 account"],"writable":true},{"name":"creator_lp_token","docs":["creator lp token account"],"writable":true,"pda":{"seeds":[{"kind":"account","path":"creator"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"lp_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"token_0_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,118,97,117,108,116]},{"kind":"account","path":"pool_state"},{"kind":"account","path":"token_0_mint"}]}},{"name":"token_1_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,118,97,117,108,116]},{"kind":"account","path":"pool_state"},{"kind":"account","path":"token_1_mint"}]}},{"name":"create_pool_fee","docs":["create pool fee account"],"writable":true,"address":"DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"},{"name":"observation_state","docs":["an account to store oracle observations"],"writable":true,"pda":{"seeds":[{"kind":"const","value":[111,98,115,101,114,118,97,116,105,111,110]},{"kind":"account","path":"pool_state"}]}},{"name":"token_program","docs":["Program to create mint account and mint tokens"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_0_program","docs":["Spl token program or token program 2022"]},{"name":"token_1_program","docs":["Spl token program or token program 2022"]},{"name":"associated_token_program","docs":["Program to create an ATA for receiving position NFT"],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["To create a new program account"],"address":"11111111111111111111111111111111"},{"name":"rent","docs":["Sysvar for program account"],"address":"SysvarRent111111111111111111111111111111111"}],"args":[{"name":"init_amount_0","type":"u64"},{"name":"init_amount_1","type":"u64"},{"name":"open_time","type":"u64"}]},{"name":"initialize_with_permission","docs":["Create a pool with permission","","# Arguments","","* `ctx`- The context of accounts","* `init_amount_0` - the initial amount_0 to deposit","* `init_amount_1` - the initial amount_1 to deposit","* `open_time` - the timestamp allowed for swap","* `creator_fee_on` - creator fee model, 0:both token0 and token1 (depends on the input), 1: only token0, 2: only token1",""],"discriminator":[63,55,254,65,49,178,89,121],"accounts":[{"name":"payer","docs":["Address paying to create the pool. Can be anyone"],"writable":true,"signer":true},{"name":"creator"},{"name":"amm_config","docs":["Which config the pool belongs to."]},{"name":"authority","docs":["pool vault and lp mint authority"],"pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["PDA account:","seeds = [","POOL_SEED.as_bytes(),","amm_config.key().as_ref(),","token_0_mint.key().as_ref(),","token_1_mint.key().as_ref(),","],","","Or random account: must be signed by cli"],"writable":true},{"name":"token_0_mint","docs":["Token_0 mint, the key must smaller than token_1 mint."]},{"name":"token_1_mint","docs":["Token_1 mint, the key must grater then token_0 mint."]},{"name":"lp_mint","docs":["pool lp mint"],"writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,108,112,95,109,105,110,116]},{"kind":"account","path":"pool_state"}]}},{"name":"payer_token_0","docs":["payer token0 account"],"writable":true},{"name":"payer_token_1","docs":["payer token1 account"],"writable":true},{"name":"payer_lp_token","docs":["payer lp token account"],"writable":true,"pda":{"seeds":[{"kind":"account","path":"payer"},{"kind":"const","value":[6,221,246,225,215,101,161,147,217,203,225,70,206,235,121,172,28,180,133,237,95,91,55,145,58,140,245,133,126,255,0,169]},{"kind":"account","path":"lp_mint"}],"program":{"kind":"const","value":[140,151,37,143,78,36,137,241,187,61,16,41,20,142,13,131,11,90,19,153,218,255,16,132,4,142,123,216,219,233,248,89]}}},{"name":"token_0_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,118,97,117,108,116]},{"kind":"account","path":"pool_state"},{"kind":"account","path":"token_0_mint"}]}},{"name":"token_1_vault","writable":true,"pda":{"seeds":[{"kind":"const","value":[112,111,111,108,95,118,97,117,108,116]},{"kind":"account","path":"pool_state"},{"kind":"account","path":"token_1_mint"}]}},{"name":"create_pool_fee","docs":["create pool fee account"],"writable":true,"address":"DNXgeM9EiiaAbaWvwjHj9fQQLAX5ZsfHyvmYUNRAdNC8"},{"name":"observation_state","docs":["an account to store oracle observations"],"writable":true,"pda":{"seeds":[{"kind":"const","value":[111,98,115,101,114,118,97,116,105,111,110]},{"kind":"account","path":"pool_state"}]}},{"name":"permission","pda":{"seeds":[{"kind":"const","value":[112,101,114,109,105,115,115,105,111,110]},{"kind":"account","path":"payer"}]}},{"name":"token_program","docs":["Program to create mint account and mint tokens"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_0_program","docs":["Spl token program or token program 2022"]},{"name":"token_1_program","docs":["Spl token program or token program 2022"]},{"name":"associated_token_program","docs":["Program to create an ATA for receiving position NFT"],"address":"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"},{"name":"system_program","docs":["To create a new program account"],"address":"11111111111111111111111111111111"}],"args":[{"name":"init_amount_0","type":"u64"},{"name":"init_amount_1","type":"u64"},{"name":"open_time","type":"u64"},{"name":"creator_fee_on","type":{"defined":{"name":"CreatorFeeOn"}}}]},{"name":"swap_base_input","docs":["Swap the tokens in the pool base input amount","","# Arguments","","* `ctx`- The context of accounts","* `amount_in` - input amount to transfer, output to DESTINATION is based on the exchange rate","* `minimum_amount_out` - Minimum amount of output token, prevents excessive slippage",""],"discriminator":[143,190,90,218,196,30,51,222],"accounts":[{"name":"payer","docs":["The user performing the swap"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"amm_config","docs":["The factory state to read protocol fees"]},{"name":"pool_state","docs":["The program account of the pool in which the swap will be performed"],"writable":true},{"name":"input_token_account","docs":["The user token account for input token"],"writable":true},{"name":"output_token_account","docs":["The user token account for output token"],"writable":true},{"name":"input_vault","docs":["The vault token account for input token"],"writable":true},{"name":"output_vault","docs":["The vault token account for output token"],"writable":true},{"name":"input_token_program","docs":["SPL program for input token transfers"]},{"name":"output_token_program","docs":["SPL program for output token transfers"]},{"name":"input_token_mint","docs":["The mint of input token"]},{"name":"output_token_mint","docs":["The mint of output token"]},{"name":"observation_state","docs":["The program account for the most recent oracle observation"],"writable":true}],"args":[{"name":"amount_in","type":"u64"},{"name":"minimum_amount_out","type":"u64"}]},{"name":"swap_base_output","docs":["Swap the tokens in the pool base output amount","","# Arguments","","* `ctx`- The context of accounts","* `max_amount_in` - input amount prevents excessive slippage","* `amount_out` - amount of output token",""],"discriminator":[55,217,98,86,163,74,180,173],"accounts":[{"name":"payer","docs":["The user performing the swap"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"amm_config","docs":["The factory state to read protocol fees"]},{"name":"pool_state","docs":["The program account of the pool in which the swap will be performed"],"writable":true},{"name":"input_token_account","docs":["The user token account for input token"],"writable":true},{"name":"output_token_account","docs":["The user token account for output token"],"writable":true},{"name":"input_vault","docs":["The vault token account for input token"],"writable":true},{"name":"output_vault","docs":["The vault token account for output token"],"writable":true},{"name":"input_token_program","docs":["SPL program for input token transfers"]},{"name":"output_token_program","docs":["SPL program for output token transfers"]},{"name":"input_token_mint","docs":["The mint of input token"]},{"name":"output_token_mint","docs":["The mint of output token"]},{"name":"observation_state","docs":["The program account for the most recent oracle observation"],"writable":true}],"args":[{"name":"max_amount_in","type":"u64"},{"name":"amount_out","type":"u64"}]},{"name":"update_amm_config","docs":["Updates the owner of the amm config","Must be called by the current owner or admin","","# Arguments","","* `ctx`- The context of accounts","* `trade_fee_rate`- The new trade fee rate of amm config, be set when `param` is 0","* `protocol_fee_rate`- The new protocol fee rate of amm config, be set when `param` is 1","* `fund_fee_rate`- The new fund fee rate of amm config, be set when `param` is 2","* `new_owner`- The config's new owner, be set when `param` is 3","* `new_fund_owner`- The config's new fund owner, be set when `param` is 4","* `param`- The value can be 0 | 1 | 2 | 3 | 4, otherwise will report a error",""],"discriminator":[49,60,174,136,154,28,116,200],"accounts":[{"name":"owner","docs":["The amm config owner or admin"],"signer":true,"address":"GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"},{"name":"amm_config","docs":["Amm config account to be changed"],"writable":true}],"args":[{"name":"param","type":"u8"},{"name":"value","type":"u64"}]},{"name":"update_pool_status","docs":["Update pool status for given value","","# Arguments","","* `ctx`- The context of accounts","* `status` - The value of status",""],"discriminator":[130,87,108,6,46,224,117,123],"accounts":[{"name":"authority","signer":true,"address":"GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"},{"name":"pool_state","writable":true}],"args":[{"name":"status","type":"u8"}]},{"name":"withdraw","docs":["Withdraw lp for token0 and token1","","# Arguments","","* `ctx`- The context of accounts","* `lp_token_amount` - Amount of pool tokens to burn. User receives an output of token a and b based on the percentage of the pool tokens that are returned.","* `minimum_token_0_amount` - Minimum amount of token 0 to receive, prevents excessive slippage","* `minimum_token_1_amount` - Minimum amount of token 1 to receive, prevents excessive slippage",""],"discriminator":[183,18,70,156,148,109,161,34],"accounts":[{"name":"owner","docs":["Pays to mint the position"],"signer":true},{"name":"authority","pda":{"seeds":[{"kind":"const","value":[118,97,117,108,116,95,97,110,100,95,108,112,95,109,105,110,116,95,97,117,116,104,95,115,101,101,100]}]}},{"name":"pool_state","docs":["Pool state account"],"writable":true},{"name":"owner_lp_token","docs":["Owner lp token account"],"writable":true},{"name":"token_0_account","docs":["The token account for receive token_0,"],"writable":true},{"name":"token_1_account","docs":["The token account for receive token_1"],"writable":true},{"name":"token_0_vault","docs":["The address that holds pool tokens for token_0"],"writable":true},{"name":"token_1_vault","docs":["The address that holds pool tokens for token_1"],"writable":true},{"name":"token_program","docs":["token Program"],"address":"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"},{"name":"token_program_2022","docs":["Token program 2022"],"address":"TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"},{"name":"vault_0_mint","docs":["The mint of token_0 vault"]},{"name":"vault_1_mint","docs":["The mint of token_1 vault"]},{"name":"lp_mint","docs":["Pool lp token mint"],"writable":true},{"name":"memo_program","docs":["memo program"],"address":"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"}],"args":[{"name":"lp_token_amount","type":"u64"},{"name":"minimum_token_0_amount","type":"u64"},{"name":"minimum_token_1_amount","type":"u64"}]}],"accounts":[{"name":"AmmConfig","discriminator":[218,244,33,104,203,203,43,111]},{"name":"ObservationState","discriminator":[122,174,197,53,129,9,165,132]},{"name":"Permission","discriminator":[224,83,28,79,10,253,161,28]},{"name":"PoolState","discriminator":[247,237,227,245,215,195,222,70]}],"events":[{"name":"LpChangeEvent","discriminator":[121,163,205,201,57,218,117,60]},{"name":"SwapEvent","discriminator":[64,198,205,232,38,8,113,226]}],"errors":[{"code":6000,"name":"NotApproved","msg":"Not approved"},{"code":6001,"name":"InvalidOwner","msg":"Input account owner is not the program address"},{"code":6002,"name":"EmptySupply","msg":"Input token account empty"},{"code":6003,"name":"InvalidInput","msg":"InvalidInput"},{"code":6004,"name":"IncorrectLpMint","msg":"Address of the provided lp token mint is incorrect"},{"code":6005,"name":"ExceededSlippage","msg":"Exceeds desired slippage limit"},{"code":6006,"name":"ZeroTradingTokens","msg":"Given pool token amount results in zero trading tokens"},{"code":6007,"name":"NotSupportMint","msg":"Not support token_2022 mint extension"},{"code":6008,"name":"InvalidVault","msg":"invaild vault"},{"code":6009,"name":"InitLpAmountTooLess","msg":"Init lp amount is too less(Because 100 amount lp will be locked)"},{"code":6010,"name":"TransferFeeCalculateNotMatch","msg":"TransferFee calculate not match"},{"code":6011,"name":"MathOverflow","msg":"Math overflow"},{"code":6012,"name":"InsufficientVault","msg":"Insufficient vault"},{"code":6013,"name":"InvalidFeeModel","msg":"Invalid fee model"},{"code":6014,"name":"NoFeeCollect","msg":"Fee is zero"}],"types":[{"name":"AmmConfig","docs":["Holds the current owner of the factory"],"type":{"kind":"struct","fields":[{"name":"bump","docs":["Bump to identify PDA"],"type":"u8"},{"name":"disable_create_pool","docs":["Status to control if new pool can be create"],"type":"bool"},{"name":"index","docs":["Config index"],"type":"u16"},{"name":"trade_fee_rate","docs":["The trade fee, denominated in hundredths of a bip (10^-6)"],"type":"u64"},{"name":"protocol_fee_rate","docs":["The protocol fee"],"type":"u64"},{"name":"fund_fee_rate","docs":["The fund fee, denominated in hundredths of a bip (10^-6)"],"type":"u64"},{"name":"create_pool_fee","docs":["Fee for create a new pool"],"type":"u64"},{"name":"protocol_owner","docs":["Address of the protocol fee owner"],"type":"pubkey"},{"name":"fund_owner","docs":["Address of the fund fee owner"],"type":"pubkey"},{"name":"creator_fee_rate","docs":["The pool creator fee, denominated in hundredths of a bip (10^-6)"],"type":"u64"},{"name":"padding","docs":["padding"],"type":{"array":["u64",15]}}]}},{"name":"CreatorFeeOn","type":{"kind":"enum","variants":[{"name":"BothToken"},{"name":"OnlyToken0"},{"name":"OnlyToken1"}]}},{"name":"LpChangeEvent","docs":["Emitted when deposit and withdraw"],"type":{"kind":"struct","fields":[{"name":"pool_id","type":"pubkey"},{"name":"lp_amount_before","type":"u64"},{"name":"token_0_vault_before","docs":["pool vault sub trade fees"],"type":"u64"},{"name":"token_1_vault_before","docs":["pool vault sub trade fees"],"type":"u64"},{"name":"token_0_amount","docs":["calculate result without transfer fee"],"type":"u64"},{"name":"token_1_amount","docs":["calculate result without transfer fee"],"type":"u64"},{"name":"token_0_transfer_fee","type":"u64"},{"name":"token_1_transfer_fee","type":"u64"},{"name":"change_type","type":"u8"}]}},{"name":"Observation","docs":["The element of observations in ObservationState"],"serialization":"bytemuckunsafe","repr":{"kind":"c","packed":true},"type":{"kind":"struct","fields":[{"name":"block_timestamp","docs":["The block timestamp of the observation"],"type":"u64"},{"name":"cumulative_token_0_price_x32","docs":["the cumulative of token0 price during the duration time, Q32.32, the remaining 64 bit for overflow"],"type":"u128"},{"name":"cumulative_token_1_price_x32","docs":["the cumulative of token1 price during the duration time, Q32.32, the remaining 64 bit for overflow"],"type":"u128"}]}},{"name":"ObservationState","serialization":"bytemuckunsafe","repr":{"kind":"c","packed":true},"type":{"kind":"struct","fields":[{"name":"initialized","docs":["Whether the ObservationState is initialized"],"type":"bool"},{"name":"observation_index","docs":["the most-recently updated index of the observations array"],"type":"u16"},{"name":"pool_id","type":"pubkey"},{"name":"observations","docs":["observation array"],"type":{"array":[{"defined":{"name":"Observation"}},100]}},{"name":"padding","docs":["padding for feature update"],"type":{"array":["u64",4]}}]}},{"name":"Permission","docs":["Holds the current owner of the factory"],"type":{"kind":"struct","fields":[{"name":"authority","docs":["authority"],"type":"pubkey"},{"name":"padding","docs":["padding"],"type":{"array":["u64",30]}}]}},{"name":"PoolState","serialization":"bytemuckunsafe","repr":{"kind":"c","packed":true},"type":{"kind":"struct","fields":[{"name":"amm_config","docs":["Which config the pool belongs"],"type":"pubkey"},{"name":"pool_creator","docs":["pool creator"],"type":"pubkey"},{"name":"token_0_vault","docs":["Token A"],"type":"pubkey"},{"name":"token_1_vault","docs":["Token B"],"type":"pubkey"},{"name":"lp_mint","docs":["Pool tokens are issued when A or B tokens are deposited.","Pool tokens can be withdrawn back to the original A or B token."],"type":"pubkey"},{"name":"token_0_mint","docs":["Mint information for token A"],"type":"pubkey"},{"name":"token_1_mint","docs":["Mint information for token B"],"type":"pubkey"},{"name":"token_0_program","docs":["token_0 program"],"type":"pubkey"},{"name":"token_1_program","docs":["token_1 program"],"type":"pubkey"},{"name":"observation_key","docs":["observation account to store oracle data"],"type":"pubkey"},{"name":"auth_bump","type":"u8"},{"name":"status","docs":["Bitwise representation of the state of the pool","bit0, 1: disable deposit(value is 1), 0: normal","bit1, 1: disable withdraw(value is 2), 0: normal","bit2, 1: disable swap(value is 4), 0: normal"],"type":"u8"},{"name":"lp_mint_decimals","type":"u8"},{"name":"mint_0_decimals","docs":["mint0 and mint1 decimals"],"type":"u8"},{"name":"mint_1_decimals","type":"u8"},{"name":"lp_supply","docs":["True circulating supply without burns and lock ups"],"type":"u64"},{"name":"protocol_fees_token_0","docs":["The amounts of token_0 and token_1 that are owed to the liquidity provider."],"type":"u64"},{"name":"protocol_fees_token_1","type":"u64"},{"name":"fund_fees_token_0","type":"u64"},{"name":"fund_fees_token_1","type":"u64"},{"name":"open_time","docs":["The timestamp allowed for swap in the pool."],"type":"u64"},{"name":"recent_epoch","docs":["recent epoch"],"type":"u64"},{"name":"creator_fee_on","docs":["Creator fee collect mode","0: both token_0 and token_1 can be used as trade fees. It depends on what the input token is when swapping","1: only token_0 as trade fee","2: only token_1 as trade fee"],"type":"u8"},{"name":"enable_creator_fee","type":"bool"},{"name":"padding1","type":{"array":["u8",6]}},{"name":"creator_fees_token_0","type":"u64"},{"name":"creator_fees_token_1","type":"u64"},{"name":"padding","docs":["padding for future updates"],"type":{"array":["u64",28]}}]}},{"name":"SwapEvent","docs":["Emitted when swap"],"type":{"kind":"struct","fields":[{"name":"pool_id","type":"pubkey"},{"name":"input_vault_before","docs":["pool vault sub trade fees"],"type":"u64"},{"name":"output_vault_before","docs":["pool vault sub trade fees"],"type":"u64"},{"name":"input_amount","docs":["calculate result without transfer fee"],"type":"u64"},{"name":"output_amount","docs":["calculate result without transfer fee"],"type":"u64"},{"name":"input_transfer_fee","type":"u64"},{"name":"output_transfer_fee","type":"u64"},{"name":"base_input","type":"bool"},{"name":"input_mint","type":"pubkey"},{"name":"output_mint","type":"pubkey"},{"name":"trade_fee","type":"u64"},{"name":"creator_fee","docs":["Amount of fee tokens going to creator"],"type":"u64"},{"name":"creator_fee_on_input","type":"bool"}]}}]}