{
  "version": "0.3.6",
  "name": "whirlpool",
  "instructions": [
    {
      "name": "initializeConfig",
      "accounts": [
        {
          "name": "config",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "feeAuthority",
          "type": "publicKey"
        },
        {
          "name": "collectProtocolFeesAuthority",
          "type": "publicKey"
        },
        {
          "name": "rewardEmissionsSuperAuthority",
          "type": "publicKey"
        },
        {
          "name": "defaultProtocolFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "initializePool",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeTier",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bumps",
          "type": {
            "defined": "WhirlpoolBumps"
          }
        },
        {
          "name": "tickSpacing",
          "type": "u16"
        },
        {
          "name": "initialSqrtPrice",
          "type": "u128"
        }
      ]
    },
    {
      "name": "initializeTickArray",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tickArray",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "startTickIndex",
          "type": "i32"
        }
      ]
    },
    {
      "name": "initializeFeeTier",
      "accounts": [
        {
          "name": "config",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tickSpacing",
          "type": "u16"
        },
        {
          "name": "defaultFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "initializeReward",
      "accounts": [
        {
          "name": "rewardAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "setRewardEmissions",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "rewardVault",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        },
        {
          "name": "emissionsPerSecondX64",
          "type": "u128"
        }
      ]
    },
    {
      "name": "openPosition",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "owner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bumps",
          "type": {
            "defined": "OpenPositionBumps"
          }
        },
        {
          "name": "tickLowerIndex",
          "type": "i32"
        },
        {
          "name": "tickUpperIndex",
          "type": "i32"
        }
      ]
    },
    {
      "name": "openPositionWithMetadata",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "owner",
          "isMut": false,
          "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": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataUpdateAuth",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bumps",
          "type": {
            "defined": "OpenPositionWithMetadataBumps"
          }
        },
        {
          "name": "tickLowerIndex",
          "type": "i32"
        },
        {
          "name": "tickUpperIndex",
          "type": "i32"
        }
      ]
    },
    {
      "name": "increaseLiquidity",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u128"
        },
        {
          "name": "tokenMaxA",
          "type": "u64"
        },
        {
          "name": "tokenMaxB",
          "type": "u64"
        }
      ]
    },
    {
      "name": "decreaseLiquidity",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u128"
        },
        {
          "name": "tokenMinA",
          "type": "u64"
        },
        {
          "name": "tokenMinB",
          "type": "u64"
        }
      ]
    },
    {
      "name": "updateFeesAndRewards",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "collectFees",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "collectReward",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardOwnerAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "collectProtocolFees",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectProtocolFeesAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenDestinationA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenDestinationB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "swap",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracle",
          "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": "closePosition",
      "accounts": [
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setDefaultFeeRate",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "feeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "defaultFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setDefaultProtocolFeeRate",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "defaultProtocolFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setFeeRate",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "feeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setProtocolFeeRate",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "protocolFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setFeeAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newFeeAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setCollectProtocolFeesAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectProtocolFeesAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newCollectProtocolFeesAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setRewardAuthority",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newRewardAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "setRewardAuthorityBySuperAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardEmissionsSuperAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newRewardAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "setRewardEmissionsSuperAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardEmissionsSuperAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newRewardEmissionsSuperAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "twoHopSwap",
      "accounts": [
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpoolOne",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "whirlpoolTwo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountOneA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultOneA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountOneB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultOneB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountTwoA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultTwoA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountTwoB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultTwoB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayOne0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayOne1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayOne2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracleOne",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "oracleTwo",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "otherAmountThreshold",
          "type": "u64"
        },
        {
          "name": "amountSpecifiedIsInput",
          "type": "bool"
        },
        {
          "name": "aToBOne",
          "type": "bool"
        },
        {
          "name": "aToBTwo",
          "type": "bool"
        },
        {
          "name": "sqrtPriceLimitOne",
          "type": "u128"
        },
        {
          "name": "sqrtPriceLimitTwo",
          "type": "u128"
        }
      ]
    },
    {
      "name": "initializePositionBundle",
      "accounts": [
        {
          "name": "positionBundle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionBundleTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializePositionBundleWithMetadata",
      "accounts": [
        {
          "name": "positionBundle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionBundleMetadata",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleOwner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "metadataUpdateAuth",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "deletePositionBundle",
      "accounts": [
        {
          "name": "positionBundle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleOwner",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "openBundledPosition",
      "accounts": [
        {
          "name": "bundledPosition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionBundleAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bundleIndex",
          "type": "u16"
        },
        {
          "name": "tickLowerIndex",
          "type": "i32"
        },
        {
          "name": "tickUpperIndex",
          "type": "i32"
        }
      ]
    },
    {
      "name": "closeBundledPosition",
      "accounts": [
        {
          "name": "bundledPosition",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionBundleTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionBundleAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "bundleIndex",
          "type": "u16"
        }
      ]
    },
    {
      "name": "openPositionWithTokenExtensions",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "owner",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "token2022Program",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "associatedTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "metadataUpdateAuth",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tickLowerIndex",
          "type": "i32"
        },
        {
          "name": "tickUpperIndex",
          "type": "i32"
        },
        {
          "name": "withTokenMetadataExtension",
          "type": "bool"
        }
      ]
    },
    {
      "name": "closePositionWithTokenExtensions",
      "accounts": [
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "token2022Program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "lockPosition",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lockConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "token2022Program",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "lockType",
          "type": {
            "defined": "LockType"
          }
        }
      ]
    },
    {
      "name": "resetPositionRange",
      "accounts": [
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "newTickLowerIndex",
          "type": "i32"
        },
        {
          "name": "newTickUpperIndex",
          "type": "i32"
        }
      ]
    },
    {
      "name": "transferLockedPosition",
      "accounts": [
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "position",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "destinationTokenAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "lockConfig",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "token2022Program",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializeAdaptiveFeeTier",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "feeTierIndex",
          "type": "u16"
        },
        {
          "name": "tickSpacing",
          "type": "u16"
        },
        {
          "name": "initializePoolAuthority",
          "type": "publicKey"
        },
        {
          "name": "delegatedFeeAuthority",
          "type": "publicKey"
        },
        {
          "name": "defaultBaseFeeRate",
          "type": "u16"
        },
        {
          "name": "filterPeriod",
          "type": "u16"
        },
        {
          "name": "decayPeriod",
          "type": "u16"
        },
        {
          "name": "reductionFactor",
          "type": "u16"
        },
        {
          "name": "adaptiveFeeControlFactor",
          "type": "u32"
        },
        {
          "name": "maxVolatilityAccumulator",
          "type": "u32"
        },
        {
          "name": "tickGroupSize",
          "type": "u16"
        },
        {
          "name": "majorSwapThresholdTicks",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setDefaultBaseFeeRate",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "defaultBaseFeeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "setDelegatedFeeAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newDelegatedFeeAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setInitializePoolAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newInitializePoolAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setPresetAdaptiveFeeConstants",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "filterPeriod",
          "type": "u16"
        },
        {
          "name": "decayPeriod",
          "type": "u16"
        },
        {
          "name": "reductionFactor",
          "type": "u16"
        },
        {
          "name": "adaptiveFeeControlFactor",
          "type": "u32"
        },
        {
          "name": "maxVolatilityAccumulator",
          "type": "u32"
        },
        {
          "name": "tickGroupSize",
          "type": "u16"
        },
        {
          "name": "majorSwapThresholdTicks",
          "type": "u16"
        }
      ]
    },
    {
      "name": "initializePoolWithAdaptiveFee",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "initializePoolAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracle",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "initialSqrtPrice",
          "type": "u128"
        },
        {
          "name": "tradeEnableTimestamp",
          "type": {
            "option": "u64"
          }
        }
      ]
    },
    {
      "name": "setFeeRateByDelegatedFeeAuthority",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "adaptiveFeeTier",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "delegatedFeeAuthority",
          "isMut": false,
          "isSigner": true
        }
      ],
      "args": [
        {
          "name": "feeRate",
          "type": "u16"
        }
      ]
    },
    {
      "name": "collectFeesV2",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "collectProtocolFeesV2",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "collectProtocolFeesAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenDestinationA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenDestinationB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "collectRewardV2",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardOwnerAccount",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        },
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "decreaseLiquidityV2",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u128"
        },
        {
          "name": "tokenMinA",
          "type": "u64"
        },
        {
          "name": "tokenMinB",
          "type": "u64"
        },
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "increaseLiquidityV2",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "positionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "position",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "positionTokenAccount",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayLower",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayUpper",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "liquidityAmount",
          "type": "u128"
        },
        {
          "name": "tokenMaxA",
          "type": "u64"
        },
        {
          "name": "tokenMaxB",
          "type": "u64"
        },
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "initializePoolV2",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeTier",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "tickSpacing",
          "type": "u16"
        },
        {
          "name": "initialSqrtPrice",
          "type": "u128"
        }
      ]
    },
    {
      "name": "initializeRewardV2",
      "accounts": [
        {
          "name": "rewardAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardTokenBadge",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rewardVault",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "rewardTokenProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "rent",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        }
      ]
    },
    {
      "name": "setRewardEmissionsV2",
      "accounts": [
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "rewardAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "rewardVault",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "rewardIndex",
          "type": "u8"
        },
        {
          "name": "emissionsPerSecondX64",
          "type": "u128"
        }
      ]
    },
    {
      "name": "swapV2",
      "accounts": [
        {
          "name": "tokenProgramA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "whirlpool",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMintA",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintB",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultA",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultB",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArray2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracle",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "otherAmountThreshold",
          "type": "u64"
        },
        {
          "name": "sqrtPriceLimit",
          "type": "u128"
        },
        {
          "name": "amountSpecifiedIsInput",
          "type": "bool"
        },
        {
          "name": "aToB",
          "type": "bool"
        },
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "twoHopSwapV2",
      "accounts": [
        {
          "name": "whirlpoolOne",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "whirlpoolTwo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenMintInput",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintIntermediate",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenMintOutput",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramInput",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramIntermediate",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenProgramOutput",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountInput",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultOneInput",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultOneIntermediate",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultTwoIntermediate",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenVaultTwoOutput",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenOwnerAccountOutput",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tokenAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tickArrayOne0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayOne1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayOne2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo0",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo1",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "tickArrayTwo2",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracleOne",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "oracleTwo",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "memoProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": [
        {
          "name": "amount",
          "type": "u64"
        },
        {
          "name": "otherAmountThreshold",
          "type": "u64"
        },
        {
          "name": "amountSpecifiedIsInput",
          "type": "bool"
        },
        {
          "name": "aToBOne",
          "type": "bool"
        },
        {
          "name": "aToBTwo",
          "type": "bool"
        },
        {
          "name": "sqrtPriceLimitOne",
          "type": "u128"
        },
        {
          "name": "sqrtPriceLimitTwo",
          "type": "u128"
        },
        {
          "name": "remainingAccountsInfo",
          "type": {
            "option": {
              "defined": "RemainingAccountsInfo"
            }
          }
        }
      ]
    },
    {
      "name": "initializeConfigExtension",
      "accounts": [
        {
          "name": "config",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "configExtension",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "feeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setConfigExtensionAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpoolsConfigExtension",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "configExtensionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newConfigExtensionAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "setTokenBadgeAuthority",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpoolsConfigExtension",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "configExtensionAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "newTokenBadgeAuthority",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "initializeTokenBadge",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpoolsConfigExtension",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadge",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "funder",
          "isMut": true,
          "isSigner": true
        },
        {
          "name": "systemProgram",
          "isMut": false,
          "isSigner": false
        }
      ],
      "args": []
    },
    {
      "name": "deleteTokenBadge",
      "accounts": [
        {
          "name": "whirlpoolsConfig",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "whirlpoolsConfigExtension",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadgeAuthority",
          "isMut": false,
          "isSigner": true
        },
        {
          "name": "tokenMint",
          "isMut": false,
          "isSigner": false
        },
        {
          "name": "tokenBadge",
          "isMut": true,
          "isSigner": false
        },
        {
          "name": "receiver",
          "isMut": true,
          "isSigner": false
        }
      ],
      "args": []
    }
  ],
  "accounts": [
    {
      "name": "AdaptiveFeeTier",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "feeTierIndex",
            "type": "u16"
          },
          {
            "name": "tickSpacing",
            "type": "u16"
          },
          {
            "name": "initializePoolAuthority",
            "type": "publicKey"
          },
          {
            "name": "delegatedFeeAuthority",
            "type": "publicKey"
          },
          {
            "name": "defaultBaseFeeRate",
            "type": "u16"
          },
          {
            "name": "filterPeriod",
            "type": "u16"
          },
          {
            "name": "decayPeriod",
            "type": "u16"
          },
          {
            "name": "reductionFactor",
            "type": "u16"
          },
          {
            "name": "adaptiveFeeControlFactor",
            "type": "u32"
          },
          {
            "name": "maxVolatilityAccumulator",
            "type": "u32"
          },
          {
            "name": "tickGroupSize",
            "type": "u16"
          },
          {
            "name": "majorSwapThresholdTicks",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "WhirlpoolsConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "feeAuthority",
            "type": "publicKey"
          },
          {
            "name": "collectProtocolFeesAuthority",
            "type": "publicKey"
          },
          {
            "name": "rewardEmissionsSuperAuthority",
            "type": "publicKey"
          },
          {
            "name": "defaultProtocolFeeRate",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "WhirlpoolsConfigExtension",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "configExtensionAuthority",
            "type": "publicKey"
          },
          {
            "name": "tokenBadgeAuthority",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "FeeTier",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "tickSpacing",
            "type": "u16"
          },
          {
            "name": "defaultFeeRate",
            "type": "u16"
          }
        ]
      }
    },
    {
      "name": "LockConfig",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "position",
            "type": "publicKey"
          },
          {
            "name": "positionOwner",
            "type": "publicKey"
          },
          {
            "name": "whirlpool",
            "type": "publicKey"
          },
          {
            "name": "lockedTimestamp",
            "type": "u64"
          },
          {
            "name": "lockType",
            "type": {
              "defined": "LockTypeLabel"
            }
          }
        ]
      }
    },
    {
      "name": "Oracle",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpool",
            "type": "publicKey"
          },
          {
            "name": "tradeEnableTimestamp",
            "type": "u64"
          },
          {
            "name": "adaptiveFeeConstants",
            "type": {
              "defined": "AdaptiveFeeConstants"
            }
          },
          {
            "name": "adaptiveFeeVariables",
            "type": {
              "defined": "AdaptiveFeeVariables"
            }
          },
          {
            "name": "reserved",
            "type": {
              "array": [
                "u8",
                128
              ]
            }
          }
        ]
      }
    },
    {
      "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": "PositionBundle",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "positionBundleMint",
            "type": "publicKey"
          },
          {
            "name": "positionBitmap",
            "type": {
              "array": [
                "u8",
                32
              ]
            }
          }
        ]
      }
    },
    {
      "name": "TickArray",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "startTickIndex",
            "type": "i32"
          },
          {
            "name": "ticks",
            "type": {
              "array": [
                {
                  "defined": "Tick"
                },
                88
              ]
            }
          },
          {
            "name": "whirlpool",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "TokenBadge",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "tokenMint",
            "type": "publicKey"
          }
        ]
      }
    },
    {
      "name": "Whirlpool",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolsConfig",
            "type": "publicKey"
          },
          {
            "name": "whirlpoolBump",
            "type": {
              "array": [
                "u8",
                1
              ]
            }
          },
          {
            "name": "tickSpacing",
            "type": "u16"
          },
          {
            "name": "feeTierIndexSeed",
            "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
              ]
            }
          }
        ]
      }
    }
  ],
  "types": [
    {
      "name": "LockType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Permanent"
          }
        ]
      }
    },
    {
      "name": "LockTypeLabel",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "Permanent"
          }
        ]
      }
    },
    {
      "name": "AdaptiveFeeConstants",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "filterPeriod",
            "type": "u16"
          },
          {
            "name": "decayPeriod",
            "type": "u16"
          },
          {
            "name": "reductionFactor",
            "type": "u16"
          },
          {
            "name": "adaptiveFeeControlFactor",
            "type": "u32"
          },
          {
            "name": "maxVolatilityAccumulator",
            "type": "u32"
          },
          {
            "name": "tickGroupSize",
            "type": "u16"
          },
          {
            "name": "majorSwapThresholdTicks",
            "type": "u16"
          },
          {
            "name": "reserved",
            "type": {
              "array": [
                "u8",
                16
              ]
            }
          }
        ]
      }
    },
    {
      "name": "AdaptiveFeeVariables",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "lastReferenceUpdateTimestamp",
            "type": "u64"
          },
          {
            "name": "lastMajorSwapTimestamp",
            "type": "u64"
          },
          {
            "name": "volatilityReference",
            "type": "u32"
          },
          {
            "name": "tickGroupIndexReference",
            "type": "i32"
          },
          {
            "name": "volatilityAccumulator",
            "type": "u32"
          },
          {
            "name": "reserved",
            "type": {
              "array": [
                "u8",
                16
              ]
            }
          }
        ]
      }
    },
    {
      "name": "OpenPositionBumps",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "positionBump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "OpenPositionWithMetadataBumps",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "positionBump",
            "type": "u8"
          },
          {
            "name": "metadataBump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "PositionRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "growthInsideCheckpoint",
            "type": "u128"
          },
          {
            "name": "amountOwed",
            "type": "u64"
          }
        ]
      }
    },
    {
      "name": "Tick",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "initialized",
            "type": "bool"
          },
          {
            "name": "liquidityNet",
            "type": "i128"
          },
          {
            "name": "liquidityGross",
            "type": "u128"
          },
          {
            "name": "feeGrowthOutsideA",
            "type": "u128"
          },
          {
            "name": "feeGrowthOutsideB",
            "type": "u128"
          },
          {
            "name": "rewardGrowthsOutside",
            "type": {
              "array": [
                "u128",
                3
              ]
            }
          }
        ]
      }
    },
    {
      "name": "WhirlpoolBumps",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "whirlpoolBump",
            "type": "u8"
          }
        ]
      }
    },
    {
      "name": "WhirlpoolRewardInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "mint",
            "type": "publicKey"
          },
          {
            "name": "vault",
            "type": "publicKey"
          },
          {
            "name": "authority",
            "type": "publicKey"
          },
          {
            "name": "emissionsPerSecondX64",
            "type": "u128"
          },
          {
            "name": "growthGlobalX64",
            "type": "u128"
          }
        ]
      }
    },
    {
      "name": "AccountsType",
      "type": {
        "kind": "enum",
        "variants": [
          {
            "name": "TransferHookA"
          },
          {
            "name": "TransferHookB"
          },
          {
            "name": "TransferHookReward"
          },
          {
            "name": "TransferHookInput"
          },
          {
            "name": "TransferHookIntermediate"
          },
          {
            "name": "TransferHookOutput"
          },
          {
            "name": "SupplementalTickArrays"
          },
          {
            "name": "SupplementalTickArraysOne"
          },
          {
            "name": "SupplementalTickArraysTwo"
          }
        ]
      }
    },
    {
      "name": "RemainingAccountsInfo",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "slices",
            "type": {
              "vec": {
                "defined": "RemainingAccountsSlice"
              }
            }
          }
        ]
      }
    },
    {
      "name": "RemainingAccountsSlice",
      "type": {
        "kind": "struct",
        "fields": [
          {
            "name": "accountsType",
            "type": {
              "defined": "AccountsType"
            }
          },
          {
            "name": "length",
            "type": "u8"
          }
        ]
      }
    }
  ],
  "events": [
    {
      "name": "LiquidityDecreased",
      "fields": [
        {
          "name": "whirlpool",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "position",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tickLowerIndex",
          "type": "i32",
          "index": false
        },
        {
          "name": "tickUpperIndex",
          "type": "i32",
          "index": false
        },
        {
          "name": "liquidity",
          "type": "u128",
          "index": false
        },
        {
          "name": "tokenAAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenBAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenATransferFee",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenBTransferFee",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "LiquidityIncreased",
      "fields": [
        {
          "name": "whirlpool",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "position",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tickLowerIndex",
          "type": "i32",
          "index": false
        },
        {
          "name": "tickUpperIndex",
          "type": "i32",
          "index": false
        },
        {
          "name": "liquidity",
          "type": "u128",
          "index": false
        },
        {
          "name": "tokenAAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenBAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenATransferFee",
          "type": "u64",
          "index": false
        },
        {
          "name": "tokenBTransferFee",
          "type": "u64",
          "index": false
        }
      ]
    },
    {
      "name": "PoolInitialized",
      "fields": [
        {
          "name": "whirlpool",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "whirlpoolsConfig",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tokenMintA",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tokenMintB",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tickSpacing",
          "type": "u16",
          "index": false
        },
        {
          "name": "tokenProgramA",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "tokenProgramB",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "decimalsA",
          "type": "u8",
          "index": false
        },
        {
          "name": "decimalsB",
          "type": "u8",
          "index": false
        },
        {
          "name": "initialSqrtPrice",
          "type": "u128",
          "index": false
        }
      ]
    },
    {
      "name": "Traded",
      "fields": [
        {
          "name": "whirlpool",
          "type": "publicKey",
          "index": false
        },
        {
          "name": "aToB",
          "type": "bool",
          "index": false
        },
        {
          "name": "preSqrtPrice",
          "type": "u128",
          "index": false
        },
        {
          "name": "postSqrtPrice",
          "type": "u128",
          "index": false
        },
        {
          "name": "inputAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "outputAmount",
          "type": "u64",
          "index": false
        },
        {
          "name": "inputTransferFee",
          "type": "u64",
          "index": false
        },
        {
          "name": "outputTransferFee",
          "type": "u64",
          "index": false
        },
        {
          "name": "lpFee",
          "type": "u64",
          "index": false
        },
        {
          "name": "protocolFee",
          "type": "u64",
          "index": false
        }
      ]
    }
  ],
  "errors": [
    {
      "code": 6000,
      "name": "InvalidEnum",
      "msg": "Enum value could not be converted"
    },
    {
      "code": 6001,
      "name": "InvalidStartTick",
      "msg": "Invalid start tick index provided."
    },
    {
      "code": 6002,
      "name": "TickArrayExistInPool",
      "msg": "Tick-array already exists in this whirlpool"
    },
    {
      "code": 6003,
      "name": "TickArrayIndexOutofBounds",
      "msg": "Attempt to search for a tick-array failed"
    },
    {
      "code": 6004,
      "name": "InvalidTickSpacing",
      "msg": "Tick-spacing is not supported"
    },
    {
      "code": 6005,
      "name": "ClosePositionNotEmpty",
      "msg": "Position is not empty It cannot be closed"
    },
    {
      "code": 6006,
      "name": "DivideByZero",
      "msg": "Unable to divide by zero"
    },
    {
      "code": 6007,
      "name": "NumberCastError",
      "msg": "Unable to cast number into BigInt"
    },
    {
      "code": 6008,
      "name": "NumberDownCastError",
      "msg": "Unable to down cast number"
    },
    {
      "code": 6009,
      "name": "TickNotFound",
      "msg": "Tick not found within tick array"
    },
    {
      "code": 6010,
      "name": "InvalidTickIndex",
      "msg": "Provided tick index is either out of bounds or uninitializable"
    },
    {
      "code": 6011,
      "name": "SqrtPriceOutOfBounds",
      "msg": "Provided sqrt price out of bounds"
    },
    {
      "code": 6012,
      "name": "LiquidityZero",
      "msg": "Liquidity amount must be greater than zero"
    },
    {
      "code": 6013,
      "name": "LiquidityTooHigh",
      "msg": "Liquidity amount must be less than i64::MAX"
    },
    {
      "code": 6014,
      "name": "LiquidityOverflow",
      "msg": "Liquidity overflow"
    },
    {
      "code": 6015,
      "name": "LiquidityUnderflow",
      "msg": "Liquidity underflow"
    },
    {
      "code": 6016,
      "name": "LiquidityNetError",
      "msg": "Tick liquidity net underflowed or overflowed"
    },
    {
      "code": 6017,
      "name": "TokenMaxExceeded",
      "msg": "Exceeded token max"
    },
    {
      "code": 6018,
      "name": "TokenMinSubceeded",
      "msg": "Did not meet token min"
    },
    {
      "code": 6019,
      "name": "MissingOrInvalidDelegate",
      "msg": "Position token account has a missing or invalid delegate"
    },
    {
      "code": 6020,
      "name": "InvalidPositionTokenAmount",
      "msg": "Position token amount must be 1"
    },
    {
      "code": 6021,
      "name": "InvalidTimestampConversion",
      "msg": "Timestamp should be convertible from i64 to u64"
    },
    {
      "code": 6022,
      "name": "InvalidTimestamp",
      "msg": "Timestamp should be greater than the last updated timestamp"
    },
    {
      "code": 6023,
      "name": "InvalidTickArraySequence",
      "msg": "Invalid tick array sequence provided for instruction."
    },
    {
      "code": 6024,
      "name": "InvalidTokenMintOrder",
      "msg": "Token Mint in wrong order"
    },
    {
      "code": 6025,
      "name": "RewardNotInitialized",
      "msg": "Reward not initialized"
    },
    {
      "code": 6026,
      "name": "InvalidRewardIndex",
      "msg": "Invalid reward index"
    },
    {
      "code": 6027,
      "name": "RewardVaultAmountInsufficient",
      "msg": "Reward vault requires amount to support emissions for at least one day"
    },
    {
      "code": 6028,
      "name": "FeeRateMaxExceeded",
      "msg": "Exceeded max fee rate"
    },
    {
      "code": 6029,
      "name": "ProtocolFeeRateMaxExceeded",
      "msg": "Exceeded max protocol fee rate"
    },
    {
      "code": 6030,
      "name": "MultiplicationShiftRightOverflow",
      "msg": "Multiplication with shift right overflow"
    },
    {
      "code": 6031,
      "name": "MulDivOverflow",
      "msg": "Muldiv overflow"
    },
    {
      "code": 6032,
      "name": "MulDivInvalidInput",
      "msg": "Invalid div_u256 input"
    },
    {
      "code": 6033,
      "name": "MultiplicationOverflow",
      "msg": "Multiplication overflow"
    },
    {
      "code": 6034,
      "name": "InvalidSqrtPriceLimitDirection",
      "msg": "Provided SqrtPriceLimit not in the same direction as the swap."
    },
    {
      "code": 6035,
      "name": "ZeroTradableAmount",
      "msg": "There are no tradable amount to swap."
    },
    {
      "code": 6036,
      "name": "AmountOutBelowMinimum",
      "msg": "Amount out below minimum threshold"
    },
    {
      "code": 6037,
      "name": "AmountInAboveMaximum",
      "msg": "Amount in above maximum threshold"
    },
    {
      "code": 6038,
      "name": "TickArraySequenceInvalidIndex",
      "msg": "Invalid index for tick array sequence"
    },
    {
      "code": 6039,
      "name": "AmountCalcOverflow",
      "msg": "Amount calculated overflows"
    },
    {
      "code": 6040,
      "name": "AmountRemainingOverflow",
      "msg": "Amount remaining overflows"
    },
    {
      "code": 6041,
      "name": "InvalidIntermediaryMint",
      "msg": "Invalid intermediary mint"
    },
    {
      "code": 6042,
      "name": "DuplicateTwoHopPool",
      "msg": "Duplicate two hop pool"
    },
    {
      "code": 6043,
      "name": "InvalidBundleIndex",
      "msg": "Bundle index is out of bounds"
    },
    {
      "code": 6044,
      "name": "BundledPositionAlreadyOpened",
      "msg": "Position has already been opened"
    },
    {
      "code": 6045,
      "name": "BundledPositionAlreadyClosed",
      "msg": "Position has already been closed"
    },
    {
      "code": 6046,
      "name": "PositionBundleNotDeletable",
      "msg": "Unable to delete PositionBundle with open positions"
    },
    {
      "code": 6047,
      "name": "UnsupportedTokenMint",
      "msg": "Token mint has unsupported attributes"
    },
    {
      "code": 6048,
      "name": "RemainingAccountsInvalidSlice",
      "msg": "Invalid remaining accounts"
    },
    {
      "code": 6049,
      "name": "RemainingAccountsInsufficient",
      "msg": "Insufficient remaining accounts"
    },
    {
      "code": 6050,
      "name": "NoExtraAccountsForTransferHook",
      "msg": "Unable to call transfer hook without extra accounts"
    },
    {
      "code": 6051,
      "name": "IntermediateTokenAmountMismatch",
      "msg": "Output and input amount mismatch"
    },
    {
      "code": 6052,
      "name": "TransferFeeCalculationError",
      "msg": "Transfer fee calculation failed"
    },
    {
      "code": 6053,
      "name": "RemainingAccountsDuplicatedAccountsType",
      "msg": "Same accounts type is provided more than once"
    },
    {
      "code": 6054,
      "name": "FullRangeOnlyPool",
      "msg": "This whirlpool only supports full-range positions"
    },
    {
      "code": 6055,
      "name": "TooManySupplementalTickArrays",
      "msg": "Too many supplemental tick arrays provided"
    },
    {
      "code": 6056,
      "name": "DifferentWhirlpoolTickArrayAccount",
      "msg": "TickArray account for different whirlpool provided"
    },
    {
      "code": 6057,
      "name": "PartialFillError",
      "msg": "Trade resulted in partial fill"
    },
    {
      "code": 6058,
      "name": "PositionNotLockable",
      "msg": "Position is not lockable"
    },
    {
      "code": 6059,
      "name": "OperationNotAllowedOnLockedPosition",
      "msg": "Operation not allowed on locked position"
    },
    {
      "code": 6060,
      "name": "SameTickRangeNotAllowed",
      "msg": "Cannot reset position range with same tick range"
    },
    {
      "code": 6061,
      "name": "InvalidAdaptiveFeeConstants",
      "msg": "Invalid adaptive fee constants"
    },
    {
      "code": 6062,
      "name": "InvalidFeeTierIndex",
      "msg": "Invalid fee tier index"
    },
    {
      "code": 6063,
      "name": "InvalidTradeEnableTimestamp",
      "msg": "Invalid trade enable timestamp"
    },
    {
      "code": 6064,
      "name": "TradeIsNotEnabled",
      "msg": "Trade is not enabled yet"
    }
  ]
}
