{
  "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"
          }
        ]
      }
    }
  ]
}
