{
  "address": "LanMV9sAd7wArD4vJFi2qDdfnVhFxYSUg6eADduJ3uj",
  "metadata": {
    "name": "raydium_launchpad",
    "version": "0.2.0",
    "spec": "0.1.0",
    "description": "Created with Anchor"
  },
  "instructions": [
    {
      "name": "buy_exact_in",
      "docs": [
        "Use the given amount of quote tokens to purchase base tokens.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `amount_in` - Amount of quote token to purchase",
        "* `minimum_amount_out` - Minimum amount of base token to receive (slippage protection)",
        "* `share_fee_rate` - Fee rate for the share",
        ""
      ],
      "discriminator": [
        250,
        234,
        13,
        123,
        213,
        156,
        19,
        236
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The user performing the swap operation",
            "Must sign the transaction and pay for fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Used to read protocol fee rates and curve type"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform-wide settings",
            "Used to read platform fee rate"
          ]
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account where the swap will be performed",
            "Contains current pool parameters and balances"
          ],
          "writable": true
        },
        {
          "name": "user_base_token",
          "docs": [
            "The user's token account for base tokens (tokens being bought)",
            "Will receive the output tokens after the swap"
          ],
          "writable": true
        },
        {
          "name": "user_quote_token",
          "docs": [
            "The user's token account for quote tokens (tokens being sold)",
            "Will be debited for the input amount"
          ],
          "writable": true
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be debited to send tokens to the user"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will receive the input tokens from the user"
          ],
          "writable": true
        },
        {
          "name": "base_token_mint",
          "docs": [
            "The mint of the base token",
            "Used for transfer fee calculations if applicable"
          ]
        },
        {
          "name": "quote_token_mint",
          "docs": [
            "The mint of the quote token"
          ]
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for base token transfers"
          ]
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for quote token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "amount_in",
          "type": "u64"
        },
        {
          "name": "minimum_amount_out",
          "type": "u64"
        },
        {
          "name": "share_fee_rate",
          "type": "u64"
        }
      ]
    },
    {
      "name": "buy_exact_out",
      "docs": [
        "Use quote tokens to purchase the given amount of base tokens.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `amount_out` - Amount of base token to receive",
        "* `maximum_amount_in` - Maximum amount of quote token to purchase (slippage protection)",
        "* `share_fee_rate` - Fee rate for the share"
      ],
      "discriminator": [
        24,
        211,
        116,
        40,
        105,
        3,
        153,
        56
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The user performing the swap operation",
            "Must sign the transaction and pay for fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Used to read protocol fee rates and curve type"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform-wide settings",
            "Used to read platform fee rate"
          ]
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account where the swap will be performed",
            "Contains current pool parameters and balances"
          ],
          "writable": true
        },
        {
          "name": "user_base_token",
          "docs": [
            "The user's token account for base tokens (tokens being bought)",
            "Will receive the output tokens after the swap"
          ],
          "writable": true
        },
        {
          "name": "user_quote_token",
          "docs": [
            "The user's token account for quote tokens (tokens being sold)",
            "Will be debited for the input amount"
          ],
          "writable": true
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be debited to send tokens to the user"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will receive the input tokens from the user"
          ],
          "writable": true
        },
        {
          "name": "base_token_mint",
          "docs": [
            "The mint of the base token",
            "Used for transfer fee calculations if applicable"
          ]
        },
        {
          "name": "quote_token_mint",
          "docs": [
            "The mint of the quote token"
          ]
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for base token transfers"
          ]
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for quote token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "amount_out",
          "type": "u64"
        },
        {
          "name": "maximum_amount_in",
          "type": "u64"
        },
        {
          "name": "share_fee_rate",
          "type": "u64"
        }
      ]
    },
    {
      "name": "claim_creator_fee",
      "docs": [
        "Claim the fee from the exclusive creator fee vault.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        26,
        97,
        138,
        203,
        132,
        171,
        141,
        252
      ],
      "accounts": [
        {
          "name": "creator",
          "docs": [
            "The pool creator"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "fee_vault_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  99,
                  114,
                  101,
                  97,
                  116,
                  111,
                  114,
                  95,
                  102,
                  101,
                  101,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "creator_fee_vault",
          "docs": [
            "The creator fee vault"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "creator"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "recipient_token_account",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "creator"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "quote_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": "quote_mint",
          "docs": [
            "The mint for the quote token"
          ]
        },
        {
          "name": "token_program",
          "docs": [
            "SPL Token program for the quote token"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Required for associated token program"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": []
    },
    {
      "name": "claim_platform_fee",
      "docs": [
        "Claim platform fee",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        156,
        39,
        208,
        135,
        76,
        237,
        61,
        72
      ],
      "accounts": [
        {
          "name": "platform_fee_wallet",
          "docs": [
            "Only the wallet stored in platform_config can collect platform fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault and mint operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true
        },
        {
          "name": "platform_config",
          "docs": [
            "The platform config account"
          ]
        },
        {
          "name": "quote_vault",
          "writable": true
        },
        {
          "name": "recipient_token_account",
          "docs": [
            "The address that receives the collected quote token fees"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "platform_fee_wallet"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "quote_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": "quote_mint",
          "docs": [
            "The mint of quote token vault"
          ]
        },
        {
          "name": "token_program",
          "docs": [
            "SPL program for input token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Required for associated token program"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": []
    },
    {
      "name": "claim_platform_fee_from_vault",
      "docs": [
        "Claim the fee from the exclusive platform fee vault.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        117,
        241,
        198,
        168,
        248,
        218,
        80,
        29
      ],
      "accounts": [
        {
          "name": "platform_fee_wallet",
          "docs": [
            "Only the wallet stored in platform_config can collect platform fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "fee_vault_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  97,
                  116,
                  102,
                  111,
                  114,
                  109,
                  95,
                  102,
                  101,
                  101,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "platform_config",
          "docs": [
            "The platform config account"
          ]
        },
        {
          "name": "platform_fee_vault",
          "docs": [
            "The platform fee vault"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "platform_config"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "recipient_token_account",
          "docs": [
            "The address that receives the collected quote token fees"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "platform_fee_wallet"
              },
              {
                "kind": "account",
                "path": "token_program"
              },
              {
                "kind": "account",
                "path": "quote_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": "quote_mint",
          "docs": [
            "The mint of quote token vault"
          ]
        },
        {
          "name": "token_program",
          "docs": [
            "SPL program for input token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Required for associated token program"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": []
    },
    {
      "name": "claim_vested_token",
      "docs": [
        "Claim vested token",
        "# Arguments"
      ],
      "discriminator": [
        49,
        33,
        104,
        30,
        189,
        157,
        79,
        35
      ],
      "accounts": [
        {
          "name": "beneficiary",
          "docs": [
            "The beneficiary of the vesting account"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault and mint operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true
        },
        {
          "name": "vesting_record",
          "docs": [
            "The vesting record account"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  118,
                  101,
                  115,
                  116,
                  105,
                  110,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "pool_state"
              },
              {
                "kind": "account",
                "path": "beneficiary"
              }
            ]
          }
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be debited to send tokens to the user"
          ],
          "writable": true
        },
        {
          "name": "user_base_token",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "beneficiary"
              },
              {
                "kind": "account",
                "path": "base_token_program"
              },
              {
                "kind": "account",
                "path": "base_token_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": "base_token_mint",
          "docs": [
            "The mint for the base token (token being sold)",
            "Created in this instruction with specified decimals"
          ]
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for the base token",
            "Must be the standard Token program"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Required for associated token program"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        }
      ],
      "args": []
    },
    {
      "name": "collect_fee",
      "docs": [
        "Collects accumulated fees from the pool",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        60,
        173,
        247,
        103,
        4,
        93,
        130,
        48
      ],
      "accounts": [
        {
          "name": "owner",
          "docs": [
            "Only protocol_fee_owner saved in global_config can collect protocol fee now"
          ],
          "signer": true
        },
        {
          "name": "authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  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": "global_config",
          "docs": [
            "Global config account stores owner"
          ]
        },
        {
          "name": "quote_vault",
          "docs": [
            "The address that holds pool tokens for quote token"
          ],
          "writable": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint of quote token vault"
          ]
        },
        {
          "name": "recipient_token_account",
          "docs": [
            "The address that receives the collected quote token fees"
          ],
          "writable": true
        },
        {
          "name": "token_program",
          "docs": [
            "SPL program for input token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "collect_migrate_fee",
      "docs": [
        "Collects  migrate fees from the pool",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        255,
        186,
        150,
        223,
        235,
        118,
        201,
        186
      ],
      "accounts": [
        {
          "name": "owner",
          "docs": [
            "Only migrate_fee_owner saved in global_config can collect migrate fee now"
          ],
          "signer": true
        },
        {
          "name": "authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  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": "global_config",
          "docs": [
            "Global config account stores owner"
          ]
        },
        {
          "name": "quote_vault",
          "docs": [
            "The address that holds pool tokens for quote token"
          ],
          "writable": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint of quote token vault"
          ]
        },
        {
          "name": "recipient_token_account",
          "docs": [
            "The address that receives the collected quote token fees"
          ],
          "writable": true
        },
        {
          "name": "token_program",
          "docs": [
            "SPL program for input token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        }
      ],
      "args": []
    },
    {
      "name": "create_config",
      "docs": [
        "Creates a new configuration",
        "# Arguments",
        "",
        "* `ctx` - The accounts needed by instruction",
        "* `curve_type` - The type of bonding curve (0: ConstantProduct)",
        "* `index` - The index of config, there may be multiple config with the same curve type.",
        "* `trade_fee_rate` - Trade fee rate, must be less than RATE_DENOMINATOR_VALUE",
        ""
      ],
      "discriminator": [
        201,
        207,
        243,
        114,
        75,
        111,
        47,
        189
      ],
      "accounts": [
        {
          "name": "owner",
          "docs": [
            "The protocol owner/admin account",
            "Must match the predefined admin address",
            "Has authority to create and modify protocol configurations"
          ],
          "writable": true,
          "signer": true,
          "address": "GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account that stores protocol-wide settings",
            "PDA generated using GLOBAL_CONFIG_SEED, quote token mint, and curve type",
            "Stores fee rates and protocol parameters"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  103,
                  108,
                  111,
                  98,
                  97,
                  108,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "quote_token_mint"
              },
              {
                "kind": "arg",
                "path": "curve_type"
              },
              {
                "kind": "arg",
                "path": "index"
              }
            ]
          }
        },
        {
          "name": "quote_token_mint",
          "docs": [
            "The mint address of the quote token (token used for buying)",
            "This will be the standard token used for all pools with this config"
          ]
        },
        {
          "name": "protocol_fee_owner",
          "docs": [
            "Account that will receive protocol fees"
          ]
        },
        {
          "name": "migrate_fee_owner",
          "docs": [
            "Account that will receive migrate fees"
          ]
        },
        {
          "name": "migrate_to_amm_wallet",
          "docs": [
            "The control wallet address for migrating to amm"
          ]
        },
        {
          "name": "migrate_to_cpswap_wallet",
          "docs": [
            "The control wallet address for migrating to cpswap"
          ]
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "curve_type",
          "type": "u8"
        },
        {
          "name": "index",
          "type": "u16"
        },
        {
          "name": "migrate_fee",
          "type": "u64"
        },
        {
          "name": "trade_fee_rate",
          "type": "u64"
        }
      ]
    },
    {
      "name": "create_platform_config",
      "docs": [
        "Create platform config account",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "# Fields",
        "* `fee_rate` - Fee rate of the platform",
        "* `name` - Name of the platform",
        "* `web` - Website of the platform",
        "* `img` - Image link of the platform",
        ""
      ],
      "discriminator": [
        176,
        90,
        196,
        175,
        253,
        113,
        220,
        20
      ],
      "accounts": [
        {
          "name": "platform_admin",
          "docs": [
            "The account paying for the initialization costs"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "platform_fee_wallet"
        },
        {
          "name": "platform_nft_wallet"
        },
        {
          "name": "platform_config",
          "docs": [
            "The platform config account"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  97,
                  116,
                  102,
                  111,
                  114,
                  109,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "platform_admin"
              }
            ]
          }
        },
        {
          "name": "cpswap_config"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "transfer_fee_extension_authority"
        },
        {
          "name": "platform_vesting_wallet"
        }
      ],
      "args": [
        {
          "name": "platform_params",
          "type": {
            "defined": {
              "name": "PlatformParams"
            }
          }
        }
      ]
    },
    {
      "name": "create_platform_vesting_account",
      "docs": [
        "Create vesting account",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `share` - The share amount of base token to be vested",
        ""
      ],
      "discriminator": [
        146,
        71,
        173,
        69,
        98,
        19,
        15,
        106
      ],
      "accounts": [
        {
          "name": "platform_vesting_wallet",
          "docs": [
            "The account paying for the initialization costs",
            "This can be any account with sufficient SOL to cover the transaction"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "beneficiary",
          "docs": [
            "The beneficiary is used to receive the allocated linear release of tokens.",
            "Once this account is set, it cannot be modified, so please ensure the validity of this account,",
            "otherwise, the unlocked tokens will not be claimable."
          ],
          "writable": true
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform config account to be changed"
          ]
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account"
          ],
          "writable": true
        },
        {
          "name": "platform_vesting_record",
          "docs": [
            "The vesting record account"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  118,
                  101,
                  115,
                  116,
                  105,
                  110,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "pool_state"
              },
              {
                "kind": "account",
                "path": "beneficiary"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": []
    },
    {
      "name": "create_vesting_account",
      "docs": [
        "Create vesting account",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `share` - The share amount of base token to be vested",
        ""
      ],
      "discriminator": [
        129,
        178,
        2,
        13,
        217,
        172,
        230,
        218
      ],
      "accounts": [
        {
          "name": "creator",
          "docs": [
            "The account paying for the initialization costs",
            "This can be any account with sufficient SOL to cover the transaction"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "beneficiary",
          "docs": [
            "The beneficiary is used to receive the allocated linear release of tokens.",
            "Once this account is set, it cannot be modified, so please ensure the validity of this account,",
            "otherwise, the unlocked tokens will not be claimable."
          ],
          "writable": true
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account"
          ],
          "writable": true
        },
        {
          "name": "vesting_record",
          "docs": [
            "The vesting record account"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  118,
                  101,
                  115,
                  116,
                  105,
                  110,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "pool_state"
              },
              {
                "kind": "account",
                "path": "beneficiary"
              }
            ]
          }
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "share_amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initialize",
      "docs": [
        "Initializes a new trading pool",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts containing pool and token information",
        ""
      ],
      "discriminator": [
        175,
        175,
        109,
        31,
        13,
        152,
        155,
        237
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The account paying for the initialization costs",
            "This can be any account with sufficient SOL to cover the transaction"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "creator"
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Includes settings like quote token mint and fee parameters"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform info",
            "Includes settings like the fee_rate, name, web, img of the platform"
          ]
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault and mint operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              },
              {
                "kind": "account",
                "path": "base_mint"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "base_mint",
          "docs": [
            "The mint for the base token (token being sold)",
            "Created in this instruction with specified decimals"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint for the quote token (token used to buy)",
            "Must match the quote_mint specified in global config"
          ]
        },
        {
          "name": "base_vault",
          "docs": [
            "Token account that holds the pool's base tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "base_mint"
              }
            ]
          }
        },
        {
          "name": "quote_vault",
          "docs": [
            "Token account that holds the pool's quote tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "metadata_account",
          "docs": [
            "Account to store the base token's metadata",
            "Created using Metaplex metadata program"
          ],
          "writable": true
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for the base token",
            "Must be the standard Token program"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for the quote token"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "metadata_program",
          "docs": [
            "Metaplex Token Metadata program",
            "Used to create metadata for the base token"
          ],
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent_program",
          "docs": [
            "Required for rent exempt calculations"
          ],
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "base_mint_param",
          "type": {
            "defined": {
              "name": "MintParams"
            }
          }
        },
        {
          "name": "curve_param",
          "type": {
            "defined": {
              "name": "CurveParams"
            }
          }
        },
        {
          "name": "vesting_param",
          "type": {
            "defined": {
              "name": "VestingParams"
            }
          }
        }
      ]
    },
    {
      "name": "initialize_v2",
      "docs": [
        "Initializes a new trading pool",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts containing pool and token information",
        ""
      ],
      "discriminator": [
        67,
        153,
        175,
        39,
        218,
        16,
        38,
        32
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The account paying for the initialization costs",
            "This can be any account with sufficient SOL to cover the transaction"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "creator"
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Includes settings like quote token mint and fee parameters"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform info",
            "Includes settings like the fee_rate, name, web, img of the platform"
          ]
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault and mint operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              },
              {
                "kind": "account",
                "path": "base_mint"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "base_mint",
          "docs": [
            "The mint for the base token (token being sold)",
            "Created in this instruction with specified decimals"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint for the quote token (token used to buy)",
            "Must match the quote_mint specified in global config"
          ]
        },
        {
          "name": "base_vault",
          "docs": [
            "Token account that holds the pool's base tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "base_mint"
              }
            ]
          }
        },
        {
          "name": "quote_vault",
          "docs": [
            "Token account that holds the pool's quote tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "metadata_account",
          "docs": [
            "Account to store the base token's metadata",
            "Created using Metaplex metadata program"
          ],
          "writable": true
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for the base token",
            "Must be the standard Token program"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for the quote token"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "metadata_program",
          "docs": [
            "Metaplex Token Metadata program",
            "Used to create metadata for the base token"
          ],
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent_program",
          "docs": [
            "Required for rent exempt calculations"
          ],
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "base_mint_param",
          "type": {
            "defined": {
              "name": "MintParams"
            }
          }
        },
        {
          "name": "curve_param",
          "type": {
            "defined": {
              "name": "CurveParams"
            }
          }
        },
        {
          "name": "vesting_param",
          "type": {
            "defined": {
              "name": "VestingParams"
            }
          }
        },
        {
          "name": "amm_fee_on",
          "type": {
            "defined": {
              "name": "AmmCreatorFeeOn"
            }
          }
        }
      ]
    },
    {
      "name": "initialize_with_token_2022",
      "docs": [
        "Initializes a new trading pool with base token belongs to spl-token-2022,",
        "pool created by this instruction must be migrated to cpswap after fundraising ends, i.e., curve_param.migrate_type = 1",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts containing pool and token information",
        ""
      ],
      "discriminator": [
        37,
        190,
        126,
        222,
        44,
        154,
        171,
        17
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The account paying for the initialization costs",
            "This can be any account with sufficient SOL to cover the transaction"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "creator"
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Includes settings like quote token mint and fee parameters"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform info",
            "Includes settings like the fee_rate, name, web, img of the platform"
          ]
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault and mint operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              },
              {
                "kind": "account",
                "path": "base_mint"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "base_mint",
          "docs": [
            "The mint for the base token (token being sold)",
            "Created in this instruction with specified decimals"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint for the quote token (token used to buy)",
            "Must match the quote_mint specified in global config"
          ]
        },
        {
          "name": "base_vault",
          "docs": [
            "Token account that holds the pool's base tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "base_mint"
              }
            ]
          }
        },
        {
          "name": "quote_vault",
          "docs": [
            "Token account that holds the pool's quote tokens",
            "PDA generated using POOL_VAULT_SEED"
          ],
          "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": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for the base token"
          ],
          "address": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for the quote token"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "base_mint_param",
          "type": {
            "defined": {
              "name": "MintParams"
            }
          }
        },
        {
          "name": "curve_param",
          "type": {
            "defined": {
              "name": "CurveParams"
            }
          }
        },
        {
          "name": "vesting_param",
          "type": {
            "defined": {
              "name": "VestingParams"
            }
          }
        },
        {
          "name": "amm_fee_on",
          "type": {
            "defined": {
              "name": "AmmCreatorFeeOn"
            }
          }
        },
        {
          "name": "transfer_fee_extension_param",
          "type": {
            "option": {
              "defined": {
                "name": "TransferFeeExtensionParams"
              }
            }
          }
        }
      ]
    },
    {
      "name": "migrate_to_amm",
      "docs": [
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        207,
        82,
        192,
        145,
        254,
        207,
        145,
        223
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "Only migrate_to_amm_wallet can migrate to cpswap pool",
            "This signer must match the migrate_to_amm_wallet saved in global_config"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "base_mint",
          "docs": [
            "The mint for the base token (token being sold)"
          ]
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint for the quote token (token used to buy)"
          ]
        },
        {
          "name": "openbook_program",
          "address": "srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"
        },
        {
          "name": "market",
          "docs": [
            "Account created and asigned to openbook_program but not been initialized"
          ],
          "writable": true
        },
        {
          "name": "request_queue",
          "docs": [
            "Account created and asigned to openbook_program but not been initialized"
          ],
          "writable": true
        },
        {
          "name": "event_queue",
          "docs": [
            "Account created and asigned to openbook_program but not been initialized"
          ],
          "writable": true
        },
        {
          "name": "bids",
          "docs": [
            "Account created and asigned to openbook_program but not been initialized"
          ],
          "writable": true
        },
        {
          "name": "asks",
          "docs": [
            "Account created and asigned to openbook_program but not been initialized"
          ],
          "writable": true
        },
        {
          "name": "market_vault_signer"
        },
        {
          "name": "market_base_vault",
          "docs": [
            "Token account that holds the market's base tokens"
          ],
          "writable": true
        },
        {
          "name": "market_quote_vault",
          "docs": [
            "Token account that holds the market's quote tokens"
          ],
          "writable": true
        },
        {
          "name": "amm_program",
          "address": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"
        },
        {
          "name": "amm_pool",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  97,
                  109,
                  109,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  97,
                  109,
                  109,
                  32,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_open_orders",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  111,
                  112,
                  101,
                  110,
                  95,
                  111,
                  114,
                  100,
                  101,
                  114,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_lp_mint",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  108,
                  112,
                  95,
                  109,
                  105,
                  110,
                  116,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_base_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  99,
                  111,
                  105,
                  110,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_quote_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  112,
                  99,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_target_orders",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "account",
                "path": "amm_program"
              },
              {
                "kind": "account",
                "path": "market"
              },
              {
                "kind": "const",
                "value": [
                  116,
                  97,
                  114,
                  103,
                  101,
                  116,
                  95,
                  97,
                  115,
                  115,
                  111,
                  99,
                  105,
                  97,
                  116,
                  101,
                  100,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_config",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  97,
                  109,
                  109,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103,
                  95,
                  97,
                  99,
                  99,
                  111,
                  117,
                  110,
                  116,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "amm_program"
            }
          }
        },
        {
          "name": "amm_create_fee_destination",
          "writable": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              },
              {
                "kind": "account",
                "path": "base_mint"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global config account stores owner"
          ]
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be fully drained during migration"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will be fully drained during migration"
          ],
          "writable": true
        },
        {
          "name": "pool_lp_token",
          "writable": true
        },
        {
          "name": "spl_token_program",
          "docs": [
            "SPL Token program for the base token",
            "Must be the standard Token program"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Program to create an ATA for receiving fee NFT"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent_program",
          "docs": [
            "Required for rent exempt calculations"
          ],
          "address": "SysvarRent111111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "base_lot_size",
          "type": "u64"
        },
        {
          "name": "quote_lot_size",
          "type": "u64"
        },
        {
          "name": "market_vault_signer_nonce",
          "type": "u8"
        }
      ]
    },
    {
      "name": "migrate_to_cpswap",
      "docs": [
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        ""
      ],
      "discriminator": [
        136,
        92,
        200,
        103,
        28,
        218,
        144,
        140
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "Only migrate_to_cpswap_wallet can migrate to cpswap pool",
            "This signer must match the migrate_to_cpswap_wallet saved in global_config"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "base_mint",
          "docs": [
            "The mint for the base token (token being sold)"
          ],
          "writable": true
        },
        {
          "name": "quote_mint",
          "docs": [
            "The mint for the quote token (token used to buy)"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform-wide settings",
            "Used to read platform fee rate"
          ]
        },
        {
          "name": "cpswap_program",
          "address": "CPMMoo8L3F4NbTegBCKVNunggL7H1ZpdTHKxQB5qKP1C"
        },
        {
          "name": "cpswap_pool",
          "docs": [
            "PDA account:",
            "seeds = [",
            "b\"pool\",",
            "cpswap_config.key().as_ref(),",
            "token_0_mint.key().as_ref(),",
            "token_1_mint.key().as_ref(),",
            "],",
            "seeds::program = cpswap_program,",
            "",
            "Or random account: must be signed by cli"
          ],
          "writable": true
        },
        {
          "name": "cpswap_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
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "cpswap_program"
            }
          }
        },
        {
          "name": "cpswap_lp_mint",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  108,
                  112,
                  95,
                  109,
                  105,
                  110,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "cpswap_pool"
              }
            ],
            "program": {
              "kind": "account",
              "path": "cpswap_program"
            }
          }
        },
        {
          "name": "cpswap_base_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "cpswap_pool"
              },
              {
                "kind": "account",
                "path": "base_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "cpswap_program"
            }
          }
        },
        {
          "name": "cpswap_quote_vault",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108,
                  95,
                  118,
                  97,
                  117,
                  108,
                  116
                ]
              },
              {
                "kind": "account",
                "path": "cpswap_pool"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ],
            "program": {
              "kind": "account",
              "path": "cpswap_program"
            }
          }
        },
        {
          "name": "cpswap_config"
        },
        {
          "name": "cpswap_create_pool_fee",
          "writable": true
        },
        {
          "name": "cpswap_observation",
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  111,
                  98,
                  115,
                  101,
                  114,
                  118,
                  97,
                  116,
                  105,
                  111,
                  110
                ]
              },
              {
                "kind": "account",
                "path": "cpswap_pool"
              }
            ],
            "program": {
              "kind": "account",
              "path": "cpswap_program"
            }
          }
        },
        {
          "name": "lock_program",
          "address": "LockrWmn6K5twhz3y9w1dQERbmgSaRkfnTeTKbpofwE"
        },
        {
          "name": "lock_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  108,
                  111,
                  99,
                  107,
                  95,
                  99,
                  112,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ],
            "program": {
              "kind": "account",
              "path": "lock_program"
            }
          }
        },
        {
          "name": "lock_lp_vault",
          "writable": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "pool_state",
          "docs": [
            "Account that stores the pool's state and parameters",
            "PDA generated using POOL_SEED and both token mints"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  111,
                  111,
                  108
                ]
              },
              {
                "kind": "account",
                "path": "base_mint"
              },
              {
                "kind": "account",
                "path": "quote_mint"
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global config account stores owner"
          ]
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be fully drained during migration"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will be fully drained during migration"
          ],
          "writable": true
        },
        {
          "name": "pool_lp_token",
          "writable": true
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for the base token",
            "Must be the standard Token program"
          ]
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for the quote token"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "associated_token_program",
          "docs": [
            "Program to create an ATA for receiving fee NFT"
          ],
          "address": "ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"
        },
        {
          "name": "system_program",
          "docs": [
            "Required for account creation"
          ],
          "address": "11111111111111111111111111111111"
        },
        {
          "name": "rent_program",
          "docs": [
            "Required for rent exempt calculations"
          ],
          "address": "SysvarRent111111111111111111111111111111111"
        },
        {
          "name": "metadata_program",
          "docs": [
            "Program to create NFT metadata accunt"
          ],
          "address": "metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"
        }
      ],
      "args": []
    },
    {
      "name": "remove_platform_curve_param",
      "docs": [
        "Remove platform launch param",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `index` - The index of the curve param to remove",
        ""
      ],
      "discriminator": [
        27,
        30,
        62,
        169,
        93,
        224,
        24,
        145
      ],
      "accounts": [
        {
          "name": "platform_admin",
          "docs": [
            "The account paying for the initialization costs"
          ],
          "signer": true
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform config account to be changed"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  97,
                  116,
                  102,
                  111,
                  114,
                  109,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "platform_admin"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u8"
        }
      ]
    },
    {
      "name": "sell_exact_in",
      "docs": [
        "Use the given amount of base tokens to sell for quote tokens.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `amount_in` - Amount of base token to sell",
        "* `minimum_amount_out` - Minimum amount of quote token to receive (slippage protection)",
        "* `share_fee_rate` - Fee rate for the share",
        ""
      ],
      "discriminator": [
        149,
        39,
        222,
        155,
        211,
        124,
        152,
        26
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The user performing the swap operation",
            "Must sign the transaction and pay for fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Used to read protocol fee rates and curve type"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform-wide settings",
            "Used to read platform fee rate"
          ]
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account where the swap will be performed",
            "Contains current pool parameters and balances"
          ],
          "writable": true
        },
        {
          "name": "user_base_token",
          "docs": [
            "The user's token account for base tokens (tokens being bought)",
            "Will receive the output tokens after the swap"
          ],
          "writable": true
        },
        {
          "name": "user_quote_token",
          "docs": [
            "The user's token account for quote tokens (tokens being sold)",
            "Will be debited for the input amount"
          ],
          "writable": true
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be debited to send tokens to the user"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will receive the input tokens from the user"
          ],
          "writable": true
        },
        {
          "name": "base_token_mint",
          "docs": [
            "The mint of the base token",
            "Used for transfer fee calculations if applicable"
          ]
        },
        {
          "name": "quote_token_mint",
          "docs": [
            "The mint of the quote token"
          ]
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for base token transfers"
          ]
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for quote token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "amount_in",
          "type": "u64"
        },
        {
          "name": "minimum_amount_out",
          "type": "u64"
        },
        {
          "name": "share_fee_rate",
          "type": "u64"
        }
      ]
    },
    {
      "name": "sell_exact_out",
      "docs": [
        "Sell base tokens for the given amount of quote tokens.",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `amount_out` - Amount of quote token to receive",
        "* `maximum_amount_in` - Maximum amount of base token to purchase (slippage protection)",
        "* `share_fee_rate` - Fee rate for the share",
        ""
      ],
      "discriminator": [
        95,
        200,
        71,
        34,
        8,
        9,
        11,
        166
      ],
      "accounts": [
        {
          "name": "payer",
          "docs": [
            "The user performing the swap operation",
            "Must sign the transaction and pay for fees"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "authority",
          "docs": [
            "PDA that acts as the authority for pool vault operations",
            "Generated using AUTH_SEED"
          ],
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  118,
                  97,
                  117,
                  108,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  95,
                  115,
                  101,
                  101,
                  100
                ]
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Used to read protocol fee rates and curve type"
          ]
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform configuration account containing platform-wide settings",
            "Used to read platform fee rate"
          ]
        },
        {
          "name": "pool_state",
          "docs": [
            "The pool state account where the swap will be performed",
            "Contains current pool parameters and balances"
          ],
          "writable": true
        },
        {
          "name": "user_base_token",
          "docs": [
            "The user's token account for base tokens (tokens being bought)",
            "Will receive the output tokens after the swap"
          ],
          "writable": true
        },
        {
          "name": "user_quote_token",
          "docs": [
            "The user's token account for quote tokens (tokens being sold)",
            "Will be debited for the input amount"
          ],
          "writable": true
        },
        {
          "name": "base_vault",
          "docs": [
            "The pool's vault for base tokens",
            "Will be debited to send tokens to the user"
          ],
          "writable": true
        },
        {
          "name": "quote_vault",
          "docs": [
            "The pool's vault for quote tokens",
            "Will receive the input tokens from the user"
          ],
          "writable": true
        },
        {
          "name": "base_token_mint",
          "docs": [
            "The mint of the base token",
            "Used for transfer fee calculations if applicable"
          ]
        },
        {
          "name": "quote_token_mint",
          "docs": [
            "The mint of the quote token"
          ]
        },
        {
          "name": "base_token_program",
          "docs": [
            "SPL Token program for base token transfers"
          ]
        },
        {
          "name": "quote_token_program",
          "docs": [
            "SPL Token program for quote token transfers"
          ],
          "address": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
        },
        {
          "name": "event_authority",
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  95,
                  95,
                  101,
                  118,
                  101,
                  110,
                  116,
                  95,
                  97,
                  117,
                  116,
                  104,
                  111,
                  114,
                  105,
                  116,
                  121
                ]
              }
            ]
          }
        },
        {
          "name": "program"
        }
      ],
      "args": [
        {
          "name": "amount_out",
          "type": "u64"
        },
        {
          "name": "maximum_amount_in",
          "type": "u64"
        },
        {
          "name": "share_fee_rate",
          "type": "u64"
        }
      ]
    },
    {
      "name": "update_config",
      "docs": [
        "Updates configuration parameters",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `param` - Parameter to update:",
        "- 0: Update trade_fee_rate",
        "- 1: Update fee owner",
        "* `value` - New value for the selected parameter",
        ""
      ],
      "discriminator": [
        29,
        158,
        252,
        191,
        10,
        83,
        219,
        99
      ],
      "accounts": [
        {
          "name": "owner",
          "docs": [
            "The global config owner or admin"
          ],
          "signer": true,
          "address": "GThUX1Atko4tqhN2NaiTazWSeFWMuiUvfFnyJyUghFMJ"
        },
        {
          "name": "global_config",
          "docs": [
            "Global config account to be changed"
          ],
          "writable": true
        }
      ],
      "args": [
        {
          "name": "param",
          "type": "u8"
        },
        {
          "name": "value",
          "type": "u64"
        }
      ]
    },
    {
      "name": "update_platform_config",
      "docs": [
        "Update platform config",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `param` - Parameter to update",
        ""
      ],
      "discriminator": [
        195,
        60,
        76,
        129,
        146,
        45,
        67,
        143
      ],
      "accounts": [
        {
          "name": "platform_admin",
          "docs": [
            "The account paying for the initialization costs"
          ],
          "signer": true
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform config account to be changed"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  97,
                  116,
                  102,
                  111,
                  114,
                  109,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "platform_admin"
              }
            ]
          }
        }
      ],
      "args": [
        {
          "name": "param",
          "type": {
            "defined": {
              "name": "PlatformConfigParam"
            }
          }
        }
      ]
    },
    {
      "name": "update_platform_curve_param",
      "docs": [
        "Update platform launch param",
        "# Arguments",
        "",
        "* `ctx` - The context of accounts",
        "* `bonding_curve_param` - Parameter to update",
        ""
      ],
      "discriminator": [
        138,
        144,
        138,
        250,
        220,
        128,
        4,
        57
      ],
      "accounts": [
        {
          "name": "platform_admin",
          "docs": [
            "The account paying for the initialization costs"
          ],
          "writable": true,
          "signer": true
        },
        {
          "name": "platform_config",
          "docs": [
            "Platform config account to be changed"
          ],
          "writable": true,
          "pda": {
            "seeds": [
              {
                "kind": "const",
                "value": [
                  112,
                  108,
                  97,
                  116,
                  102,
                  111,
                  114,
                  109,
                  95,
                  99,
                  111,
                  110,
                  102,
                  105,
                  103
                ]
              },
              {
                "kind": "account",
                "path": "platform_admin"
              }
            ]
          }
        },
        {
          "name": "global_config",
          "docs": [
            "Global configuration account containing protocol-wide settings",
            "Includes settings like quote token mint and fee parameters"
          ]
        },
        {
          "name": "system_program",
          "docs": [
            "System program for lamport transfers"
          ],
          "address": "11111111111111111111111111111111"
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u8"
        },
        {
          "name": "bonding_curve_param",
          "type": {
            "defined": {
              "name": "BondingCurveParam"
            }
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "GlobalConfig",
      "discriminator": [
        149,
        8,
        156,
        202,
        160,
        252,
        176,
        217
      ]
    },
    {
      "name": "PlatformConfig",
      "discriminator": [
        160,
        78,
        128,
        0,
        248,
        83,
        230,
        160
      ]
    },
    {
      "name": "PoolState",
      "discriminator": [
        247,
        237,
        227,
        245,
        215,
        195,
        222,
        70
      ]
    },
    {
      "name": "VestingRecord",
      "discriminator": [
        106,
        243,
        221,
        205,
        230,
        126,
        85,
        83
      ]
    }
  ],
  "events": [
    {
      "name": "ClaimVestedEvent",
      "discriminator": [
        21,
        194,
        114,
        87,
        120,
        211,
        226,
        32
      ]
    },
    {
      "name": "CreateVestingEvent",
      "discriminator": [
        150,
        152,
        11,
        179,
        52,
        210,
        191,
        125
      ]
    },
    {
      "name": "PoolCreateEvent",
      "discriminator": [
        151,
        215,
        226,
        9,
        118,
        161,
        115,
        174
      ]
    },
    {
      "name": "TradeEvent",
      "discriminator": [
        189,
        219,
        127,
        211,
        78,
        230,
        97,
        238
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "NotApproved",
      "msg": "Not approved"
    },
    {
      "code": 6001,
      "name": "InvalidOwner",
      "msg": "Input account owner is not the program address"
    },
    {
      "code": 6002,
      "name": "InvalidInput",
      "msg": "InvalidInput"
    },
    {
      "code": 6003,
      "name": "InputNotMatchCurveConfig",
      "msg": "The input params are not match with curve type in config"
    },
    {
      "code": 6004,
      "name": "ExceededSlippage",
      "msg": "Exceeds desired slippage limit"
    },
    {
      "code": 6005,
      "name": "PoolFunding",
      "msg": "Pool funding"
    },
    {
      "code": 6006,
      "name": "PoolMigrated",
      "msg": "Pool migrated"
    },
    {
      "code": 6007,
      "name": "MigrateTypeNotMatch",
      "msg": "Migrate type not match"
    },
    {
      "code": 6008,
      "name": "MathOverflow",
      "msg": "Math overflow"
    },
    {
      "code": 6009,
      "name": "NoAssetsToCollect",
      "msg": "No assets to collect"
    },
    {
      "code": 6010,
      "name": "VestingRatioTooHigh",
      "msg": "Vesting ratio too high"
    },
    {
      "code": 6011,
      "name": "VestingSettingEnded",
      "msg": "Vesting setting ended"
    },
    {
      "code": 6012,
      "name": "VestingNotStarted",
      "msg": "Vesting not started"
    },
    {
      "code": 6013,
      "name": "NoVestingSchedule",
      "msg": "No vesting schedule"
    },
    {
      "code": 6014,
      "name": "InvalidPlatformInfo",
      "msg": "The platform info input is invalid"
    },
    {
      "code": 6015,
      "name": "PoolNotMigrated",
      "msg": "Pool not migrated"
    },
    {
      "code": 6016,
      "name": "InvalidCpSwapConfig",
      "msg": "The input cp swap config account is invalid"
    },
    {
      "code": 6017,
      "name": "NoSupportExtension",
      "msg": "No support extension"
    },
    {
      "code": 6018,
      "name": "NotEnoughRemainingAccounts",
      "msg": "Not enough remaining accounts"
    },
    {
      "code": 6019,
      "name": "TransferFeeCalculateNotMatch",
      "msg": "TransferFee calculate not match"
    },
    {
      "code": 6020,
      "name": "CurveParamIsNotExist",
      "msg": "Curve param is not exist"
    },
    {
      "code": 6021,
      "name": "InvalidTotalLockedAmount",
      "msg": "Total locked amount must great or equal to the platform vesting share amount"
    }
  ],
  "types": [
    {
      "name": "AmmCreatorFeeOn",
      "docs": [
        "migrate to cpmm, creator fee on quote token or both token"
      ],
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "QuoteToken"
          },
          {
            "name": "BothToken"
          }
        ]
      }
    },
    {
      "name": "BondingCurveParam",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "migrate_type",
            "docs": [
              "Migrate to AMM or CpSwap, 0: amm， 1: cpswap，",
              "Neither 0 nor 1: invalid"
            ],
            "type": "u8"
          },
          {
            "name": "migrate_cpmm_fee_on",
            "docs": [
              "The migrate fee on, 0 means fee on the quote token, 1 means fee on both token",
              "Neither 0 nor 1: invalid"
            ],
            "type": "u8"
          },
          {
            "name": "supply",
            "docs": [
              "The supply of the token,",
              "0: invalid"
            ],
            "type": "u64"
          },
          {
            "name": "total_base_sell",
            "docs": [
              "The total base sell of the token",
              "0: invalid"
            ],
            "type": "u64"
          },
          {
            "name": "total_quote_fund_raising",
            "docs": [
              "The total quote fund raising of the token",
              "0: invalid"
            ],
            "type": "u64"
          },
          {
            "name": "total_locked_amount",
            "docs": [
              "total amount of tokens to be unlocked",
              "u64::MAX: invalid"
            ],
            "type": "u64"
          },
          {
            "name": "cliff_period",
            "docs": [
              "Waiting time in seconds before unlocking after fundraising ends",
              "u64::MAX: invalid"
            ],
            "type": "u64"
          },
          {
            "name": "unlock_period",
            "docs": [
              "Unlocking period in seconds",
              "u64::MAX: invalid"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "ClaimVestedEvent",
      "docs": [
        "Emitted when vesting token claimed by beneficiary"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "pool_state",
            "type": "pubkey"
          },
          {
            "name": "beneficiary",
            "type": "pubkey"
          },
          {
            "name": "claim_amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "ConstantCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "total_base_sell",
            "type": "u64"
          },
          {
            "name": "total_quote_fund_raising",
            "type": "u64"
          },
          {
            "name": "migrate_type",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "CreateVestingEvent",
      "docs": [
        "Emitted when vest_account created"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "pool_state",
            "type": "pubkey"
          },
          {
            "name": "beneficiary",
            "type": "pubkey"
          },
          {
            "name": "share_amount",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "CurveParams",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Constant",
            "fields": [
              {
                "name": "data",
                "type": {
                  "defined": {
                    "name": "ConstantCurve"
                  }
                }
              }
            ]
          },
          {
            "name": "Fixed",
            "fields": [
              {
                "name": "data",
                "type": {
                  "defined": {
                    "name": "FixedCurve"
                  }
                }
              }
            ]
          },
          {
            "name": "Linear",
            "fields": [
              {
                "name": "data",
                "type": {
                  "defined": {
                    "name": "LinearCurve"
                  }
                }
              }
            ]
          }
        ]
      }
    },
    {
      "name": "FixedCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "total_quote_fund_raising",
            "type": "u64"
          },
          {
            "name": "migrate_type",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "GlobalConfig",
      "docs": [
        "Holds the current owner of the factory"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "docs": [
              "Account update epoch"
            ],
            "type": "u64"
          },
          {
            "name": "curve_type",
            "docs": [
              "0: Constant Product Curve",
              "1: Fixed Price Curve",
              "2: Linear Price Curve"
            ],
            "type": "u8"
          },
          {
            "name": "index",
            "docs": [
              "Config index"
            ],
            "type": "u16"
          },
          {
            "name": "migrate_fee",
            "docs": [
              "The fee of migrate to amm"
            ],
            "type": "u64"
          },
          {
            "name": "trade_fee_rate",
            "docs": [
              "The trade fee rate, denominated in hundredths of a bip (10^-6)"
            ],
            "type": "u64"
          },
          {
            "name": "max_share_fee_rate",
            "docs": [
              "The maximum share fee rate, denominated in hundredths of a bip (10^-6)"
            ],
            "type": "u64"
          },
          {
            "name": "min_base_supply",
            "docs": [
              "The minimum base supply, the value without decimals"
            ],
            "type": "u64"
          },
          {
            "name": "max_lock_rate",
            "docs": [
              "The maximum lock rate, denominated in hundredths of a bip (10^-6)"
            ],
            "type": "u64"
          },
          {
            "name": "min_base_sell_rate",
            "docs": [
              "The minimum base sell rate, denominated in hundredths of a bip (10^-6)"
            ],
            "type": "u64"
          },
          {
            "name": "min_base_migrate_rate",
            "docs": [
              "The minimum base migrate rate, denominated in hundredths of a bip (10^-6)"
            ],
            "type": "u64"
          },
          {
            "name": "min_quote_fund_raising",
            "docs": [
              "The minimum quote fund raising, the value with decimals"
            ],
            "type": "u64"
          },
          {
            "name": "quote_mint",
            "docs": [
              "Mint information for quote token"
            ],
            "type": "pubkey"
          },
          {
            "name": "protocol_fee_owner",
            "docs": [
              "Protocol Fee owner"
            ],
            "type": "pubkey"
          },
          {
            "name": "migrate_fee_owner",
            "docs": [
              "Migrate Fee owner"
            ],
            "type": "pubkey"
          },
          {
            "name": "migrate_to_amm_wallet",
            "docs": [
              "Migrate to amm control wallet"
            ],
            "type": "pubkey"
          },
          {
            "name": "migrate_to_cpswap_wallet",
            "docs": [
              "Migrate to cpswap wallet"
            ],
            "type": "pubkey"
          },
          {
            "name": "padding",
            "docs": [
              "padding for future updates"
            ],
            "type": {
              "array": [
                "u64",
                16
              ]
            }
          }
        ]
      }
    },
    {
      "name": "LinearCurve",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "supply",
            "type": "u64"
          },
          {
            "name": "total_quote_fund_raising",
            "type": "u64"
          },
          {
            "name": "migrate_type",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "MigrateNftInfo",
      "docs": [
        "Represents the parameters for initializing a platform config account(Only support MigrateType::CPSWAP)",
        "# Fields",
        "* `platform_scale` - Scale of the platform liquidity quantity rights will be converted into NFT",
        "* `creator_scale` - Scale of the token creator liquidity quantity rights will be converted into NFT",
        "* `burn_scale` - Scale of liquidity directly to burn",
        "",
        "* platform_scale + creator_scale + burn_scale = RATE_DENOMINATOR_VALUE"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "platform_scale",
            "type": "u64"
          },
          {
            "name": "creator_scale",
            "type": "u64"
          },
          {
            "name": "burn_scale",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "MintParams",
      "docs": [
        "Represents the parameters for initializing a new token mint",
        "# Fields",
        "* `decimals` - Number of decimal places for the token",
        "* `name` - Name of the token",
        "* `symbol` - Symbol/ticker of the token",
        "* `uri` - URI pointing to token metadata"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "decimals",
            "type": "u8"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "symbol",
            "type": "string"
          },
          {
            "name": "uri",
            "type": "string"
          }
        ]
      }
    },
    {
      "name": "PlatformConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "docs": [
              "The epoch for update interval"
            ],
            "type": "u64"
          },
          {
            "name": "platform_fee_wallet",
            "docs": [
              "The platform fee wallet"
            ],
            "type": "pubkey"
          },
          {
            "name": "platform_nft_wallet",
            "docs": [
              "The platform nft wallet to receive the platform NFT after migration if platform_scale is not 0(Only support MigrateType::CPSWAP)"
            ],
            "type": "pubkey"
          },
          {
            "name": "platform_scale",
            "docs": [
              "Scale of the platform liquidity quantity rights will be converted into NFT(Only support MigrateType::CPSWAP)"
            ],
            "type": "u64"
          },
          {
            "name": "creator_scale",
            "docs": [
              "Scale of the token creator liquidity quantity rights will be converted into NFT(Only support MigrateType::CPSWAP)"
            ],
            "type": "u64"
          },
          {
            "name": "burn_scale",
            "docs": [
              "Scale of liquidity directly to burn"
            ],
            "type": "u64"
          },
          {
            "name": "fee_rate",
            "docs": [
              "The platform fee rate"
            ],
            "type": "u64"
          },
          {
            "name": "name",
            "docs": [
              "The platform name"
            ],
            "type": {
              "array": [
                "u8",
                64
              ]
            }
          },
          {
            "name": "web",
            "docs": [
              "The platform website"
            ],
            "type": {
              "array": [
                "u8",
                256
              ]
            }
          },
          {
            "name": "img",
            "docs": [
              "The platform img link"
            ],
            "type": {
              "array": [
                "u8",
                256
              ]
            }
          },
          {
            "name": "cpswap_config",
            "docs": [
              "The platform specifies the trade fee rate after migration to cp swap"
            ],
            "type": "pubkey"
          },
          {
            "name": "creator_fee_rate",
            "docs": [
              "Creator fee rate"
            ],
            "type": "u64"
          },
          {
            "name": "transfer_fee_extension_auth",
            "docs": [
              "If the base token belongs to token2022, then you can choose to support the transferfeeConfig extension, which includes permissions such as `transfer_fee_config_authority`` and `withdraw_withheld_authority`.",
              "When initializing mint, `withdraw_withheld_authority` and `transfer_fee_config_authority` both belongs to the contract.",
              "Once the token is migrated to AMM, the authorities will be reset to this value"
            ],
            "type": "pubkey"
          },
          {
            "name": "platform_vesting_wallet",
            "type": "pubkey"
          },
          {
            "name": "platform_vesting_scale",
            "type": "u64"
          },
          {
            "name": "platform_cp_creator",
            "docs": [
              "If a valid platform_cp_creator is configured for the platform,",
              "it will be used as the creator for the AMM pool during migration to cpswap pool."
            ],
            "type": "pubkey"
          },
          {
            "name": "padding",
            "docs": [
              "padding for future updates"
            ],
            "type": {
              "array": [
                "u8",
                108
              ]
            }
          },
          {
            "name": "curve_params",
            "docs": [
              "The parameters for launching the pool"
            ],
            "type": {
              "vec": {
                "defined": {
                  "name": "PlatformCurveParam"
                }
              }
            }
          }
        ]
      }
    },
    {
      "name": "PlatformConfigInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "fee_wallet",
            "type": "pubkey"
          },
          {
            "name": "nft_wallet",
            "type": "pubkey"
          },
          {
            "name": "migrate_nft_info",
            "type": {
              "defined": {
                "name": "MigrateNftInfo"
              }
            }
          },
          {
            "name": "fee_rate",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "web",
            "type": "string"
          },
          {
            "name": "img",
            "type": "string"
          },
          {
            "name": "transfer_fee_extension_auth",
            "type": "pubkey"
          },
          {
            "name": "creator_fee_rate",
            "type": "u64"
          },
          {
            "name": "platform_vesting_scale",
            "type": "u64"
          },
          {
            "name": "vesting_wallet",
            "type": "pubkey"
          }
        ]
      }
    },
    {
      "name": "PlatformConfigParam",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "FeeWallet",
            "fields": [
              "pubkey"
            ]
          },
          {
            "name": "NFTWallet",
            "fields": [
              "pubkey"
            ]
          },
          {
            "name": "MigrateNftInfo",
            "fields": [
              {
                "defined": {
                  "name": "MigrateNftInfo"
                }
              }
            ]
          },
          {
            "name": "FeeRate",
            "fields": [
              "u64"
            ]
          },
          {
            "name": "Name",
            "fields": [
              "string"
            ]
          },
          {
            "name": "Web",
            "fields": [
              "string"
            ]
          },
          {
            "name": "Img",
            "fields": [
              "string"
            ]
          },
          {
            "name": "CpSwapConfig"
          },
          {
            "name": "AllInfo",
            "fields": [
              {
                "defined": {
                  "name": "PlatformConfigInfo"
                }
              }
            ]
          },
          {
            "name": "VestingWallet",
            "fields": [
              "pubkey"
            ]
          },
          {
            "name": "PlatformVestingScale",
            "fields": [
              "u64"
            ]
          },
          {
            "name": "PlatformCPCreator",
            "fields": [
              "pubkey"
            ]
          }
        ]
      }
    },
    {
      "name": "PlatformCurveParam",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "docs": [
              "The epoch for update interval, 0 means not update"
            ],
            "type": "u64"
          },
          {
            "name": "index",
            "docs": [
              "The curve params index"
            ],
            "type": "u8"
          },
          {
            "name": "global_config",
            "docs": [
              "The global config address"
            ],
            "type": "pubkey"
          },
          {
            "name": "bonding_curve_param",
            "docs": [
              "bonding curve param"
            ],
            "type": {
              "defined": {
                "name": "BondingCurveParam"
              }
            }
          },
          {
            "name": "padding",
            "docs": [
              "padding for future updates"
            ],
            "type": {
              "array": [
                "u64",
                50
              ]
            }
          }
        ]
      }
    },
    {
      "name": "PlatformParams",
      "docs": [
        "Represents the parameters for initializing a platform config account",
        "# Fields",
        "* `migrate_nft_info` - The platform configures liquidity info during migration(Only support MigrateType::CPSWAP)",
        "* `fee_rate` - Fee rate of the platform",
        "* `name` - Name of the platform",
        "* `web` - Website of the platform",
        "* `img` - Image link of the platform",
        "/// * `creator_fee_rate` - The fee rate charged by the creator for each transaction."
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "migrate_nft_info",
            "type": {
              "defined": {
                "name": "MigrateNftInfo"
              }
            }
          },
          {
            "name": "fee_rate",
            "type": "u64"
          },
          {
            "name": "name",
            "type": "string"
          },
          {
            "name": "web",
            "type": "string"
          },
          {
            "name": "img",
            "type": "string"
          },
          {
            "name": "creator_fee_rate",
            "type": "u64"
          },
          {
            "name": "platform_vesting_scale",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "PoolCreateEvent",
      "docs": [
        "Emitted when pool created"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "pool_state",
            "type": "pubkey"
          },
          {
            "name": "creator",
            "type": "pubkey"
          },
          {
            "name": "config",
            "type": "pubkey"
          },
          {
            "name": "base_mint_param",
            "type": {
              "defined": {
                "name": "MintParams"
              }
            }
          },
          {
            "name": "curve_param",
            "type": {
              "defined": {
                "name": "CurveParams"
              }
            }
          },
          {
            "name": "vesting_param",
            "type": {
              "defined": {
                "name": "VestingParams"
              }
            }
          },
          {
            "name": "amm_fee_on",
            "type": {
              "defined": {
                "name": "AmmCreatorFeeOn"
              }
            }
          }
        ]
      }
    },
    {
      "name": "PoolState",
      "docs": [
        "Represents the state of a trading pool in the protocol",
        "Stores all essential information about pool balances, fees, and configuration"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "docs": [
              "Account update epoch"
            ],
            "type": "u64"
          },
          {
            "name": "auth_bump",
            "docs": [
              "Bump seed used for PDA address derivation"
            ],
            "type": "u8"
          },
          {
            "name": "status",
            "docs": [
              "Current status of the pool",
              "* 0: Pool is funding",
              "* 1: Pool funding is end, waiting for migration",
              "* 2: Pool migration is done"
            ],
            "type": "u8"
          },
          {
            "name": "base_decimals",
            "docs": [
              "Decimals of the pool base token"
            ],
            "type": "u8"
          },
          {
            "name": "quote_decimals",
            "docs": [
              "Decimals of the pool quote token"
            ],
            "type": "u8"
          },
          {
            "name": "migrate_type",
            "docs": [
              "Migrate to AMM or CpSwap, 0: amm， 1: cpswap"
            ],
            "type": "u8"
          },
          {
            "name": "supply",
            "docs": [
              "Supply of the pool base token"
            ],
            "type": "u64"
          },
          {
            "name": "total_base_sell",
            "docs": [
              "Total sell amount of the base token"
            ],
            "type": "u64"
          },
          {
            "name": "virtual_base",
            "docs": [
              "For different curves, virtual_base and virtual_quote have different meanings",
              "For constant product curve, virtual_base and virtual_quote are virtual liquidity, virtual_quote/virtual_base is the initial price",
              "For linear price curve, virtual_base is the price slope parameter a, virtual_quote has no effect",
              "For fixed price curve, virtual_quote/virtual_base is the initial price"
            ],
            "type": "u64"
          },
          {
            "name": "virtual_quote",
            "type": "u64"
          },
          {
            "name": "real_base",
            "docs": [
              "Actual base token amount in the pool",
              "Represents the real tokens available for trading"
            ],
            "type": "u64"
          },
          {
            "name": "real_quote",
            "docs": [
              "Actual quote token amount in the pool",
              "Represents the real tokens available for trading"
            ],
            "type": "u64"
          },
          {
            "name": "total_quote_fund_raising",
            "docs": [
              "The total quote fund raising of the pool"
            ],
            "type": "u64"
          },
          {
            "name": "quote_protocol_fee",
            "docs": [
              "Accumulated trading fees in quote tokens",
              "Can be collected by the protocol fee owner"
            ],
            "type": "u64"
          },
          {
            "name": "platform_fee",
            "docs": [
              "Accumulated platform fees in quote tokens",
              "Can be collected by the platform wallet stored in platform config"
            ],
            "type": "u64"
          },
          {
            "name": "migrate_fee",
            "docs": [
              "The fee of migrate to amm"
            ],
            "type": "u64"
          },
          {
            "name": "vesting_schedule",
            "docs": [
              "Vesting schedule for the base token"
            ],
            "type": {
              "defined": {
                "name": "VestingSchedule"
              }
            }
          },
          {
            "name": "global_config",
            "docs": [
              "Public key of the global configuration account",
              "Contains protocol-wide settings this pool adheres to"
            ],
            "type": "pubkey"
          },
          {
            "name": "platform_config",
            "docs": [
              "Public key of the platform configuration account",
              "Contains platform-wide settings this pool adheres to"
            ],
            "type": "pubkey"
          },
          {
            "name": "base_mint",
            "docs": [
              "Public key of the base mint address"
            ],
            "type": "pubkey"
          },
          {
            "name": "quote_mint",
            "docs": [
              "Public key of the quote mint address"
            ],
            "type": "pubkey"
          },
          {
            "name": "base_vault",
            "docs": [
              "Public key of the base token vault",
              "Holds the actual base tokens owned by the pool"
            ],
            "type": "pubkey"
          },
          {
            "name": "quote_vault",
            "docs": [
              "Public key of the quote token vault",
              "Holds the actual quote tokens owned by the pool"
            ],
            "type": "pubkey"
          },
          {
            "name": "creator",
            "docs": [
              "The creator of base token"
            ],
            "type": "pubkey"
          },
          {
            "name": "token_program_flag",
            "docs": [
              "token program bits",
              "bit0: base token program flag",
              "0: spl_token_program",
              "1: token_program_2022",
              "",
              "bit1: quote token program flag",
              "0: spl_token_program",
              "1: token_program_2022"
            ],
            "type": "u8"
          },
          {
            "name": "amm_creator_fee_on",
            "docs": [
              "migrate to cpmm, creator fee on quote token or both token"
            ],
            "type": {
              "defined": {
                "name": "AmmCreatorFeeOn"
              }
            }
          },
          {
            "name": "platform_vesting_share",
            "docs": [
              "platform vesting token amount"
            ],
            "type": "u64"
          },
          {
            "name": "padding",
            "docs": [
              "padding for future updates"
            ],
            "type": {
              "array": [
                "u8",
                54
              ]
            }
          }
        ]
      }
    },
    {
      "name": "PoolStatus",
      "docs": [
        "Represents the different states a pool can be in",
        "* Fund - Initial state where pool is accepting funds",
        "* Migrate - Pool funding has ended and waiting for migration",
        "* Trade - Pool migration is complete and amm trading is enabled"
      ],
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Fund"
          },
          {
            "name": "Migrate"
          },
          {
            "name": "Trade"
          }
        ]
      }
    },
    {
      "name": "TradeDirection",
      "docs": [
        "Specifies the direction of a trade in the bonding curve",
        "This is important because curves can treat tokens differently through weights or offsets"
      ],
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Buy"
          },
          {
            "name": "Sell"
          }
        ]
      }
    },
    {
      "name": "TradeEvent",
      "docs": [
        "Emitted when trade process"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "pool_state",
            "type": "pubkey"
          },
          {
            "name": "total_base_sell",
            "type": "u64"
          },
          {
            "name": "virtual_base",
            "type": "u64"
          },
          {
            "name": "virtual_quote",
            "type": "u64"
          },
          {
            "name": "real_base_before",
            "type": "u64"
          },
          {
            "name": "real_quote_before",
            "type": "u64"
          },
          {
            "name": "real_base_after",
            "type": "u64"
          },
          {
            "name": "real_quote_after",
            "type": "u64"
          },
          {
            "name": "amount_in",
            "type": "u64"
          },
          {
            "name": "amount_out",
            "type": "u64"
          },
          {
            "name": "protocol_fee",
            "type": "u64"
          },
          {
            "name": "platform_fee",
            "type": "u64"
          },
          {
            "name": "creator_fee",
            "type": "u64"
          },
          {
            "name": "share_fee",
            "type": "u64"
          },
          {
            "name": "trade_direction",
            "type": {
              "defined": {
                "name": "TradeDirection"
              }
            }
          },
          {
            "name": "pool_status",
            "type": {
              "defined": {
                "name": "PoolStatus"
              }
            }
          },
          {
            "name": "exact_in",
            "type": "bool"
          }
        ]
      }
    },
    {
      "name": "TransferFeeExtensionParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "transfer_fee_basis_points",
            "docs": [
              "denominator is 10000, currently, this value cannot exceed 5%, which is 500."
            ],
            "type": "u16"
          },
          {
            "name": "maximum_fee",
            "docs": [
              "Maximum fee on each transfers, the value must exceed supply * transfer_fee_basis_points / 10000"
            ],
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "VestingParams",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "total_locked_amount",
            "type": "u64"
          },
          {
            "name": "cliff_period",
            "type": "u64"
          },
          {
            "name": "unlock_period",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "VestingRecord",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "epoch",
            "docs": [
              "Account update epoch"
            ],
            "type": "u64"
          },
          {
            "name": "pool",
            "docs": [
              "The pool state account"
            ],
            "type": "pubkey"
          },
          {
            "name": "beneficiary",
            "docs": [
              "The beneficiary of the vesting account"
            ],
            "type": "pubkey"
          },
          {
            "name": "claimed_amount",
            "docs": [
              "The amount of tokens claimed"
            ],
            "type": "u64"
          },
          {
            "name": "token_share_amount",
            "docs": [
              "The share amount of the token to be vested"
            ],
            "type": "u64"
          },
          {
            "name": "padding",
            "docs": [
              "padding for future updates"
            ],
            "type": {
              "array": [
                "u64",
                8
              ]
            }
          }
        ]
      }
    },
    {
      "name": "VestingSchedule",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "total_locked_amount",
            "type": "u64"
          },
          {
            "name": "cliff_period",
            "type": "u64"
          },
          {
            "name": "unlock_period",
            "type": "u64"
          },
          {
            "name": "start_time",
            "type": "u64"
          },
          {
            "name": "allocated_share_amount",
            "docs": [
              "Total allocated share amount of the base token, not greater than total_locked_amount"
            ],
            "type": "u64"
          }
        ]
      }
    }
  ]
}
