{
  "version": "0.1.0",
  "name": "yvaults",
  "instructions": [
    {
      "name": "initializeStrategy",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": false,
          "isSigner": false,
          "docs": [
            "Program owner also checked."
          ]
        },
        {
          "name": "tokenAMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePriceId",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopeProgramId",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "strategyType",
          "type": "u64"
        },
        {
          "name": "tokenACollateralId",
          "type": "u64"
        },
        {
          "name": "tokenBCollateralId",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initializeKaminoReward",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "kaminoRewardIndex",
          "type": "u64"
        },
        {
          "name": "collateralToken",
          "type": "u64"
        }
      ]
    },
    {
      "name": "addKaminoRewards",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "kaminoRewardIndex",
          "type": "u64"
        },
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "initializeGlobalConfig",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializeCollateralInfo",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collInfo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "updateCollateralInfo",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "index",
          "type": "u64"
        },
        {
          "name": "mode",
          "type": "u64"
        },
        {
          "name": "value",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "initializeSharesMetadata",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "updateSharesMetadata",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "sharesMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "name",
          "type": "string"
        },
        {
          "name": "symbol",
          "type": "string"
        },
        {
          "name": "uri",
          "type": "string"
        }
      ]
    },
    {
      "name": "updateGlobalConfig",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "key",
          "type": "u16"
        },
        {
          "name": "index",
          "type": "u16"
        },
        {
          "name": "value",
          "type": {
            "array": [
              "u8",
              32
            ]
          }
        }
      ]
    },
    {
      "name": "updateTreasuryFeeVault",
      "accounts": [
        {
          "name": "signer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "collateralId",
          "type": "u16"
        }
      ]
    },
    {
      "name": "updateStrategyConfig",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "mode",
          "type": "u16"
        },
        {
          "name": "value",
          "type": {
            "array": [
              "u8",
              128
            ]
          }
        }
      ]
    },
    {
      "name": "updateRewardMapping",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        },
        {
          "name": "collateralToken",
          "type": "u8"
        }
      ]
    },
    {
      "name": "openLiquidityPosition",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionMetadataAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "system",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "oldTickArrayLowerOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldTickArrayUpperOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionMintOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionTokenAccountOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tickLowerIndex",
          "type": "i64"
        },
        {
          "name": "tickUpperIndex",
          "type": "i64"
        },
        {
          "name": "bump",
          "type": "u8"
        }
      ]
    },
    {
      "name": "closeStrategy",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionMintOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPositionTokenAccountOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "reward0Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "reward1Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "reward2Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "kaminoReward0Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "kaminoReward1Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "kaminoReward2Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userReward0Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userReward1Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userReward2Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userKaminoReward0Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userKaminoReward1Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "userKaminoReward2Ata",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "system",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "deposit",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenMaxA",
          "type": "u64"
        },
        {
          "name": "tokenMaxB",
          "type": "u64"
        }
      ]
    },
    {
      "name": "invest",
      "accounts": [
        {
          "name": "payer",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "depositAndInvest",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "check that the pool is owned either by orca or by raydium"
          ]
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenMaxA",
          "type": "u64"
        },
        {
          "name": "tokenMaxB",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdraw",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "sharesAmount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "executiveWithdraw",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "action",
          "type": "u8"
        }
      ]
    },
    {
      "name": "collectFeesAndRewards",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "reward0Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "reward1Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "reward2Vault",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "poolRewardVault0",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "poolRewardVault1",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "poolRewardVault2",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "If rewards are uninitialized, pass this as strategy."
          ]
        },
        {
          "name": "tokenAMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "swapRewards",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeTokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userTokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userTokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userRewardTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenAIn",
          "type": "u64"
        },
        {
          "name": "tokenBIn",
          "type": "u64"
        },
        {
          "name": "rewardIndex",
          "type": "u64"
        },
        {
          "name": "rewardCollateralId",
          "type": "u64"
        },
        {
          "name": "minCollateralTokenOut",
          "type": "u64"
        }
      ]
    },
    {
      "name": "swapUnevenVaults",
      "accounts": [
        {
          "name": "actionsAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumPoolConfigOrBaseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray0",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "tickArray1",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "tickArray2",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "oracle",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "targetLimitBps",
          "type": "u64"
        }
      ]
    },
    {
      "name": "checkExpectedVaultsBalances",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenAAta",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenAAtaBalance",
          "type": "u64"
        },
        {
          "name": "tokenBAtaBalance",
          "type": "u64"
        }
      ]
    },
    {
      "name": "singleTokenDepositAndInvestWithMin",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "check that the pool is owned either by orca or by raydium"
          ]
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "raydiumProtocolPositionOrBaseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenAMinPostDepositBalance",
          "type": "u64"
        },
        {
          "name": "tokenBMinPostDepositBalance",
          "type": "u64"
        }
      ]
    },
    {
      "name": "singleTokenDepositWithMin",
      "accounts": [
        {
          "name": "user",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "userSharesAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "sharesMintAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tokenAMinPostDepositBalance",
          "type": "u64"
        },
        {
          "name": "tokenBMinPostDepositBalance",
          "type": "u64"
        }
      ]
    },
    {
      "name": "flashSwapUnevenVaultsStart",
      "docs": [
        "Start of a Flash swap uneven vaults.",
        "",
        "This needs to be the first instruction of the transaction or preceded only by a",
        "ComputeBudget.",
        "",
        "This ix has to be paired with a `flash_swap_uneven_vaults_end` (`FlashSwapUnevenVaultsEnd`)",
        "as the last instruction of the transaction. No other instruction targeted the program is",
        "allowed.",
        "The instructions between the start and end instructions are expected to perform the swap."
      ],
      "accounts": [
        {
          "name": "swapper",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "aToB",
          "type": "bool"
        }
      ]
    },
    {
      "name": "flashSwapUnevenVaultsEnd",
      "docs": [
        "End of Flash swap uneven vaults.",
        "",
        "See [`flash_swap_uneven_vaults_start`] for details.",
        "",
        "Warning: This instruction is allowed to be used independently from",
        "`FlashSwapUnevenVaultsStart` and shall not perform any operation",
        "that can be exploited when used alone."
      ],
      "accounts": [
        {
          "name": "swapper",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBAta",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "instructionSysvarAccount",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "minRepayAmount",
          "type": "u64"
        },
        {
          "name": "amountToLeaveToUser",
          "type": "u64"
        },
        {
          "name": "aToB",
          "type": "bool"
        }
      ]
    },
    {
      "name": "emergencySwap",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenBVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "pool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "poolTokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray0",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "tickArray1",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "tickArray2",
          "isMut": true,
          "isSigner": false,
          "docs": [
            "Payer must send this correctly."
          ]
        },
        {
          "name": "oracle",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "scopePrices",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenInfos",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "aToB",
          "type": "bool"
        },
        {
          "name": "targetLimitBps",
          "type": "u64"
        }
      ]
    },
    {
      "name": "withdrawFromTreasury",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "mint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "treasuryFeeVaultAuthority",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        }
      ]
    },
    {
      "name": "changePool",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "strategy",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oldPosition",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "baseVaultAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "globalConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "newPool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "poolProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "closeProgramAccount",
      "accounts": [
        {
          "name": "adminAuthority",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "program",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "programData",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "closingAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "orcaSwap",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAuthority",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tickArray0",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tickArray1",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tickArray2",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "oracle",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpoolProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "otherAmountThreshold",
          "type": "u64"
        },
        {
          "name": "sqrtPriceLimit",
          "type": "u128"
        },
        {
          "name": "amountSpecifiedIsInput",
          "type": "bool"
        },
        {
          "name": "aToB",
          "type": "bool"
        }
      ]
    },
    {
      "name": "signTerms",
      "accounts": [
        {
          "name": "owner",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "ownerSignatureState",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "signature",
          "type": {
            "array": [
              "u8",
              64
            ]
          }
        }
      ]
    }
  ],
  "accounts": [
    {
      "name": "Whirlpool",
      "docs": [
        "External types"
      ],
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "whirlpoolBump",
            "type": {
              "array": [
                "u8",
                1
              ]
            }
          },
          {
            "name": "tickSpacing",
            "type": "u16"
          },
          {
            "name": "tickSpacingSeed",
            "type": {
              "array": [
                "u8",
                2
              ]
            }
          },
          {
            "name": "feeRate",
            "type": "u16"
          },
          {
            "name": "protocolFeeRate",
            "type": "u16"
          },
          {
            "name": "liquidity",
            "type": "u128"
          },
          {
            "name": "sqrtPrice",
            "type": "u128"
          },
          {
            "name": "tickCurrentIndex",
            "type": "i32"
          },
          {
            "name": "protocolFeeOwedA",
            "type": "u64"
          },
          {
            "name": "protocolFeeOwedB",
            "type": "u64"
          },
          {
            "name": "tokenMintA",
            "type": "publicKey"
          },
          {
            "name": "tokenVaultA",
            "type": "publicKey"
          },
          {
            "name": "feeGrowthGlobalA",
            "type": "u128"
          },
          {
            "name": "tokenMintB",
            "type": "publicKey"
          },
          {
            "name": "tokenVaultB",
            "type": "publicKey"
          },
          {
            "name": "feeGrowthGlobalB",
            "type": "u128"
          },
          {
            "name": "rewardLastUpdatedTimestamp",
            "type": "u64"
          },
          {
            "name": "rewardInfos",
            "type": {
              "array": [
                {
                  "defined": "WhirlpoolRewardInfo"
                },
                3
              ]
            }
          }
        ]
      }
    },
    {
      "name": "Position",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpool",
            "type": "publicKey"
          },
          {
            "name": "positionMint",
            "type": "publicKey"
          },
          {
            "name": "liquidity",
            "type": "u128"
          },
          {
            "name": "tickLowerIndex",
            "type": "i32"
          },
          {
            "name": "tickUpperIndex",
            "type": "i32"
          },
          {
            "name": "feeGrowthCheckpointA",
            "type": "u128"
          },
          {
            "name": "feeOwedA",
            "type": "u64"
          },
          {
            "name": "feeGrowthCheckpointB",
            "type": "u128"
          },
          {
            "name": "feeOwedB",
            "type": "u64"
          },
          {
            "name": "rewardInfos",
            "type": {
              "array": [
                {
                  "defined": "PositionRewardInfo"
                },
                3
              ]
            }
          }
        ]
      }
    },
    {
      "name": "PoolState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bump",
            "docs": [
              "Bump to identify PDA"
            ],
            "type": "u8"
          },
          {
            "name": "ammConfig",
            "type": "publicKey"
          },
          {
            "name": "owner",
            "type": "publicKey"
          },
          {
            "name": "tokenMint0",
            "docs": [
              "Token pair of the pool, where token_mint_0 address < token_mint_1 address"
            ],
            "type": "publicKey"
          },
          {
            "name": "tokenMint1",
            "type": "publicKey"
          },
          {
            "name": "tokenVault0",
            "docs": [
              "Token pair vault"
            ],
            "type": "publicKey"
          },
          {
            "name": "tokenVault1",
            "type": "publicKey"
          },
          {
            "name": "observationKey",
            "docs": [
              "observation account key"
            ],
            "type": "publicKey"
          },
          {
            "name": "mintDecimals0",
            "docs": [
              "mint0 and mint1 decimals"
            ],
            "type": "u8"
          },
          {
            "name": "mintDecimals1",
            "type": "u8"
          },
          {
            "name": "tickSpacing",
            "docs": [
              "The minimum number of ticks between initialized ticks"
            ],
            "type": "u16"
          },
          {
            "name": "liquidity",
            "docs": [
              "The currently in range liquidity available to the pool."
            ],
            "type": "u128"
          },
          {
            "name": "sqrtPriceX64",
            "docs": [
              "The current price of the pool as a sqrt(token_1/token_0) Q64.64 value"
            ],
            "type": "u128"
          },
          {
            "name": "tickCurrent",
            "docs": [
              "The current tick of the pool, i.e. according to the last tick transition that was run."
            ],
            "type": "i32"
          },
          {
            "name": "observationIndex",
            "docs": [
              "the most-recently updated index of the observations array"
            ],
            "type": "u16"
          },
          {
            "name": "observationUpdateDuration",
            "type": "u16"
          },
          {
            "name": "feeGrowthGlobal0X64",
            "docs": [
              "The fee growth as a Q64.64 number, i.e. fees of token_0 and token_1 collected per",
              "unit of liquidity for the entire life of the pool."
            ],
            "type": "u128"
          },
          {
            "name": "feeGrowthGlobal1X64",
            "type": "u128"
          },
          {
            "name": "protocolFeesToken0",
            "docs": [
              "The amounts of token_0 and token_1 that are owed to the protocol."
            ],
            "type": "u64"
          },
          {
            "name": "protocolFeesToken1",
            "type": "u64"
          },
          {
            "name": "swapInAmountToken0",
            "docs": [
              "The amounts in and out of swap token_0 and token_1"
            ],
            "type": "u128"
          },
          {
            "name": "swapOutAmountToken1",
            "type": "u128"
          },
          {
            "name": "swapInAmountToken1",
            "type": "u128"
          },
          {
            "name": "swapOutAmountToken0",
            "type": "u128"
          },
          {
            "name": "status",
            "docs": [
              "Bitwise representation of the state of the pool",
              "bit0, 1: disable open position and increase liquidity, 0: normal",
              "bit1, 1: disable decrease liquidity, 0: normal",
              "bit2, 1: disable collect fee, 0: normal",
              "bit3, 1: disable collect reward, 0: normal",
              "bit4, 1: disable swap, 0: normal"
            ],
            "type": "u8"
          },
          {
            "name": "padding",
            "docs": [
              "Leave blank for future use"
            ],
            "type": {
              "array": [
                "u8",
                7
              ]
            }
          },
          {
            "name": "rewardInfos",
            "type": {
              "array": [
                {
                  "defined": "RewardInfo"
                },
                3
              ]
            }
          },
          {
            "name": "tickArrayBitmap",
            "docs": [
              "Packed initialized tick array state"
            ],
            "type": {
              "array": [
                "u64",
                16
              ]
            }
          },
          {
            "name": "totalFeesToken0",
            "docs": [
              "except protocol_fee and fund_fee"
            ],
            "type": "u64"
          },
          {
            "name": "totalFeesClaimedToken0",
            "docs": [
              "except protocol_fee and fund_fee"
            ],
            "type": "u64"
          },
          {
            "name": "totalFeesToken1",
            "type": "u64"
          },
          {
            "name": "totalFeesClaimedToken1",
            "type": "u64"
          },
          {
            "name": "fundFeesToken0",
            "type": "u64"
          },
          {
            "name": "fundFeesToken1",
            "type": "u64"
          },
          {
            "name": "openTime",
            "type": "u64"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u64",
                25
              ]
            }
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u64",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "PersonalPositionState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bump",
            "docs": [
              "Bump to identify PDA"
            ],
            "type": "u8"
          },
          {
            "name": "nftMint",
            "docs": [
              "Mint address of the tokenized position"
            ],
            "type": "publicKey"
          },
          {
            "name": "poolId",
            "docs": [
              "The ID of the pool with which this token is connected"
            ],
            "type": "publicKey"
          },
          {
            "name": "tickLowerIndex",
            "docs": [
              "The lower bound tick of the position"
            ],
            "type": "i32"
          },
          {
            "name": "tickUpperIndex",
            "docs": [
              "The upper bound tick of the position"
            ],
            "type": "i32"
          },
          {
            "name": "liquidity",
            "docs": [
              "The amount of liquidity owned by this position"
            ],
            "type": "u128"
          },
          {
            "name": "feeGrowthInside0LastX64",
            "docs": [
              "The token_0 fee growth of the aggregate position as of the last action on the individual position"
            ],
            "type": "u128"
          },
          {
            "name": "feeGrowthInside1LastX64",
            "docs": [
              "The token_1 fee growth of the aggregate position as of the last action on the individual position"
            ],
            "type": "u128"
          },
          {
            "name": "tokenFeesOwed0",
            "docs": [
              "The fees owed to the position owner in token_0, as of the last computation"
            ],
            "type": "u64"
          },
          {
            "name": "tokenFeesOwed1",
            "docs": [
              "The fees owed to the position owner in token_1, as of the last computation"
            ],
            "type": "u64"
          },
          {
            "name": "rewardInfos",
            "type": {
              "array": [
                {
                  "defined": "PositionRewardInfo"
                },
                3
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                8
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ProtocolPositionState",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "bump",
            "docs": [
              "Bump to identify PDA"
            ],
            "type": "u8"
          },
          {
            "name": "poolId",
            "docs": [
              "The ID of the pool with which this token is connected"
            ],
            "type": "publicKey"
          },
          {
            "name": "tickLowerIndex",
            "docs": [
              "The lower bound tick of the position"
            ],
            "type": "i32"
          },
          {
            "name": "tickUpperIndex",
            "docs": [
              "The upper bound tick of the position"
            ],
            "type": "i32"
          },
          {
            "name": "liquidity",
            "docs": [
              "The amount of liquidity owned by this position"
            ],
            "type": "u128"
          },
          {
            "name": "feeGrowthInside0LastX64",
            "docs": [
              "The token_0 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
            ],
            "type": "u128"
          },
          {
            "name": "feeGrowthInside1LastX64",
            "docs": [
              "The token_1 fee growth per unit of liquidity as of the last update to liquidity or fees owed"
            ],
            "type": "u128"
          },
          {
            "name": "tokenFeesOwed0",
            "docs": [
              "The fees owed to the position owner in token_0"
            ],
            "type": "u64"
          },
          {
            "name": "tokenFeesOwed1",
            "docs": [
              "The fees owed to the position owner in token_1"
            ],
            "type": "u64"
          },
          {
            "name": "rewardGrowthInside",
            "docs": [
              "The reward growth per unit of liquidity as of the last update to liquidity"
            ],
            "type": {
              "array": [
                "u128",
                3
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                8
              ]
            }
          }
        ]
      }
    },
    {
      "name": "WhirlpoolStrategy",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "adminAuthority",
            "type": "publicKey"
          },
          {
            "name": "globalConfig",
            "type": "publicKey"
          },
          {
            "name": "baseVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "baseVaultAuthorityBump",
            "type": "u64"
          },
          {
            "name": "pool",
            "type": "publicKey"
          },
          {
            "name": "poolTokenVaultA",
            "type": "publicKey"
          },
          {
            "name": "poolTokenVaultB",
            "type": "publicKey"
          },
          {
            "name": "tickArrayLower",
            "type": "publicKey"
          },
          {
            "name": "tickArrayUpper",
            "type": "publicKey"
          },
          {
            "name": "position",
            "type": "publicKey"
          },
          {
            "name": "positionMint",
            "type": "publicKey"
          },
          {
            "name": "positionMetadata",
            "type": "publicKey"
          },
          {
            "name": "positionTokenAccount",
            "type": "publicKey"
          },
          {
            "name": "tokenAVault",
            "type": "publicKey"
          },
          {
            "name": "tokenBVault",
            "type": "publicKey"
          },
          {
            "name": "tokenAVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "tokenBVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "tokenAVaultAuthorityBump",
            "type": "u64"
          },
          {
            "name": "tokenBVaultAuthorityBump",
            "type": "u64"
          },
          {
            "name": "tokenAMint",
            "type": "publicKey"
          },
          {
            "name": "tokenBMint",
            "type": "publicKey"
          },
          {
            "name": "tokenAMintDecimals",
            "type": "u64"
          },
          {
            "name": "tokenBMintDecimals",
            "type": "u64"
          },
          {
            "name": "tokenAAmounts",
            "type": "u64"
          },
          {
            "name": "tokenBAmounts",
            "type": "u64"
          },
          {
            "name": "tokenACollateralId",
            "type": "u64"
          },
          {
            "name": "tokenBCollateralId",
            "type": "u64"
          },
          {
            "name": "scopePrices",
            "type": "publicKey"
          },
          {
            "name": "scopeProgram",
            "type": "publicKey"
          },
          {
            "name": "sharesMint",
            "type": "publicKey"
          },
          {
            "name": "sharesMintDecimals",
            "type": "u64"
          },
          {
            "name": "sharesMintAuthority",
            "type": "publicKey"
          },
          {
            "name": "sharesMintAuthorityBump",
            "type": "u64"
          },
          {
            "name": "sharesIssued",
            "type": "u64"
          },
          {
            "name": "status",
            "type": "u64"
          },
          {
            "name": "reward0Amount",
            "type": "u64"
          },
          {
            "name": "reward0Vault",
            "type": "publicKey"
          },
          {
            "name": "reward0CollateralId",
            "type": "u64"
          },
          {
            "name": "reward0Decimals",
            "type": "u64"
          },
          {
            "name": "reward1Amount",
            "type": "u64"
          },
          {
            "name": "reward1Vault",
            "type": "publicKey"
          },
          {
            "name": "reward1CollateralId",
            "type": "u64"
          },
          {
            "name": "reward1Decimals",
            "type": "u64"
          },
          {
            "name": "reward2Amount",
            "type": "u64"
          },
          {
            "name": "reward2Vault",
            "type": "publicKey"
          },
          {
            "name": "reward2CollateralId",
            "type": "u64"
          },
          {
            "name": "reward2Decimals",
            "type": "u64"
          },
          {
            "name": "depositCapUsd",
            "type": "u64"
          },
          {
            "name": "feesACumulative",
            "type": "u64"
          },
          {
            "name": "feesBCumulative",
            "type": "u64"
          },
          {
            "name": "reward0AmountCumulative",
            "type": "u64"
          },
          {
            "name": "reward1AmountCumulative",
            "type": "u64"
          },
          {
            "name": "reward2AmountCumulative",
            "type": "u64"
          },
          {
            "name": "depositCapUsdPerIxn",
            "type": "u64"
          },
          {
            "name": "withdrawalCapA",
            "type": {
              "defined": "WithdrawalCaps"
            }
          },
          {
            "name": "withdrawalCapB",
            "type": {
              "defined": "WithdrawalCaps"
            }
          },
          {
            "name": "maxPriceDeviationBps",
            "type": "u64"
          },
          {
            "name": "swapVaultMaxSlippageBps",
            "type": "u32"
          },
          {
            "name": "swapVaultMaxSlippageFromReferenceBps",
            "type": "u32"
          },
          {
            "name": "strategyType",
            "type": "u64"
          },
          {
            "name": "padding0",
            "type": "u64"
          },
          {
            "name": "withdrawFee",
            "type": "u64"
          },
          {
            "name": "feesFee",
            "type": "u64"
          },
          {
            "name": "reward0Fee",
            "type": "u64"
          },
          {
            "name": "reward1Fee",
            "type": "u64"
          },
          {
            "name": "reward2Fee",
            "type": "u64"
          },
          {
            "name": "positionTimestamp",
            "type": "u64"
          },
          {
            "name": "kaminoRewards",
            "type": {
              "array": [
                {
                  "defined": "KaminoRewardInfo"
                },
                3
              ]
            }
          },
          {
            "name": "strategyDex",
            "type": "u64"
          },
          {
            "name": "raydiumProtocolPositionOrBaseVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "allowDepositWithoutInvest",
            "type": "u64"
          },
          {
            "name": "raydiumPoolConfigOrBaseVaultAuthority",
            "type": "publicKey"
          },
          {
            "name": "depositBlocked",
            "type": "u8"
          },
          {
            "name": "creationStatus",
            "type": "u8"
          },
          {
            "name": "investBlocked",
            "type": "u8"
          },
          {
            "name": "shareCalculationMethod",
            "docs": [
              "share_calculation_method can be either DOLAR_BASED=0 or PROPORTION_BASED=1"
            ],
            "type": "u8"
          },
          {
            "name": "withdrawBlocked",
            "type": "u8"
          },
          {
            "name": "reservedFlag2",
            "type": "u8"
          },
          {
            "name": "localAdminBlocked",
            "type": "u8"
          },
          {
            "name": "flashVaultSwapAllowed",
            "type": "u8"
          },
          {
            "name": "referenceSwapPriceA",
            "type": {
              "defined": "Price"
            }
          },
          {
            "name": "referenceSwapPriceB",
            "type": {
              "defined": "Price"
            }
          },
          {
            "name": "isCommunity",
            "type": "u8"
          },
          {
            "name": "rebalanceType",
            "type": "u8"
          },
          {
            "name": "padding1",
            "type": {
              "array": [
                "u8",
                6
              ]
            }
          },
          {
            "name": "rebalanceRaw",
            "type": {
              "defined": "RebalanceRaw"
            }
          },
          {
            "name": "padding2",
            "type": {
              "array": [
                "u8",
                7
              ]
            }
          },
          {
            "name": "tokenAFeesFromRewardsCumulative",
            "type": "u64"
          },
          {
            "name": "tokenBFeesFromRewardsCumulative",
            "type": "u64"
          },
          {
            "name": "strategyLookupTable",
            "type": "publicKey"
          },
          {
            "name": "lastSwapUnevenStepTimestamp",
            "type": "u64"
          },
          {
            "name": "padding3",
            "type": "u64"
          },
          {
            "name": "padding4",
            "type": {
              "array": [
                "u128",
                25
              ]
            }
          },
          {
            "name": "padding5",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          },
          {
            "name": "padding6",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          },
          {
            "name": "padding7",
            "type": {
              "array": [
                "u128",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "GlobalConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "emergencyMode",
            "type": "u64"
          },
          {
            "name": "blockDeposit",
            "type": "u64"
          },
          {
            "name": "blockInvest",
            "type": "u64"
          },
          {
            "name": "blockWithdraw",
            "type": "u64"
          },
          {
            "name": "blockCollectFees",
            "type": "u64"
          },
          {
            "name": "blockCollectRewards",
            "type": "u64"
          },
          {
            "name": "blockSwapRewards",
            "type": "u64"
          },
          {
            "name": "blockSwapUnevenVaults",
            "type": "u32"
          },
          {
            "name": "blockEmergencySwap",
            "type": "u32"
          },
          {
            "name": "feesBps",
            "type": "u64"
          },
          {
            "name": "scopeProgramId",
            "type": "publicKey"
          },
          {
            "name": "scopePriceId",
            "type": "publicKey"
          },
          {
            "name": "swapRewardsDiscountBps",
            "type": {
              "array": [
                "u64",
                256
              ]
            }
          },
          {
            "name": "actionsAuthority",
            "type": "publicKey"
          },
          {
            "name": "adminAuthority",
            "type": "publicKey"
          },
          {
            "name": "treasuryFeeVaults",
            "type": {
              "array": [
                "publicKey",
                256
              ]
            }
          },
          {
            "name": "tokenInfos",
            "type": "publicKey"
          },
          {
            "name": "blockLocalAdmin",
            "type": "u64"
          },
          {
            "name": "minPerformanceFeeBps",
            "type": "u64"
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                2042
              ]
            }
          }
        ]
      }
    },
    {
      "name": "CollateralInfos",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "infos",
            "type": {
              "array": [
                {
                  "defined": "CollateralInfo"
                },
                256
              ]
            }
          }
        ]
      }
    },
    {
      "name": "ScopeChainAccount",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "chainArray",
            "type": {
              "array": [
                {
                  "array": [
                    "u16",
                    4
                  ]
                },
                512
              ]
            }
          }
        ]
      }
    },
    {
      "name": "TermsSignature",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "signature",
            "type": {
              "array": [
                "u8",
                64
              ]
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "PositionRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "growthInsideCheckpoint",
            "type": "u128"
          },
          {
            "name": "amountOwed",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "WhirlpoolRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "docs": [
              "Reward token mint."
            ],
            "type": "publicKey"
          },
          {
            "name": "vault",
            "docs": [
              "Reward vault token account."
            ],
            "type": "publicKey"
          },
          {
            "name": "authority",
            "docs": [
              "Authority account that has permission to initialize the reward and set emissions."
            ],
            "type": "publicKey"
          },
          {
            "name": "emissionsPerSecondX64",
            "docs": [
              "Q64.64 number that indicates how many tokens per second are earned per unit of liquidity."
            ],
            "type": "u128"
          },
          {
            "name": "growthGlobalX64",
            "docs": [
              "Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward",
              "emissions were turned on."
            ],
            "type": "u128"
          }
        ]
      }
    },
    {
      "name": "RewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "rewardState",
            "docs": [
              "Reward state"
            ],
            "type": "u8"
          },
          {
            "name": "openTime",
            "docs": [
              "Reward open time"
            ],
            "type": "u64"
          },
          {
            "name": "endTime",
            "docs": [
              "Reward end time"
            ],
            "type": "u64"
          },
          {
            "name": "lastUpdateTime",
            "docs": [
              "Reward last update time"
            ],
            "type": "u64"
          },
          {
            "name": "emissionsPerSecondX64",
            "docs": [
              "Q64.64 number indicates how many tokens per second are earned per unit of liquidity."
            ],
            "type": "u128"
          },
          {
            "name": "rewardTotalEmissioned",
            "docs": [
              "The total amount of reward emissioned"
            ],
            "type": "u64"
          },
          {
            "name": "rewardClaimed",
            "docs": [
              "The total amount of claimed reward"
            ],
            "type": "u64"
          },
          {
            "name": "tokenMint",
            "docs": [
              "Reward token mint."
            ],
            "type": "publicKey"
          },
          {
            "name": "tokenVault",
            "docs": [
              "Reward vault token account."
            ],
            "type": "publicKey"
          },
          {
            "name": "authority",
            "docs": [
              "The owner that has permission to set reward param"
            ],
            "type": "publicKey"
          },
          {
            "name": "rewardGrowthGlobalX64",
            "docs": [
              "Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward",
              "emissions were turned on."
            ],
            "type": "u128"
          }
        ]
      }
    },
    {
      "name": "RebalanceRaw",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "params",
            "type": {
              "array": [
                "u8",
                128
              ]
            }
          },
          {
            "name": "state",
            "type": {
              "array": [
                "u8",
                256
              ]
            }
          },
          {
            "name": "referencePriceType",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "CollateralInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "lowerHeuristic",
            "type": "u64"
          },
          {
            "name": "upperHeuristic",
            "type": "u64"
          },
          {
            "name": "expHeuristic",
            "type": "u64"
          },
          {
            "name": "maxTwapDivergenceBps",
            "type": "u64"
          },
          {
            "name": "scopePriceIdTwap",
            "type": "u64"
          },
          {
            "name": "scopePriceChain",
            "type": {
              "array": [
                "u16",
                4
              ]
            }
          },
          {
            "name": "name",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          },
          {
            "name": "maxAgePriceSeconds",
            "type": "u64"
          },
          {
            "name": "maxAgeTwapSeconds",
            "type": "u64"
          },
          {
            "name": "maxIgnorableAmountAsReward",
            "type": "u64"
          },
          {
            "name": "disabled",
            "type": "u8"
          },
          {
            "name": "padding0",
            "type": {
              "array": [
                "u8",
                7
              ]
            }
          },
          {
            "name": "padding",
            "type": {
              "array": [
                "u64",
                9
              ]
            }
          }
        ]
      }
    },
    {
      "name": "KaminoRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "decimals",
            "type": "u64"
          },
          {
            "name": "rewardVault",
            "type": "publicKey"
          },
          {
            "name": "rewardMint",
            "type": "publicKey"
          },
          {
            "name": "rewardCollateralId",
            "type": "u64"
          },
          {
            "name": "lastIssuanceTs",
            "type": "u64"
          },
          {
            "name": "rewardPerSecond",
            "type": "u64"
          },
          {
            "name": "amountUncollected",
            "type": "u64"
          },
          {
            "name": "amountIssuedCumulative",
            "type": "u64"
          },
          {
            "name": "amountAvailable",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "WithdrawalCaps",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "configCapacity",
            "type": "i64"
          },
          {
            "name": "currentTotal",
            "type": "i64"
          },
          {
            "name": "lastIntervalStartTimestamp",
            "type": "u64"
          },
          {
            "name": "configIntervalLengthSeconds",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Price",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "value",
            "type": "u64"
          },
          {
            "name": "exp",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "WithdrawalCapAccumulatorAction",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "KeepAccumulator"
          },
          {
            "name": "ResetAccumulator"
          }
        ]
      }
    },
    {
      "name": "RebalanceEffects",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "NewRange",
            "fields": [
              "i32",
              "i32"
            ]
          },
          {
            "name": "WithdrawAndFreeze"
          }
        ]
      }
    },
    {
      "name": "SwapLimit",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Bps",
            "fields": [
              "u64"
            ]
          },
          {
            "name": "Absolute",
            "fields": [
              {
                "name": "src_amount_to_swap",
                "docs": [
                  "Amount of src token expected by the user to perform the swap"
                ],
                "type": "u64"
              },
              {
                "name": "dst_amount_to_vault",
                "docs": [
                  "Amount of dst token the user provides in exchange"
                ],
                "type": "u64"
              },
              {
                "name": "a_to_b",
                "type": "bool"
              }
            ]
          }
        ]
      }
    },
    {
      "name": "MintingMethod",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "PriceBased"
          },
          {
            "name": "Proportional"
          }
        ]
      }
    },
    {
      "name": "GlobalConfigOption",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "EmergencyMode"
          },
          {
            "name": "BlockDeposit"
          },
          {
            "name": "BlockInvest"
          },
          {
            "name": "BlockWithdraw"
          },
          {
            "name": "BlockCollectFees"
          },
          {
            "name": "BlockCollectRewards"
          },
          {
            "name": "BlockSwapRewards"
          },
          {
            "name": "BlockSwapUnevenVaults"
          },
          {
            "name": "FeesBps"
          },
          {
            "name": "SwapDiscountBps"
          },
          {
            "name": "ActionsAuthority"
          },
          {
            "name": "TreasuryFeeVaults"
          },
          {
            "name": "AdminAuthority"
          },
          {
            "name": "BlockEmergencySwap"
          },
          {
            "name": "BlockLocalAdmin"
          },
          {
            "name": "UpdateTokenInfos"
          },
          {
            "name": "ScopeProgramId"
          },
          {
            "name": "ScopePriceId"
          },
          {
            "name": "MinPerformanceFeeBps"
          }
        ]
      }
    },
    {
      "name": "StrategyConfigOption",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "UpdateDepositCap"
          },
          {
            "name": "UpdateDepositCapIxn"
          },
          {
            "name": "UpdateWithdrawalCapACapacity"
          },
          {
            "name": "UpdateWithdrawalCapAInterval"
          },
          {
            "name": "UpdateWithdrawalCapACurrentTotal"
          },
          {
            "name": "UpdateWithdrawalCapBCapacity"
          },
          {
            "name": "UpdateWithdrawalCapBInterval"
          },
          {
            "name": "UpdateWithdrawalCapBCurrentTotal"
          },
          {
            "name": "UpdateMaxDeviationBps"
          },
          {
            "name": "UpdateSwapVaultMaxSlippage"
          },
          {
            "name": "UpdateStrategyType"
          },
          {
            "name": "UpdateDepositFee"
          },
          {
            "name": "UpdateWithdrawFee"
          },
          {
            "name": "UpdateCollectFeesFee"
          },
          {
            "name": "UpdateReward0Fee"
          },
          {
            "name": "UpdateReward1Fee"
          },
          {
            "name": "UpdateReward2Fee"
          },
          {
            "name": "UpdateAdminAuthority"
          },
          {
            "name": "KaminoRewardIndex0TS"
          },
          {
            "name": "KaminoRewardIndex1TS"
          },
          {
            "name": "KaminoRewardIndex2TS"
          },
          {
            "name": "KaminoRewardIndex0RewardPerSecond"
          },
          {
            "name": "KaminoRewardIndex1RewardPerSecond"
          },
          {
            "name": "KaminoRewardIndex2RewardPerSecond"
          },
          {
            "name": "UpdateDepositBlocked"
          },
          {
            "name": "UpdateRaydiumProtocolPositionOrBaseVaultAuthority"
          },
          {
            "name": "UpdateRaydiumPoolConfigOrBaseVaultAuthority"
          },
          {
            "name": "UpdateInvestBlocked"
          },
          {
            "name": "UpdateWithdrawBlocked"
          },
          {
            "name": "UpdateLocalAdminBlocked"
          },
          {
            "name": "UpdateCollateralIdA"
          },
          {
            "name": "UpdateCollateralIdB"
          },
          {
            "name": "UpdateFlashVaultSwap"
          },
          {
            "name": "AllowDepositWithoutInvest"
          },
          {
            "name": "UpdateSwapVaultMaxSlippageFromRef"
          },
          {
            "name": "ResetReferencePrices"
          },
          {
            "name": "UpdateStrategyCreationState"
          },
          {
            "name": "UpdateIsCommunity"
          },
          {
            "name": "UpdateRebalanceType"
          },
          {
            "name": "UpdateRebalanceParams"
          },
          {
            "name": "UpdateDepositMintingMethod"
          },
          {
            "name": "UpdateLookupTable"
          },
          {
            "name": "UpdateReferencePriceType"
          },
          {
            "name": "UpdateReward0Amount"
          },
          {
            "name": "UpdateReward1Amount"
          },
          {
            "name": "UpdateReward2Amount"
          }
        ]
      }
    },
    {
      "name": "StrategyStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Uninitialized"
          },
          {
            "name": "Active"
          },
          {
            "name": "Frozen"
          },
          {
            "name": "Rebalancing"
          },
          {
            "name": "NoPosition"
          }
        ]
      }
    },
    {
      "name": "StrategyType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Stable"
          },
          {
            "name": "Pegged"
          },
          {
            "name": "Volatile"
          }
        ]
      }
    },
    {
      "name": "CreationStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "IGNORED"
          },
          {
            "name": "SHADOW"
          },
          {
            "name": "LIVE"
          },
          {
            "name": "DEPRECATED"
          },
          {
            "name": "STAGING"
          }
        ]
      }
    },
    {
      "name": "ExecutiveWithdrawAction",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Freeze"
          },
          {
            "name": "Unfreeze"
          },
          {
            "name": "Rebalance"
          }
        ]
      }
    },
    {
      "name": "ReferencePriceType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "POOL"
          },
          {
            "name": "TWAP"
          }
        ]
      }
    },
    {
      "name": "LiquidityCalculationMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Deposit"
          },
          {
            "name": "Withdraw"
          }
        ]
      }
    },
    {
      "name": "UpdateCollateralInfoMode",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "CollateralId"
          },
          {
            "name": "LowerHeuristic"
          },
          {
            "name": "UpperHeuristic"
          },
          {
            "name": "ExpHeuristic"
          },
          {
            "name": "TwapDivergence"
          },
          {
            "name": "UpdateScopeTwap"
          },
          {
            "name": "UpdateScopeChain"
          },
          {
            "name": "UpdateName"
          },
          {
            "name": "UpdatePriceMaxAge"
          },
          {
            "name": "UpdateTwapMaxAge"
          },
          {
            "name": "UpdateDisabled"
          }
        ]
      }
    },
    {
      "name": "BalanceStatus",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Balanced"
          },
          {
            "name": "Unbalanced"
          }
        ]
      }
    },
    {
      "name": "DriftDirection",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Increasing"
          },
          {
            "name": "Decreasing"
          }
        ]
      }
    },
    {
      "name": "RebalanceDriftStep",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Uninitialized"
          },
          {
            "name": "Drifting"
          }
        ]
      }
    },
    {
      "name": "ExpanderStep",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "ExpandOrContract",
            "fields": [
              "u16"
            ]
          },
          {
            "name": "Recenter"
          }
        ]
      }
    },
    {
      "name": "RebalanceTakeProfitToken",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "A"
          },
          {
            "name": "B"
          }
        ]
      }
    },
    {
      "name": "RebalanceTakeProfitStep",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Uninitialized"
          },
          {
            "name": "TakingProfit"
          },
          {
            "name": "Finished"
          }
        ]
      }
    },
    {
      "name": "RebalanceAction",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "NewSqrtPriceRange",
            "fields": [
              "u128",
              "u128"
            ]
          },
          {
            "name": "NewTickRange",
            "fields": [
              "i32",
              "i32"
            ]
          },
          {
            "name": "WithdrawAndFreeze"
          }
        ]
      }
    },
    {
      "name": "RebalanceType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Manual"
          },
          {
            "name": "PricePercentage"
          },
          {
            "name": "PricePercentageWithReset"
          },
          {
            "name": "Drift"
          },
          {
            "name": "TakeProfit"
          },
          {
            "name": "PeriodicRebalance"
          },
          {
            "name": "Expander"
          }
        ]
      }
    },
    {
      "name": "CollateralTestToken",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "USDC"
          },
          {
            "name": "USDH"
          },
          {
            "name": "SOL"
          },
          {
            "name": "ETH"
          },
          {
            "name": "BTC"
          },
          {
            "name": "MSOL"
          },
          {
            "name": "STSOL"
          },
          {
            "name": "USDT"
          },
          {
            "name": "ORCA"
          },
          {
            "name": "MNDE"
          },
          {
            "name": "HBB"
          },
          {
            "name": "JSOL"
          },
          {
            "name": "USH"
          },
          {
            "name": "DAI"
          },
          {
            "name": "LDO"
          },
          {
            "name": "SCNSOL"
          },
          {
            "name": "UXD"
          },
          {
            "name": "HDG"
          },
          {
            "name": "DUST"
          },
          {
            "name": "USDR"
          },
          {
            "name": "RATIO"
          },
          {
            "name": "UXP"
          },
          {
            "name": "JITOSOL"
          },
          {
            "name": "RAY"
          },
          {
            "name": "BONK"
          },
          {
            "name": "SAMO"
          },
          {
            "name": "LaineSOL"
          },
          {
            "name": "BSOL"
          }
        ]
      }
    },
    {
      "name": "ScopePriceIdTest",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "SOL"
          },
          {
            "name": "ETH"
          },
          {
            "name": "BTC"
          },
          {
            "name": "SRM"
          },
          {
            "name": "RAY"
          },
          {
            "name": "FTT"
          },
          {
            "name": "MSOL"
          },
          {
            "name": "scnSOL_SOL"
          },
          {
            "name": "BNB"
          },
          {
            "name": "AVAX"
          },
          {
            "name": "DaoSOL_SOL"
          },
          {
            "name": "SaberMSOL_SOL"
          },
          {
            "name": "USDH"
          },
          {
            "name": "StSOL"
          },
          {
            "name": "CSOL_SOL"
          },
          {
            "name": "CETH_ETH"
          },
          {
            "name": "CBTC_BTC"
          },
          {
            "name": "CMSOL_SOL"
          },
          {
            "name": "wstETH"
          },
          {
            "name": "LDO"
          },
          {
            "name": "USDC"
          },
          {
            "name": "CUSDC_USDC"
          },
          {
            "name": "USDT"
          },
          {
            "name": "ORCA"
          },
          {
            "name": "MNDE"
          },
          {
            "name": "HBB"
          },
          {
            "name": "CORCA_ORCA"
          },
          {
            "name": "CSLND_SLND"
          },
          {
            "name": "CSRM_SRM"
          },
          {
            "name": "CRAY_RAY"
          },
          {
            "name": "CFTT_FTT"
          },
          {
            "name": "CSTSOL_STSOL"
          },
          {
            "name": "SLND"
          },
          {
            "name": "DAI"
          },
          {
            "name": "JSOL_SOL"
          },
          {
            "name": "USH"
          },
          {
            "name": "UXD"
          },
          {
            "name": "USDH_TWAP"
          },
          {
            "name": "USH_TWAP"
          },
          {
            "name": "UXD_TWAP"
          },
          {
            "name": "HDG"
          },
          {
            "name": "DUST"
          },
          {
            "name": "USDR"
          },
          {
            "name": "USDR_TWAP"
          },
          {
            "name": "RATIO"
          },
          {
            "name": "UXP"
          },
          {
            "name": "KUXDUSDCORCA"
          },
          {
            "name": "JITOSOL_SOL"
          },
          {
            "name": "SOL_EMA"
          },
          {
            "name": "ETH_EMA"
          },
          {
            "name": "BTC_EMA"
          },
          {
            "name": "SRM_EMA"
          },
          {
            "name": "RAY_EMA"
          },
          {
            "name": "FTT_EMA"
          },
          {
            "name": "MSOL_EMA"
          },
          {
            "name": "BNB_EMA"
          },
          {
            "name": "AVAX_EMA"
          },
          {
            "name": "STSOL_EMA"
          },
          {
            "name": "USDC_EMA"
          },
          {
            "name": "USDT_EMA"
          },
          {
            "name": "SLND_EMA"
          },
          {
            "name": "DAI_EMA"
          },
          {
            "name": "wstETH_TWAP"
          },
          {
            "name": "DUST_TWAP"
          },
          {
            "name": "BONK"
          },
          {
            "name": "BONK_TWAP"
          },
          {
            "name": "SAMO"
          },
          {
            "name": "SAMO_TWAP"
          },
          {
            "name": "BSOL"
          },
          {
            "name": "LaineSOL"
          }
        ]
      }
    },
    {
      "name": "DEX",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Orca"
          },
          {
            "name": "Raydium"
          }
        ]
      }
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "IntegerOverflow",
      "msg": "Integer overflow"
    },
    {
      "code": 6001,
      "name": "OperationForbidden",
      "msg": "Operation Forbidden"
    },
    {
      "code": 6002,
      "name": "ZeroAmount",
      "msg": "[DEPRECATED] Zero amount"
    },
    {
      "code": 6003,
      "name": "UnableToDeserializeAccount",
      "msg": "Unable to deserialize account"
    },
    {
      "code": 6004,
      "name": "VaultBalanceDoesNotMatchTokenA",
      "msg": "[DEPRECATED] Vault balance does not match for token A"
    },
    {
      "code": 6005,
      "name": "VaultBalanceDoesNotMatchTokenB",
      "msg": "[DEPRECATED] Vault balance does not match for token B"
    },
    {
      "code": 6006,
      "name": "SharesIssuedAmountDoesNotMatch",
      "msg": "[DEPRECATED] Shares issued amount does not match"
    },
    {
      "code": 6007,
      "name": "GlobalConfigKeyError",
      "msg": "Key is not present in global config"
    },
    {
      "code": 6008,
      "name": "SystemInEmergencyMode",
      "msg": "[DEPRECATED] System is in emergency mode"
    },
    {
      "code": 6009,
      "name": "GlobalDepositBlocked",
      "msg": "Global deposit is currently blocked"
    },
    {
      "code": 6010,
      "name": "GlobalWithdrawBlocked",
      "msg": "Global withdraw is currently blocked"
    },
    {
      "code": 6011,
      "name": "GlobalInvestBlocked",
      "msg": "Global invest is currently blocked"
    },
    {
      "code": 6012,
      "name": "OutOfRangeIntegralConversion",
      "msg": "Out of range integral conversion attempted"
    },
    {
      "code": 6013,
      "name": "MathOverflow",
      "msg": "[DEPRECATED] Mathematical operation with overflow"
    },
    {
      "code": 6014,
      "name": "TooMuchLiquidityToWithdraw",
      "msg": "Unable to withdraw more liquidity than available in position"
    },
    {
      "code": 6015,
      "name": "DepositAmountsZero",
      "msg": "Deposit amounts must be greater than zero"
    },
    {
      "code": 6016,
      "name": "SharesZero",
      "msg": "Number of shares to withdraw must be greater than zero"
    },
    {
      "code": 6017,
      "name": "StrategyNotActive",
      "msg": "Strategy not active"
    },
    {
      "code": 6018,
      "name": "UnharvestedAmounts",
      "msg": "There are unharvested gains"
    },
    {
      "code": 6019,
      "name": "InvalidRewardMapping",
      "msg": "Reward mapping incorrect"
    },
    {
      "code": 6020,
      "name": "InvalidRewardIndex",
      "msg": "Reward index incorrect"
    },
    {
      "code": 6021,
      "name": "OwnRewardUninitialized",
      "msg": "Cannot use uninitialized reward vault"
    },
    {
      "code": 6022,
      "name": "PriceNotValid",
      "msg": "Price is not valid"
    },
    {
      "code": 6023,
      "name": "SwapRewardImbalanced",
      "msg": "Must provide almost equal amounts of tokens"
    },
    {
      "code": 6024,
      "name": "SwapRewardTooSmall",
      "msg": "Swap reward is zero or less than requested"
    },
    {
      "code": 6025,
      "name": "SwapRewardLessThanRequested",
      "msg": "Swap reward is less than what user requested as minimum"
    },
    {
      "code": 6026,
      "name": "SwapRewardLessThanMinimum",
      "msg": "Swap reward is less than minimum acceptable"
    },
    {
      "code": 6027,
      "name": "WrongDiscriminator",
      "msg": "Wrong discriminator"
    },
    {
      "code": 6028,
      "name": "WrongMint",
      "msg": "Wrong mint"
    },
    {
      "code": 6029,
      "name": "WrongVault",
      "msg": "Wrong vault"
    },
    {
      "code": 6030,
      "name": "SwapAmountsZero",
      "msg": "Swap amounts must be greater than zero"
    },
    {
      "code": 6031,
      "name": "PriceTooOld",
      "msg": "Price too old"
    },
    {
      "code": 6032,
      "name": "CannotInvestZeroAmount",
      "msg": "Cannot invest zero amount"
    },
    {
      "code": 6033,
      "name": "MaxInvestableZero",
      "msg": "Cannot have zero investable amount"
    },
    {
      "code": 6034,
      "name": "CollectFeesBlocked",
      "msg": "Collect fees is blocked"
    },
    {
      "code": 6035,
      "name": "CollectRewardsBlocked",
      "msg": "Collect rewards is blocked"
    },
    {
      "code": 6036,
      "name": "SwapRewardsBlocked",
      "msg": "Swap rewards is blocked"
    },
    {
      "code": 6037,
      "name": "WrongRewardCollateralID",
      "msg": "Reward collateral ID is incorrect for strategy"
    },
    {
      "code": 6038,
      "name": "InvalidPositionAccount",
      "msg": "Position account doesn't match internal records"
    },
    {
      "code": 6039,
      "name": "CouldNotDeserializeScope",
      "msg": "Scope account could not be deserialized"
    },
    {
      "code": 6040,
      "name": "WrongCollateralID",
      "msg": "[DEPRECATED] Collateral ID invalid for strategy"
    },
    {
      "code": 6041,
      "name": "CollateralTokensExceedDepositCap",
      "msg": "Collaterals exceed deposit cap"
    },
    {
      "code": 6042,
      "name": "SwapUnevenVaultsBlocked",
      "msg": "Swap uneven vaults is blocked"
    },
    {
      "code": 6043,
      "name": "VaultsAreAlreadyBalanced",
      "msg": "Cannot swap as vaults are already balanced"
    },
    {
      "code": 6044,
      "name": "CannotSwapUnevenOutOfRange",
      "msg": "Cannot swap uneven vaults when position is out of range"
    },
    {
      "code": 6045,
      "name": "DivideByZero",
      "msg": "Cannot divide by zero"
    },
    {
      "code": 6046,
      "name": "DeltaATooLarge",
      "msg": "[DEPRECATED] Delta A too large"
    },
    {
      "code": 6047,
      "name": "DeltaBTooLarge",
      "msg": "[DEPRECATED] Delta B too large"
    },
    {
      "code": 6048,
      "name": "CannotExecutiveWithdrawZeroAmount",
      "msg": "[DEPRECATED] Cannot executive withdraw zero amount"
    },
    {
      "code": 6049,
      "name": "CannotWithdrawZeroAmount",
      "msg": "Cannot withdraw zero amount"
    },
    {
      "code": 6050,
      "name": "CannotCollectFeesOnZeroLiquidityPosition",
      "msg": "[DEPRECATED] Cannot collect fees on zero liquidity position"
    },
    {
      "code": 6051,
      "name": "StrategyNotActiveWhenDepositing",
      "msg": "Cannot deposit inactive position"
    },
    {
      "code": 6052,
      "name": "StrategyNotActiveWhenOpeningPosition",
      "msg": "Cannot open position with existing opened position"
    },
    {
      "code": 6053,
      "name": "CollateralTokensExceedDepositCapPerIxn",
      "msg": "Collaterals exceed deposit ixn cap"
    },
    {
      "code": 6054,
      "name": "CannotDepositOutOfRange",
      "msg": "Cannot deposit when strategy out of range"
    },
    {
      "code": 6055,
      "name": "CannotInvestOutOfRange",
      "msg": "Cannot invest when strategy out of range"
    },
    {
      "code": 6056,
      "name": "WithdrawalCapReached",
      "msg": "Withdrawal cap is reached"
    },
    {
      "code": 6057,
      "name": "TimestampDecrease",
      "msg": "Timestamp decrease"
    },
    {
      "code": 6058,
      "name": "CPINotAllowed",
      "msg": "CPI not allowed"
    },
    {
      "code": 6059,
      "name": "OrcaPriceTooDifferentFromScope",
      "msg": "Cannot use orca price as it is too different from scope price"
    },
    {
      "code": 6060,
      "name": "LowerTickLargerThanUpperTick",
      "msg": "Lower tick larger than upper tick"
    },
    {
      "code": 6061,
      "name": "LowerTickTooLow",
      "msg": "Lower tick is lower than the minimal supported low tick"
    },
    {
      "code": 6062,
      "name": "UpperTickTooLarge",
      "msg": "Upper tick is larger than the maximum supported tick"
    },
    {
      "code": 6063,
      "name": "LowerTickNotMultipleOfTickSpacing",
      "msg": "Lower tick is not a multiple of tick spacing"
    },
    {
      "code": 6064,
      "name": "UpperTickNotMultipleOfTickSpacing",
      "msg": "Upper tick is not a multiple of tick spacing"
    },
    {
      "code": 6065,
      "name": "CannotChangeAdminAuthority",
      "msg": "Cannot change admin authority"
    },
    {
      "code": 6066,
      "name": "CannotResizeAccount",
      "msg": "Cannot resize with smaller new size"
    },
    {
      "code": 6067,
      "name": "ScopeChainUpdateFailed",
      "msg": "Scope chain update failed"
    },
    {
      "code": 6068,
      "name": "PriceTooDivergentFromTwap",
      "msg": "Price too divergent from twap"
    },
    {
      "code": 6069,
      "name": "ExistingRewardOverride",
      "msg": "[DEPRECATED] Can not override the existing reward"
    },
    {
      "code": 6070,
      "name": "WrongKaminoRewardId",
      "msg": "Kamino reward id exceeds the available slots"
    },
    {
      "code": 6071,
      "name": "KaminoRewardNotExist",
      "msg": "Kamino reward is not initialized"
    },
    {
      "code": 6072,
      "name": "KaminoRewardAlreadyExists",
      "msg": "Kamino reward is already initialized"
    },
    {
      "code": 6073,
      "name": "KaminoCollateralNotValid",
      "msg": "Kamino collateral is not valid"
    },
    {
      "code": 6074,
      "name": "KaminoRewardExceedsAvailableAmount",
      "msg": "[DEPRECATED] Expected kamino reward is bigger then the available amount within the vault"
    },
    {
      "code": 6075,
      "name": "SwapUnevenVaultsOvershoot",
      "msg": "Swap uneven vaults result in the opposite unbalance of the vaults"
    },
    {
      "code": 6076,
      "name": "BpsNotInRange",
      "msg": "Bps parameter passed to instruction is not in range"
    },
    {
      "code": 6077,
      "name": "EmergencySwapBlocked",
      "msg": "Emergency Swap is blocked"
    },
    {
      "code": 6078,
      "name": "StrategyNotFrozen",
      "msg": "Strategy is expected to be frozen for this operation"
    },
    {
      "code": 6079,
      "name": "UnexpectedTokenAmountsPostSwap",
      "msg": "Token left in vault post swap are lower than expected"
    },
    {
      "code": 6080,
      "name": "AccountNotBelongToDEX",
      "msg": "Account doesn't belong to the DEX"
    },
    {
      "code": 6081,
      "name": "WrongDEXProgramID",
      "msg": "Wrong DEX program ID"
    },
    {
      "code": 6082,
      "name": "OrcaRewardUninitialized",
      "msg": "Cannot use uninitialized orca reward vault"
    },
    {
      "code": 6083,
      "name": "InvalidAdminAuthority",
      "msg": "Invalid admin authority"
    },
    {
      "code": 6084,
      "name": "PriceIsBiggerThanHeuristic",
      "msg": "Token price is bigger than heuristic"
    },
    {
      "code": 6085,
      "name": "PriceIsLowerThanHeuristic",
      "msg": "Token price is lower than heuristic"
    },
    {
      "code": 6086,
      "name": "AccountDifferentThanExpected",
      "msg": "Account different than expected"
    },
    {
      "code": 6087,
      "name": "SwapAmountsTooSmall",
      "msg": "Swap amount below the minimum value"
    },
    {
      "code": 6088,
      "name": "InvalidDexProgramId",
      "msg": "Invalid dex program id"
    },
    {
      "code": 6089,
      "name": "StrategyDepositBlocked",
      "msg": "Strategy deposit is currently blocked"
    },
    {
      "code": 6090,
      "name": "StrategyInvestBlocked",
      "msg": "Strategy invest is currently blocked"
    },
    {
      "code": 6091,
      "name": "StrategyWithdrawBlocked",
      "msg": "Strategy withdraw is currently blocked"
    },
    {
      "code": 6092,
      "name": "WrongSwapVaultDirection",
      "msg": "Vault swap can't be performed in the required direction"
    },
    {
      "code": 6093,
      "name": "SwapVaultsTooBig",
      "msg": "Provided amount for vault swap is over the limit"
    },
    {
      "code": 6094,
      "name": "SwapVaultsCashOutputBelowMinimum",
      "msg": "Token out for cash based vault swap is below minimum expected"
    },
    {
      "code": 6095,
      "name": "FlashIxsNotEnded",
      "msg": "Flash ixs initiated without the closing ix in the transaction"
    },
    {
      "code": 6096,
      "name": "FlashTxWithUnexpectedIxs",
      "msg": "Some unexpected instructions are present in the tx. Either before or after the flash ixs, or some ix target the same program between"
    },
    {
      "code": 6097,
      "name": "FlashIxsAccountMismatch",
      "msg": "Some accounts differ between the two flash ixs"
    },
    {
      "code": 6098,
      "name": "FlashIxsIncludeScope",
      "msg": "A scope ix is present in a flash tx"
    },
    {
      "code": 6099,
      "name": "FlashVaultSwapBlocked",
      "msg": "Flash vault swap is blocked on this strategy"
    },
    {
      "code": 6100,
      "name": "FlashVaultSwapWrongAmountToLeave",
      "msg": "Unexpected amount of tokens in ata prior flash vault swap (wrong amount_to_leave_to_user)"
    },
    {
      "code": 6101,
      "name": "DepositLessThanMinimum",
      "msg": "Deposit amount less than minimal allowed"
    },
    {
      "code": 6102,
      "name": "DepositWithoutInvestDisallowed",
      "msg": "Cannot deposit without invest"
    },
    {
      "code": 6103,
      "name": "InvalidScopeChain",
      "msg": "Invalid Scope Chain"
    },
    {
      "code": 6104,
      "name": "InvalidTwapId",
      "msg": "Invalid Twap Value"
    },
    {
      "code": 6105,
      "name": "PositionHasRemainingLiquidity",
      "msg": "Existent position has liquidity, new position creation is forbidden"
    },
    {
      "code": 6106,
      "name": "PoolRebalancing",
      "msg": "Deposit is not allowed as pool is rebalancing"
    },
    {
      "code": 6107,
      "name": "PermissionlessRebalancingDisabled",
      "msg": "Permissionless rebalancing is disabled"
    },
    {
      "code": 6108,
      "name": "ManualRebalanceInvalidOwner",
      "msg": "Only the owner of the strategy can manually rebalance it"
    },
    {
      "code": 6109,
      "name": "InvalidRebalanceType",
      "msg": "Invalid rebalance type for the strategy"
    },
    {
      "code": 6110,
      "name": "NoRebalanceNecessary",
      "msg": "No rebalance necessary based on current rebalance type/parameters"
    },
    {
      "code": 6111,
      "name": "TickArraysDoNotMatchRebalance",
      "msg": "The given tick arrays do not match the rebalance result"
    },
    {
      "code": 6112,
      "name": "StrategyPositionNotValid",
      "msg": "Expected strategy position to be initialized"
    },
    {
      "code": 6113,
      "name": "CouldNotDeserializeRebalanceState",
      "msg": "Rebalance state could not be deserialized"
    },
    {
      "code": 6114,
      "name": "CouldNotSerializeRebalanceState",
      "msg": "Rebalance state could not be serialized"
    },
    {
      "code": 6115,
      "name": "CouldNotDeserializeRebalanceParams",
      "msg": "Rebalance params could not be deserialized"
    },
    {
      "code": 6116,
      "name": "NotEnoughTokensForRatio",
      "msg": "Deposit is not allowed as token amounts are not enough to match our holdings ratio"
    },
    {
      "code": 6117,
      "name": "AmountsRepresentZeroShares",
      "msg": "The provided amounts are too small"
    },
    {
      "code": 6118,
      "name": "MaxLossExceeded",
      "msg": "Rouding errors exceed the maximal loss tolerance"
    },
    {
      "code": 6119,
      "name": "RewardNotStrategyToken",
      "msg": "Reward does not match strategy token"
    },
    {
      "code": 6120,
      "name": "DecimalToU64ConversionFailed",
      "msg": "Decimal to u64 conversion failed"
    },
    {
      "code": 6121,
      "name": "DecimalOperationFailed",
      "msg": "Decimal operation failed"
    },
    {
      "code": 6122,
      "name": "VaultBalancesCausesWrongSharesIssuance",
      "msg": "Deposit is not allowed as the strategy is not fully invested in the pool "
    },
    {
      "code": 6123,
      "name": "TokenDisabled",
      "msg": "Token cannot be used in strategy creation"
    },
    {
      "code": 6124,
      "name": "InvalidReferencePriceType",
      "msg": "Invalid reference price type"
    },
    {
      "code": 6125,
      "name": "TokenToSwapNotEnough",
      "msg": "Token amount to be swapped is not enough"
    },
    {
      "code": 6126,
      "name": "TokenAccountBalanceMismatch",
      "msg": "Token amount in ata is different than the expected amount"
    },
    {
      "code": 6127,
      "name": "UnexpectedProgramIdForPrerequisiteIx",
      "msg": "Unexpected programID for prerequisite ix"
    },
    {
      "code": 6128,
      "name": "ComputeFeesAndRewardsUpdateError",
      "msg": "Got an error from the dex specific function while computing the fees/rewards update"
    },
    {
      "code": 6129,
      "name": "SharesNotZero",
      "msg": "There must be no shares issued when closing a strategy"
    }
  ]
}
