{"version":3,"sources":["../src/index.ts","../src/config.ts","../src/generated/accounts/adaptiveFeeTier.ts","../src/generated/accounts/dynamicTickArray.ts","../src/generated/types/accountsType.ts","../src/generated/types/adaptiveFeeConstants.ts","../src/generated/types/adaptiveFeeVariables.ts","../src/generated/types/configFeatureFlag.ts","../src/generated/types/dynamicTick.ts","../src/generated/types/dynamicTickData.ts","../src/generated/types/increaseLiquidityMethod.ts","../src/generated/types/liquidityDecreased.ts","../src/generated/types/liquidityIncreased.ts","../src/generated/types/liquidityRepositioned.ts","../src/generated/types/lockType.ts","../src/generated/types/lockTypeLabel.ts","../src/generated/types/poolInitialized.ts","../src/generated/types/positionOpened.ts","../src/generated/types/positionRewardInfo.ts","../src/generated/types/remainingAccountsInfo.ts","../src/generated/types/remainingAccountsSlice.ts","../src/generated/types/repositionLiquidityMethod.ts","../src/generated/types/tick.ts","../src/generated/types/tokenBadgeAttribute.ts","../src/generated/types/traded.ts","../src/generated/types/whirlpoolRewardInfo.ts","../src/generated/accounts/feeTier.ts","../src/generated/accounts/fixedTickArray.ts","../src/generated/accounts/lockConfig.ts","../src/generated/accounts/oracle.ts","../src/generated/accounts/position.ts","../src/generated/accounts/positionBundle.ts","../src/generated/accounts/tokenBadge.ts","../src/generated/accounts/whirlpool.ts","../src/generated/accounts/whirlpoolsConfig.ts","../src/generated/accounts/whirlpoolsConfigExtension.ts","../src/generated/errors/whirlpool.ts","../src/generated/programs/whirlpool.ts","../src/generated/instructions/closeBundledPosition.ts","../src/generated/shared/index.ts","../src/generated/instructions/closePosition.ts","../src/generated/instructions/closePositionWithTokenExtensions.ts","../src/generated/instructions/collectFees.ts","../src/generated/instructions/collectFeesV2.ts","../src/generated/instructions/collectProtocolFees.ts","../src/generated/instructions/collectProtocolFeesV2.ts","../src/generated/instructions/collectReward.ts","../src/generated/instructions/collectRewardV2.ts","../src/generated/instructions/decreaseLiquidity.ts","../src/generated/instructions/decreaseLiquidityV2.ts","../src/generated/instructions/deletePositionBundle.ts","../src/generated/instructions/deleteTokenBadge.ts","../src/generated/instructions/idlInclude.ts","../src/generated/instructions/increaseLiquidity.ts","../src/generated/instructions/increaseLiquidityByTokenAmountsV2.ts","../src/generated/instructions/increaseLiquidityV2.ts","../src/generated/instructions/initializeAdaptiveFeeTier.ts","../src/generated/instructions/initializeConfig.ts","../src/generated/instructions/initializeConfigExtension.ts","../src/generated/instructions/initializeDynamicTickArray.ts","../src/generated/instructions/initializeFeeTier.ts","../src/generated/instructions/initializePool.ts","../src/generated/instructions/initializePoolV2.ts","../src/generated/instructions/initializePoolWithAdaptiveFee.ts","../src/generated/instructions/initializePositionBundle.ts","../src/generated/instructions/initializePositionBundleWithMetadata.ts","../src/generated/instructions/initializeReward.ts","../src/generated/instructions/initializeRewardV2.ts","../src/generated/instructions/initializeTickArray.ts","../src/generated/instructions/initializeTokenBadge.ts","../src/generated/instructions/lockPosition.ts","../src/generated/instructions/migrateRepurposeRewardAuthoritySpace.ts","../src/generated/instructions/openBundledPosition.ts","../src/generated/instructions/openPosition.ts","../src/generated/instructions/openPositionWithMetadata.ts","../src/generated/instructions/openPositionWithTokenExtensions.ts","../src/generated/instructions/repositionLiquidityV2.ts","../src/generated/instructions/resetPositionRange.ts","../src/generated/instructions/setAdaptiveFeeConstants.ts","../src/generated/instructions/setCollectProtocolFeesAuthority.ts","../src/generated/instructions/setConfigExtensionAuthority.ts","../src/generated/instructions/setConfigFeatureFlag.ts","../src/generated/instructions/setDefaultBaseFeeRate.ts","../src/generated/instructions/setDefaultFeeRate.ts","../src/generated/instructions/setDefaultProtocolFeeRate.ts","../src/generated/instructions/setDelegatedFeeAuthority.ts","../src/generated/instructions/setFeeAuthority.ts","../src/generated/instructions/setFeeRate.ts","../src/generated/instructions/setFeeRateByDelegatedFeeAuthority.ts","../src/generated/instructions/setInitializePoolAuthority.ts","../src/generated/instructions/setPresetAdaptiveFeeConstants.ts","../src/generated/instructions/setProtocolFeeRate.ts","../src/generated/instructions/setRewardAuthority.ts","../src/generated/instructions/setRewardAuthorityBySuperAuthority.ts","../src/generated/instructions/setRewardEmissions.ts","../src/generated/instructions/setRewardEmissionsSuperAuthority.ts","../src/generated/instructions/setRewardEmissionsV2.ts","../src/generated/instructions/setTokenBadgeAttribute.ts","../src/generated/instructions/setTokenBadgeAuthority.ts","../src/generated/instructions/swap.ts","../src/generated/instructions/swapV2.ts","../src/generated/instructions/transferLockedPosition.ts","../src/generated/instructions/twoHopSwap.ts","../src/generated/instructions/twoHopSwapV2.ts","../src/generated/instructions/updateFeesAndRewards.ts","../src/gpa/adaptiveFeeTier.ts","../src/gpa/utils.ts","../src/gpa/dynamicTickArray.ts","../src/gpa/feeTier.ts","../src/gpa/fixedTickArray.ts","../src/gpa/lockConfig.ts","../src/gpa/oracle.ts","../src/gpa/position.ts","../src/gpa/positionBundle.ts","../src/state/tickArray.ts","../src/gpa/tickArray.ts","../src/gpa/tokenBadge.ts","../src/gpa/whirlpool.ts","../src/gpa/whirlpoolsConfig.ts","../src/gpa/whirlpoolsConfigExtension.ts","../src/pda/feeTier.ts","../src/pda/lockConfig.ts","../src/pda/oracle.ts","../src/pda/position.ts","../src/pda/positionBundle.ts","../src/pda/tickArray.ts","../src/pda/tokenBadge.ts","../src/pda/whirlpool.ts","../src/pda/whirlpoolsConfigExtension.ts","../src/state/dynamicTickArray.ts"],"sourcesContent":["export * from \"./config\";\nexport * from \"./generated\";\nexport * from \"./gpa\";\nexport * from \"./pda\";\nexport * from \"./state\";\n","import type { Address } from \"@solana/kit\";\nimport { address } from \"@solana/kit\";\n\n/** The Whirlpools program's address for Solana Mainnet. */\nconst WHIRLPOOLS_PROGRAM_ADDRESS: Address = address(\n  \"whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc\",\n);\n\n/** The Whirlpools program's config account address for Solana Mainnet. */\nconst MAINNET_WHIRLPOOLS_CONFIG_ADDRESS: Address = address(\n  \"2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ\",\n);\n\n/** The Whirlpools program's config account address for Solana Devnet. */\nconst DEVNET_WHIRLPOOLS_CONFIG_ADDRESS: Address = address(\n  \"FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR\",\n);\n\n/** The Immutable Whirlpools program's address for Solana Mainnet. */\nconst IMMUTABLE_WHIRLPOOLS_PROGRAM_ADDRESS: Address = address(\n  \"iwhrLHdsgrvmnwU8GF2FSmyabSMjfHwFGJAX2ufJ3ZN\",\n);\n\n/** The Immutable Whirlpools program's config account address for Solana Mainnet. */\nconst MAINNET_IMMUTABLE_WHIRLPOOLS_CONFIG_ADDRESS: Address = address(\n  \"8pm8erUsaMpmZ47LttHAPgnDx7xGZUvxY4q47vTCs5Nj\",\n);\n\n/**\n * Identifies a deployed whirlpool program and the config account it operates against.\n *\n * PDA derivation and instruction targeting both depend on these two values, so they\n * are bundled together to keep them consistent. Pass a `WhirlpoolDeployment` (or omit\n * it to fall back to `DEFAULT_WHIRLPOOL_DEPLOYMENT`, the mutable mainnet program) to the\n * SDK functions and PDA helpers that accept it.\n *\n * Use the named constants ({@link WhirlpoolDeployment.mainnet}, {@link WhirlpoolDeployment.devnet},\n * {@link WhirlpoolDeployment.mainnetImmutable}) for the official deployments, or\n * {@link WhirlpoolDeployment.custom} to point at a fork or local deployment.\n */\nexport type WhirlpoolDeployment = {\n  /** The program id of the targeted whirlpool program. */\n  readonly programId: Address;\n  /** The `WhirlpoolsConfig` account address that pairs with this program. */\n  readonly configAddress: Address;\n};\n\nexport const WhirlpoolDeployment = {\n  /** The mutable whirlpool program on Solana Mainnet, paired with its mainnet config account. */\n  mainnet: {\n    programId: WHIRLPOOLS_PROGRAM_ADDRESS,\n    configAddress: MAINNET_WHIRLPOOLS_CONFIG_ADDRESS,\n  } as WhirlpoolDeployment,\n\n  /** The mutable whirlpool program on Solana Devnet, paired with its devnet config account. */\n  devnet: {\n    programId: WHIRLPOOLS_PROGRAM_ADDRESS,\n    configAddress: DEVNET_WHIRLPOOLS_CONFIG_ADDRESS,\n  } as WhirlpoolDeployment,\n\n  /** The immutable whirlpool program on Solana Mainnet, paired with its mainnet config account. */\n  mainnetImmutable: {\n    programId: IMMUTABLE_WHIRLPOOLS_PROGRAM_ADDRESS,\n    configAddress: MAINNET_IMMUTABLE_WHIRLPOOLS_CONFIG_ADDRESS,\n  } as WhirlpoolDeployment,\n\n  /**\n   * Targets an arbitrary `programId` / `configAddress` pair — useful for forks, local\n   * validators, or any deployment not covered by the named constants.\n   */\n  custom: (\n    programId: Address,\n    configAddress: Address,\n  ): WhirlpoolDeployment => ({\n    programId,\n    configAddress,\n  }),\n} as const;\n\n/** The default {@link WhirlpoolDeployment} (mutable mainnet). */\nexport const DEFAULT_WHIRLPOOL_DEPLOYMENT: WhirlpoolDeployment =\n  WhirlpoolDeployment.mainnet;\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const ADAPTIVE_FEE_TIER_DISCRIMINATOR = new Uint8Array([\n  147, 16, 144, 116, 47, 146, 149, 46,\n]);\n\nexport function getAdaptiveFeeTierDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    ADAPTIVE_FEE_TIER_DISCRIMINATOR\n  );\n}\n\nexport type AdaptiveFeeTier = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolsConfig: Address;\n  feeTierIndex: number;\n  tickSpacing: number;\n  initializePoolAuthority: Address;\n  delegatedFeeAuthority: Address;\n  defaultBaseFeeRate: number;\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport type AdaptiveFeeTierArgs = {\n  whirlpoolsConfig: Address;\n  feeTierIndex: number;\n  tickSpacing: number;\n  initializePoolAuthority: Address;\n  delegatedFeeAuthority: Address;\n  defaultBaseFeeRate: number;\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport function getAdaptiveFeeTierEncoder(): FixedSizeEncoder<AdaptiveFeeTierArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolsConfig', getAddressEncoder()],\n      ['feeTierIndex', getU16Encoder()],\n      ['tickSpacing', getU16Encoder()],\n      ['initializePoolAuthority', getAddressEncoder()],\n      ['delegatedFeeAuthority', getAddressEncoder()],\n      ['defaultBaseFeeRate', getU16Encoder()],\n      ['filterPeriod', getU16Encoder()],\n      ['decayPeriod', getU16Encoder()],\n      ['reductionFactor', getU16Encoder()],\n      ['adaptiveFeeControlFactor', getU32Encoder()],\n      ['maxVolatilityAccumulator', getU32Encoder()],\n      ['tickGroupSize', getU16Encoder()],\n      ['majorSwapThresholdTicks', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: ADAPTIVE_FEE_TIER_DISCRIMINATOR })\n  );\n}\n\nexport function getAdaptiveFeeTierDecoder(): FixedSizeDecoder<AdaptiveFeeTier> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['feeTierIndex', getU16Decoder()],\n    ['tickSpacing', getU16Decoder()],\n    ['initializePoolAuthority', getAddressDecoder()],\n    ['delegatedFeeAuthority', getAddressDecoder()],\n    ['defaultBaseFeeRate', getU16Decoder()],\n    ['filterPeriod', getU16Decoder()],\n    ['decayPeriod', getU16Decoder()],\n    ['reductionFactor', getU16Decoder()],\n    ['adaptiveFeeControlFactor', getU32Decoder()],\n    ['maxVolatilityAccumulator', getU32Decoder()],\n    ['tickGroupSize', getU16Decoder()],\n    ['majorSwapThresholdTicks', getU16Decoder()],\n  ]);\n}\n\nexport function getAdaptiveFeeTierCodec(): FixedSizeCodec<\n  AdaptiveFeeTierArgs,\n  AdaptiveFeeTier\n> {\n  return combineCodec(getAdaptiveFeeTierEncoder(), getAdaptiveFeeTierDecoder());\n}\n\nexport function decodeAdaptiveFeeTier<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<AdaptiveFeeTier, TAddress>;\nexport function decodeAdaptiveFeeTier<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<AdaptiveFeeTier, TAddress>;\nexport function decodeAdaptiveFeeTier<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n  | Account<AdaptiveFeeTier, TAddress>\n  | MaybeAccount<AdaptiveFeeTier, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getAdaptiveFeeTierDecoder()\n  );\n}\n\nexport async function fetchAdaptiveFeeTier<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<AdaptiveFeeTier, TAddress>> {\n  const maybeAccount = await fetchMaybeAdaptiveFeeTier(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeAdaptiveFeeTier<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<AdaptiveFeeTier, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeAdaptiveFeeTier(maybeAccount);\n}\n\nexport async function fetchAllAdaptiveFeeTier(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<AdaptiveFeeTier>[]> {\n  const maybeAccounts = await fetchAllMaybeAdaptiveFeeTier(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeAdaptiveFeeTier(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<AdaptiveFeeTier>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeAdaptiveFeeTier(maybeAccount)\n  );\n}\n\nexport function getAdaptiveFeeTierSize(): number {\n  return 128;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type Codec,\n  type Decoder,\n  type EncodedAccount,\n  type Encoder,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getDynamicTickDecoder,\n  getDynamicTickEncoder,\n  type DynamicTick,\n  type DynamicTickArgs,\n} from '../types';\n\nexport const DYNAMIC_TICK_ARRAY_DISCRIMINATOR = new Uint8Array([\n  17, 216, 246, 142, 225, 199, 218, 56,\n]);\n\nexport function getDynamicTickArrayDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DYNAMIC_TICK_ARRAY_DISCRIMINATOR\n  );\n}\n\nexport type DynamicTickArray = {\n  discriminator: ReadonlyUint8Array;\n  startTickIndex: number;\n  whirlpool: Address;\n  tickBitmap: bigint;\n  ticks: Array<DynamicTick>;\n};\n\nexport type DynamicTickArrayArgs = {\n  startTickIndex: number;\n  whirlpool: Address;\n  tickBitmap: number | bigint;\n  ticks: Array<DynamicTickArgs>;\n};\n\nexport function getDynamicTickArrayEncoder(): Encoder<DynamicTickArrayArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['startTickIndex', getI32Encoder()],\n      ['whirlpool', getAddressEncoder()],\n      ['tickBitmap', getU128Encoder()],\n      ['ticks', getArrayEncoder(getDynamicTickEncoder(), { size: 88 })],\n    ]),\n    (value) => ({ ...value, discriminator: DYNAMIC_TICK_ARRAY_DISCRIMINATOR })\n  );\n}\n\nexport function getDynamicTickArrayDecoder(): Decoder<DynamicTickArray> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['startTickIndex', getI32Decoder()],\n    ['whirlpool', getAddressDecoder()],\n    ['tickBitmap', getU128Decoder()],\n    ['ticks', getArrayDecoder(getDynamicTickDecoder(), { size: 88 })],\n  ]);\n}\n\nexport function getDynamicTickArrayCodec(): Codec<\n  DynamicTickArrayArgs,\n  DynamicTickArray\n> {\n  return combineCodec(\n    getDynamicTickArrayEncoder(),\n    getDynamicTickArrayDecoder()\n  );\n}\n\nexport function decodeDynamicTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<DynamicTickArray, TAddress>;\nexport function decodeDynamicTickArray<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<DynamicTickArray, TAddress>;\nexport function decodeDynamicTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n  | Account<DynamicTickArray, TAddress>\n  | MaybeAccount<DynamicTickArray, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getDynamicTickArrayDecoder()\n  );\n}\n\nexport async function fetchDynamicTickArray<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<DynamicTickArray, TAddress>> {\n  const maybeAccount = await fetchMaybeDynamicTickArray(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeDynamicTickArray<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<DynamicTickArray, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeDynamicTickArray(maybeAccount);\n}\n\nexport async function fetchAllDynamicTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<DynamicTickArray>[]> {\n  const maybeAccounts = await fetchAllMaybeDynamicTickArray(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeDynamicTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<DynamicTickArray>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeDynamicTickArray(maybeAccount)\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum AccountsType {\n  TransferHookA,\n  TransferHookB,\n  TransferHookReward,\n  TransferHookInput,\n  TransferHookIntermediate,\n  TransferHookOutput,\n  SupplementalTickArrays,\n  SupplementalTickArraysOne,\n  SupplementalTickArraysTwo,\n  TransferHookDepositA,\n  TransferHookDepositB,\n  TransferHookWithdrawalA,\n  TransferHookWithdrawalB,\n}\n\nexport type AccountsTypeArgs = AccountsType;\n\nexport function getAccountsTypeEncoder(): FixedSizeEncoder<AccountsTypeArgs> {\n  return getEnumEncoder(AccountsType);\n}\n\nexport function getAccountsTypeDecoder(): FixedSizeDecoder<AccountsType> {\n  return getEnumDecoder(AccountsType);\n}\n\nexport function getAccountsTypeCodec(): FixedSizeCodec<\n  AccountsTypeArgs,\n  AccountsType\n> {\n  return combineCodec(getAccountsTypeEncoder(), getAccountsTypeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type AdaptiveFeeConstants = {\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type AdaptiveFeeConstantsArgs = AdaptiveFeeConstants;\n\nexport function getAdaptiveFeeConstantsEncoder(): FixedSizeEncoder<AdaptiveFeeConstantsArgs> {\n  return getStructEncoder([\n    ['filterPeriod', getU16Encoder()],\n    ['decayPeriod', getU16Encoder()],\n    ['reductionFactor', getU16Encoder()],\n    ['adaptiveFeeControlFactor', getU32Encoder()],\n    ['maxVolatilityAccumulator', getU32Encoder()],\n    ['tickGroupSize', getU16Encoder()],\n    ['majorSwapThresholdTicks', getU16Encoder()],\n    ['reserved', fixEncoderSize(getBytesEncoder(), 16)],\n  ]);\n}\n\nexport function getAdaptiveFeeConstantsDecoder(): FixedSizeDecoder<AdaptiveFeeConstants> {\n  return getStructDecoder([\n    ['filterPeriod', getU16Decoder()],\n    ['decayPeriod', getU16Decoder()],\n    ['reductionFactor', getU16Decoder()],\n    ['adaptiveFeeControlFactor', getU32Decoder()],\n    ['maxVolatilityAccumulator', getU32Decoder()],\n    ['tickGroupSize', getU16Decoder()],\n    ['majorSwapThresholdTicks', getU16Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 16)],\n  ]);\n}\n\nexport function getAdaptiveFeeConstantsCodec(): FixedSizeCodec<\n  AdaptiveFeeConstantsArgs,\n  AdaptiveFeeConstants\n> {\n  return combineCodec(\n    getAdaptiveFeeConstantsEncoder(),\n    getAdaptiveFeeConstantsDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU32Decoder,\n  getU32Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport type AdaptiveFeeVariables = {\n  lastReferenceUpdateTimestamp: bigint;\n  lastMajorSwapTimestamp: bigint;\n  volatilityReference: number;\n  tickGroupIndexReference: number;\n  volatilityAccumulator: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type AdaptiveFeeVariablesArgs = {\n  lastReferenceUpdateTimestamp: number | bigint;\n  lastMajorSwapTimestamp: number | bigint;\n  volatilityReference: number;\n  tickGroupIndexReference: number;\n  volatilityAccumulator: number;\n  reserved: ReadonlyUint8Array;\n};\n\nexport function getAdaptiveFeeVariablesEncoder(): FixedSizeEncoder<AdaptiveFeeVariablesArgs> {\n  return getStructEncoder([\n    ['lastReferenceUpdateTimestamp', getU64Encoder()],\n    ['lastMajorSwapTimestamp', getU64Encoder()],\n    ['volatilityReference', getU32Encoder()],\n    ['tickGroupIndexReference', getI32Encoder()],\n    ['volatilityAccumulator', getU32Encoder()],\n    ['reserved', fixEncoderSize(getBytesEncoder(), 16)],\n  ]);\n}\n\nexport function getAdaptiveFeeVariablesDecoder(): FixedSizeDecoder<AdaptiveFeeVariables> {\n  return getStructDecoder([\n    ['lastReferenceUpdateTimestamp', getU64Decoder()],\n    ['lastMajorSwapTimestamp', getU64Decoder()],\n    ['volatilityReference', getU32Decoder()],\n    ['tickGroupIndexReference', getI32Decoder()],\n    ['volatilityAccumulator', getU32Decoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 16)],\n  ]);\n}\n\nexport function getAdaptiveFeeVariablesCodec(): FixedSizeCodec<\n  AdaptiveFeeVariablesArgs,\n  AdaptiveFeeVariables\n> {\n  return combineCodec(\n    getAdaptiveFeeVariablesEncoder(),\n    getAdaptiveFeeVariablesDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type ConfigFeatureFlag = {\n  __kind: 'TokenBadge';\n  fields: readonly [boolean];\n};\n\nexport type ConfigFeatureFlagArgs = ConfigFeatureFlag;\n\nexport function getConfigFeatureFlagEncoder(): FixedSizeEncoder<ConfigFeatureFlagArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'TokenBadge',\n      getStructEncoder([['fields', getTupleEncoder([getBooleanEncoder()])]]),\n    ],\n  ]) as FixedSizeEncoder<ConfigFeatureFlagArgs>;\n}\n\nexport function getConfigFeatureFlagDecoder(): FixedSizeDecoder<ConfigFeatureFlag> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'TokenBadge',\n      getStructDecoder([['fields', getTupleDecoder([getBooleanDecoder()])]]),\n    ],\n  ]) as FixedSizeDecoder<ConfigFeatureFlag>;\n}\n\nexport function getConfigFeatureFlagCodec(): FixedSizeCodec<\n  ConfigFeatureFlagArgs,\n  ConfigFeatureFlag\n> {\n  return combineCodec(\n    getConfigFeatureFlagEncoder(),\n    getConfigFeatureFlagDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function configFeatureFlag(\n  kind: 'TokenBadge',\n  data: GetDiscriminatedUnionVariantContent<\n    ConfigFeatureFlagArgs,\n    '__kind',\n    'TokenBadge'\n  >['fields']\n): GetDiscriminatedUnionVariant<ConfigFeatureFlagArgs, '__kind', 'TokenBadge'>;\nexport function configFeatureFlag<\n  K extends ConfigFeatureFlagArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isConfigFeatureFlag<K extends ConfigFeatureFlag['__kind']>(\n  kind: K,\n  value: ConfigFeatureFlag\n): value is ConfigFeatureFlag & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  getUnitDecoder,\n  getUnitEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\nimport {\n  getDynamicTickDataDecoder,\n  getDynamicTickDataEncoder,\n  type DynamicTickData,\n  type DynamicTickDataArgs,\n} from '.';\n\nexport type DynamicTick =\n  | { __kind: 'Uninitialized' }\n  | { __kind: 'Initialized'; fields: readonly [DynamicTickData] };\n\nexport type DynamicTickArgs =\n  | { __kind: 'Uninitialized' }\n  | { __kind: 'Initialized'; fields: readonly [DynamicTickDataArgs] };\n\nexport function getDynamicTickEncoder(): Encoder<DynamicTickArgs> {\n  return getDiscriminatedUnionEncoder([\n    ['Uninitialized', getUnitEncoder()],\n    [\n      'Initialized',\n      getStructEncoder([\n        ['fields', getTupleEncoder([getDynamicTickDataEncoder()])],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDynamicTickDecoder(): Decoder<DynamicTick> {\n  return getDiscriminatedUnionDecoder([\n    ['Uninitialized', getUnitDecoder()],\n    [\n      'Initialized',\n      getStructDecoder([\n        ['fields', getTupleDecoder([getDynamicTickDataDecoder()])],\n      ]),\n    ],\n  ]);\n}\n\nexport function getDynamicTickCodec(): Codec<DynamicTickArgs, DynamicTick> {\n  return combineCodec(getDynamicTickEncoder(), getDynamicTickDecoder());\n}\n\n// Data Enum Helpers.\nexport function dynamicTick(\n  kind: 'Uninitialized'\n): GetDiscriminatedUnionVariant<DynamicTickArgs, '__kind', 'Uninitialized'>;\nexport function dynamicTick(\n  kind: 'Initialized',\n  data: GetDiscriminatedUnionVariantContent<\n    DynamicTickArgs,\n    '__kind',\n    'Initialized'\n  >['fields']\n): GetDiscriminatedUnionVariant<DynamicTickArgs, '__kind', 'Initialized'>;\nexport function dynamicTick<K extends DynamicTickArgs['__kind'], Data>(\n  kind: K,\n  data?: Data\n) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isDynamicTick<K extends DynamicTick['__kind']>(\n  kind: K,\n  value: DynamicTick\n): value is DynamicTick & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type DynamicTickData = {\n  liquidityNet: bigint;\n  liquidityGross: bigint;\n  feeGrowthOutsideA: bigint;\n  feeGrowthOutsideB: bigint;\n  rewardGrowthsOutside: Array<bigint>;\n};\n\nexport type DynamicTickDataArgs = {\n  liquidityNet: number | bigint;\n  liquidityGross: number | bigint;\n  feeGrowthOutsideA: number | bigint;\n  feeGrowthOutsideB: number | bigint;\n  rewardGrowthsOutside: Array<number | bigint>;\n};\n\nexport function getDynamicTickDataEncoder(): FixedSizeEncoder<DynamicTickDataArgs> {\n  return getStructEncoder([\n    ['liquidityNet', getI128Encoder()],\n    ['liquidityGross', getU128Encoder()],\n    ['feeGrowthOutsideA', getU128Encoder()],\n    ['feeGrowthOutsideB', getU128Encoder()],\n    ['rewardGrowthsOutside', getArrayEncoder(getU128Encoder(), { size: 3 })],\n  ]);\n}\n\nexport function getDynamicTickDataDecoder(): FixedSizeDecoder<DynamicTickData> {\n  return getStructDecoder([\n    ['liquidityNet', getI128Decoder()],\n    ['liquidityGross', getU128Decoder()],\n    ['feeGrowthOutsideA', getU128Decoder()],\n    ['feeGrowthOutsideB', getU128Decoder()],\n    ['rewardGrowthsOutside', getArrayDecoder(getU128Decoder(), { size: 3 })],\n  ]);\n}\n\nexport function getDynamicTickDataCodec(): FixedSizeCodec<\n  DynamicTickDataArgs,\n  DynamicTickData\n> {\n  return combineCodec(getDynamicTickDataEncoder(), getDynamicTickDataDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type IncreaseLiquidityMethod = {\n  __kind: 'ByTokenAmounts';\n  tokenMaxA: bigint;\n  tokenMaxB: bigint;\n  minSqrtPrice: bigint;\n  maxSqrtPrice: bigint;\n};\n\nexport type IncreaseLiquidityMethodArgs = {\n  __kind: 'ByTokenAmounts';\n  tokenMaxA: number | bigint;\n  tokenMaxB: number | bigint;\n  minSqrtPrice: number | bigint;\n  maxSqrtPrice: number | bigint;\n};\n\nexport function getIncreaseLiquidityMethodEncoder(): FixedSizeEncoder<IncreaseLiquidityMethodArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'ByTokenAmounts',\n      getStructEncoder([\n        ['tokenMaxA', getU64Encoder()],\n        ['tokenMaxB', getU64Encoder()],\n        ['minSqrtPrice', getU128Encoder()],\n        ['maxSqrtPrice', getU128Encoder()],\n      ]),\n    ],\n  ]) as FixedSizeEncoder<IncreaseLiquidityMethodArgs>;\n}\n\nexport function getIncreaseLiquidityMethodDecoder(): FixedSizeDecoder<IncreaseLiquidityMethod> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'ByTokenAmounts',\n      getStructDecoder([\n        ['tokenMaxA', getU64Decoder()],\n        ['tokenMaxB', getU64Decoder()],\n        ['minSqrtPrice', getU128Decoder()],\n        ['maxSqrtPrice', getU128Decoder()],\n      ]),\n    ],\n  ]) as FixedSizeDecoder<IncreaseLiquidityMethod>;\n}\n\nexport function getIncreaseLiquidityMethodCodec(): FixedSizeCodec<\n  IncreaseLiquidityMethodArgs,\n  IncreaseLiquidityMethod\n> {\n  return combineCodec(\n    getIncreaseLiquidityMethodEncoder(),\n    getIncreaseLiquidityMethodDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function increaseLiquidityMethod(\n  kind: 'ByTokenAmounts',\n  data: GetDiscriminatedUnionVariantContent<\n    IncreaseLiquidityMethodArgs,\n    '__kind',\n    'ByTokenAmounts'\n  >\n): GetDiscriminatedUnionVariant<\n  IncreaseLiquidityMethodArgs,\n  '__kind',\n  'ByTokenAmounts'\n>;\nexport function increaseLiquidityMethod<\n  K extends IncreaseLiquidityMethodArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isIncreaseLiquidityMethod<\n  K extends IncreaseLiquidityMethod['__kind'],\n>(\n  kind: K,\n  value: IncreaseLiquidityMethod\n): value is IncreaseLiquidityMethod & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type LiquidityDecreased = {\n  whirlpool: Address;\n  position: Address;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  liquidity: bigint;\n  tokenAAmount: bigint;\n  tokenBAmount: bigint;\n  tokenATransferFee: bigint;\n  tokenBTransferFee: bigint;\n};\n\nexport type LiquidityDecreasedArgs = {\n  whirlpool: Address;\n  position: Address;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  liquidity: number | bigint;\n  tokenAAmount: number | bigint;\n  tokenBAmount: number | bigint;\n  tokenATransferFee: number | bigint;\n  tokenBTransferFee: number | bigint;\n};\n\nexport function getLiquidityDecreasedEncoder(): FixedSizeEncoder<LiquidityDecreasedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['position', getAddressEncoder()],\n    ['tickLowerIndex', getI32Encoder()],\n    ['tickUpperIndex', getI32Encoder()],\n    ['liquidity', getU128Encoder()],\n    ['tokenAAmount', getU64Encoder()],\n    ['tokenBAmount', getU64Encoder()],\n    ['tokenATransferFee', getU64Encoder()],\n    ['tokenBTransferFee', getU64Encoder()],\n  ]);\n}\n\nexport function getLiquidityDecreasedDecoder(): FixedSizeDecoder<LiquidityDecreased> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['position', getAddressDecoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n    ['liquidity', getU128Decoder()],\n    ['tokenAAmount', getU64Decoder()],\n    ['tokenBAmount', getU64Decoder()],\n    ['tokenATransferFee', getU64Decoder()],\n    ['tokenBTransferFee', getU64Decoder()],\n  ]);\n}\n\nexport function getLiquidityDecreasedCodec(): FixedSizeCodec<\n  LiquidityDecreasedArgs,\n  LiquidityDecreased\n> {\n  return combineCodec(\n    getLiquidityDecreasedEncoder(),\n    getLiquidityDecreasedDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type LiquidityIncreased = {\n  whirlpool: Address;\n  position: Address;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  liquidity: bigint;\n  tokenAAmount: bigint;\n  tokenBAmount: bigint;\n  tokenATransferFee: bigint;\n  tokenBTransferFee: bigint;\n};\n\nexport type LiquidityIncreasedArgs = {\n  whirlpool: Address;\n  position: Address;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  liquidity: number | bigint;\n  tokenAAmount: number | bigint;\n  tokenBAmount: number | bigint;\n  tokenATransferFee: number | bigint;\n  tokenBTransferFee: number | bigint;\n};\n\nexport function getLiquidityIncreasedEncoder(): FixedSizeEncoder<LiquidityIncreasedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['position', getAddressEncoder()],\n    ['tickLowerIndex', getI32Encoder()],\n    ['tickUpperIndex', getI32Encoder()],\n    ['liquidity', getU128Encoder()],\n    ['tokenAAmount', getU64Encoder()],\n    ['tokenBAmount', getU64Encoder()],\n    ['tokenATransferFee', getU64Encoder()],\n    ['tokenBTransferFee', getU64Encoder()],\n  ]);\n}\n\nexport function getLiquidityIncreasedDecoder(): FixedSizeDecoder<LiquidityIncreased> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['position', getAddressDecoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n    ['liquidity', getU128Decoder()],\n    ['tokenAAmount', getU64Decoder()],\n    ['tokenBAmount', getU64Decoder()],\n    ['tokenATransferFee', getU64Decoder()],\n    ['tokenBTransferFee', getU64Decoder()],\n  ]);\n}\n\nexport function getLiquidityIncreasedCodec(): FixedSizeCodec<\n  LiquidityIncreasedArgs,\n  LiquidityIncreased\n> {\n  return combineCodec(\n    getLiquidityIncreasedEncoder(),\n    getLiquidityIncreasedDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type LiquidityRepositioned = {\n  whirlpool: Address;\n  position: Address;\n  existingRangeTickLowerIndex: number;\n  existingRangeTickUpperIndex: number;\n  newRangeTickLowerIndex: number;\n  newRangeTickUpperIndex: number;\n  existingRangeLiquidity: bigint;\n  newRangeLiquidity: bigint;\n  existingRangeTokenAAmount: bigint;\n  existingRangeTokenBAmount: bigint;\n  newRangeTokenAAmount: bigint;\n  newRangeTokenBAmount: bigint;\n  tokenATransferAmount: bigint;\n  tokenATransferFee: bigint;\n  isTokenATransferFromOwner: boolean;\n  tokenBTransferAmount: bigint;\n  tokenBTransferFee: bigint;\n  isTokenBTransferFromOwner: boolean;\n};\n\nexport type LiquidityRepositionedArgs = {\n  whirlpool: Address;\n  position: Address;\n  existingRangeTickLowerIndex: number;\n  existingRangeTickUpperIndex: number;\n  newRangeTickLowerIndex: number;\n  newRangeTickUpperIndex: number;\n  existingRangeLiquidity: number | bigint;\n  newRangeLiquidity: number | bigint;\n  existingRangeTokenAAmount: number | bigint;\n  existingRangeTokenBAmount: number | bigint;\n  newRangeTokenAAmount: number | bigint;\n  newRangeTokenBAmount: number | bigint;\n  tokenATransferAmount: number | bigint;\n  tokenATransferFee: number | bigint;\n  isTokenATransferFromOwner: boolean;\n  tokenBTransferAmount: number | bigint;\n  tokenBTransferFee: number | bigint;\n  isTokenBTransferFromOwner: boolean;\n};\n\nexport function getLiquidityRepositionedEncoder(): FixedSizeEncoder<LiquidityRepositionedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['position', getAddressEncoder()],\n    ['existingRangeTickLowerIndex', getI32Encoder()],\n    ['existingRangeTickUpperIndex', getI32Encoder()],\n    ['newRangeTickLowerIndex', getI32Encoder()],\n    ['newRangeTickUpperIndex', getI32Encoder()],\n    ['existingRangeLiquidity', getU128Encoder()],\n    ['newRangeLiquidity', getU128Encoder()],\n    ['existingRangeTokenAAmount', getU64Encoder()],\n    ['existingRangeTokenBAmount', getU64Encoder()],\n    ['newRangeTokenAAmount', getU64Encoder()],\n    ['newRangeTokenBAmount', getU64Encoder()],\n    ['tokenATransferAmount', getU64Encoder()],\n    ['tokenATransferFee', getU64Encoder()],\n    ['isTokenATransferFromOwner', getBooleanEncoder()],\n    ['tokenBTransferAmount', getU64Encoder()],\n    ['tokenBTransferFee', getU64Encoder()],\n    ['isTokenBTransferFromOwner', getBooleanEncoder()],\n  ]);\n}\n\nexport function getLiquidityRepositionedDecoder(): FixedSizeDecoder<LiquidityRepositioned> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['position', getAddressDecoder()],\n    ['existingRangeTickLowerIndex', getI32Decoder()],\n    ['existingRangeTickUpperIndex', getI32Decoder()],\n    ['newRangeTickLowerIndex', getI32Decoder()],\n    ['newRangeTickUpperIndex', getI32Decoder()],\n    ['existingRangeLiquidity', getU128Decoder()],\n    ['newRangeLiquidity', getU128Decoder()],\n    ['existingRangeTokenAAmount', getU64Decoder()],\n    ['existingRangeTokenBAmount', getU64Decoder()],\n    ['newRangeTokenAAmount', getU64Decoder()],\n    ['newRangeTokenBAmount', getU64Decoder()],\n    ['tokenATransferAmount', getU64Decoder()],\n    ['tokenATransferFee', getU64Decoder()],\n    ['isTokenATransferFromOwner', getBooleanDecoder()],\n    ['tokenBTransferAmount', getU64Decoder()],\n    ['tokenBTransferFee', getU64Decoder()],\n    ['isTokenBTransferFromOwner', getBooleanDecoder()],\n  ]);\n}\n\nexport function getLiquidityRepositionedCodec(): FixedSizeCodec<\n  LiquidityRepositionedArgs,\n  LiquidityRepositioned\n> {\n  return combineCodec(\n    getLiquidityRepositionedEncoder(),\n    getLiquidityRepositionedDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum LockType {\n  Permanent,\n}\n\nexport type LockTypeArgs = LockType;\n\nexport function getLockTypeEncoder(): FixedSizeEncoder<LockTypeArgs> {\n  return getEnumEncoder(LockType);\n}\n\nexport function getLockTypeDecoder(): FixedSizeDecoder<LockType> {\n  return getEnumDecoder(LockType);\n}\n\nexport function getLockTypeCodec(): FixedSizeCodec<LockTypeArgs, LockType> {\n  return combineCodec(getLockTypeEncoder(), getLockTypeDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getEnumDecoder,\n  getEnumEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport enum LockTypeLabel {\n  Permanent,\n}\n\nexport type LockTypeLabelArgs = LockTypeLabel;\n\nexport function getLockTypeLabelEncoder(): FixedSizeEncoder<LockTypeLabelArgs> {\n  return getEnumEncoder(LockTypeLabel);\n}\n\nexport function getLockTypeLabelDecoder(): FixedSizeDecoder<LockTypeLabel> {\n  return getEnumDecoder(LockTypeLabel);\n}\n\nexport function getLockTypeLabelCodec(): FixedSizeCodec<\n  LockTypeLabelArgs,\n  LockTypeLabel\n> {\n  return combineCodec(getLockTypeLabelEncoder(), getLockTypeLabelDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type PoolInitialized = {\n  whirlpool: Address;\n  whirlpoolsConfig: Address;\n  tokenMintA: Address;\n  tokenMintB: Address;\n  tickSpacing: number;\n  tokenProgramA: Address;\n  tokenProgramB: Address;\n  decimalsA: number;\n  decimalsB: number;\n  initialSqrtPrice: bigint;\n};\n\nexport type PoolInitializedArgs = {\n  whirlpool: Address;\n  whirlpoolsConfig: Address;\n  tokenMintA: Address;\n  tokenMintB: Address;\n  tickSpacing: number;\n  tokenProgramA: Address;\n  tokenProgramB: Address;\n  decimalsA: number;\n  decimalsB: number;\n  initialSqrtPrice: number | bigint;\n};\n\nexport function getPoolInitializedEncoder(): FixedSizeEncoder<PoolInitializedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['whirlpoolsConfig', getAddressEncoder()],\n    ['tokenMintA', getAddressEncoder()],\n    ['tokenMintB', getAddressEncoder()],\n    ['tickSpacing', getU16Encoder()],\n    ['tokenProgramA', getAddressEncoder()],\n    ['tokenProgramB', getAddressEncoder()],\n    ['decimalsA', getU8Encoder()],\n    ['decimalsB', getU8Encoder()],\n    ['initialSqrtPrice', getU128Encoder()],\n  ]);\n}\n\nexport function getPoolInitializedDecoder(): FixedSizeDecoder<PoolInitialized> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['tokenMintA', getAddressDecoder()],\n    ['tokenMintB', getAddressDecoder()],\n    ['tickSpacing', getU16Decoder()],\n    ['tokenProgramA', getAddressDecoder()],\n    ['tokenProgramB', getAddressDecoder()],\n    ['decimalsA', getU8Decoder()],\n    ['decimalsB', getU8Decoder()],\n    ['initialSqrtPrice', getU128Decoder()],\n  ]);\n}\n\nexport function getPoolInitializedCodec(): FixedSizeCodec<\n  PoolInitializedArgs,\n  PoolInitialized\n> {\n  return combineCodec(getPoolInitializedEncoder(), getPoolInitializedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type PositionOpened = {\n  whirlpool: Address;\n  position: Address;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport type PositionOpenedArgs = PositionOpened;\n\nexport function getPositionOpenedEncoder(): FixedSizeEncoder<PositionOpenedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['position', getAddressEncoder()],\n    ['tickLowerIndex', getI32Encoder()],\n    ['tickUpperIndex', getI32Encoder()],\n  ]);\n}\n\nexport function getPositionOpenedDecoder(): FixedSizeDecoder<PositionOpened> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['position', getAddressDecoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getPositionOpenedCodec(): FixedSizeCodec<\n  PositionOpenedArgs,\n  PositionOpened\n> {\n  return combineCodec(getPositionOpenedEncoder(), getPositionOpenedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type PositionRewardInfo = {\n  growthInsideCheckpoint: bigint;\n  amountOwed: bigint;\n};\n\nexport type PositionRewardInfoArgs = {\n  growthInsideCheckpoint: number | bigint;\n  amountOwed: number | bigint;\n};\n\nexport function getPositionRewardInfoEncoder(): FixedSizeEncoder<PositionRewardInfoArgs> {\n  return getStructEncoder([\n    ['growthInsideCheckpoint', getU128Encoder()],\n    ['amountOwed', getU64Encoder()],\n  ]);\n}\n\nexport function getPositionRewardInfoDecoder(): FixedSizeDecoder<PositionRewardInfo> {\n  return getStructDecoder([\n    ['growthInsideCheckpoint', getU128Decoder()],\n    ['amountOwed', getU64Decoder()],\n  ]);\n}\n\nexport function getPositionRewardInfoCodec(): FixedSizeCodec<\n  PositionRewardInfoArgs,\n  PositionRewardInfo\n> {\n  return combineCodec(\n    getPositionRewardInfoEncoder(),\n    getPositionRewardInfoDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  type Codec,\n  type Decoder,\n  type Encoder,\n} from '@solana/kit';\nimport {\n  getRemainingAccountsSliceDecoder,\n  getRemainingAccountsSliceEncoder,\n  type RemainingAccountsSlice,\n  type RemainingAccountsSliceArgs,\n} from '.';\n\nexport type RemainingAccountsInfo = { slices: Array<RemainingAccountsSlice> };\n\nexport type RemainingAccountsInfoArgs = {\n  slices: Array<RemainingAccountsSliceArgs>;\n};\n\nexport function getRemainingAccountsInfoEncoder(): Encoder<RemainingAccountsInfoArgs> {\n  return getStructEncoder([\n    ['slices', getArrayEncoder(getRemainingAccountsSliceEncoder())],\n  ]);\n}\n\nexport function getRemainingAccountsInfoDecoder(): Decoder<RemainingAccountsInfo> {\n  return getStructDecoder([\n    ['slices', getArrayDecoder(getRemainingAccountsSliceDecoder())],\n  ]);\n}\n\nexport function getRemainingAccountsInfoCodec(): Codec<\n  RemainingAccountsInfoArgs,\n  RemainingAccountsInfo\n> {\n  return combineCodec(\n    getRemainingAccountsInfoEncoder(),\n    getRemainingAccountsInfoDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\nimport {\n  getAccountsTypeDecoder,\n  getAccountsTypeEncoder,\n  type AccountsType,\n  type AccountsTypeArgs,\n} from '.';\n\nexport type RemainingAccountsSlice = {\n  accountsType: AccountsType;\n  length: number;\n};\n\nexport type RemainingAccountsSliceArgs = {\n  accountsType: AccountsTypeArgs;\n  length: number;\n};\n\nexport function getRemainingAccountsSliceEncoder(): FixedSizeEncoder<RemainingAccountsSliceArgs> {\n  return getStructEncoder([\n    ['accountsType', getAccountsTypeEncoder()],\n    ['length', getU8Encoder()],\n  ]);\n}\n\nexport function getRemainingAccountsSliceDecoder(): FixedSizeDecoder<RemainingAccountsSlice> {\n  return getStructDecoder([\n    ['accountsType', getAccountsTypeDecoder()],\n    ['length', getU8Decoder()],\n  ]);\n}\n\nexport function getRemainingAccountsSliceCodec(): FixedSizeCodec<\n  RemainingAccountsSliceArgs,\n  RemainingAccountsSlice\n> {\n  return combineCodec(\n    getRemainingAccountsSliceEncoder(),\n    getRemainingAccountsSliceDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type RepositionLiquidityMethod = {\n  __kind: 'ByLiquidity';\n  newLiquidityAmount: bigint;\n  existingRangeTokenMinA: bigint;\n  existingRangeTokenMinB: bigint;\n  newRangeTokenMaxA: bigint;\n  newRangeTokenMaxB: bigint;\n};\n\nexport type RepositionLiquidityMethodArgs = {\n  __kind: 'ByLiquidity';\n  newLiquidityAmount: number | bigint;\n  existingRangeTokenMinA: number | bigint;\n  existingRangeTokenMinB: number | bigint;\n  newRangeTokenMaxA: number | bigint;\n  newRangeTokenMaxB: number | bigint;\n};\n\nexport function getRepositionLiquidityMethodEncoder(): FixedSizeEncoder<RepositionLiquidityMethodArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'ByLiquidity',\n      getStructEncoder([\n        ['newLiquidityAmount', getU128Encoder()],\n        ['existingRangeTokenMinA', getU64Encoder()],\n        ['existingRangeTokenMinB', getU64Encoder()],\n        ['newRangeTokenMaxA', getU64Encoder()],\n        ['newRangeTokenMaxB', getU64Encoder()],\n      ]),\n    ],\n  ]) as FixedSizeEncoder<RepositionLiquidityMethodArgs>;\n}\n\nexport function getRepositionLiquidityMethodDecoder(): FixedSizeDecoder<RepositionLiquidityMethod> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'ByLiquidity',\n      getStructDecoder([\n        ['newLiquidityAmount', getU128Decoder()],\n        ['existingRangeTokenMinA', getU64Decoder()],\n        ['existingRangeTokenMinB', getU64Decoder()],\n        ['newRangeTokenMaxA', getU64Decoder()],\n        ['newRangeTokenMaxB', getU64Decoder()],\n      ]),\n    ],\n  ]) as FixedSizeDecoder<RepositionLiquidityMethod>;\n}\n\nexport function getRepositionLiquidityMethodCodec(): FixedSizeCodec<\n  RepositionLiquidityMethodArgs,\n  RepositionLiquidityMethod\n> {\n  return combineCodec(\n    getRepositionLiquidityMethodEncoder(),\n    getRepositionLiquidityMethodDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function repositionLiquidityMethod(\n  kind: 'ByLiquidity',\n  data: GetDiscriminatedUnionVariantContent<\n    RepositionLiquidityMethodArgs,\n    '__kind',\n    'ByLiquidity'\n  >\n): GetDiscriminatedUnionVariant<\n  RepositionLiquidityMethodArgs,\n  '__kind',\n  'ByLiquidity'\n>;\nexport function repositionLiquidityMethod<\n  K extends RepositionLiquidityMethodArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isRepositionLiquidityMethod<\n  K extends RepositionLiquidityMethod['__kind'],\n>(\n  kind: K,\n  value: RepositionLiquidityMethod\n): value is RepositionLiquidityMethod & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getI128Decoder,\n  getI128Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Tick = {\n  initialized: boolean;\n  liquidityNet: bigint;\n  liquidityGross: bigint;\n  feeGrowthOutsideA: bigint;\n  feeGrowthOutsideB: bigint;\n  rewardGrowthsOutside: Array<bigint>;\n};\n\nexport type TickArgs = {\n  initialized: boolean;\n  liquidityNet: number | bigint;\n  liquidityGross: number | bigint;\n  feeGrowthOutsideA: number | bigint;\n  feeGrowthOutsideB: number | bigint;\n  rewardGrowthsOutside: Array<number | bigint>;\n};\n\nexport function getTickEncoder(): FixedSizeEncoder<TickArgs> {\n  return getStructEncoder([\n    ['initialized', getBooleanEncoder()],\n    ['liquidityNet', getI128Encoder()],\n    ['liquidityGross', getU128Encoder()],\n    ['feeGrowthOutsideA', getU128Encoder()],\n    ['feeGrowthOutsideB', getU128Encoder()],\n    ['rewardGrowthsOutside', getArrayEncoder(getU128Encoder(), { size: 3 })],\n  ]);\n}\n\nexport function getTickDecoder(): FixedSizeDecoder<Tick> {\n  return getStructDecoder([\n    ['initialized', getBooleanDecoder()],\n    ['liquidityNet', getI128Decoder()],\n    ['liquidityGross', getU128Decoder()],\n    ['feeGrowthOutsideA', getU128Decoder()],\n    ['feeGrowthOutsideB', getU128Decoder()],\n    ['rewardGrowthsOutside', getArrayDecoder(getU128Decoder(), { size: 3 })],\n  ]);\n}\n\nexport function getTickCodec(): FixedSizeCodec<TickArgs, Tick> {\n  return combineCodec(getTickEncoder(), getTickDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getDiscriminatedUnionDecoder,\n  getDiscriminatedUnionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getTupleDecoder,\n  getTupleEncoder,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type GetDiscriminatedUnionVariant,\n  type GetDiscriminatedUnionVariantContent,\n} from '@solana/kit';\n\nexport type TokenBadgeAttribute = {\n  __kind: 'RequireNonTransferablePosition';\n  fields: readonly [boolean];\n};\n\nexport type TokenBadgeAttributeArgs = TokenBadgeAttribute;\n\nexport function getTokenBadgeAttributeEncoder(): FixedSizeEncoder<TokenBadgeAttributeArgs> {\n  return getDiscriminatedUnionEncoder([\n    [\n      'RequireNonTransferablePosition',\n      getStructEncoder([['fields', getTupleEncoder([getBooleanEncoder()])]]),\n    ],\n  ]) as FixedSizeEncoder<TokenBadgeAttributeArgs>;\n}\n\nexport function getTokenBadgeAttributeDecoder(): FixedSizeDecoder<TokenBadgeAttribute> {\n  return getDiscriminatedUnionDecoder([\n    [\n      'RequireNonTransferablePosition',\n      getStructDecoder([['fields', getTupleDecoder([getBooleanDecoder()])]]),\n    ],\n  ]) as FixedSizeDecoder<TokenBadgeAttribute>;\n}\n\nexport function getTokenBadgeAttributeCodec(): FixedSizeCodec<\n  TokenBadgeAttributeArgs,\n  TokenBadgeAttribute\n> {\n  return combineCodec(\n    getTokenBadgeAttributeEncoder(),\n    getTokenBadgeAttributeDecoder()\n  );\n}\n\n// Data Enum Helpers.\nexport function tokenBadgeAttribute(\n  kind: 'RequireNonTransferablePosition',\n  data: GetDiscriminatedUnionVariantContent<\n    TokenBadgeAttributeArgs,\n    '__kind',\n    'RequireNonTransferablePosition'\n  >['fields']\n): GetDiscriminatedUnionVariant<\n  TokenBadgeAttributeArgs,\n  '__kind',\n  'RequireNonTransferablePosition'\n>;\nexport function tokenBadgeAttribute<\n  K extends TokenBadgeAttributeArgs['__kind'],\n  Data,\n>(kind: K, data?: Data) {\n  return Array.isArray(data)\n    ? { __kind: kind, fields: data }\n    : { __kind: kind, ...(data ?? {}) };\n}\n\nexport function isTokenBadgeAttribute<K extends TokenBadgeAttribute['__kind']>(\n  kind: K,\n  value: TokenBadgeAttribute\n): value is TokenBadgeAttribute & { __kind: K } {\n  return value.__kind === kind;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n} from '@solana/kit';\n\nexport type Traded = {\n  whirlpool: Address;\n  aToB: boolean;\n  preSqrtPrice: bigint;\n  postSqrtPrice: bigint;\n  inputAmount: bigint;\n  outputAmount: bigint;\n  inputTransferFee: bigint;\n  outputTransferFee: bigint;\n  lpFee: bigint;\n  protocolFee: bigint;\n};\n\nexport type TradedArgs = {\n  whirlpool: Address;\n  aToB: boolean;\n  preSqrtPrice: number | bigint;\n  postSqrtPrice: number | bigint;\n  inputAmount: number | bigint;\n  outputAmount: number | bigint;\n  inputTransferFee: number | bigint;\n  outputTransferFee: number | bigint;\n  lpFee: number | bigint;\n  protocolFee: number | bigint;\n};\n\nexport function getTradedEncoder(): FixedSizeEncoder<TradedArgs> {\n  return getStructEncoder([\n    ['whirlpool', getAddressEncoder()],\n    ['aToB', getBooleanEncoder()],\n    ['preSqrtPrice', getU128Encoder()],\n    ['postSqrtPrice', getU128Encoder()],\n    ['inputAmount', getU64Encoder()],\n    ['outputAmount', getU64Encoder()],\n    ['inputTransferFee', getU64Encoder()],\n    ['outputTransferFee', getU64Encoder()],\n    ['lpFee', getU64Encoder()],\n    ['protocolFee', getU64Encoder()],\n  ]);\n}\n\nexport function getTradedDecoder(): FixedSizeDecoder<Traded> {\n  return getStructDecoder([\n    ['whirlpool', getAddressDecoder()],\n    ['aToB', getBooleanDecoder()],\n    ['preSqrtPrice', getU128Decoder()],\n    ['postSqrtPrice', getU128Decoder()],\n    ['inputAmount', getU64Decoder()],\n    ['outputAmount', getU64Decoder()],\n    ['inputTransferFee', getU64Decoder()],\n    ['outputTransferFee', getU64Decoder()],\n    ['lpFee', getU64Decoder()],\n    ['protocolFee', getU64Decoder()],\n  ]);\n}\n\nexport function getTradedCodec(): FixedSizeCodec<TradedArgs, Traded> {\n  return combineCodec(getTradedEncoder(), getTradedDecoder());\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\n/**\n * Stores the state relevant for tracking liquidity mining rewards at the `Whirlpool` level.\n * These values are used in conjunction with `PositionRewardInfo`, `Tick.reward_growths_outside`,\n * and `Whirlpool.reward_last_updated_timestamp` to determine how many rewards are earned by open\n * positions.\n */\nexport type WhirlpoolRewardInfo = {\n  /** Reward token mint. */\n  mint: Address;\n  /** Reward vault token account. */\n  vault: Address;\n  /**\n   * reward_infos[0]: Authority account that has permission to initialize the reward and set emissions.\n   * reward_infos[1]: used for a struct that contains fields for extending the functionality of Whirlpool.\n   * reward_infos[2]: reserved for future use.\n   *\n   * Historical notes:\n   * Originally, this was a field named \"authority\", but it was found that there was no opportunity\n   * to set different authorities for the three rewards. Therefore, the use of this field was changed for Whirlpool's future extensibility.\n   */\n  extension: ReadonlyUint8Array;\n  /** Q64.64 number that indicates how many tokens per second are earned per unit of liquidity. */\n  emissionsPerSecondX64: bigint;\n  /**\n   * Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward\n   * emissions were turned on.\n   */\n  growthGlobalX64: bigint;\n};\n\nexport type WhirlpoolRewardInfoArgs = {\n  /** Reward token mint. */\n  mint: Address;\n  /** Reward vault token account. */\n  vault: Address;\n  /**\n   * reward_infos[0]: Authority account that has permission to initialize the reward and set emissions.\n   * reward_infos[1]: used for a struct that contains fields for extending the functionality of Whirlpool.\n   * reward_infos[2]: reserved for future use.\n   *\n   * Historical notes:\n   * Originally, this was a field named \"authority\", but it was found that there was no opportunity\n   * to set different authorities for the three rewards. Therefore, the use of this field was changed for Whirlpool's future extensibility.\n   */\n  extension: ReadonlyUint8Array;\n  /** Q64.64 number that indicates how many tokens per second are earned per unit of liquidity. */\n  emissionsPerSecondX64: number | bigint;\n  /**\n   * Q64.64 number that tracks the total tokens earned per unit of liquidity since the reward\n   * emissions were turned on.\n   */\n  growthGlobalX64: number | bigint;\n};\n\nexport function getWhirlpoolRewardInfoEncoder(): FixedSizeEncoder<WhirlpoolRewardInfoArgs> {\n  return getStructEncoder([\n    ['mint', getAddressEncoder()],\n    ['vault', getAddressEncoder()],\n    ['extension', fixEncoderSize(getBytesEncoder(), 32)],\n    ['emissionsPerSecondX64', getU128Encoder()],\n    ['growthGlobalX64', getU128Encoder()],\n  ]);\n}\n\nexport function getWhirlpoolRewardInfoDecoder(): FixedSizeDecoder<WhirlpoolRewardInfo> {\n  return getStructDecoder([\n    ['mint', getAddressDecoder()],\n    ['vault', getAddressDecoder()],\n    ['extension', fixDecoderSize(getBytesDecoder(), 32)],\n    ['emissionsPerSecondX64', getU128Decoder()],\n    ['growthGlobalX64', getU128Decoder()],\n  ]);\n}\n\nexport function getWhirlpoolRewardInfoCodec(): FixedSizeCodec<\n  WhirlpoolRewardInfoArgs,\n  WhirlpoolRewardInfo\n> {\n  return combineCodec(\n    getWhirlpoolRewardInfoEncoder(),\n    getWhirlpoolRewardInfoDecoder()\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const FEE_TIER_DISCRIMINATOR = new Uint8Array([\n  56, 75, 159, 76, 142, 68, 190, 105,\n]);\n\nexport function getFeeTierDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(FEE_TIER_DISCRIMINATOR);\n}\n\nexport type FeeTier = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolsConfig: Address;\n  tickSpacing: number;\n  defaultFeeRate: number;\n};\n\nexport type FeeTierArgs = {\n  whirlpoolsConfig: Address;\n  tickSpacing: number;\n  defaultFeeRate: number;\n};\n\nexport function getFeeTierEncoder(): FixedSizeEncoder<FeeTierArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolsConfig', getAddressEncoder()],\n      ['tickSpacing', getU16Encoder()],\n      ['defaultFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: FEE_TIER_DISCRIMINATOR })\n  );\n}\n\nexport function getFeeTierDecoder(): FixedSizeDecoder<FeeTier> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['tickSpacing', getU16Decoder()],\n    ['defaultFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getFeeTierCodec(): FixedSizeCodec<FeeTierArgs, FeeTier> {\n  return combineCodec(getFeeTierEncoder(), getFeeTierDecoder());\n}\n\nexport function decodeFeeTier<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<FeeTier, TAddress>;\nexport function decodeFeeTier<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<FeeTier, TAddress>;\nexport function decodeFeeTier<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<FeeTier, TAddress> | MaybeAccount<FeeTier, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getFeeTierDecoder()\n  );\n}\n\nexport async function fetchFeeTier<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<FeeTier, TAddress>> {\n  const maybeAccount = await fetchMaybeFeeTier(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeFeeTier<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<FeeTier, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeFeeTier(maybeAccount);\n}\n\nexport async function fetchAllFeeTier(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<FeeTier>[]> {\n  const maybeAccounts = await fetchAllMaybeFeeTier(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeFeeTier(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<FeeTier>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeFeeTier(maybeAccount));\n}\n\nexport function getFeeTierSize(): number {\n  return 44;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getTickDecoder,\n  getTickEncoder,\n  type Tick,\n  type TickArgs,\n} from '../types';\n\nexport const FIXED_TICK_ARRAY_DISCRIMINATOR = new Uint8Array([\n  69, 97, 189, 190, 110, 7, 66, 187,\n]);\n\nexport function getFixedTickArrayDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    FIXED_TICK_ARRAY_DISCRIMINATOR\n  );\n}\n\nexport type FixedTickArray = {\n  discriminator: ReadonlyUint8Array;\n  startTickIndex: number;\n  ticks: Array<Tick>;\n  whirlpool: Address;\n};\n\nexport type FixedTickArrayArgs = {\n  startTickIndex: number;\n  ticks: Array<TickArgs>;\n  whirlpool: Address;\n};\n\nexport function getFixedTickArrayEncoder(): FixedSizeEncoder<FixedTickArrayArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['startTickIndex', getI32Encoder()],\n      ['ticks', getArrayEncoder(getTickEncoder(), { size: 88 })],\n      ['whirlpool', getAddressEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: FIXED_TICK_ARRAY_DISCRIMINATOR })\n  );\n}\n\nexport function getFixedTickArrayDecoder(): FixedSizeDecoder<FixedTickArray> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['startTickIndex', getI32Decoder()],\n    ['ticks', getArrayDecoder(getTickDecoder(), { size: 88 })],\n    ['whirlpool', getAddressDecoder()],\n  ]);\n}\n\nexport function getFixedTickArrayCodec(): FixedSizeCodec<\n  FixedTickArrayArgs,\n  FixedTickArray\n> {\n  return combineCodec(getFixedTickArrayEncoder(), getFixedTickArrayDecoder());\n}\n\nexport function decodeFixedTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<FixedTickArray, TAddress>;\nexport function decodeFixedTickArray<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<FixedTickArray, TAddress>;\nexport function decodeFixedTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<FixedTickArray, TAddress> | MaybeAccount<FixedTickArray, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getFixedTickArrayDecoder()\n  );\n}\n\nexport async function fetchFixedTickArray<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<FixedTickArray, TAddress>> {\n  const maybeAccount = await fetchMaybeFixedTickArray(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeFixedTickArray<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<FixedTickArray, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeFixedTickArray(maybeAccount);\n}\n\nexport async function fetchAllFixedTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<FixedTickArray>[]> {\n  const maybeAccounts = await fetchAllMaybeFixedTickArray(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeFixedTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<FixedTickArray>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeFixedTickArray(maybeAccount)\n  );\n}\n\nexport function getFixedTickArraySize(): number {\n  return 9988;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getLockTypeLabelDecoder,\n  getLockTypeLabelEncoder,\n  type LockTypeLabel,\n  type LockTypeLabelArgs,\n} from '../types';\n\nexport const LOCK_CONFIG_DISCRIMINATOR = new Uint8Array([\n  106, 47, 238, 159, 124, 12, 160, 192,\n]);\n\nexport function getLockConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(LOCK_CONFIG_DISCRIMINATOR);\n}\n\nexport type LockConfig = {\n  discriminator: ReadonlyUint8Array;\n  position: Address;\n  positionOwner: Address;\n  whirlpool: Address;\n  lockedTimestamp: bigint;\n  lockType: LockTypeLabel;\n};\n\nexport type LockConfigArgs = {\n  position: Address;\n  positionOwner: Address;\n  whirlpool: Address;\n  lockedTimestamp: number | bigint;\n  lockType: LockTypeLabelArgs;\n};\n\nexport function getLockConfigEncoder(): FixedSizeEncoder<LockConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['position', getAddressEncoder()],\n      ['positionOwner', getAddressEncoder()],\n      ['whirlpool', getAddressEncoder()],\n      ['lockedTimestamp', getU64Encoder()],\n      ['lockType', getLockTypeLabelEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: LOCK_CONFIG_DISCRIMINATOR })\n  );\n}\n\nexport function getLockConfigDecoder(): FixedSizeDecoder<LockConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['position', getAddressDecoder()],\n    ['positionOwner', getAddressDecoder()],\n    ['whirlpool', getAddressDecoder()],\n    ['lockedTimestamp', getU64Decoder()],\n    ['lockType', getLockTypeLabelDecoder()],\n  ]);\n}\n\nexport function getLockConfigCodec(): FixedSizeCodec<\n  LockConfigArgs,\n  LockConfig\n> {\n  return combineCodec(getLockConfigEncoder(), getLockConfigDecoder());\n}\n\nexport function decodeLockConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<LockConfig, TAddress>;\nexport function decodeLockConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<LockConfig, TAddress>;\nexport function decodeLockConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<LockConfig, TAddress> | MaybeAccount<LockConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getLockConfigDecoder()\n  );\n}\n\nexport async function fetchLockConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<LockConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeLockConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeLockConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<LockConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeLockConfig(maybeAccount);\n}\n\nexport async function fetchAllLockConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<LockConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeLockConfig(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeLockConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<LockConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeLockConfig(maybeAccount));\n}\n\nexport function getLockConfigSize(): number {\n  return 113;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getAdaptiveFeeConstantsDecoder,\n  getAdaptiveFeeConstantsEncoder,\n  getAdaptiveFeeVariablesDecoder,\n  getAdaptiveFeeVariablesEncoder,\n  type AdaptiveFeeConstants,\n  type AdaptiveFeeConstantsArgs,\n  type AdaptiveFeeVariables,\n  type AdaptiveFeeVariablesArgs,\n} from '../types';\n\nexport const ORACLE_DISCRIMINATOR = new Uint8Array([\n  139, 194, 131, 179, 140, 179, 229, 244,\n]);\n\nexport function getOracleDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(ORACLE_DISCRIMINATOR);\n}\n\nexport type Oracle = {\n  discriminator: ReadonlyUint8Array;\n  whirlpool: Address;\n  tradeEnableTimestamp: bigint;\n  adaptiveFeeConstants: AdaptiveFeeConstants;\n  adaptiveFeeVariables: AdaptiveFeeVariables;\n  reserved: ReadonlyUint8Array;\n};\n\nexport type OracleArgs = {\n  whirlpool: Address;\n  tradeEnableTimestamp: number | bigint;\n  adaptiveFeeConstants: AdaptiveFeeConstantsArgs;\n  adaptiveFeeVariables: AdaptiveFeeVariablesArgs;\n  reserved: ReadonlyUint8Array;\n};\n\nexport function getOracleEncoder(): FixedSizeEncoder<OracleArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpool', getAddressEncoder()],\n      ['tradeEnableTimestamp', getU64Encoder()],\n      ['adaptiveFeeConstants', getAdaptiveFeeConstantsEncoder()],\n      ['adaptiveFeeVariables', getAdaptiveFeeVariablesEncoder()],\n      ['reserved', fixEncoderSize(getBytesEncoder(), 128)],\n    ]),\n    (value) => ({ ...value, discriminator: ORACLE_DISCRIMINATOR })\n  );\n}\n\nexport function getOracleDecoder(): FixedSizeDecoder<Oracle> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpool', getAddressDecoder()],\n    ['tradeEnableTimestamp', getU64Decoder()],\n    ['adaptiveFeeConstants', getAdaptiveFeeConstantsDecoder()],\n    ['adaptiveFeeVariables', getAdaptiveFeeVariablesDecoder()],\n    ['reserved', fixDecoderSize(getBytesDecoder(), 128)],\n  ]);\n}\n\nexport function getOracleCodec(): FixedSizeCodec<OracleArgs, Oracle> {\n  return combineCodec(getOracleEncoder(), getOracleDecoder());\n}\n\nexport function decodeOracle<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<Oracle, TAddress>;\nexport function decodeOracle<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Oracle, TAddress>;\nexport function decodeOracle<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Oracle, TAddress> | MaybeAccount<Oracle, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getOracleDecoder()\n  );\n}\n\nexport async function fetchOracle<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<Oracle, TAddress>> {\n  const maybeAccount = await fetchMaybeOracle(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeOracle<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<Oracle, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeOracle(maybeAccount);\n}\n\nexport async function fetchAllOracle(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<Oracle>[]> {\n  const maybeAccounts = await fetchAllMaybeOracle(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeOracle(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<Oracle>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeOracle(maybeAccount));\n}\n\nexport function getOracleSize(): number {\n  return 254;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getPositionRewardInfoDecoder,\n  getPositionRewardInfoEncoder,\n  type PositionRewardInfo,\n  type PositionRewardInfoArgs,\n} from '../types';\n\nexport const POSITION_DISCRIMINATOR = new Uint8Array([\n  170, 188, 143, 228, 122, 64, 247, 208,\n]);\n\nexport function getPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(POSITION_DISCRIMINATOR);\n}\n\nexport type Position = {\n  discriminator: ReadonlyUint8Array;\n  whirlpool: Address;\n  positionMint: Address;\n  liquidity: bigint;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  feeGrowthCheckpointA: bigint;\n  feeOwedA: bigint;\n  feeGrowthCheckpointB: bigint;\n  feeOwedB: bigint;\n  rewardInfos: Array<PositionRewardInfo>;\n};\n\nexport type PositionArgs = {\n  whirlpool: Address;\n  positionMint: Address;\n  liquidity: number | bigint;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  feeGrowthCheckpointA: number | bigint;\n  feeOwedA: number | bigint;\n  feeGrowthCheckpointB: number | bigint;\n  feeOwedB: number | bigint;\n  rewardInfos: Array<PositionRewardInfoArgs>;\n};\n\nexport function getPositionEncoder(): FixedSizeEncoder<PositionArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpool', getAddressEncoder()],\n      ['positionMint', getAddressEncoder()],\n      ['liquidity', getU128Encoder()],\n      ['tickLowerIndex', getI32Encoder()],\n      ['tickUpperIndex', getI32Encoder()],\n      ['feeGrowthCheckpointA', getU128Encoder()],\n      ['feeOwedA', getU64Encoder()],\n      ['feeGrowthCheckpointB', getU128Encoder()],\n      ['feeOwedB', getU64Encoder()],\n      [\n        'rewardInfos',\n        getArrayEncoder(getPositionRewardInfoEncoder(), { size: 3 }),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: POSITION_DISCRIMINATOR })\n  );\n}\n\nexport function getPositionDecoder(): FixedSizeDecoder<Position> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpool', getAddressDecoder()],\n    ['positionMint', getAddressDecoder()],\n    ['liquidity', getU128Decoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n    ['feeGrowthCheckpointA', getU128Decoder()],\n    ['feeOwedA', getU64Decoder()],\n    ['feeGrowthCheckpointB', getU128Decoder()],\n    ['feeOwedB', getU64Decoder()],\n    [\n      'rewardInfos',\n      getArrayDecoder(getPositionRewardInfoDecoder(), { size: 3 }),\n    ],\n  ]);\n}\n\nexport function getPositionCodec(): FixedSizeCodec<PositionArgs, Position> {\n  return combineCodec(getPositionEncoder(), getPositionDecoder());\n}\n\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<Position, TAddress>;\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Position, TAddress>;\nexport function decodePosition<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Position, TAddress> | MaybeAccount<Position, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getPositionDecoder()\n  );\n}\n\nexport async function fetchPosition<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<Position, TAddress>> {\n  const maybeAccount = await fetchMaybePosition(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybePosition<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<Position, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodePosition(maybeAccount);\n}\n\nexport async function fetchAllPosition(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<Position>[]> {\n  const maybeAccounts = await fetchAllMaybePosition(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybePosition(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<Position>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodePosition(maybeAccount));\n}\n\nexport function getPositionSize(): number {\n  return 216;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const POSITION_BUNDLE_DISCRIMINATOR = new Uint8Array([\n  129, 169, 175, 65, 185, 95, 32, 100,\n]);\n\nexport function getPositionBundleDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    POSITION_BUNDLE_DISCRIMINATOR\n  );\n}\n\nexport type PositionBundle = {\n  discriminator: ReadonlyUint8Array;\n  positionBundleMint: Address;\n  positionBitmap: ReadonlyUint8Array;\n};\n\nexport type PositionBundleArgs = {\n  positionBundleMint: Address;\n  positionBitmap: ReadonlyUint8Array;\n};\n\nexport function getPositionBundleEncoder(): FixedSizeEncoder<PositionBundleArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['positionBundleMint', getAddressEncoder()],\n      ['positionBitmap', fixEncoderSize(getBytesEncoder(), 32)],\n    ]),\n    (value) => ({ ...value, discriminator: POSITION_BUNDLE_DISCRIMINATOR })\n  );\n}\n\nexport function getPositionBundleDecoder(): FixedSizeDecoder<PositionBundle> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['positionBundleMint', getAddressDecoder()],\n    ['positionBitmap', fixDecoderSize(getBytesDecoder(), 32)],\n  ]);\n}\n\nexport function getPositionBundleCodec(): FixedSizeCodec<\n  PositionBundleArgs,\n  PositionBundle\n> {\n  return combineCodec(getPositionBundleEncoder(), getPositionBundleDecoder());\n}\n\nexport function decodePositionBundle<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<PositionBundle, TAddress>;\nexport function decodePositionBundle<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<PositionBundle, TAddress>;\nexport function decodePositionBundle<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<PositionBundle, TAddress> | MaybeAccount<PositionBundle, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getPositionBundleDecoder()\n  );\n}\n\nexport async function fetchPositionBundle<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<PositionBundle, TAddress>> {\n  const maybeAccount = await fetchMaybePositionBundle(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybePositionBundle<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<PositionBundle, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodePositionBundle(maybeAccount);\n}\n\nexport async function fetchAllPositionBundle(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<PositionBundle>[]> {\n  const maybeAccounts = await fetchAllMaybePositionBundle(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybePositionBundle(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<PositionBundle>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodePositionBundle(maybeAccount)\n  );\n}\n\nexport function getPositionBundleSize(): number {\n  return 72;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const TOKEN_BADGE_DISCRIMINATOR = new Uint8Array([\n  116, 219, 204, 229, 249, 116, 255, 150,\n]);\n\nexport function getTokenBadgeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(TOKEN_BADGE_DISCRIMINATOR);\n}\n\nexport type TokenBadge = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolsConfig: Address;\n  tokenMint: Address;\n  attributeRequireNonTransferablePosition: boolean;\n};\n\nexport type TokenBadgeArgs = {\n  whirlpoolsConfig: Address;\n  tokenMint: Address;\n  attributeRequireNonTransferablePosition: boolean;\n};\n\nexport function getTokenBadgeEncoder(): FixedSizeEncoder<TokenBadgeArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolsConfig', getAddressEncoder()],\n      ['tokenMint', getAddressEncoder()],\n      ['attributeRequireNonTransferablePosition', getBooleanEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: TOKEN_BADGE_DISCRIMINATOR })\n  );\n}\n\nexport function getTokenBadgeDecoder(): FixedSizeDecoder<TokenBadge> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['tokenMint', getAddressDecoder()],\n    ['attributeRequireNonTransferablePosition', getBooleanDecoder()],\n  ]);\n}\n\nexport function getTokenBadgeCodec(): FixedSizeCodec<\n  TokenBadgeArgs,\n  TokenBadge\n> {\n  return combineCodec(getTokenBadgeEncoder(), getTokenBadgeDecoder());\n}\n\nexport function decodeTokenBadge<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<TokenBadge, TAddress>;\nexport function decodeTokenBadge<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<TokenBadge, TAddress>;\nexport function decodeTokenBadge<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<TokenBadge, TAddress> | MaybeAccount<TokenBadge, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getTokenBadgeDecoder()\n  );\n}\n\nexport async function fetchTokenBadge<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<TokenBadge, TAddress>> {\n  const maybeAccount = await fetchMaybeTokenBadge(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeTokenBadge<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<TokenBadge, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeTokenBadge(maybeAccount);\n}\n\nexport async function fetchAllTokenBadge(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<TokenBadge>[]> {\n  const maybeAccounts = await fetchAllMaybeTokenBadge(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTokenBadge(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<TokenBadge>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeTokenBadge(maybeAccount));\n}\n\nexport function getTokenBadgeSize(): number {\n  return 73;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getArrayDecoder,\n  getArrayEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  getWhirlpoolRewardInfoDecoder,\n  getWhirlpoolRewardInfoEncoder,\n  type WhirlpoolRewardInfo,\n  type WhirlpoolRewardInfoArgs,\n} from '../types';\n\nexport const WHIRLPOOL_DISCRIMINATOR = new Uint8Array([\n  63, 149, 209, 12, 225, 128, 99, 9,\n]);\n\nexport function getWhirlpoolDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(WHIRLPOOL_DISCRIMINATOR);\n}\n\nexport type Whirlpool = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolsConfig: Address;\n  whirlpoolBump: ReadonlyUint8Array;\n  tickSpacing: number;\n  feeTierIndexSeed: ReadonlyUint8Array;\n  feeRate: number;\n  protocolFeeRate: number;\n  liquidity: bigint;\n  sqrtPrice: bigint;\n  tickCurrentIndex: number;\n  protocolFeeOwedA: bigint;\n  protocolFeeOwedB: bigint;\n  tokenMintA: Address;\n  tokenVaultA: Address;\n  feeGrowthGlobalA: bigint;\n  tokenMintB: Address;\n  tokenVaultB: Address;\n  feeGrowthGlobalB: bigint;\n  rewardLastUpdatedTimestamp: bigint;\n  rewardInfos: Array<WhirlpoolRewardInfo>;\n};\n\nexport type WhirlpoolArgs = {\n  whirlpoolsConfig: Address;\n  whirlpoolBump: ReadonlyUint8Array;\n  tickSpacing: number;\n  feeTierIndexSeed: ReadonlyUint8Array;\n  feeRate: number;\n  protocolFeeRate: number;\n  liquidity: number | bigint;\n  sqrtPrice: number | bigint;\n  tickCurrentIndex: number;\n  protocolFeeOwedA: number | bigint;\n  protocolFeeOwedB: number | bigint;\n  tokenMintA: Address;\n  tokenVaultA: Address;\n  feeGrowthGlobalA: number | bigint;\n  tokenMintB: Address;\n  tokenVaultB: Address;\n  feeGrowthGlobalB: number | bigint;\n  rewardLastUpdatedTimestamp: number | bigint;\n  rewardInfos: Array<WhirlpoolRewardInfoArgs>;\n};\n\nexport function getWhirlpoolEncoder(): FixedSizeEncoder<WhirlpoolArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolsConfig', getAddressEncoder()],\n      ['whirlpoolBump', fixEncoderSize(getBytesEncoder(), 1)],\n      ['tickSpacing', getU16Encoder()],\n      ['feeTierIndexSeed', fixEncoderSize(getBytesEncoder(), 2)],\n      ['feeRate', getU16Encoder()],\n      ['protocolFeeRate', getU16Encoder()],\n      ['liquidity', getU128Encoder()],\n      ['sqrtPrice', getU128Encoder()],\n      ['tickCurrentIndex', getI32Encoder()],\n      ['protocolFeeOwedA', getU64Encoder()],\n      ['protocolFeeOwedB', getU64Encoder()],\n      ['tokenMintA', getAddressEncoder()],\n      ['tokenVaultA', getAddressEncoder()],\n      ['feeGrowthGlobalA', getU128Encoder()],\n      ['tokenMintB', getAddressEncoder()],\n      ['tokenVaultB', getAddressEncoder()],\n      ['feeGrowthGlobalB', getU128Encoder()],\n      ['rewardLastUpdatedTimestamp', getU64Encoder()],\n      [\n        'rewardInfos',\n        getArrayEncoder(getWhirlpoolRewardInfoEncoder(), { size: 3 }),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: WHIRLPOOL_DISCRIMINATOR })\n  );\n}\n\nexport function getWhirlpoolDecoder(): FixedSizeDecoder<Whirlpool> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['whirlpoolBump', fixDecoderSize(getBytesDecoder(), 1)],\n    ['tickSpacing', getU16Decoder()],\n    ['feeTierIndexSeed', fixDecoderSize(getBytesDecoder(), 2)],\n    ['feeRate', getU16Decoder()],\n    ['protocolFeeRate', getU16Decoder()],\n    ['liquidity', getU128Decoder()],\n    ['sqrtPrice', getU128Decoder()],\n    ['tickCurrentIndex', getI32Decoder()],\n    ['protocolFeeOwedA', getU64Decoder()],\n    ['protocolFeeOwedB', getU64Decoder()],\n    ['tokenMintA', getAddressDecoder()],\n    ['tokenVaultA', getAddressDecoder()],\n    ['feeGrowthGlobalA', getU128Decoder()],\n    ['tokenMintB', getAddressDecoder()],\n    ['tokenVaultB', getAddressDecoder()],\n    ['feeGrowthGlobalB', getU128Decoder()],\n    ['rewardLastUpdatedTimestamp', getU64Decoder()],\n    [\n      'rewardInfos',\n      getArrayDecoder(getWhirlpoolRewardInfoDecoder(), { size: 3 }),\n    ],\n  ]);\n}\n\nexport function getWhirlpoolCodec(): FixedSizeCodec<WhirlpoolArgs, Whirlpool> {\n  return combineCodec(getWhirlpoolEncoder(), getWhirlpoolDecoder());\n}\n\nexport function decodeWhirlpool<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<Whirlpool, TAddress>;\nexport function decodeWhirlpool<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<Whirlpool, TAddress>;\nexport function decodeWhirlpool<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n): Account<Whirlpool, TAddress> | MaybeAccount<Whirlpool, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getWhirlpoolDecoder()\n  );\n}\n\nexport async function fetchWhirlpool<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<Whirlpool, TAddress>> {\n  const maybeAccount = await fetchMaybeWhirlpool(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeWhirlpool<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<Whirlpool, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeWhirlpool(maybeAccount);\n}\n\nexport async function fetchAllWhirlpool(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<Whirlpool>[]> {\n  const maybeAccounts = await fetchAllMaybeWhirlpool(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeWhirlpool(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<Whirlpool>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeWhirlpool(maybeAccount));\n}\n\nexport function getWhirlpoolSize(): number {\n  return 653;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const WHIRLPOOLS_CONFIG_DISCRIMINATOR = new Uint8Array([\n  157, 20, 49, 224, 217, 87, 193, 254,\n]);\n\nexport function getWhirlpoolsConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    WHIRLPOOLS_CONFIG_DISCRIMINATOR\n  );\n}\n\nexport type WhirlpoolsConfig = {\n  discriminator: ReadonlyUint8Array;\n  feeAuthority: Address;\n  collectProtocolFeesAuthority: Address;\n  rewardEmissionsSuperAuthority: Address;\n  defaultProtocolFeeRate: number;\n  featureFlags: number;\n};\n\nexport type WhirlpoolsConfigArgs = {\n  feeAuthority: Address;\n  collectProtocolFeesAuthority: Address;\n  rewardEmissionsSuperAuthority: Address;\n  defaultProtocolFeeRate: number;\n  featureFlags: number;\n};\n\nexport function getWhirlpoolsConfigEncoder(): FixedSizeEncoder<WhirlpoolsConfigArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['feeAuthority', getAddressEncoder()],\n      ['collectProtocolFeesAuthority', getAddressEncoder()],\n      ['rewardEmissionsSuperAuthority', getAddressEncoder()],\n      ['defaultProtocolFeeRate', getU16Encoder()],\n      ['featureFlags', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: WHIRLPOOLS_CONFIG_DISCRIMINATOR })\n  );\n}\n\nexport function getWhirlpoolsConfigDecoder(): FixedSizeDecoder<WhirlpoolsConfig> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['feeAuthority', getAddressDecoder()],\n    ['collectProtocolFeesAuthority', getAddressDecoder()],\n    ['rewardEmissionsSuperAuthority', getAddressDecoder()],\n    ['defaultProtocolFeeRate', getU16Decoder()],\n    ['featureFlags', getU16Decoder()],\n  ]);\n}\n\nexport function getWhirlpoolsConfigCodec(): FixedSizeCodec<\n  WhirlpoolsConfigArgs,\n  WhirlpoolsConfig\n> {\n  return combineCodec(\n    getWhirlpoolsConfigEncoder(),\n    getWhirlpoolsConfigDecoder()\n  );\n}\n\nexport function decodeWhirlpoolsConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<WhirlpoolsConfig, TAddress>;\nexport function decodeWhirlpoolsConfig<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<WhirlpoolsConfig, TAddress>;\nexport function decodeWhirlpoolsConfig<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n  | Account<WhirlpoolsConfig, TAddress>\n  | MaybeAccount<WhirlpoolsConfig, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getWhirlpoolsConfigDecoder()\n  );\n}\n\nexport async function fetchWhirlpoolsConfig<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<WhirlpoolsConfig, TAddress>> {\n  const maybeAccount = await fetchMaybeWhirlpoolsConfig(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeWhirlpoolsConfig<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<WhirlpoolsConfig, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeWhirlpoolsConfig(maybeAccount);\n}\n\nexport async function fetchAllWhirlpoolsConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<WhirlpoolsConfig>[]> {\n  const maybeAccounts = await fetchAllMaybeWhirlpoolsConfig(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeWhirlpoolsConfig(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<WhirlpoolsConfig>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeWhirlpoolsConfig(maybeAccount)\n  );\n}\n\nexport function getWhirlpoolsConfigSize(): number {\n  return 108;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  decodeAccount,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type Account,\n  type Address,\n  type EncodedAccount,\n  type FetchAccountConfig,\n  type FetchAccountsConfig,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type MaybeAccount,\n  type MaybeEncodedAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\n\nexport const WHIRLPOOLS_CONFIG_EXTENSION_DISCRIMINATOR = new Uint8Array([\n  2, 99, 215, 163, 240, 26, 153, 58,\n]);\n\nexport function getWhirlpoolsConfigExtensionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    WHIRLPOOLS_CONFIG_EXTENSION_DISCRIMINATOR\n  );\n}\n\nexport type WhirlpoolsConfigExtension = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolsConfig: Address;\n  configExtensionAuthority: Address;\n  tokenBadgeAuthority: Address;\n};\n\nexport type WhirlpoolsConfigExtensionArgs = {\n  whirlpoolsConfig: Address;\n  configExtensionAuthority: Address;\n  tokenBadgeAuthority: Address;\n};\n\nexport function getWhirlpoolsConfigExtensionEncoder(): FixedSizeEncoder<WhirlpoolsConfigExtensionArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolsConfig', getAddressEncoder()],\n      ['configExtensionAuthority', getAddressEncoder()],\n      ['tokenBadgeAuthority', getAddressEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: WHIRLPOOLS_CONFIG_EXTENSION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getWhirlpoolsConfigExtensionDecoder(): FixedSizeDecoder<WhirlpoolsConfigExtension> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolsConfig', getAddressDecoder()],\n    ['configExtensionAuthority', getAddressDecoder()],\n    ['tokenBadgeAuthority', getAddressDecoder()],\n  ]);\n}\n\nexport function getWhirlpoolsConfigExtensionCodec(): FixedSizeCodec<\n  WhirlpoolsConfigExtensionArgs,\n  WhirlpoolsConfigExtension\n> {\n  return combineCodec(\n    getWhirlpoolsConfigExtensionEncoder(),\n    getWhirlpoolsConfigExtensionDecoder()\n  );\n}\n\nexport function decodeWhirlpoolsConfigExtension<\n  TAddress extends string = string,\n>(\n  encodedAccount: EncodedAccount<TAddress>\n): Account<WhirlpoolsConfigExtension, TAddress>;\nexport function decodeWhirlpoolsConfigExtension<\n  TAddress extends string = string,\n>(\n  encodedAccount: MaybeEncodedAccount<TAddress>\n): MaybeAccount<WhirlpoolsConfigExtension, TAddress>;\nexport function decodeWhirlpoolsConfigExtension<\n  TAddress extends string = string,\n>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>\n):\n  | Account<WhirlpoolsConfigExtension, TAddress>\n  | MaybeAccount<WhirlpoolsConfigExtension, TAddress> {\n  return decodeAccount(\n    encodedAccount as MaybeEncodedAccount<TAddress>,\n    getWhirlpoolsConfigExtensionDecoder()\n  );\n}\n\nexport async function fetchWhirlpoolsConfigExtension<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<Account<WhirlpoolsConfigExtension, TAddress>> {\n  const maybeAccount = await fetchMaybeWhirlpoolsConfigExtension(\n    rpc,\n    address,\n    config\n  );\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeWhirlpoolsConfigExtension<\n  TAddress extends string = string,\n>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig\n): Promise<MaybeAccount<WhirlpoolsConfigExtension, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeWhirlpoolsConfigExtension(maybeAccount);\n}\n\nexport async function fetchAllWhirlpoolsConfigExtension(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<Account<WhirlpoolsConfigExtension>[]> {\n  const maybeAccounts = await fetchAllMaybeWhirlpoolsConfigExtension(\n    rpc,\n    addresses,\n    config\n  );\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeWhirlpoolsConfigExtension(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig\n): Promise<MaybeAccount<WhirlpoolsConfigExtension>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) =>\n    decodeWhirlpoolsConfigExtension(maybeAccount)\n  );\n}\n\nexport function getWhirlpoolsConfigExtensionSize(): number {\n  return 104;\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  isProgramError,\n  type Address,\n  type SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM,\n  type SolanaError,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\n\n/** InvalidEnum: Enum value could not be converted */\nexport const WHIRLPOOL_ERROR__INVALID_ENUM = 0x1770; // 6000\n/** InvalidStartTick: Invalid start tick index provided. */\nexport const WHIRLPOOL_ERROR__INVALID_START_TICK = 0x1771; // 6001\n/** TickArrayExistInPool: Tick-array already exists in this whirlpool */\nexport const WHIRLPOOL_ERROR__TICK_ARRAY_EXIST_IN_POOL = 0x1772; // 6002\n/** TickArrayIndexOutofBounds: Attempt to search for a tick-array failed */\nexport const WHIRLPOOL_ERROR__TICK_ARRAY_INDEX_OUTOF_BOUNDS = 0x1773; // 6003\n/** InvalidTickSpacing: Tick-spacing is not supported */\nexport const WHIRLPOOL_ERROR__INVALID_TICK_SPACING = 0x1774; // 6004\n/** ClosePositionNotEmpty: Position is not empty It cannot be closed */\nexport const WHIRLPOOL_ERROR__CLOSE_POSITION_NOT_EMPTY = 0x1775; // 6005\n/** DivideByZero: Unable to divide by zero */\nexport const WHIRLPOOL_ERROR__DIVIDE_BY_ZERO = 0x1776; // 6006\n/** NumberCastError: Unable to cast number into BigInt */\nexport const WHIRLPOOL_ERROR__NUMBER_CAST_ERROR = 0x1777; // 6007\n/** NumberDownCastError: Unable to down cast number */\nexport const WHIRLPOOL_ERROR__NUMBER_DOWN_CAST_ERROR = 0x1778; // 6008\n/** TickNotFound: Tick not found within tick array */\nexport const WHIRLPOOL_ERROR__TICK_NOT_FOUND = 0x1779; // 6009\n/** InvalidTickIndex: Provided tick index is either out of bounds or uninitializable */\nexport const WHIRLPOOL_ERROR__INVALID_TICK_INDEX = 0x177a; // 6010\n/** SqrtPriceOutOfBounds: Provided sqrt price out of bounds */\nexport const WHIRLPOOL_ERROR__SQRT_PRICE_OUT_OF_BOUNDS = 0x177b; // 6011\n/** LiquidityZero: Liquidity amount must be greater than zero */\nexport const WHIRLPOOL_ERROR__LIQUIDITY_ZERO = 0x177c; // 6012\n/** LiquidityTooHigh: Liquidity amount must be less than i64::MAX */\nexport const WHIRLPOOL_ERROR__LIQUIDITY_TOO_HIGH = 0x177d; // 6013\n/** LiquidityOverflow: Liquidity overflow */\nexport const WHIRLPOOL_ERROR__LIQUIDITY_OVERFLOW = 0x177e; // 6014\n/** LiquidityUnderflow: Liquidity underflow */\nexport const WHIRLPOOL_ERROR__LIQUIDITY_UNDERFLOW = 0x177f; // 6015\n/** LiquidityNetError: Tick liquidity net underflowed or overflowed */\nexport const WHIRLPOOL_ERROR__LIQUIDITY_NET_ERROR = 0x1780; // 6016\n/** TokenMaxExceeded: Exceeded token max */\nexport const WHIRLPOOL_ERROR__TOKEN_MAX_EXCEEDED = 0x1781; // 6017\n/** TokenMinSubceeded: Did not meet token min */\nexport const WHIRLPOOL_ERROR__TOKEN_MIN_SUBCEEDED = 0x1782; // 6018\n/** MissingOrInvalidDelegate: Position token account has a missing or invalid delegate */\nexport const WHIRLPOOL_ERROR__MISSING_OR_INVALID_DELEGATE = 0x1783; // 6019\n/** InvalidPositionTokenAmount: Position token amount must be 1 */\nexport const WHIRLPOOL_ERROR__INVALID_POSITION_TOKEN_AMOUNT = 0x1784; // 6020\n/** InvalidTimestampConversion: Timestamp should be convertible from i64 to u64 */\nexport const WHIRLPOOL_ERROR__INVALID_TIMESTAMP_CONVERSION = 0x1785; // 6021\n/** InvalidTimestamp: Timestamp should be greater than the last updated timestamp */\nexport const WHIRLPOOL_ERROR__INVALID_TIMESTAMP = 0x1786; // 6022\n/** InvalidTickArraySequence: Invalid tick array sequence provided for instruction. */\nexport const WHIRLPOOL_ERROR__INVALID_TICK_ARRAY_SEQUENCE = 0x1787; // 6023\n/** InvalidTokenMintOrder: Token Mint in wrong order */\nexport const WHIRLPOOL_ERROR__INVALID_TOKEN_MINT_ORDER = 0x1788; // 6024\n/** RewardNotInitialized: Reward not initialized */\nexport const WHIRLPOOL_ERROR__REWARD_NOT_INITIALIZED = 0x1789; // 6025\n/** InvalidRewardIndex: Invalid reward index */\nexport const WHIRLPOOL_ERROR__INVALID_REWARD_INDEX = 0x178a; // 6026\n/** RewardVaultAmountInsufficient: Reward vault requires amount to support emissions for at least one day */\nexport const WHIRLPOOL_ERROR__REWARD_VAULT_AMOUNT_INSUFFICIENT = 0x178b; // 6027\n/** FeeRateMaxExceeded: Exceeded max fee rate */\nexport const WHIRLPOOL_ERROR__FEE_RATE_MAX_EXCEEDED = 0x178c; // 6028\n/** ProtocolFeeRateMaxExceeded: Exceeded max protocol fee rate */\nexport const WHIRLPOOL_ERROR__PROTOCOL_FEE_RATE_MAX_EXCEEDED = 0x178d; // 6029\n/** MultiplicationShiftRightOverflow: Multiplication with shift right overflow */\nexport const WHIRLPOOL_ERROR__MULTIPLICATION_SHIFT_RIGHT_OVERFLOW = 0x178e; // 6030\n/** MulDivOverflow: Muldiv overflow */\nexport const WHIRLPOOL_ERROR__MUL_DIV_OVERFLOW = 0x178f; // 6031\n/** MulDivInvalidInput: Invalid div_u256 input */\nexport const WHIRLPOOL_ERROR__MUL_DIV_INVALID_INPUT = 0x1790; // 6032\n/** MultiplicationOverflow: Multiplication overflow */\nexport const WHIRLPOOL_ERROR__MULTIPLICATION_OVERFLOW = 0x1791; // 6033\n/** InvalidSqrtPriceLimitDirection: Provided SqrtPriceLimit not in the same direction as the swap. */\nexport const WHIRLPOOL_ERROR__INVALID_SQRT_PRICE_LIMIT_DIRECTION = 0x1792; // 6034\n/** ZeroTradableAmount: There are no tradable amount to swap. */\nexport const WHIRLPOOL_ERROR__ZERO_TRADABLE_AMOUNT = 0x1793; // 6035\n/** AmountOutBelowMinimum: Amount out below minimum threshold */\nexport const WHIRLPOOL_ERROR__AMOUNT_OUT_BELOW_MINIMUM = 0x1794; // 6036\n/** AmountInAboveMaximum: Amount in above maximum threshold */\nexport const WHIRLPOOL_ERROR__AMOUNT_IN_ABOVE_MAXIMUM = 0x1795; // 6037\n/** TickArraySequenceInvalidIndex: Invalid index for tick array sequence */\nexport const WHIRLPOOL_ERROR__TICK_ARRAY_SEQUENCE_INVALID_INDEX = 0x1796; // 6038\n/** AmountCalcOverflow: Amount calculated overflows */\nexport const WHIRLPOOL_ERROR__AMOUNT_CALC_OVERFLOW = 0x1797; // 6039\n/** AmountRemainingOverflow: Amount remaining overflows */\nexport const WHIRLPOOL_ERROR__AMOUNT_REMAINING_OVERFLOW = 0x1798; // 6040\n/** InvalidIntermediaryMint: Invalid intermediary mint */\nexport const WHIRLPOOL_ERROR__INVALID_INTERMEDIARY_MINT = 0x1799; // 6041\n/** DuplicateTwoHopPool: Duplicate two hop pool */\nexport const WHIRLPOOL_ERROR__DUPLICATE_TWO_HOP_POOL = 0x179a; // 6042\n/** InvalidBundleIndex: Bundle index is out of bounds */\nexport const WHIRLPOOL_ERROR__INVALID_BUNDLE_INDEX = 0x179b; // 6043\n/** BundledPositionAlreadyOpened: Position has already been opened */\nexport const WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_OPENED = 0x179c; // 6044\n/** BundledPositionAlreadyClosed: Position has already been closed */\nexport const WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_CLOSED = 0x179d; // 6045\n/** PositionBundleNotDeletable: Unable to delete PositionBundle with open positions */\nexport const WHIRLPOOL_ERROR__POSITION_BUNDLE_NOT_DELETABLE = 0x179e; // 6046\n/** UnsupportedTokenMint: Token mint has unsupported attributes */\nexport const WHIRLPOOL_ERROR__UNSUPPORTED_TOKEN_MINT = 0x179f; // 6047\n/** RemainingAccountsInvalidSlice: Invalid remaining accounts */\nexport const WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INVALID_SLICE = 0x17a0; // 6048\n/** RemainingAccountsInsufficient: Insufficient remaining accounts */\nexport const WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INSUFFICIENT = 0x17a1; // 6049\n/** NoExtraAccountsForTransferHook: Unable to call transfer hook without extra accounts */\nexport const WHIRLPOOL_ERROR__NO_EXTRA_ACCOUNTS_FOR_TRANSFER_HOOK = 0x17a2; // 6050\n/** IntermediateTokenAmountMismatch: Output and input amount mismatch */\nexport const WHIRLPOOL_ERROR__INTERMEDIATE_TOKEN_AMOUNT_MISMATCH = 0x17a3; // 6051\n/** TransferFeeCalculationError: Transfer fee calculation failed */\nexport const WHIRLPOOL_ERROR__TRANSFER_FEE_CALCULATION_ERROR = 0x17a4; // 6052\n/** RemainingAccountsDuplicatedAccountsType: Same accounts type is provided more than once */\nexport const WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_DUPLICATED_ACCOUNTS_TYPE = 0x17a5; // 6053\n/** FullRangeOnlyPool: This whirlpool only supports full-range positions */\nexport const WHIRLPOOL_ERROR__FULL_RANGE_ONLY_POOL = 0x17a6; // 6054\n/** TooManySupplementalTickArrays: Too many supplemental tick arrays provided */\nexport const WHIRLPOOL_ERROR__TOO_MANY_SUPPLEMENTAL_TICK_ARRAYS = 0x17a7; // 6055\n/** DifferentWhirlpoolTickArrayAccount: TickArray account for different whirlpool provided */\nexport const WHIRLPOOL_ERROR__DIFFERENT_WHIRLPOOL_TICK_ARRAY_ACCOUNT = 0x17a8; // 6056\n/** PartialFillError: Trade resulted in partial fill */\nexport const WHIRLPOOL_ERROR__PARTIAL_FILL_ERROR = 0x17a9; // 6057\n/** PositionNotLockable: Position is not lockable */\nexport const WHIRLPOOL_ERROR__POSITION_NOT_LOCKABLE = 0x17aa; // 6058\n/** OperationNotAllowedOnLockedPosition: Operation not allowed on locked position */\nexport const WHIRLPOOL_ERROR__OPERATION_NOT_ALLOWED_ON_LOCKED_POSITION = 0x17ab; // 6059\n/** SameTickRangeNotAllowed: Cannot reset position range with same tick range */\nexport const WHIRLPOOL_ERROR__SAME_TICK_RANGE_NOT_ALLOWED = 0x17ac; // 6060\n/** InvalidAdaptiveFeeConstants: Invalid adaptive fee constants */\nexport const WHIRLPOOL_ERROR__INVALID_ADAPTIVE_FEE_CONSTANTS = 0x17ad; // 6061\n/** InvalidFeeTierIndex: Invalid fee tier index */\nexport const WHIRLPOOL_ERROR__INVALID_FEE_TIER_INDEX = 0x17ae; // 6062\n/** InvalidTradeEnableTimestamp: Invalid trade enable timestamp */\nexport const WHIRLPOOL_ERROR__INVALID_TRADE_ENABLE_TIMESTAMP = 0x17af; // 6063\n/** TradeIsNotEnabled: Trade is not enabled yet */\nexport const WHIRLPOOL_ERROR__TRADE_IS_NOT_ENABLED = 0x17b0; // 6064\n/** RentCalculationError: Rent calculation error */\nexport const WHIRLPOOL_ERROR__RENT_CALCULATION_ERROR = 0x17b1; // 6065\n/** FeatureIsNotEnabled: Feature is not enabled */\nexport const WHIRLPOOL_ERROR__FEATURE_IS_NOT_ENABLED = 0x17b2; // 6066\n/** PositionWithTokenExtensionsRequired: This whirlpool only supports open_position_with_token_extensions instruction */\nexport const WHIRLPOOL_ERROR__POSITION_WITH_TOKEN_EXTENSIONS_REQUIRED = 0x17b3; // 6067\n/** AdaptiveFeeConstantsUnchanged: Provided adaptive fee constants are unchanged */\nexport const WHIRLPOOL_ERROR__ADAPTIVE_FEE_CONSTANTS_UNCHANGED = 0x17b4; // 6068\n/** PriceSlippageOutOfBounds: Price outside slippage bounds */\nexport const WHIRLPOOL_ERROR__PRICE_SLIPPAGE_OUT_OF_BOUNDS = 0x17b5; // 6069\n\nexport type WhirlpoolError =\n  | typeof WHIRLPOOL_ERROR__ADAPTIVE_FEE_CONSTANTS_UNCHANGED\n  | typeof WHIRLPOOL_ERROR__AMOUNT_CALC_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__AMOUNT_IN_ABOVE_MAXIMUM\n  | typeof WHIRLPOOL_ERROR__AMOUNT_OUT_BELOW_MINIMUM\n  | typeof WHIRLPOOL_ERROR__AMOUNT_REMAINING_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_CLOSED\n  | typeof WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_OPENED\n  | typeof WHIRLPOOL_ERROR__CLOSE_POSITION_NOT_EMPTY\n  | typeof WHIRLPOOL_ERROR__DIFFERENT_WHIRLPOOL_TICK_ARRAY_ACCOUNT\n  | typeof WHIRLPOOL_ERROR__DIVIDE_BY_ZERO\n  | typeof WHIRLPOOL_ERROR__DUPLICATE_TWO_HOP_POOL\n  | typeof WHIRLPOOL_ERROR__FEATURE_IS_NOT_ENABLED\n  | typeof WHIRLPOOL_ERROR__FEE_RATE_MAX_EXCEEDED\n  | typeof WHIRLPOOL_ERROR__FULL_RANGE_ONLY_POOL\n  | typeof WHIRLPOOL_ERROR__INTERMEDIATE_TOKEN_AMOUNT_MISMATCH\n  | typeof WHIRLPOOL_ERROR__INVALID_ADAPTIVE_FEE_CONSTANTS\n  | typeof WHIRLPOOL_ERROR__INVALID_BUNDLE_INDEX\n  | typeof WHIRLPOOL_ERROR__INVALID_ENUM\n  | typeof WHIRLPOOL_ERROR__INVALID_FEE_TIER_INDEX\n  | typeof WHIRLPOOL_ERROR__INVALID_INTERMEDIARY_MINT\n  | typeof WHIRLPOOL_ERROR__INVALID_POSITION_TOKEN_AMOUNT\n  | typeof WHIRLPOOL_ERROR__INVALID_REWARD_INDEX\n  | typeof WHIRLPOOL_ERROR__INVALID_SQRT_PRICE_LIMIT_DIRECTION\n  | typeof WHIRLPOOL_ERROR__INVALID_START_TICK\n  | typeof WHIRLPOOL_ERROR__INVALID_TICK_ARRAY_SEQUENCE\n  | typeof WHIRLPOOL_ERROR__INVALID_TICK_INDEX\n  | typeof WHIRLPOOL_ERROR__INVALID_TICK_SPACING\n  | typeof WHIRLPOOL_ERROR__INVALID_TIMESTAMP\n  | typeof WHIRLPOOL_ERROR__INVALID_TIMESTAMP_CONVERSION\n  | typeof WHIRLPOOL_ERROR__INVALID_TOKEN_MINT_ORDER\n  | typeof WHIRLPOOL_ERROR__INVALID_TRADE_ENABLE_TIMESTAMP\n  | typeof WHIRLPOOL_ERROR__LIQUIDITY_NET_ERROR\n  | typeof WHIRLPOOL_ERROR__LIQUIDITY_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__LIQUIDITY_TOO_HIGH\n  | typeof WHIRLPOOL_ERROR__LIQUIDITY_UNDERFLOW\n  | typeof WHIRLPOOL_ERROR__LIQUIDITY_ZERO\n  | typeof WHIRLPOOL_ERROR__MISSING_OR_INVALID_DELEGATE\n  | typeof WHIRLPOOL_ERROR__MUL_DIV_INVALID_INPUT\n  | typeof WHIRLPOOL_ERROR__MUL_DIV_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__MULTIPLICATION_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__MULTIPLICATION_SHIFT_RIGHT_OVERFLOW\n  | typeof WHIRLPOOL_ERROR__NO_EXTRA_ACCOUNTS_FOR_TRANSFER_HOOK\n  | typeof WHIRLPOOL_ERROR__NUMBER_CAST_ERROR\n  | typeof WHIRLPOOL_ERROR__NUMBER_DOWN_CAST_ERROR\n  | typeof WHIRLPOOL_ERROR__OPERATION_NOT_ALLOWED_ON_LOCKED_POSITION\n  | typeof WHIRLPOOL_ERROR__PARTIAL_FILL_ERROR\n  | typeof WHIRLPOOL_ERROR__POSITION_BUNDLE_NOT_DELETABLE\n  | typeof WHIRLPOOL_ERROR__POSITION_NOT_LOCKABLE\n  | typeof WHIRLPOOL_ERROR__POSITION_WITH_TOKEN_EXTENSIONS_REQUIRED\n  | typeof WHIRLPOOL_ERROR__PRICE_SLIPPAGE_OUT_OF_BOUNDS\n  | typeof WHIRLPOOL_ERROR__PROTOCOL_FEE_RATE_MAX_EXCEEDED\n  | typeof WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_DUPLICATED_ACCOUNTS_TYPE\n  | typeof WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INSUFFICIENT\n  | typeof WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INVALID_SLICE\n  | typeof WHIRLPOOL_ERROR__RENT_CALCULATION_ERROR\n  | typeof WHIRLPOOL_ERROR__REWARD_NOT_INITIALIZED\n  | typeof WHIRLPOOL_ERROR__REWARD_VAULT_AMOUNT_INSUFFICIENT\n  | typeof WHIRLPOOL_ERROR__SAME_TICK_RANGE_NOT_ALLOWED\n  | typeof WHIRLPOOL_ERROR__SQRT_PRICE_OUT_OF_BOUNDS\n  | typeof WHIRLPOOL_ERROR__TICK_ARRAY_EXIST_IN_POOL\n  | typeof WHIRLPOOL_ERROR__TICK_ARRAY_INDEX_OUTOF_BOUNDS\n  | typeof WHIRLPOOL_ERROR__TICK_ARRAY_SEQUENCE_INVALID_INDEX\n  | typeof WHIRLPOOL_ERROR__TICK_NOT_FOUND\n  | typeof WHIRLPOOL_ERROR__TOKEN_MAX_EXCEEDED\n  | typeof WHIRLPOOL_ERROR__TOKEN_MIN_SUBCEEDED\n  | typeof WHIRLPOOL_ERROR__TOO_MANY_SUPPLEMENTAL_TICK_ARRAYS\n  | typeof WHIRLPOOL_ERROR__TRADE_IS_NOT_ENABLED\n  | typeof WHIRLPOOL_ERROR__TRANSFER_FEE_CALCULATION_ERROR\n  | typeof WHIRLPOOL_ERROR__UNSUPPORTED_TOKEN_MINT\n  | typeof WHIRLPOOL_ERROR__ZERO_TRADABLE_AMOUNT;\n\nlet whirlpoolErrorMessages: Record<WhirlpoolError, string> | undefined;\nif (process.env.NODE_ENV !== 'production') {\n  whirlpoolErrorMessages = {\n    [WHIRLPOOL_ERROR__ADAPTIVE_FEE_CONSTANTS_UNCHANGED]: `Provided adaptive fee constants are unchanged`,\n    [WHIRLPOOL_ERROR__AMOUNT_CALC_OVERFLOW]: `Amount calculated overflows`,\n    [WHIRLPOOL_ERROR__AMOUNT_IN_ABOVE_MAXIMUM]: `Amount in above maximum threshold`,\n    [WHIRLPOOL_ERROR__AMOUNT_OUT_BELOW_MINIMUM]: `Amount out below minimum threshold`,\n    [WHIRLPOOL_ERROR__AMOUNT_REMAINING_OVERFLOW]: `Amount remaining overflows`,\n    [WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_CLOSED]: `Position has already been closed`,\n    [WHIRLPOOL_ERROR__BUNDLED_POSITION_ALREADY_OPENED]: `Position has already been opened`,\n    [WHIRLPOOL_ERROR__CLOSE_POSITION_NOT_EMPTY]: `Position is not empty It cannot be closed`,\n    [WHIRLPOOL_ERROR__DIFFERENT_WHIRLPOOL_TICK_ARRAY_ACCOUNT]: `TickArray account for different whirlpool provided`,\n    [WHIRLPOOL_ERROR__DIVIDE_BY_ZERO]: `Unable to divide by zero`,\n    [WHIRLPOOL_ERROR__DUPLICATE_TWO_HOP_POOL]: `Duplicate two hop pool`,\n    [WHIRLPOOL_ERROR__FEATURE_IS_NOT_ENABLED]: `Feature is not enabled`,\n    [WHIRLPOOL_ERROR__FEE_RATE_MAX_EXCEEDED]: `Exceeded max fee rate`,\n    [WHIRLPOOL_ERROR__FULL_RANGE_ONLY_POOL]: `This whirlpool only supports full-range positions`,\n    [WHIRLPOOL_ERROR__INTERMEDIATE_TOKEN_AMOUNT_MISMATCH]: `Output and input amount mismatch`,\n    [WHIRLPOOL_ERROR__INVALID_ADAPTIVE_FEE_CONSTANTS]: `Invalid adaptive fee constants`,\n    [WHIRLPOOL_ERROR__INVALID_BUNDLE_INDEX]: `Bundle index is out of bounds`,\n    [WHIRLPOOL_ERROR__INVALID_ENUM]: `Enum value could not be converted`,\n    [WHIRLPOOL_ERROR__INVALID_FEE_TIER_INDEX]: `Invalid fee tier index`,\n    [WHIRLPOOL_ERROR__INVALID_INTERMEDIARY_MINT]: `Invalid intermediary mint`,\n    [WHIRLPOOL_ERROR__INVALID_POSITION_TOKEN_AMOUNT]: `Position token amount must be 1`,\n    [WHIRLPOOL_ERROR__INVALID_REWARD_INDEX]: `Invalid reward index`,\n    [WHIRLPOOL_ERROR__INVALID_SQRT_PRICE_LIMIT_DIRECTION]: `Provided SqrtPriceLimit not in the same direction as the swap.`,\n    [WHIRLPOOL_ERROR__INVALID_START_TICK]: `Invalid start tick index provided.`,\n    [WHIRLPOOL_ERROR__INVALID_TICK_ARRAY_SEQUENCE]: `Invalid tick array sequence provided for instruction.`,\n    [WHIRLPOOL_ERROR__INVALID_TICK_INDEX]: `Provided tick index is either out of bounds or uninitializable`,\n    [WHIRLPOOL_ERROR__INVALID_TICK_SPACING]: `Tick-spacing is not supported`,\n    [WHIRLPOOL_ERROR__INVALID_TIMESTAMP]: `Timestamp should be greater than the last updated timestamp`,\n    [WHIRLPOOL_ERROR__INVALID_TIMESTAMP_CONVERSION]: `Timestamp should be convertible from i64 to u64`,\n    [WHIRLPOOL_ERROR__INVALID_TOKEN_MINT_ORDER]: `Token Mint in wrong order`,\n    [WHIRLPOOL_ERROR__INVALID_TRADE_ENABLE_TIMESTAMP]: `Invalid trade enable timestamp`,\n    [WHIRLPOOL_ERROR__LIQUIDITY_NET_ERROR]: `Tick liquidity net underflowed or overflowed`,\n    [WHIRLPOOL_ERROR__LIQUIDITY_OVERFLOW]: `Liquidity overflow`,\n    [WHIRLPOOL_ERROR__LIQUIDITY_TOO_HIGH]: `Liquidity amount must be less than i64::MAX`,\n    [WHIRLPOOL_ERROR__LIQUIDITY_UNDERFLOW]: `Liquidity underflow`,\n    [WHIRLPOOL_ERROR__LIQUIDITY_ZERO]: `Liquidity amount must be greater than zero`,\n    [WHIRLPOOL_ERROR__MISSING_OR_INVALID_DELEGATE]: `Position token account has a missing or invalid delegate`,\n    [WHIRLPOOL_ERROR__MUL_DIV_INVALID_INPUT]: `Invalid div_u256 input`,\n    [WHIRLPOOL_ERROR__MUL_DIV_OVERFLOW]: `Muldiv overflow`,\n    [WHIRLPOOL_ERROR__MULTIPLICATION_OVERFLOW]: `Multiplication overflow`,\n    [WHIRLPOOL_ERROR__MULTIPLICATION_SHIFT_RIGHT_OVERFLOW]: `Multiplication with shift right overflow`,\n    [WHIRLPOOL_ERROR__NO_EXTRA_ACCOUNTS_FOR_TRANSFER_HOOK]: `Unable to call transfer hook without extra accounts`,\n    [WHIRLPOOL_ERROR__NUMBER_CAST_ERROR]: `Unable to cast number into BigInt`,\n    [WHIRLPOOL_ERROR__NUMBER_DOWN_CAST_ERROR]: `Unable to down cast number`,\n    [WHIRLPOOL_ERROR__OPERATION_NOT_ALLOWED_ON_LOCKED_POSITION]: `Operation not allowed on locked position`,\n    [WHIRLPOOL_ERROR__PARTIAL_FILL_ERROR]: `Trade resulted in partial fill`,\n    [WHIRLPOOL_ERROR__POSITION_BUNDLE_NOT_DELETABLE]: `Unable to delete PositionBundle with open positions`,\n    [WHIRLPOOL_ERROR__POSITION_NOT_LOCKABLE]: `Position is not lockable`,\n    [WHIRLPOOL_ERROR__POSITION_WITH_TOKEN_EXTENSIONS_REQUIRED]: `This whirlpool only supports open_position_with_token_extensions instruction`,\n    [WHIRLPOOL_ERROR__PRICE_SLIPPAGE_OUT_OF_BOUNDS]: `Price outside slippage bounds`,\n    [WHIRLPOOL_ERROR__PROTOCOL_FEE_RATE_MAX_EXCEEDED]: `Exceeded max protocol fee rate`,\n    [WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_DUPLICATED_ACCOUNTS_TYPE]: `Same accounts type is provided more than once`,\n    [WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INSUFFICIENT]: `Insufficient remaining accounts`,\n    [WHIRLPOOL_ERROR__REMAINING_ACCOUNTS_INVALID_SLICE]: `Invalid remaining accounts`,\n    [WHIRLPOOL_ERROR__RENT_CALCULATION_ERROR]: `Rent calculation error`,\n    [WHIRLPOOL_ERROR__REWARD_NOT_INITIALIZED]: `Reward not initialized`,\n    [WHIRLPOOL_ERROR__REWARD_VAULT_AMOUNT_INSUFFICIENT]: `Reward vault requires amount to support emissions for at least one day`,\n    [WHIRLPOOL_ERROR__SAME_TICK_RANGE_NOT_ALLOWED]: `Cannot reset position range with same tick range`,\n    [WHIRLPOOL_ERROR__SQRT_PRICE_OUT_OF_BOUNDS]: `Provided sqrt price out of bounds`,\n    [WHIRLPOOL_ERROR__TICK_ARRAY_EXIST_IN_POOL]: `Tick-array already exists in this whirlpool`,\n    [WHIRLPOOL_ERROR__TICK_ARRAY_INDEX_OUTOF_BOUNDS]: `Attempt to search for a tick-array failed`,\n    [WHIRLPOOL_ERROR__TICK_ARRAY_SEQUENCE_INVALID_INDEX]: `Invalid index for tick array sequence`,\n    [WHIRLPOOL_ERROR__TICK_NOT_FOUND]: `Tick not found within tick array`,\n    [WHIRLPOOL_ERROR__TOKEN_MAX_EXCEEDED]: `Exceeded token max`,\n    [WHIRLPOOL_ERROR__TOKEN_MIN_SUBCEEDED]: `Did not meet token min`,\n    [WHIRLPOOL_ERROR__TOO_MANY_SUPPLEMENTAL_TICK_ARRAYS]: `Too many supplemental tick arrays provided`,\n    [WHIRLPOOL_ERROR__TRADE_IS_NOT_ENABLED]: `Trade is not enabled yet`,\n    [WHIRLPOOL_ERROR__TRANSFER_FEE_CALCULATION_ERROR]: `Transfer fee calculation failed`,\n    [WHIRLPOOL_ERROR__UNSUPPORTED_TOKEN_MINT]: `Token mint has unsupported attributes`,\n    [WHIRLPOOL_ERROR__ZERO_TRADABLE_AMOUNT]: `There are no tradable amount to swap.`,\n  };\n}\n\nexport function getWhirlpoolErrorMessage(code: WhirlpoolError): string {\n  if (process.env.NODE_ENV !== 'production') {\n    return (whirlpoolErrorMessages as Record<WhirlpoolError, string>)[code];\n  }\n\n  return 'Error message not available in production bundles.';\n}\n\nexport function isWhirlpoolError<TProgramErrorCode extends WhirlpoolError>(\n  error: unknown,\n  transactionMessage: {\n    instructions: Record<number, { programAddress: Address }>;\n  },\n  code?: TProgramErrorCode\n): error is SolanaError<typeof SOLANA_ERROR__INSTRUCTION_ERROR__CUSTOM> &\n  Readonly<{ context: Readonly<{ code: TProgramErrorCode }> }> {\n  return isProgramError<TProgramErrorCode>(\n    error,\n    transactionMessage,\n    WHIRLPOOL_PROGRAM_ADDRESS,\n    code\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  containsBytes,\n  fixEncoderSize,\n  getBytesEncoder,\n  type Address,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport {\n  type ParsedCloseBundledPositionInstruction,\n  type ParsedClosePositionInstruction,\n  type ParsedClosePositionWithTokenExtensionsInstruction,\n  type ParsedCollectFeesInstruction,\n  type ParsedCollectFeesV2Instruction,\n  type ParsedCollectProtocolFeesInstruction,\n  type ParsedCollectProtocolFeesV2Instruction,\n  type ParsedCollectRewardInstruction,\n  type ParsedCollectRewardV2Instruction,\n  type ParsedDecreaseLiquidityInstruction,\n  type ParsedDecreaseLiquidityV2Instruction,\n  type ParsedDeletePositionBundleInstruction,\n  type ParsedDeleteTokenBadgeInstruction,\n  type ParsedIdlIncludeInstruction,\n  type ParsedIncreaseLiquidityByTokenAmountsV2Instruction,\n  type ParsedIncreaseLiquidityInstruction,\n  type ParsedIncreaseLiquidityV2Instruction,\n  type ParsedInitializeAdaptiveFeeTierInstruction,\n  type ParsedInitializeConfigExtensionInstruction,\n  type ParsedInitializeConfigInstruction,\n  type ParsedInitializeDynamicTickArrayInstruction,\n  type ParsedInitializeFeeTierInstruction,\n  type ParsedInitializePoolInstruction,\n  type ParsedInitializePoolV2Instruction,\n  type ParsedInitializePoolWithAdaptiveFeeInstruction,\n  type ParsedInitializePositionBundleInstruction,\n  type ParsedInitializePositionBundleWithMetadataInstruction,\n  type ParsedInitializeRewardInstruction,\n  type ParsedInitializeRewardV2Instruction,\n  type ParsedInitializeTickArrayInstruction,\n  type ParsedInitializeTokenBadgeInstruction,\n  type ParsedLockPositionInstruction,\n  type ParsedMigrateRepurposeRewardAuthoritySpaceInstruction,\n  type ParsedOpenBundledPositionInstruction,\n  type ParsedOpenPositionInstruction,\n  type ParsedOpenPositionWithMetadataInstruction,\n  type ParsedOpenPositionWithTokenExtensionsInstruction,\n  type ParsedRepositionLiquidityV2Instruction,\n  type ParsedResetPositionRangeInstruction,\n  type ParsedSetAdaptiveFeeConstantsInstruction,\n  type ParsedSetCollectProtocolFeesAuthorityInstruction,\n  type ParsedSetConfigExtensionAuthorityInstruction,\n  type ParsedSetConfigFeatureFlagInstruction,\n  type ParsedSetDefaultBaseFeeRateInstruction,\n  type ParsedSetDefaultFeeRateInstruction,\n  type ParsedSetDefaultProtocolFeeRateInstruction,\n  type ParsedSetDelegatedFeeAuthorityInstruction,\n  type ParsedSetFeeAuthorityInstruction,\n  type ParsedSetFeeRateByDelegatedFeeAuthorityInstruction,\n  type ParsedSetFeeRateInstruction,\n  type ParsedSetInitializePoolAuthorityInstruction,\n  type ParsedSetPresetAdaptiveFeeConstantsInstruction,\n  type ParsedSetProtocolFeeRateInstruction,\n  type ParsedSetRewardAuthorityBySuperAuthorityInstruction,\n  type ParsedSetRewardAuthorityInstruction,\n  type ParsedSetRewardEmissionsInstruction,\n  type ParsedSetRewardEmissionsSuperAuthorityInstruction,\n  type ParsedSetRewardEmissionsV2Instruction,\n  type ParsedSetTokenBadgeAttributeInstruction,\n  type ParsedSetTokenBadgeAuthorityInstruction,\n  type ParsedSwapInstruction,\n  type ParsedSwapV2Instruction,\n  type ParsedTransferLockedPositionInstruction,\n  type ParsedTwoHopSwapInstruction,\n  type ParsedTwoHopSwapV2Instruction,\n  type ParsedUpdateFeesAndRewardsInstruction,\n} from '../instructions';\n\nexport const WHIRLPOOL_PROGRAM_ADDRESS =\n  'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc' as Address<'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc'>;\n\nexport enum WhirlpoolAccount {\n  AdaptiveFeeTier,\n  DynamicTickArray,\n  FeeTier,\n  LockConfig,\n  Oracle,\n  Position,\n  PositionBundle,\n  FixedTickArray,\n  TokenBadge,\n  Whirlpool,\n  WhirlpoolsConfig,\n  WhirlpoolsConfigExtension,\n}\n\nexport function identifyWhirlpoolAccount(\n  account: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): WhirlpoolAccount {\n  const data = 'data' in account ? account.data : account;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([147, 16, 144, 116, 47, 146, 149, 46])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.AdaptiveFeeTier;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([17, 216, 246, 142, 225, 199, 218, 56])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.DynamicTickArray;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([56, 75, 159, 76, 142, 68, 190, 105])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.FeeTier;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([106, 47, 238, 159, 124, 12, 160, 192])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.LockConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([139, 194, 131, 179, 140, 179, 229, 244])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.Oracle;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([170, 188, 143, 228, 122, 64, 247, 208])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.Position;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([129, 169, 175, 65, 185, 95, 32, 100])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.PositionBundle;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([69, 97, 189, 190, 110, 7, 66, 187])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.FixedTickArray;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([116, 219, 204, 229, 249, 116, 255, 150])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.TokenBadge;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([63, 149, 209, 12, 225, 128, 99, 9])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.Whirlpool;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([157, 20, 49, 224, 217, 87, 193, 254])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.WhirlpoolsConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([2, 99, 215, 163, 240, 26, 153, 58])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolAccount.WhirlpoolsConfigExtension;\n  }\n  throw new Error(\n    'The provided account could not be identified as a whirlpool account.'\n  );\n}\n\nexport enum WhirlpoolInstruction {\n  CloseBundledPosition,\n  ClosePosition,\n  ClosePositionWithTokenExtensions,\n  CollectFees,\n  CollectFeesV2,\n  CollectProtocolFees,\n  CollectProtocolFeesV2,\n  CollectReward,\n  CollectRewardV2,\n  DecreaseLiquidity,\n  DecreaseLiquidityV2,\n  DeletePositionBundle,\n  DeleteTokenBadge,\n  IdlInclude,\n  IncreaseLiquidity,\n  IncreaseLiquidityByTokenAmountsV2,\n  IncreaseLiquidityV2,\n  InitializeAdaptiveFeeTier,\n  InitializeConfig,\n  InitializeConfigExtension,\n  InitializeDynamicTickArray,\n  InitializeFeeTier,\n  InitializePool,\n  InitializePoolV2,\n  InitializePoolWithAdaptiveFee,\n  InitializePositionBundle,\n  InitializePositionBundleWithMetadata,\n  InitializeReward,\n  InitializeRewardV2,\n  InitializeTickArray,\n  InitializeTokenBadge,\n  LockPosition,\n  MigrateRepurposeRewardAuthoritySpace,\n  OpenBundledPosition,\n  OpenPosition,\n  OpenPositionWithMetadata,\n  OpenPositionWithTokenExtensions,\n  RepositionLiquidityV2,\n  ResetPositionRange,\n  SetAdaptiveFeeConstants,\n  SetCollectProtocolFeesAuthority,\n  SetConfigExtensionAuthority,\n  SetConfigFeatureFlag,\n  SetDefaultBaseFeeRate,\n  SetDefaultFeeRate,\n  SetDefaultProtocolFeeRate,\n  SetDelegatedFeeAuthority,\n  SetFeeAuthority,\n  SetFeeRate,\n  SetFeeRateByDelegatedFeeAuthority,\n  SetInitializePoolAuthority,\n  SetPresetAdaptiveFeeConstants,\n  SetProtocolFeeRate,\n  SetRewardAuthority,\n  SetRewardAuthorityBySuperAuthority,\n  SetRewardEmissions,\n  SetRewardEmissionsSuperAuthority,\n  SetRewardEmissionsV2,\n  SetTokenBadgeAttribute,\n  SetTokenBadgeAuthority,\n  Swap,\n  SwapV2,\n  TransferLockedPosition,\n  TwoHopSwap,\n  TwoHopSwapV2,\n  UpdateFeesAndRewards,\n}\n\nexport function identifyWhirlpoolInstruction(\n  instruction: { data: ReadonlyUint8Array } | ReadonlyUint8Array\n): WhirlpoolInstruction {\n  const data = 'data' in instruction ? instruction.data : instruction;\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([41, 36, 216, 245, 27, 85, 103, 67])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CloseBundledPosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([123, 134, 81, 0, 49, 68, 98, 98])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.ClosePosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([1, 182, 135, 59, 155, 25, 99, 223])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.ClosePositionWithTokenExtensions;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([164, 152, 207, 99, 30, 186, 19, 182])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([207, 117, 95, 191, 229, 180, 226, 15])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectFeesV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([22, 67, 23, 98, 150, 178, 70, 220])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectProtocolFees;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([103, 128, 222, 134, 114, 200, 22, 200])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectProtocolFeesV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([70, 5, 132, 87, 86, 235, 177, 34])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectReward;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([177, 107, 37, 180, 160, 19, 49, 209])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.CollectRewardV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([160, 38, 208, 111, 104, 91, 44, 1])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.DecreaseLiquidity;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([58, 127, 188, 62, 79, 82, 196, 96])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.DecreaseLiquidityV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([100, 25, 99, 2, 217, 239, 124, 173])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.DeletePositionBundle;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([53, 146, 68, 8, 18, 117, 17, 185])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.DeleteTokenBadge;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([223, 253, 121, 121, 60, 193, 129, 31])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.IdlInclude;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([46, 156, 243, 118, 13, 205, 251, 178])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.IncreaseLiquidity;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([239, 251, 9, 124, 210, 198, 53, 43])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.IncreaseLiquidityByTokenAmountsV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([133, 29, 89, 223, 69, 238, 176, 10])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.IncreaseLiquidityV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([77, 99, 208, 200, 141, 123, 117, 48])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeAdaptiveFeeTier;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([208, 127, 21, 1, 194, 190, 196, 70])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeConfig;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([55, 9, 53, 9, 114, 57, 209, 52])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeConfigExtension;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([41, 33, 165, 200, 120, 231, 142, 50])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeDynamicTickArray;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([183, 74, 156, 160, 112, 2, 42, 30])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeFeeTier;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([95, 180, 10, 172, 84, 174, 232, 40])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializePool;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([207, 45, 87, 242, 27, 63, 204, 67])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializePoolV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([143, 94, 96, 76, 172, 124, 119, 199])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializePoolWithAdaptiveFee;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([117, 45, 241, 149, 24, 18, 194, 65])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializePositionBundle;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([93, 124, 16, 179, 249, 131, 115, 245])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializePositionBundleWithMetadata;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([95, 135, 192, 196, 242, 129, 230, 68])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeReward;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([91, 1, 77, 50, 235, 229, 133, 49])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeRewardV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([11, 188, 193, 214, 141, 91, 149, 184])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeTickArray;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([253, 77, 205, 95, 27, 224, 89, 223])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.InitializeTokenBadge;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([227, 62, 2, 252, 247, 10, 171, 185])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.LockPosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([214, 161, 248, 79, 152, 98, 172, 231])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.MigrateRepurposeRewardAuthoritySpace;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([169, 113, 126, 171, 213, 172, 212, 49])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.OpenBundledPosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([135, 128, 47, 77, 15, 152, 240, 49])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.OpenPosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([242, 29, 134, 48, 58, 110, 14, 60])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.OpenPositionWithMetadata;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([212, 47, 95, 92, 114, 102, 131, 250])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.OpenPositionWithTokenExtensions;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([191, 169, 224, 11, 131, 19, 158, 253])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.RepositionLiquidityV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([164, 123, 180, 141, 194, 100, 160, 175])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.ResetPositionRange;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([133, 158, 212, 189, 237, 12, 73, 39])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetAdaptiveFeeConstants;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([34, 150, 93, 244, 139, 225, 233, 67])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetCollectProtocolFeesAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([44, 94, 241, 116, 24, 188, 60, 143])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetConfigExtensionAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([71, 173, 228, 18, 67, 247, 210, 57])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetConfigFeatureFlag;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([229, 66, 84, 251, 164, 134, 183, 7])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetDefaultBaseFeeRate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([118, 215, 214, 157, 182, 229, 208, 228])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetDefaultFeeRate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([107, 205, 249, 226, 151, 35, 86, 0])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetDefaultProtocolFeeRate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([193, 234, 231, 147, 138, 57, 3, 122])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetDelegatedFeeAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([31, 1, 50, 87, 237, 101, 97, 132])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetFeeAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([53, 243, 137, 65, 8, 140, 158, 6])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetFeeRate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([121, 121, 54, 114, 131, 230, 162, 104])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetFeeRateByDelegatedFeeAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([125, 43, 127, 235, 149, 26, 106, 236])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetInitializePoolAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([132, 185, 66, 148, 83, 88, 134, 198])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetPresetAdaptiveFeeConstants;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([95, 7, 4, 50, 154, 79, 156, 131])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetProtocolFeeRate;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([34, 39, 183, 252, 83, 28, 85, 127])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetRewardAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([240, 154, 201, 198, 148, 93, 56, 25])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetRewardAuthorityBySuperAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([13, 197, 86, 168, 109, 176, 27, 244])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetRewardEmissions;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([207, 5, 200, 209, 122, 56, 82, 183])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetRewardEmissionsSuperAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([114, 228, 72, 32, 193, 48, 160, 102])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetRewardEmissionsV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([224, 88, 65, 33, 138, 147, 246, 137])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetTokenBadgeAttribute;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([207, 202, 4, 32, 205, 79, 13, 178])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SetTokenBadgeAuthority;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([248, 198, 158, 145, 225, 117, 135, 200])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.Swap;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([43, 4, 237, 11, 26, 201, 30, 98])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.SwapV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([179, 121, 229, 46, 67, 138, 194, 138])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.TransferLockedPosition;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([195, 96, 237, 108, 68, 162, 219, 230])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.TwoHopSwap;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([186, 143, 209, 29, 254, 2, 194, 117])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.TwoHopSwapV2;\n  }\n  if (\n    containsBytes(\n      data,\n      fixEncoderSize(getBytesEncoder(), 8).encode(\n        new Uint8Array([154, 230, 250, 13, 236, 209, 75, 223])\n      ),\n      0\n    )\n  ) {\n    return WhirlpoolInstruction.UpdateFeesAndRewards;\n  }\n  throw new Error(\n    'The provided instruction could not be identified as a whirlpool instruction.'\n  );\n}\n\nexport type ParsedWhirlpoolInstruction<\n  TProgram extends string = 'whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc',\n> =\n  | ({\n      instructionType: WhirlpoolInstruction.CloseBundledPosition;\n    } & ParsedCloseBundledPositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.ClosePosition;\n    } & ParsedClosePositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.ClosePositionWithTokenExtensions;\n    } & ParsedClosePositionWithTokenExtensionsInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectFees;\n    } & ParsedCollectFeesInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectFeesV2;\n    } & ParsedCollectFeesV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectProtocolFees;\n    } & ParsedCollectProtocolFeesInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectProtocolFeesV2;\n    } & ParsedCollectProtocolFeesV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectReward;\n    } & ParsedCollectRewardInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.CollectRewardV2;\n    } & ParsedCollectRewardV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.DecreaseLiquidity;\n    } & ParsedDecreaseLiquidityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.DecreaseLiquidityV2;\n    } & ParsedDecreaseLiquidityV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.DeletePositionBundle;\n    } & ParsedDeletePositionBundleInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.DeleteTokenBadge;\n    } & ParsedDeleteTokenBadgeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.IdlInclude;\n    } & ParsedIdlIncludeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.IncreaseLiquidity;\n    } & ParsedIncreaseLiquidityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.IncreaseLiquidityByTokenAmountsV2;\n    } & ParsedIncreaseLiquidityByTokenAmountsV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.IncreaseLiquidityV2;\n    } & ParsedIncreaseLiquidityV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeAdaptiveFeeTier;\n    } & ParsedInitializeAdaptiveFeeTierInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeConfig;\n    } & ParsedInitializeConfigInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeConfigExtension;\n    } & ParsedInitializeConfigExtensionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeDynamicTickArray;\n    } & ParsedInitializeDynamicTickArrayInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeFeeTier;\n    } & ParsedInitializeFeeTierInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializePool;\n    } & ParsedInitializePoolInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializePoolV2;\n    } & ParsedInitializePoolV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializePoolWithAdaptiveFee;\n    } & ParsedInitializePoolWithAdaptiveFeeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializePositionBundle;\n    } & ParsedInitializePositionBundleInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializePositionBundleWithMetadata;\n    } & ParsedInitializePositionBundleWithMetadataInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeReward;\n    } & ParsedInitializeRewardInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeRewardV2;\n    } & ParsedInitializeRewardV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeTickArray;\n    } & ParsedInitializeTickArrayInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.InitializeTokenBadge;\n    } & ParsedInitializeTokenBadgeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.LockPosition;\n    } & ParsedLockPositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.MigrateRepurposeRewardAuthoritySpace;\n    } & ParsedMigrateRepurposeRewardAuthoritySpaceInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.OpenBundledPosition;\n    } & ParsedOpenBundledPositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.OpenPosition;\n    } & ParsedOpenPositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.OpenPositionWithMetadata;\n    } & ParsedOpenPositionWithMetadataInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.OpenPositionWithTokenExtensions;\n    } & ParsedOpenPositionWithTokenExtensionsInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.RepositionLiquidityV2;\n    } & ParsedRepositionLiquidityV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.ResetPositionRange;\n    } & ParsedResetPositionRangeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetAdaptiveFeeConstants;\n    } & ParsedSetAdaptiveFeeConstantsInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetCollectProtocolFeesAuthority;\n    } & ParsedSetCollectProtocolFeesAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetConfigExtensionAuthority;\n    } & ParsedSetConfigExtensionAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetConfigFeatureFlag;\n    } & ParsedSetConfigFeatureFlagInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetDefaultBaseFeeRate;\n    } & ParsedSetDefaultBaseFeeRateInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetDefaultFeeRate;\n    } & ParsedSetDefaultFeeRateInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetDefaultProtocolFeeRate;\n    } & ParsedSetDefaultProtocolFeeRateInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetDelegatedFeeAuthority;\n    } & ParsedSetDelegatedFeeAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetFeeAuthority;\n    } & ParsedSetFeeAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetFeeRate;\n    } & ParsedSetFeeRateInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetFeeRateByDelegatedFeeAuthority;\n    } & ParsedSetFeeRateByDelegatedFeeAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetInitializePoolAuthority;\n    } & ParsedSetInitializePoolAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetPresetAdaptiveFeeConstants;\n    } & ParsedSetPresetAdaptiveFeeConstantsInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetProtocolFeeRate;\n    } & ParsedSetProtocolFeeRateInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetRewardAuthority;\n    } & ParsedSetRewardAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetRewardAuthorityBySuperAuthority;\n    } & ParsedSetRewardAuthorityBySuperAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetRewardEmissions;\n    } & ParsedSetRewardEmissionsInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetRewardEmissionsSuperAuthority;\n    } & ParsedSetRewardEmissionsSuperAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetRewardEmissionsV2;\n    } & ParsedSetRewardEmissionsV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetTokenBadgeAttribute;\n    } & ParsedSetTokenBadgeAttributeInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SetTokenBadgeAuthority;\n    } & ParsedSetTokenBadgeAuthorityInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.Swap;\n    } & ParsedSwapInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.SwapV2;\n    } & ParsedSwapV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.TransferLockedPosition;\n    } & ParsedTransferLockedPositionInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.TwoHopSwap;\n    } & ParsedTwoHopSwapInstruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.TwoHopSwapV2;\n    } & ParsedTwoHopSwapV2Instruction<TProgram>)\n  | ({\n      instructionType: WhirlpoolInstruction.UpdateFeesAndRewards;\n    } & ParsedUpdateFeesAndRewardsInstruction<TProgram>);\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const CLOSE_BUNDLED_POSITION_DISCRIMINATOR = new Uint8Array([\n  41, 36, 216, 245, 27, 85, 103, 67,\n]);\n\nexport function getCloseBundledPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CLOSE_BUNDLED_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type CloseBundledPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountBundledPosition extends string | AccountMeta<string> = string,\n  TAccountPositionBundle extends string | AccountMeta<string> = string,\n  TAccountPositionBundleTokenAccount extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountPositionBundleAuthority extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountBundledPosition extends string\n        ? WritableAccount<TAccountBundledPosition>\n        : TAccountBundledPosition,\n      TAccountPositionBundle extends string\n        ? WritableAccount<TAccountPositionBundle>\n        : TAccountPositionBundle,\n      TAccountPositionBundleTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionBundleTokenAccount>\n        : TAccountPositionBundleTokenAccount,\n      TAccountPositionBundleAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionBundleAuthority> &\n            AccountSignerMeta<TAccountPositionBundleAuthority>\n        : TAccountPositionBundleAuthority,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CloseBundledPositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  bundleIndex: number;\n};\n\nexport type CloseBundledPositionInstructionDataArgs = { bundleIndex: number };\n\nexport function getCloseBundledPositionInstructionDataEncoder(): FixedSizeEncoder<CloseBundledPositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['bundleIndex', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: CLOSE_BUNDLED_POSITION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getCloseBundledPositionInstructionDataDecoder(): FixedSizeDecoder<CloseBundledPositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['bundleIndex', getU16Decoder()],\n  ]);\n}\n\nexport function getCloseBundledPositionInstructionDataCodec(): FixedSizeCodec<\n  CloseBundledPositionInstructionDataArgs,\n  CloseBundledPositionInstructionData\n> {\n  return combineCodec(\n    getCloseBundledPositionInstructionDataEncoder(),\n    getCloseBundledPositionInstructionDataDecoder()\n  );\n}\n\nexport type CloseBundledPositionInput<\n  TAccountBundledPosition extends string = string,\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleAuthority extends string = string,\n  TAccountReceiver extends string = string,\n> = {\n  bundledPosition: Address<TAccountBundledPosition>;\n  positionBundle: Address<TAccountPositionBundle>;\n  positionBundleTokenAccount: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleAuthority: TransactionSigner<TAccountPositionBundleAuthority>;\n  receiver: Address<TAccountReceiver>;\n  bundleIndex: CloseBundledPositionInstructionDataArgs['bundleIndex'];\n};\n\nexport function getCloseBundledPositionInstruction<\n  TAccountBundledPosition extends string,\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleAuthority extends string,\n  TAccountReceiver extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CloseBundledPositionInput<\n    TAccountBundledPosition,\n    TAccountPositionBundle,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleAuthority,\n    TAccountReceiver\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CloseBundledPositionInstruction<\n  TProgramAddress,\n  TAccountBundledPosition,\n  TAccountPositionBundle,\n  TAccountPositionBundleTokenAccount,\n  TAccountPositionBundleAuthority,\n  TAccountReceiver\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    bundledPosition: { value: input.bundledPosition ?? null, isWritable: true },\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: false,\n    },\n    positionBundleAuthority: {\n      value: input.positionBundleAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.bundledPosition),\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleAuthority),\n      getAccountMeta(accounts.receiver),\n    ],\n    data: getCloseBundledPositionInstructionDataEncoder().encode(\n      args as CloseBundledPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as CloseBundledPositionInstruction<\n    TProgramAddress,\n    TAccountBundledPosition,\n    TAccountPositionBundle,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleAuthority,\n    TAccountReceiver\n  >);\n}\n\nexport type ParsedCloseBundledPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    bundledPosition: TAccountMetas[0];\n    positionBundle: TAccountMetas[1];\n    positionBundleTokenAccount: TAccountMetas[2];\n    positionBundleAuthority: TAccountMetas[3];\n    receiver: TAccountMetas[4];\n  };\n  data: CloseBundledPositionInstructionData;\n};\n\nexport function parseCloseBundledPositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCloseBundledPositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      bundledPosition: getNextAccount(),\n      positionBundle: getNextAccount(),\n      positionBundleTokenAccount: getNextAccount(),\n      positionBundleAuthority: getNextAccount(),\n      receiver: getNextAccount(),\n    },\n    data: getCloseBundledPositionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  AccountRole,\n  isProgramDerivedAddress,\n  isTransactionSigner as kitIsTransactionSigner,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type ProgramDerivedAddress,\n  type TransactionSigner,\n  upgradeRoleToSigner,\n} from '@solana/kit';\n\n/**\n * Asserts that the given value is not null or undefined.\n * @internal\n */\nexport function expectSome<T>(value: T | null | undefined): T {\n  if (value === null || value === undefined) {\n    throw new Error('Expected a value but received null or undefined.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a PublicKey.\n * @internal\n */\nexport function expectAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): Address<T> {\n  if (!value) {\n    throw new Error('Expected a Address.');\n  }\n  if (typeof value === 'object' && 'address' in value) {\n    return value.address;\n  }\n  if (Array.isArray(value)) {\n    return value[0] as Address<T>;\n  }\n  return value as Address<T>;\n}\n\n/**\n * Asserts that the given value is a PDA.\n * @internal\n */\nexport function expectProgramDerivedAddress<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): ProgramDerivedAddress<T> {\n  if (!value || !Array.isArray(value) || !isProgramDerivedAddress(value)) {\n    throw new Error('Expected a ProgramDerivedAddress.');\n  }\n  return value;\n}\n\n/**\n * Asserts that the given value is a TransactionSigner.\n * @internal\n */\nexport function expectTransactionSigner<T extends string = string>(\n  value:\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null\n    | undefined\n): TransactionSigner<T> {\n  if (!value || !isTransactionSigner(value)) {\n    throw new Error('Expected a TransactionSigner.');\n  }\n  return value;\n}\n\n/**\n * Defines an instruction account to resolve.\n * @internal\n */\nexport type ResolvedAccount<\n  T extends string = string,\n  U extends\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null =\n    | Address<T>\n    | ProgramDerivedAddress<T>\n    | TransactionSigner<T>\n    | null,\n> = {\n  isWritable: boolean;\n  value: U;\n};\n\n/**\n * Defines an instruction that stores additional bytes on-chain.\n * @internal\n */\nexport type InstructionWithByteDelta = {\n  byteDelta: number;\n};\n\n/**\n * Get account metas and signers from resolved accounts.\n * @internal\n */\nexport function getAccountMetaFactory(\n  programAddress: Address,\n  optionalAccountStrategy: 'omitted' | 'programId'\n) {\n  return (\n    account: ResolvedAccount\n  ): AccountMeta | AccountSignerMeta | undefined => {\n    if (!account.value) {\n      if (optionalAccountStrategy === 'omitted') return;\n      return Object.freeze({\n        address: programAddress,\n        role: AccountRole.READONLY,\n      });\n    }\n\n    const writableRole = account.isWritable\n      ? AccountRole.WRITABLE\n      : AccountRole.READONLY;\n    return Object.freeze({\n      address: expectAddress(account.value),\n      role: isTransactionSigner(account.value)\n        ? upgradeRoleToSigner(writableRole)\n        : writableRole,\n      ...(isTransactionSigner(account.value) ? { signer: account.value } : {}),\n    });\n  };\n}\n\nexport function isTransactionSigner<TAddress extends string = string>(\n  value:\n    | Address<TAddress>\n    | ProgramDerivedAddress<TAddress>\n    | TransactionSigner<TAddress>\n): value is TransactionSigner<TAddress> {\n  return (\n    !!value &&\n    typeof value === 'object' &&\n    'address' in value &&\n    kitIsTransactionSigner(value)\n  );\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_POSITION_DISCRIMINATOR = new Uint8Array([\n  123, 134, 81, 0, 49, 68, 98, 98,\n]);\n\nexport function getClosePositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CLOSE_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type ClosePositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? WritableAccount<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClosePositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type ClosePositionInstructionDataArgs = {};\n\nexport function getClosePositionInstructionDataEncoder(): FixedSizeEncoder<ClosePositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: CLOSE_POSITION_DISCRIMINATOR })\n  );\n}\n\nexport function getClosePositionInstructionDataDecoder(): FixedSizeDecoder<ClosePositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getClosePositionInstructionDataCodec(): FixedSizeCodec<\n  ClosePositionInstructionDataArgs,\n  ClosePositionInstructionData\n> {\n  return combineCodec(\n    getClosePositionInstructionDataEncoder(),\n    getClosePositionInstructionDataDecoder()\n  );\n}\n\nexport type ClosePositionAsyncInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position?: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport async function getClosePositionInstructionAsync<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: ClosePositionAsyncInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  ClosePositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getClosePositionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as ClosePositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ClosePositionInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getClosePositionInstruction<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: ClosePositionInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): ClosePositionInstruction<\n  TProgramAddress,\n  TAccountPositionAuthority,\n  TAccountReceiver,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getClosePositionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as ClosePositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ParsedClosePositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionAuthority: TAccountMetas[0];\n    receiver: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    tokenProgram: TAccountMetas[5];\n  };\n  data: ClosePositionInstructionData;\n};\n\nexport function parseClosePositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedClosePositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionAuthority: getNextAccount(),\n      receiver: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenProgram: getNextAccount(),\n    },\n    data: getClosePositionInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const CLOSE_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR =\n  new Uint8Array([1, 182, 135, 59, 155, 25, 99, 223]);\n\nexport function getClosePositionWithTokenExtensionsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    CLOSE_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR\n  );\n}\n\nexport type ClosePositionWithTokenExtensionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountToken2022Program extends\n    | string\n    | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? WritableAccount<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountToken2022Program extends string\n        ? ReadonlyAccount<TAccountToken2022Program>\n        : TAccountToken2022Program,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ClosePositionWithTokenExtensionsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type ClosePositionWithTokenExtensionsInstructionDataArgs = {};\n\nexport function getClosePositionWithTokenExtensionsInstructionDataEncoder(): FixedSizeEncoder<ClosePositionWithTokenExtensionsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: CLOSE_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getClosePositionWithTokenExtensionsInstructionDataDecoder(): FixedSizeDecoder<ClosePositionWithTokenExtensionsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getClosePositionWithTokenExtensionsInstructionDataCodec(): FixedSizeCodec<\n  ClosePositionWithTokenExtensionsInstructionDataArgs,\n  ClosePositionWithTokenExtensionsInstructionData\n> {\n  return combineCodec(\n    getClosePositionWithTokenExtensionsInstructionDataEncoder(),\n    getClosePositionWithTokenExtensionsInstructionDataDecoder()\n  );\n}\n\nexport type ClosePositionWithTokenExtensionsAsyncInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountToken2022Program extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position?: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  token2022Program?: Address<TAccountToken2022Program>;\n};\n\nexport async function getClosePositionWithTokenExtensionsInstructionAsync<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountToken2022Program extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: ClosePositionWithTokenExtensionsAsyncInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountToken2022Program\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  ClosePositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountToken2022Program\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.token2022Program),\n    ],\n    data: getClosePositionWithTokenExtensionsInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as ClosePositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountToken2022Program\n  >);\n}\n\nexport type ClosePositionWithTokenExtensionsInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountToken2022Program extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  token2022Program?: Address<TAccountToken2022Program>;\n};\n\nexport function getClosePositionWithTokenExtensionsInstruction<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountToken2022Program extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: ClosePositionWithTokenExtensionsInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountToken2022Program\n  >,\n  config?: { programAddress?: TProgramAddress }\n): ClosePositionWithTokenExtensionsInstruction<\n  TProgramAddress,\n  TAccountPositionAuthority,\n  TAccountReceiver,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountToken2022Program\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.token2022Program),\n    ],\n    data: getClosePositionWithTokenExtensionsInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as ClosePositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountToken2022Program\n  >);\n}\n\nexport type ParsedClosePositionWithTokenExtensionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionAuthority: TAccountMetas[0];\n    receiver: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    token2022Program: TAccountMetas[5];\n  };\n  data: ClosePositionWithTokenExtensionsInstructionData;\n};\n\nexport function parseClosePositionWithTokenExtensionsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedClosePositionWithTokenExtensionsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionAuthority: getNextAccount(),\n      receiver: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      token2022Program: getNextAccount(),\n    },\n    data: getClosePositionWithTokenExtensionsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const COLLECT_FEES_DISCRIMINATOR = new Uint8Array([\n  164, 152, 207, 99, 30, 186, 19, 182,\n]);\n\nexport function getCollectFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_FEES_DISCRIMINATOR\n  );\n}\n\nexport type CollectFeesInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectFeesInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type CollectFeesInstructionDataArgs = {};\n\nexport function getCollectFeesInstructionDataEncoder(): FixedSizeEncoder<CollectFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: COLLECT_FEES_DISCRIMINATOR })\n  );\n}\n\nexport function getCollectFeesInstructionDataDecoder(): FixedSizeDecoder<CollectFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getCollectFeesInstructionDataCodec(): FixedSizeCodec<\n  CollectFeesInstructionDataArgs,\n  CollectFeesInstructionData\n> {\n  return combineCodec(\n    getCollectFeesInstructionDataEncoder(),\n    getCollectFeesInstructionDataDecoder()\n  );\n}\n\nexport type CollectFeesInput<\n  TAccountWhirlpool extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getCollectFeesInstruction<\n  TAccountWhirlpool extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectFeesInput<\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectFeesInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenVaultA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultB,\n  TAccountTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getCollectFeesInstructionDataEncoder().encode({}),\n    programAddress,\n  } as CollectFeesInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ParsedCollectFeesInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionTokenAccount: TAccountMetas[3];\n    tokenOwnerAccountA: TAccountMetas[4];\n    tokenVaultA: TAccountMetas[5];\n    tokenOwnerAccountB: TAccountMetas[6];\n    tokenVaultB: TAccountMetas[7];\n    tokenProgram: TAccountMetas[8];\n  };\n  data: CollectFeesInstructionData;\n};\n\nexport function parseCollectFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tokenProgram: getNextAccount(),\n    },\n    data: getCollectFeesInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const COLLECT_FEES_V2_DISCRIMINATOR = new Uint8Array([\n  207, 117, 95, 191, 229, 180, 226, 15,\n]);\n\nexport function getCollectFeesV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_FEES_V2_DISCRIMINATOR\n  );\n}\n\nexport type CollectFeesV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectFeesV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type CollectFeesV2InstructionDataArgs = {\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getCollectFeesV2InstructionDataEncoder(): Encoder<CollectFeesV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: COLLECT_FEES_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getCollectFeesV2InstructionDataDecoder(): Decoder<CollectFeesV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getCollectFeesV2InstructionDataCodec(): Codec<\n  CollectFeesV2InstructionDataArgs,\n  CollectFeesV2InstructionData\n> {\n  return combineCodec(\n    getCollectFeesV2InstructionDataEncoder(),\n    getCollectFeesV2InstructionDataDecoder()\n  );\n}\n\nexport type CollectFeesV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  remainingAccountsInfo: CollectFeesV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getCollectFeesV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectFeesV2Input<\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectFeesV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenVaultA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultB,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n    ],\n    data: getCollectFeesV2InstructionDataEncoder().encode(\n      args as CollectFeesV2InstructionDataArgs\n    ),\n    programAddress,\n  } as CollectFeesV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram\n  >);\n}\n\nexport type ParsedCollectFeesV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionTokenAccount: TAccountMetas[3];\n    tokenMintA: TAccountMetas[4];\n    tokenMintB: TAccountMetas[5];\n    tokenOwnerAccountA: TAccountMetas[6];\n    tokenVaultA: TAccountMetas[7];\n    tokenOwnerAccountB: TAccountMetas[8];\n    tokenVaultB: TAccountMetas[9];\n    tokenProgramA: TAccountMetas[10];\n    tokenProgramB: TAccountMetas[11];\n    memoProgram: TAccountMetas[12];\n  };\n  data: CollectFeesV2InstructionData;\n};\n\nexport function parseCollectFeesV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectFeesV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n    },\n    data: getCollectFeesV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const COLLECT_PROTOCOL_FEES_DISCRIMINATOR = new Uint8Array([\n  22, 67, 23, 98, 150, 178, 70, 220,\n]);\n\nexport function getCollectProtocolFeesDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_PROTOCOL_FEES_DISCRIMINATOR\n  );\n}\n\nexport type CollectProtocolFeesInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountCollectProtocolFeesAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTokenDestinationA extends string | AccountMeta<string> = string,\n  TAccountTokenDestinationB extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountCollectProtocolFeesAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectProtocolFeesAuthority> &\n            AccountSignerMeta<TAccountCollectProtocolFeesAuthority>\n        : TAccountCollectProtocolFeesAuthority,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTokenDestinationA extends string\n        ? WritableAccount<TAccountTokenDestinationA>\n        : TAccountTokenDestinationA,\n      TAccountTokenDestinationB extends string\n        ? WritableAccount<TAccountTokenDestinationB>\n        : TAccountTokenDestinationB,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectProtocolFeesInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type CollectProtocolFeesInstructionDataArgs = {};\n\nexport function getCollectProtocolFeesInstructionDataEncoder(): FixedSizeEncoder<CollectProtocolFeesInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: COLLECT_PROTOCOL_FEES_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getCollectProtocolFeesInstructionDataDecoder(): FixedSizeDecoder<CollectProtocolFeesInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getCollectProtocolFeesInstructionDataCodec(): FixedSizeCodec<\n  CollectProtocolFeesInstructionDataArgs,\n  CollectProtocolFeesInstructionData\n> {\n  return combineCodec(\n    getCollectProtocolFeesInstructionDataEncoder(),\n    getCollectProtocolFeesInstructionDataDecoder()\n  );\n}\n\nexport type CollectProtocolFeesInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountCollectProtocolFeesAuthority extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTokenDestinationA extends string = string,\n  TAccountTokenDestinationB extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  collectProtocolFeesAuthority: TransactionSigner<TAccountCollectProtocolFeesAuthority>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tokenDestinationA: Address<TAccountTokenDestinationA>;\n  tokenDestinationB: Address<TAccountTokenDestinationB>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getCollectProtocolFeesInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountCollectProtocolFeesAuthority extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTokenDestinationA extends string,\n  TAccountTokenDestinationB extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectProtocolFeesInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTokenDestinationA,\n    TAccountTokenDestinationB,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectProtocolFeesInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpool,\n  TAccountCollectProtocolFeesAuthority,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTokenDestinationA,\n  TAccountTokenDestinationB,\n  TAccountTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    collectProtocolFeesAuthority: {\n      value: input.collectProtocolFeesAuthority ?? null,\n      isWritable: false,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tokenDestinationA: {\n      value: input.tokenDestinationA ?? null,\n      isWritable: true,\n    },\n    tokenDestinationB: {\n      value: input.tokenDestinationB ?? null,\n      isWritable: true,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.collectProtocolFeesAuthority),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tokenDestinationA),\n      getAccountMeta(accounts.tokenDestinationB),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getCollectProtocolFeesInstructionDataEncoder().encode({}),\n    programAddress,\n  } as CollectProtocolFeesInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTokenDestinationA,\n    TAccountTokenDestinationB,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ParsedCollectProtocolFeesInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpool: TAccountMetas[1];\n    collectProtocolFeesAuthority: TAccountMetas[2];\n    tokenVaultA: TAccountMetas[3];\n    tokenVaultB: TAccountMetas[4];\n    tokenDestinationA: TAccountMetas[5];\n    tokenDestinationB: TAccountMetas[6];\n    tokenProgram: TAccountMetas[7];\n  };\n  data: CollectProtocolFeesInstructionData;\n};\n\nexport function parseCollectProtocolFeesInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectProtocolFeesInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      collectProtocolFeesAuthority: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tokenDestinationA: getNextAccount(),\n      tokenDestinationB: getNextAccount(),\n      tokenProgram: getNextAccount(),\n    },\n    data: getCollectProtocolFeesInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const COLLECT_PROTOCOL_FEES_V2_DISCRIMINATOR = new Uint8Array([\n  103, 128, 222, 134, 114, 200, 22, 200,\n]);\n\nexport function getCollectProtocolFeesV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_PROTOCOL_FEES_V2_DISCRIMINATOR\n  );\n}\n\nexport type CollectProtocolFeesV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountCollectProtocolFeesAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTokenDestinationA extends string | AccountMeta<string> = string,\n  TAccountTokenDestinationB extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountCollectProtocolFeesAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectProtocolFeesAuthority> &\n            AccountSignerMeta<TAccountCollectProtocolFeesAuthority>\n        : TAccountCollectProtocolFeesAuthority,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTokenDestinationA extends string\n        ? WritableAccount<TAccountTokenDestinationA>\n        : TAccountTokenDestinationA,\n      TAccountTokenDestinationB extends string\n        ? WritableAccount<TAccountTokenDestinationB>\n        : TAccountTokenDestinationB,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectProtocolFeesV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type CollectProtocolFeesV2InstructionDataArgs = {\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getCollectProtocolFeesV2InstructionDataEncoder(): Encoder<CollectProtocolFeesV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: COLLECT_PROTOCOL_FEES_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getCollectProtocolFeesV2InstructionDataDecoder(): Decoder<CollectProtocolFeesV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getCollectProtocolFeesV2InstructionDataCodec(): Codec<\n  CollectProtocolFeesV2InstructionDataArgs,\n  CollectProtocolFeesV2InstructionData\n> {\n  return combineCodec(\n    getCollectProtocolFeesV2InstructionDataEncoder(),\n    getCollectProtocolFeesV2InstructionDataDecoder()\n  );\n}\n\nexport type CollectProtocolFeesV2Input<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountCollectProtocolFeesAuthority extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTokenDestinationA extends string = string,\n  TAccountTokenDestinationB extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  collectProtocolFeesAuthority: TransactionSigner<TAccountCollectProtocolFeesAuthority>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tokenDestinationA: Address<TAccountTokenDestinationA>;\n  tokenDestinationB: Address<TAccountTokenDestinationB>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  remainingAccountsInfo: CollectProtocolFeesV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getCollectProtocolFeesV2Instruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountCollectProtocolFeesAuthority extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTokenDestinationA extends string,\n  TAccountTokenDestinationB extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectProtocolFeesV2Input<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTokenDestinationA,\n    TAccountTokenDestinationB,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectProtocolFeesV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpool,\n  TAccountCollectProtocolFeesAuthority,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTokenDestinationA,\n  TAccountTokenDestinationB,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    collectProtocolFeesAuthority: {\n      value: input.collectProtocolFeesAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tokenDestinationA: {\n      value: input.tokenDestinationA ?? null,\n      isWritable: true,\n    },\n    tokenDestinationB: {\n      value: input.tokenDestinationB ?? null,\n      isWritable: true,\n    },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.collectProtocolFeesAuthority),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tokenDestinationA),\n      getAccountMeta(accounts.tokenDestinationB),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n    ],\n    data: getCollectProtocolFeesV2InstructionDataEncoder().encode(\n      args as CollectProtocolFeesV2InstructionDataArgs\n    ),\n    programAddress,\n  } as CollectProtocolFeesV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTokenDestinationA,\n    TAccountTokenDestinationB,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram\n  >);\n}\n\nexport type ParsedCollectProtocolFeesV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpool: TAccountMetas[1];\n    collectProtocolFeesAuthority: TAccountMetas[2];\n    tokenMintA: TAccountMetas[3];\n    tokenMintB: TAccountMetas[4];\n    tokenVaultA: TAccountMetas[5];\n    tokenVaultB: TAccountMetas[6];\n    tokenDestinationA: TAccountMetas[7];\n    tokenDestinationB: TAccountMetas[8];\n    tokenProgramA: TAccountMetas[9];\n    tokenProgramB: TAccountMetas[10];\n    memoProgram: TAccountMetas[11];\n  };\n  data: CollectProtocolFeesV2InstructionData;\n};\n\nexport function parseCollectProtocolFeesV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectProtocolFeesV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 12) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      collectProtocolFeesAuthority: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tokenDestinationA: getNextAccount(),\n      tokenDestinationB: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n    },\n    data: getCollectProtocolFeesV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const COLLECT_REWARD_DISCRIMINATOR = new Uint8Array([\n  70, 5, 132, 87, 86, 235, 177, 34,\n]);\n\nexport function getCollectRewardDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_REWARD_DISCRIMINATOR\n  );\n}\n\nexport type CollectRewardInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountRewardOwnerAccount extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountRewardOwnerAccount extends string\n        ? WritableAccount<TAccountRewardOwnerAccount>\n        : TAccountRewardOwnerAccount,\n      TAccountRewardVault extends string\n        ? WritableAccount<TAccountRewardVault>\n        : TAccountRewardVault,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectRewardInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n};\n\nexport type CollectRewardInstructionDataArgs = { rewardIndex: number };\n\nexport function getCollectRewardInstructionDataEncoder(): FixedSizeEncoder<CollectRewardInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: COLLECT_REWARD_DISCRIMINATOR })\n  );\n}\n\nexport function getCollectRewardInstructionDataDecoder(): FixedSizeDecoder<CollectRewardInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getCollectRewardInstructionDataCodec(): FixedSizeCodec<\n  CollectRewardInstructionDataArgs,\n  CollectRewardInstructionData\n> {\n  return combineCodec(\n    getCollectRewardInstructionDataEncoder(),\n    getCollectRewardInstructionDataDecoder()\n  );\n}\n\nexport type CollectRewardInput<\n  TAccountWhirlpool extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountRewardOwnerAccount extends string = string,\n  TAccountRewardVault extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  rewardOwnerAccount: Address<TAccountRewardOwnerAccount>;\n  rewardVault: Address<TAccountRewardVault>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  rewardIndex: CollectRewardInstructionDataArgs['rewardIndex'];\n};\n\nexport function getCollectRewardInstruction<\n  TAccountWhirlpool extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountRewardOwnerAccount extends string,\n  TAccountRewardVault extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectRewardInput<\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountRewardOwnerAccount,\n    TAccountRewardVault,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectRewardInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountRewardOwnerAccount,\n  TAccountRewardVault,\n  TAccountTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    rewardOwnerAccount: {\n      value: input.rewardOwnerAccount ?? null,\n      isWritable: true,\n    },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.rewardOwnerAccount),\n      getAccountMeta(accounts.rewardVault),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getCollectRewardInstructionDataEncoder().encode(\n      args as CollectRewardInstructionDataArgs\n    ),\n    programAddress,\n  } as CollectRewardInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountRewardOwnerAccount,\n    TAccountRewardVault,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ParsedCollectRewardInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionTokenAccount: TAccountMetas[3];\n    rewardOwnerAccount: TAccountMetas[4];\n    rewardVault: TAccountMetas[5];\n    tokenProgram: TAccountMetas[6];\n  };\n  data: CollectRewardInstructionData;\n};\n\nexport function parseCollectRewardInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectRewardInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      rewardOwnerAccount: getNextAccount(),\n      rewardVault: getNextAccount(),\n      tokenProgram: getNextAccount(),\n    },\n    data: getCollectRewardInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const COLLECT_REWARD_V2_DISCRIMINATOR = new Uint8Array([\n  177, 107, 37, 180, 160, 19, 49, 209,\n]);\n\nexport function getCollectRewardV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    COLLECT_REWARD_V2_DISCRIMINATOR\n  );\n}\n\nexport type CollectRewardV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountRewardOwnerAccount extends string | AccountMeta<string> = string,\n  TAccountRewardMint extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TAccountRewardTokenProgram extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountRewardOwnerAccount extends string\n        ? WritableAccount<TAccountRewardOwnerAccount>\n        : TAccountRewardOwnerAccount,\n      TAccountRewardMint extends string\n        ? ReadonlyAccount<TAccountRewardMint>\n        : TAccountRewardMint,\n      TAccountRewardVault extends string\n        ? WritableAccount<TAccountRewardVault>\n        : TAccountRewardVault,\n      TAccountRewardTokenProgram extends string\n        ? ReadonlyAccount<TAccountRewardTokenProgram>\n        : TAccountRewardTokenProgram,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type CollectRewardV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type CollectRewardV2InstructionDataArgs = {\n  rewardIndex: number;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getCollectRewardV2InstructionDataEncoder(): Encoder<CollectRewardV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: COLLECT_REWARD_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getCollectRewardV2InstructionDataDecoder(): Decoder<CollectRewardV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getCollectRewardV2InstructionDataCodec(): Codec<\n  CollectRewardV2InstructionDataArgs,\n  CollectRewardV2InstructionData\n> {\n  return combineCodec(\n    getCollectRewardV2InstructionDataEncoder(),\n    getCollectRewardV2InstructionDataDecoder()\n  );\n}\n\nexport type CollectRewardV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountRewardOwnerAccount extends string = string,\n  TAccountRewardMint extends string = string,\n  TAccountRewardVault extends string = string,\n  TAccountRewardTokenProgram extends string = string,\n  TAccountMemoProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  rewardOwnerAccount: Address<TAccountRewardOwnerAccount>;\n  rewardMint: Address<TAccountRewardMint>;\n  rewardVault: Address<TAccountRewardVault>;\n  rewardTokenProgram: Address<TAccountRewardTokenProgram>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  rewardIndex: CollectRewardV2InstructionDataArgs['rewardIndex'];\n  remainingAccountsInfo: CollectRewardV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getCollectRewardV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountRewardOwnerAccount extends string,\n  TAccountRewardMint extends string,\n  TAccountRewardVault extends string,\n  TAccountRewardTokenProgram extends string,\n  TAccountMemoProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: CollectRewardV2Input<\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountRewardOwnerAccount,\n    TAccountRewardMint,\n    TAccountRewardVault,\n    TAccountRewardTokenProgram,\n    TAccountMemoProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): CollectRewardV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountRewardOwnerAccount,\n  TAccountRewardMint,\n  TAccountRewardVault,\n  TAccountRewardTokenProgram,\n  TAccountMemoProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    rewardOwnerAccount: {\n      value: input.rewardOwnerAccount ?? null,\n      isWritable: true,\n    },\n    rewardMint: { value: input.rewardMint ?? null, isWritable: false },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: true },\n    rewardTokenProgram: {\n      value: input.rewardTokenProgram ?? null,\n      isWritable: false,\n    },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.rewardOwnerAccount),\n      getAccountMeta(accounts.rewardMint),\n      getAccountMeta(accounts.rewardVault),\n      getAccountMeta(accounts.rewardTokenProgram),\n      getAccountMeta(accounts.memoProgram),\n    ],\n    data: getCollectRewardV2InstructionDataEncoder().encode(\n      args as CollectRewardV2InstructionDataArgs\n    ),\n    programAddress,\n  } as CollectRewardV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountRewardOwnerAccount,\n    TAccountRewardMint,\n    TAccountRewardVault,\n    TAccountRewardTokenProgram,\n    TAccountMemoProgram\n  >);\n}\n\nexport type ParsedCollectRewardV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionTokenAccount: TAccountMetas[3];\n    rewardOwnerAccount: TAccountMetas[4];\n    rewardMint: TAccountMetas[5];\n    rewardVault: TAccountMetas[6];\n    rewardTokenProgram: TAccountMetas[7];\n    memoProgram: TAccountMetas[8];\n  };\n  data: CollectRewardV2InstructionData;\n};\n\nexport function parseCollectRewardV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedCollectRewardV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      rewardOwnerAccount: getNextAccount(),\n      rewardMint: getNextAccount(),\n      rewardVault: getNextAccount(),\n      rewardTokenProgram: getNextAccount(),\n      memoProgram: getNextAccount(),\n    },\n    data: getCollectRewardV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DECREASE_LIQUIDITY_DISCRIMINATOR = new Uint8Array([\n  160, 38, 208, 111, 104, 91, 44, 1,\n]);\n\nexport function getDecreaseLiquidityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DECREASE_LIQUIDITY_DISCRIMINATOR\n  );\n}\n\nexport type DecreaseLiquidityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArrayLower extends string\n        ? WritableAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? WritableAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DecreaseLiquidityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  liquidityAmount: bigint;\n  tokenMinA: bigint;\n  tokenMinB: bigint;\n};\n\nexport type DecreaseLiquidityInstructionDataArgs = {\n  liquidityAmount: number | bigint;\n  tokenMinA: number | bigint;\n  tokenMinB: number | bigint;\n};\n\nexport function getDecreaseLiquidityInstructionDataEncoder(): FixedSizeEncoder<DecreaseLiquidityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['liquidityAmount', getU128Encoder()],\n      ['tokenMinA', getU64Encoder()],\n      ['tokenMinB', getU64Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: DECREASE_LIQUIDITY_DISCRIMINATOR })\n  );\n}\n\nexport function getDecreaseLiquidityInstructionDataDecoder(): FixedSizeDecoder<DecreaseLiquidityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['liquidityAmount', getU128Decoder()],\n    ['tokenMinA', getU64Decoder()],\n    ['tokenMinB', getU64Decoder()],\n  ]);\n}\n\nexport function getDecreaseLiquidityInstructionDataCodec(): FixedSizeCodec<\n  DecreaseLiquidityInstructionDataArgs,\n  DecreaseLiquidityInstructionData\n> {\n  return combineCodec(\n    getDecreaseLiquidityInstructionDataEncoder(),\n    getDecreaseLiquidityInstructionDataDecoder()\n  );\n}\n\nexport type DecreaseLiquidityInput<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n  liquidityAmount: DecreaseLiquidityInstructionDataArgs['liquidityAmount'];\n  tokenMinA: DecreaseLiquidityInstructionDataArgs['tokenMinA'];\n  tokenMinB: DecreaseLiquidityInstructionDataArgs['tokenMinB'];\n};\n\nexport function getDecreaseLiquidityInstruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: DecreaseLiquidityInput<\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DecreaseLiquidityInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgram,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: true },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getDecreaseLiquidityInstructionDataEncoder().encode(\n      args as DecreaseLiquidityInstructionDataArgs\n    ),\n    programAddress,\n  } as DecreaseLiquidityInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedDecreaseLiquidityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgram: TAccountMetas[1];\n    positionAuthority: TAccountMetas[2];\n    position: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    tokenOwnerAccountA: TAccountMetas[5];\n    tokenOwnerAccountB: TAccountMetas[6];\n    tokenVaultA: TAccountMetas[7];\n    tokenVaultB: TAccountMetas[8];\n    tickArrayLower: TAccountMetas[9];\n    tickArrayUpper: TAccountMetas[10];\n  };\n  data: DecreaseLiquidityInstructionData;\n};\n\nexport function parseDecreaseLiquidityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDecreaseLiquidityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 11) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getDecreaseLiquidityInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const DECREASE_LIQUIDITY_V2_DISCRIMINATOR = new Uint8Array([\n  58, 127, 188, 62, 79, 82, 196, 96,\n]);\n\nexport function getDecreaseLiquidityV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DECREASE_LIQUIDITY_V2_DISCRIMINATOR\n  );\n}\n\nexport type DecreaseLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArrayLower extends string\n        ? WritableAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? WritableAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DecreaseLiquidityV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  liquidityAmount: bigint;\n  tokenMinA: bigint;\n  tokenMinB: bigint;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type DecreaseLiquidityV2InstructionDataArgs = {\n  liquidityAmount: number | bigint;\n  tokenMinA: number | bigint;\n  tokenMinB: number | bigint;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getDecreaseLiquidityV2InstructionDataEncoder(): Encoder<DecreaseLiquidityV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['liquidityAmount', getU128Encoder()],\n      ['tokenMinA', getU64Encoder()],\n      ['tokenMinB', getU64Encoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: DECREASE_LIQUIDITY_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getDecreaseLiquidityV2InstructionDataDecoder(): Decoder<DecreaseLiquidityV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['liquidityAmount', getU128Decoder()],\n    ['tokenMinA', getU64Decoder()],\n    ['tokenMinB', getU64Decoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getDecreaseLiquidityV2InstructionDataCodec(): Codec<\n  DecreaseLiquidityV2InstructionDataArgs,\n  DecreaseLiquidityV2InstructionData\n> {\n  return combineCodec(\n    getDecreaseLiquidityV2InstructionDataEncoder(),\n    getDecreaseLiquidityV2InstructionDataDecoder()\n  );\n}\n\nexport type DecreaseLiquidityV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n  liquidityAmount: DecreaseLiquidityV2InstructionDataArgs['liquidityAmount'];\n  tokenMinA: DecreaseLiquidityV2InstructionDataArgs['tokenMinA'];\n  tokenMinB: DecreaseLiquidityV2InstructionDataArgs['tokenMinB'];\n  remainingAccountsInfo: DecreaseLiquidityV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getDecreaseLiquidityV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: DecreaseLiquidityV2Input<\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DecreaseLiquidityV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: true },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getDecreaseLiquidityV2InstructionDataEncoder().encode(\n      args as DecreaseLiquidityV2InstructionDataArgs\n    ),\n    programAddress,\n  } as DecreaseLiquidityV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedDecreaseLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgramA: TAccountMetas[1];\n    tokenProgramB: TAccountMetas[2];\n    memoProgram: TAccountMetas[3];\n    positionAuthority: TAccountMetas[4];\n    position: TAccountMetas[5];\n    positionTokenAccount: TAccountMetas[6];\n    tokenMintA: TAccountMetas[7];\n    tokenMintB: TAccountMetas[8];\n    tokenOwnerAccountA: TAccountMetas[9];\n    tokenOwnerAccountB: TAccountMetas[10];\n    tokenVaultA: TAccountMetas[11];\n    tokenVaultB: TAccountMetas[12];\n    tickArrayLower: TAccountMetas[13];\n    tickArrayUpper: TAccountMetas[14];\n  };\n  data: DecreaseLiquidityV2InstructionData;\n};\n\nexport function parseDecreaseLiquidityV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDecreaseLiquidityV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 15) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getDecreaseLiquidityV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const DELETE_POSITION_BUNDLE_DISCRIMINATOR = new Uint8Array([\n  100, 25, 99, 2, 217, 239, 124, 173,\n]);\n\nexport function getDeletePositionBundleDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DELETE_POSITION_BUNDLE_DISCRIMINATOR\n  );\n}\n\nexport type DeletePositionBundleInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionBundle extends string | AccountMeta<string> = string,\n  TAccountPositionBundleMint extends string | AccountMeta<string> = string,\n  TAccountPositionBundleTokenAccount extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountPositionBundleOwner extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionBundle extends string\n        ? WritableAccount<TAccountPositionBundle>\n        : TAccountPositionBundle,\n      TAccountPositionBundleMint extends string\n        ? WritableAccount<TAccountPositionBundleMint>\n        : TAccountPositionBundleMint,\n      TAccountPositionBundleTokenAccount extends string\n        ? WritableAccount<TAccountPositionBundleTokenAccount>\n        : TAccountPositionBundleTokenAccount,\n      TAccountPositionBundleOwner extends string\n        ? ReadonlySignerAccount<TAccountPositionBundleOwner> &\n            AccountSignerMeta<TAccountPositionBundleOwner>\n        : TAccountPositionBundleOwner,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DeletePositionBundleInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type DeletePositionBundleInstructionDataArgs = {};\n\nexport function getDeletePositionBundleInstructionDataEncoder(): FixedSizeEncoder<DeletePositionBundleInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: DELETE_POSITION_BUNDLE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getDeletePositionBundleInstructionDataDecoder(): FixedSizeDecoder<DeletePositionBundleInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getDeletePositionBundleInstructionDataCodec(): FixedSizeCodec<\n  DeletePositionBundleInstructionDataArgs,\n  DeletePositionBundleInstructionData\n> {\n  return combineCodec(\n    getDeletePositionBundleInstructionDataEncoder(),\n    getDeletePositionBundleInstructionDataDecoder()\n  );\n}\n\nexport type DeletePositionBundleInput<\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleMint extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleOwner extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountTokenProgram extends string = string,\n> = {\n  positionBundle: Address<TAccountPositionBundle>;\n  positionBundleMint: Address<TAccountPositionBundleMint>;\n  positionBundleTokenAccount: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleOwner: TransactionSigner<TAccountPositionBundleOwner>;\n  receiver: Address<TAccountReceiver>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n};\n\nexport function getDeletePositionBundleInstruction<\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleMint extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleOwner extends string,\n  TAccountReceiver extends string,\n  TAccountTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: DeletePositionBundleInput<\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountReceiver,\n    TAccountTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DeletePositionBundleInstruction<\n  TProgramAddress,\n  TAccountPositionBundle,\n  TAccountPositionBundleMint,\n  TAccountPositionBundleTokenAccount,\n  TAccountPositionBundleOwner,\n  TAccountReceiver,\n  TAccountTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleMint: {\n      value: input.positionBundleMint ?? null,\n      isWritable: true,\n    },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: true,\n    },\n    positionBundleOwner: {\n      value: input.positionBundleOwner ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleMint),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleOwner),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.tokenProgram),\n    ],\n    data: getDeletePositionBundleInstructionDataEncoder().encode({}),\n    programAddress,\n  } as DeletePositionBundleInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountReceiver,\n    TAccountTokenProgram\n  >);\n}\n\nexport type ParsedDeletePositionBundleInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionBundle: TAccountMetas[0];\n    positionBundleMint: TAccountMetas[1];\n    positionBundleTokenAccount: TAccountMetas[2];\n    positionBundleOwner: TAccountMetas[3];\n    receiver: TAccountMetas[4];\n    tokenProgram: TAccountMetas[5];\n  };\n  data: DeletePositionBundleInstructionData;\n};\n\nexport function parseDeletePositionBundleInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDeletePositionBundleInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionBundle: getNextAccount(),\n      positionBundleMint: getNextAccount(),\n      positionBundleTokenAccount: getNextAccount(),\n      positionBundleOwner: getNextAccount(),\n      receiver: getNextAccount(),\n      tokenProgram: getNextAccount(),\n    },\n    data: getDeletePositionBundleInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const DELETE_TOKEN_BADGE_DISCRIMINATOR = new Uint8Array([\n  53, 146, 68, 8, 18, 117, 17, 185,\n]);\n\nexport function getDeleteTokenBadgeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    DELETE_TOKEN_BADGE_DISCRIMINATOR\n  );\n}\n\nexport type DeleteTokenBadgeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfigExtension extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenBadgeAuthority extends string | AccountMeta<string> = string,\n  TAccountTokenMint extends string | AccountMeta<string> = string,\n  TAccountTokenBadge extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpoolsConfigExtension extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfigExtension>\n        : TAccountWhirlpoolsConfigExtension,\n      TAccountTokenBadgeAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenBadgeAuthority> &\n            AccountSignerMeta<TAccountTokenBadgeAuthority>\n        : TAccountTokenBadgeAuthority,\n      TAccountTokenMint extends string\n        ? ReadonlyAccount<TAccountTokenMint>\n        : TAccountTokenMint,\n      TAccountTokenBadge extends string\n        ? WritableAccount<TAccountTokenBadge>\n        : TAccountTokenBadge,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type DeleteTokenBadgeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type DeleteTokenBadgeInstructionDataArgs = {};\n\nexport function getDeleteTokenBadgeInstructionDataEncoder(): FixedSizeEncoder<DeleteTokenBadgeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: DELETE_TOKEN_BADGE_DISCRIMINATOR })\n  );\n}\n\nexport function getDeleteTokenBadgeInstructionDataDecoder(): FixedSizeDecoder<DeleteTokenBadgeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getDeleteTokenBadgeInstructionDataCodec(): FixedSizeCodec<\n  DeleteTokenBadgeInstructionDataArgs,\n  DeleteTokenBadgeInstructionData\n> {\n  return combineCodec(\n    getDeleteTokenBadgeInstructionDataEncoder(),\n    getDeleteTokenBadgeInstructionDataDecoder()\n  );\n}\n\nexport type DeleteTokenBadgeAsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountTokenBadgeAuthority extends string = string,\n  TAccountTokenMint extends string = string,\n  TAccountTokenBadge extends string = string,\n  TAccountReceiver extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  tokenBadgeAuthority: TransactionSigner<TAccountTokenBadgeAuthority>;\n  tokenMint: Address<TAccountTokenMint>;\n  tokenBadge?: Address<TAccountTokenBadge>;\n  receiver: Address<TAccountReceiver>;\n};\n\nexport async function getDeleteTokenBadgeInstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountTokenBadgeAuthority extends string,\n  TAccountTokenMint extends string,\n  TAccountTokenBadge extends string,\n  TAccountReceiver extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: DeleteTokenBadgeAsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountReceiver\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  DeleteTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountReceiver\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: false,\n    },\n    tokenBadgeAuthority: {\n      value: input.tokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n    tokenBadge: { value: input.tokenBadge ?? null, isWritable: true },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenBadge.value) {\n    accounts.tokenBadge.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.tokenBadgeAuthority),\n      getAccountMeta(accounts.tokenMint),\n      getAccountMeta(accounts.tokenBadge),\n      getAccountMeta(accounts.receiver),\n    ],\n    data: getDeleteTokenBadgeInstructionDataEncoder().encode({}),\n    programAddress,\n  } as DeleteTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountReceiver\n  >);\n}\n\nexport type DeleteTokenBadgeInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountTokenBadgeAuthority extends string = string,\n  TAccountTokenMint extends string = string,\n  TAccountTokenBadge extends string = string,\n  TAccountReceiver extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  tokenBadgeAuthority: TransactionSigner<TAccountTokenBadgeAuthority>;\n  tokenMint: Address<TAccountTokenMint>;\n  tokenBadge: Address<TAccountTokenBadge>;\n  receiver: Address<TAccountReceiver>;\n};\n\nexport function getDeleteTokenBadgeInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountTokenBadgeAuthority extends string,\n  TAccountTokenMint extends string,\n  TAccountTokenBadge extends string,\n  TAccountReceiver extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: DeleteTokenBadgeInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountReceiver\n  >,\n  config?: { programAddress?: TProgramAddress }\n): DeleteTokenBadgeInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpoolsConfigExtension,\n  TAccountTokenBadgeAuthority,\n  TAccountTokenMint,\n  TAccountTokenBadge,\n  TAccountReceiver\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: false,\n    },\n    tokenBadgeAuthority: {\n      value: input.tokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n    tokenBadge: { value: input.tokenBadge ?? null, isWritable: true },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.tokenBadgeAuthority),\n      getAccountMeta(accounts.tokenMint),\n      getAccountMeta(accounts.tokenBadge),\n      getAccountMeta(accounts.receiver),\n    ],\n    data: getDeleteTokenBadgeInstructionDataEncoder().encode({}),\n    programAddress,\n  } as DeleteTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountReceiver\n  >);\n}\n\nexport type ParsedDeleteTokenBadgeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpoolsConfigExtension: TAccountMetas[1];\n    tokenBadgeAuthority: TAccountMetas[2];\n    tokenMint: TAccountMetas[3];\n    tokenBadge: TAccountMetas[4];\n    receiver: TAccountMetas[5];\n  };\n  data: DeleteTokenBadgeInstructionData;\n};\n\nexport function parseDeleteTokenBadgeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedDeleteTokenBadgeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpoolsConfigExtension: getNextAccount(),\n      tokenBadgeAuthority: getNextAccount(),\n      tokenMint: getNextAccount(),\n      tokenBadge: getNextAccount(),\n      receiver: getNextAccount(),\n    },\n    data: getDeleteTokenBadgeInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const IDL_INCLUDE_DISCRIMINATOR = new Uint8Array([\n  223, 253, 121, 121, 60, 193, 129, 31,\n]);\n\nexport function getIdlIncludeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(IDL_INCLUDE_DISCRIMINATOR);\n}\n\nexport type IdlIncludeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountTickArray extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTickArray extends string\n        ? ReadonlyAccount<TAccountTickArray>\n        : TAccountTickArray,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type IdlIncludeInstructionData = { discriminator: ReadonlyUint8Array };\n\nexport type IdlIncludeInstructionDataArgs = {};\n\nexport function getIdlIncludeInstructionDataEncoder(): FixedSizeEncoder<IdlIncludeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: IDL_INCLUDE_DISCRIMINATOR })\n  );\n}\n\nexport function getIdlIncludeInstructionDataDecoder(): FixedSizeDecoder<IdlIncludeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getIdlIncludeInstructionDataCodec(): FixedSizeCodec<\n  IdlIncludeInstructionDataArgs,\n  IdlIncludeInstructionData\n> {\n  return combineCodec(\n    getIdlIncludeInstructionDataEncoder(),\n    getIdlIncludeInstructionDataDecoder()\n  );\n}\n\nexport type IdlIncludeInput<\n  TAccountTickArray extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  tickArray: Address<TAccountTickArray>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getIdlIncludeInstruction<\n  TAccountTickArray extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: IdlIncludeInput<TAccountTickArray, TAccountSystemProgram>,\n  config?: { programAddress?: TProgramAddress }\n): IdlIncludeInstruction<\n  TProgramAddress,\n  TAccountTickArray,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tickArray: { value: input.tickArray ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tickArray),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getIdlIncludeInstructionDataEncoder().encode({}),\n    programAddress,\n  } as IdlIncludeInstruction<\n    TProgramAddress,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedIdlIncludeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    tickArray: TAccountMetas[0];\n    systemProgram: TAccountMetas[1];\n  };\n  data: IdlIncludeInstructionData;\n};\n\nexport function parseIdlIncludeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedIdlIncludeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { tickArray: getNextAccount(), systemProgram: getNextAccount() },\n    data: getIdlIncludeInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INCREASE_LIQUIDITY_DISCRIMINATOR = new Uint8Array([\n  46, 156, 243, 118, 13, 205, 251, 178,\n]);\n\nexport function getIncreaseLiquidityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INCREASE_LIQUIDITY_DISCRIMINATOR\n  );\n}\n\nexport type IncreaseLiquidityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArrayLower extends string\n        ? WritableAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? WritableAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type IncreaseLiquidityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  liquidityAmount: bigint;\n  tokenMaxA: bigint;\n  tokenMaxB: bigint;\n};\n\nexport type IncreaseLiquidityInstructionDataArgs = {\n  liquidityAmount: number | bigint;\n  tokenMaxA: number | bigint;\n  tokenMaxB: number | bigint;\n};\n\nexport function getIncreaseLiquidityInstructionDataEncoder(): FixedSizeEncoder<IncreaseLiquidityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['liquidityAmount', getU128Encoder()],\n      ['tokenMaxA', getU64Encoder()],\n      ['tokenMaxB', getU64Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INCREASE_LIQUIDITY_DISCRIMINATOR })\n  );\n}\n\nexport function getIncreaseLiquidityInstructionDataDecoder(): FixedSizeDecoder<IncreaseLiquidityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['liquidityAmount', getU128Decoder()],\n    ['tokenMaxA', getU64Decoder()],\n    ['tokenMaxB', getU64Decoder()],\n  ]);\n}\n\nexport function getIncreaseLiquidityInstructionDataCodec(): FixedSizeCodec<\n  IncreaseLiquidityInstructionDataArgs,\n  IncreaseLiquidityInstructionData\n> {\n  return combineCodec(\n    getIncreaseLiquidityInstructionDataEncoder(),\n    getIncreaseLiquidityInstructionDataDecoder()\n  );\n}\n\nexport type IncreaseLiquidityInput<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n  liquidityAmount: IncreaseLiquidityInstructionDataArgs['liquidityAmount'];\n  tokenMaxA: IncreaseLiquidityInstructionDataArgs['tokenMaxA'];\n  tokenMaxB: IncreaseLiquidityInstructionDataArgs['tokenMaxB'];\n};\n\nexport function getIncreaseLiquidityInstruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: IncreaseLiquidityInput<\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): IncreaseLiquidityInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgram,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: true },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getIncreaseLiquidityInstructionDataEncoder().encode(\n      args as IncreaseLiquidityInstructionDataArgs\n    ),\n    programAddress,\n  } as IncreaseLiquidityInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedIncreaseLiquidityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgram: TAccountMetas[1];\n    positionAuthority: TAccountMetas[2];\n    position: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    tokenOwnerAccountA: TAccountMetas[5];\n    tokenOwnerAccountB: TAccountMetas[6];\n    tokenVaultA: TAccountMetas[7];\n    tokenVaultB: TAccountMetas[8];\n    tickArrayLower: TAccountMetas[9];\n    tickArrayUpper: TAccountMetas[10];\n  };\n  data: IncreaseLiquidityInstructionData;\n};\n\nexport function parseIncreaseLiquidityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedIncreaseLiquidityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 11) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getIncreaseLiquidityInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getIncreaseLiquidityMethodDecoder,\n  getIncreaseLiquidityMethodEncoder,\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type IncreaseLiquidityMethod,\n  type IncreaseLiquidityMethodArgs,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const INCREASE_LIQUIDITY_BY_TOKEN_AMOUNTS_V2_DISCRIMINATOR =\n  new Uint8Array([239, 251, 9, 124, 210, 198, 53, 43]);\n\nexport function getIncreaseLiquidityByTokenAmountsV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INCREASE_LIQUIDITY_BY_TOKEN_AMOUNTS_V2_DISCRIMINATOR\n  );\n}\n\nexport type IncreaseLiquidityByTokenAmountsV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArrayLower extends string\n        ? WritableAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? WritableAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type IncreaseLiquidityByTokenAmountsV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  method: IncreaseLiquidityMethod;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type IncreaseLiquidityByTokenAmountsV2InstructionDataArgs = {\n  method: IncreaseLiquidityMethodArgs;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getIncreaseLiquidityByTokenAmountsV2InstructionDataEncoder(): Encoder<IncreaseLiquidityByTokenAmountsV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['method', getIncreaseLiquidityMethodEncoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INCREASE_LIQUIDITY_BY_TOKEN_AMOUNTS_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getIncreaseLiquidityByTokenAmountsV2InstructionDataDecoder(): Decoder<IncreaseLiquidityByTokenAmountsV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['method', getIncreaseLiquidityMethodDecoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getIncreaseLiquidityByTokenAmountsV2InstructionDataCodec(): Codec<\n  IncreaseLiquidityByTokenAmountsV2InstructionDataArgs,\n  IncreaseLiquidityByTokenAmountsV2InstructionData\n> {\n  return combineCodec(\n    getIncreaseLiquidityByTokenAmountsV2InstructionDataEncoder(),\n    getIncreaseLiquidityByTokenAmountsV2InstructionDataDecoder()\n  );\n}\n\nexport type IncreaseLiquidityByTokenAmountsV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n  method: IncreaseLiquidityByTokenAmountsV2InstructionDataArgs['method'];\n  remainingAccountsInfo: IncreaseLiquidityByTokenAmountsV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getIncreaseLiquidityByTokenAmountsV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: IncreaseLiquidityByTokenAmountsV2Input<\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): IncreaseLiquidityByTokenAmountsV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: true },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getIncreaseLiquidityByTokenAmountsV2InstructionDataEncoder().encode(\n      args as IncreaseLiquidityByTokenAmountsV2InstructionDataArgs\n    ),\n    programAddress,\n  } as IncreaseLiquidityByTokenAmountsV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedIncreaseLiquidityByTokenAmountsV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgramA: TAccountMetas[1];\n    tokenProgramB: TAccountMetas[2];\n    memoProgram: TAccountMetas[3];\n    positionAuthority: TAccountMetas[4];\n    position: TAccountMetas[5];\n    positionTokenAccount: TAccountMetas[6];\n    tokenMintA: TAccountMetas[7];\n    tokenMintB: TAccountMetas[8];\n    tokenOwnerAccountA: TAccountMetas[9];\n    tokenOwnerAccountB: TAccountMetas[10];\n    tokenVaultA: TAccountMetas[11];\n    tokenVaultB: TAccountMetas[12];\n    tickArrayLower: TAccountMetas[13];\n    tickArrayUpper: TAccountMetas[14];\n  };\n  data: IncreaseLiquidityByTokenAmountsV2InstructionData;\n};\n\nexport function parseIncreaseLiquidityByTokenAmountsV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedIncreaseLiquidityByTokenAmountsV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 15) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getIncreaseLiquidityByTokenAmountsV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const INCREASE_LIQUIDITY_V2_DISCRIMINATOR = new Uint8Array([\n  133, 29, 89, 223, 69, 238, 176, 10,\n]);\n\nexport function getIncreaseLiquidityV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INCREASE_LIQUIDITY_V2_DISCRIMINATOR\n  );\n}\n\nexport type IncreaseLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArrayLower extends string\n        ? WritableAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? WritableAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type IncreaseLiquidityV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  liquidityAmount: bigint;\n  tokenMaxA: bigint;\n  tokenMaxB: bigint;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type IncreaseLiquidityV2InstructionDataArgs = {\n  liquidityAmount: number | bigint;\n  tokenMaxA: number | bigint;\n  tokenMaxB: number | bigint;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getIncreaseLiquidityV2InstructionDataEncoder(): Encoder<IncreaseLiquidityV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['liquidityAmount', getU128Encoder()],\n      ['tokenMaxA', getU64Encoder()],\n      ['tokenMaxB', getU64Encoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INCREASE_LIQUIDITY_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getIncreaseLiquidityV2InstructionDataDecoder(): Decoder<IncreaseLiquidityV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['liquidityAmount', getU128Decoder()],\n    ['tokenMaxA', getU64Decoder()],\n    ['tokenMaxB', getU64Decoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getIncreaseLiquidityV2InstructionDataCodec(): Codec<\n  IncreaseLiquidityV2InstructionDataArgs,\n  IncreaseLiquidityV2InstructionData\n> {\n  return combineCodec(\n    getIncreaseLiquidityV2InstructionDataEncoder(),\n    getIncreaseLiquidityV2InstructionDataDecoder()\n  );\n}\n\nexport type IncreaseLiquidityV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n  liquidityAmount: IncreaseLiquidityV2InstructionDataArgs['liquidityAmount'];\n  tokenMaxA: IncreaseLiquidityV2InstructionDataArgs['tokenMaxA'];\n  tokenMaxB: IncreaseLiquidityV2InstructionDataArgs['tokenMaxB'];\n  remainingAccountsInfo: IncreaseLiquidityV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getIncreaseLiquidityV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: IncreaseLiquidityV2Input<\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): IncreaseLiquidityV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: true },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getIncreaseLiquidityV2InstructionDataEncoder().encode(\n      args as IncreaseLiquidityV2InstructionDataArgs\n    ),\n    programAddress,\n  } as IncreaseLiquidityV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedIncreaseLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgramA: TAccountMetas[1];\n    tokenProgramB: TAccountMetas[2];\n    memoProgram: TAccountMetas[3];\n    positionAuthority: TAccountMetas[4];\n    position: TAccountMetas[5];\n    positionTokenAccount: TAccountMetas[6];\n    tokenMintA: TAccountMetas[7];\n    tokenMintB: TAccountMetas[8];\n    tokenOwnerAccountA: TAccountMetas[9];\n    tokenOwnerAccountB: TAccountMetas[10];\n    tokenVaultA: TAccountMetas[11];\n    tokenVaultB: TAccountMetas[12];\n    tickArrayLower: TAccountMetas[13];\n    tickArrayUpper: TAccountMetas[14];\n  };\n  data: IncreaseLiquidityV2InstructionData;\n};\n\nexport function parseIncreaseLiquidityV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedIncreaseLiquidityV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 15) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getIncreaseLiquidityV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_ADAPTIVE_FEE_TIER_DISCRIMINATOR = new Uint8Array([\n  77, 99, 208, 200, 141, 123, 117, 48,\n]);\n\nexport function getInitializeAdaptiveFeeTierDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_ADAPTIVE_FEE_TIER_DISCRIMINATOR\n  );\n}\n\nexport type InitializeAdaptiveFeeTierInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAdaptiveFeeTier extends string\n        ? WritableAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeAdaptiveFeeTierInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  feeTierIndex: number;\n  tickSpacing: number;\n  initializePoolAuthority: Address;\n  delegatedFeeAuthority: Address;\n  defaultBaseFeeRate: number;\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport type InitializeAdaptiveFeeTierInstructionDataArgs = {\n  feeTierIndex: number;\n  tickSpacing: number;\n  initializePoolAuthority: Address;\n  delegatedFeeAuthority: Address;\n  defaultBaseFeeRate: number;\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport function getInitializeAdaptiveFeeTierInstructionDataEncoder(): FixedSizeEncoder<InitializeAdaptiveFeeTierInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['feeTierIndex', getU16Encoder()],\n      ['tickSpacing', getU16Encoder()],\n      ['initializePoolAuthority', getAddressEncoder()],\n      ['delegatedFeeAuthority', getAddressEncoder()],\n      ['defaultBaseFeeRate', getU16Encoder()],\n      ['filterPeriod', getU16Encoder()],\n      ['decayPeriod', getU16Encoder()],\n      ['reductionFactor', getU16Encoder()],\n      ['adaptiveFeeControlFactor', getU32Encoder()],\n      ['maxVolatilityAccumulator', getU32Encoder()],\n      ['tickGroupSize', getU16Encoder()],\n      ['majorSwapThresholdTicks', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_ADAPTIVE_FEE_TIER_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializeAdaptiveFeeTierInstructionDataDecoder(): FixedSizeDecoder<InitializeAdaptiveFeeTierInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['feeTierIndex', getU16Decoder()],\n    ['tickSpacing', getU16Decoder()],\n    ['initializePoolAuthority', getAddressDecoder()],\n    ['delegatedFeeAuthority', getAddressDecoder()],\n    ['defaultBaseFeeRate', getU16Decoder()],\n    ['filterPeriod', getU16Decoder()],\n    ['decayPeriod', getU16Decoder()],\n    ['reductionFactor', getU16Decoder()],\n    ['adaptiveFeeControlFactor', getU32Decoder()],\n    ['maxVolatilityAccumulator', getU32Decoder()],\n    ['tickGroupSize', getU16Decoder()],\n    ['majorSwapThresholdTicks', getU16Decoder()],\n  ]);\n}\n\nexport function getInitializeAdaptiveFeeTierInstructionDataCodec(): FixedSizeCodec<\n  InitializeAdaptiveFeeTierInstructionDataArgs,\n  InitializeAdaptiveFeeTierInstructionData\n> {\n  return combineCodec(\n    getInitializeAdaptiveFeeTierInstructionDataEncoder(),\n    getInitializeAdaptiveFeeTierInstructionDataDecoder()\n  );\n}\n\nexport type InitializeAdaptiveFeeTierAsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier?: Address<TAccountAdaptiveFeeTier>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  feeTierIndex: InitializeAdaptiveFeeTierInstructionDataArgs['feeTierIndex'];\n  tickSpacing: InitializeAdaptiveFeeTierInstructionDataArgs['tickSpacing'];\n  initializePoolAuthority: InitializeAdaptiveFeeTierInstructionDataArgs['initializePoolAuthority'];\n  delegatedFeeAuthority: InitializeAdaptiveFeeTierInstructionDataArgs['delegatedFeeAuthority'];\n  defaultBaseFeeRate: InitializeAdaptiveFeeTierInstructionDataArgs['defaultBaseFeeRate'];\n  filterPeriod: InitializeAdaptiveFeeTierInstructionDataArgs['filterPeriod'];\n  decayPeriod: InitializeAdaptiveFeeTierInstructionDataArgs['decayPeriod'];\n  reductionFactor: InitializeAdaptiveFeeTierInstructionDataArgs['reductionFactor'];\n  adaptiveFeeControlFactor: InitializeAdaptiveFeeTierInstructionDataArgs['adaptiveFeeControlFactor'];\n  maxVolatilityAccumulator: InitializeAdaptiveFeeTierInstructionDataArgs['maxVolatilityAccumulator'];\n  tickGroupSize: InitializeAdaptiveFeeTierInstructionDataArgs['tickGroupSize'];\n  majorSwapThresholdTicks: InitializeAdaptiveFeeTierInstructionDataArgs['majorSwapThresholdTicks'];\n};\n\nexport async function getInitializeAdaptiveFeeTierInstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeAdaptiveFeeTierAsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeAdaptiveFeeTierInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.adaptiveFeeTier.value) {\n    accounts.adaptiveFeeTier.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([102, 101, 101, 95, 116, 105, 101, 114])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getU16Encoder().encode(expectSome(args.feeTierIndex)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeAdaptiveFeeTierInstructionDataEncoder().encode(\n      args as InitializeAdaptiveFeeTierInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeAdaptiveFeeTierInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeAdaptiveFeeTierInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  feeTierIndex: InitializeAdaptiveFeeTierInstructionDataArgs['feeTierIndex'];\n  tickSpacing: InitializeAdaptiveFeeTierInstructionDataArgs['tickSpacing'];\n  initializePoolAuthority: InitializeAdaptiveFeeTierInstructionDataArgs['initializePoolAuthority'];\n  delegatedFeeAuthority: InitializeAdaptiveFeeTierInstructionDataArgs['delegatedFeeAuthority'];\n  defaultBaseFeeRate: InitializeAdaptiveFeeTierInstructionDataArgs['defaultBaseFeeRate'];\n  filterPeriod: InitializeAdaptiveFeeTierInstructionDataArgs['filterPeriod'];\n  decayPeriod: InitializeAdaptiveFeeTierInstructionDataArgs['decayPeriod'];\n  reductionFactor: InitializeAdaptiveFeeTierInstructionDataArgs['reductionFactor'];\n  adaptiveFeeControlFactor: InitializeAdaptiveFeeTierInstructionDataArgs['adaptiveFeeControlFactor'];\n  maxVolatilityAccumulator: InitializeAdaptiveFeeTierInstructionDataArgs['maxVolatilityAccumulator'];\n  tickGroupSize: InitializeAdaptiveFeeTierInstructionDataArgs['tickGroupSize'];\n  majorSwapThresholdTicks: InitializeAdaptiveFeeTierInstructionDataArgs['majorSwapThresholdTicks'];\n};\n\nexport function getInitializeAdaptiveFeeTierInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeAdaptiveFeeTierInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeAdaptiveFeeTierInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAdaptiveFeeTier,\n  TAccountFunder,\n  TAccountFeeAuthority,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeAdaptiveFeeTierInstructionDataEncoder().encode(\n      args as InitializeAdaptiveFeeTierInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeAdaptiveFeeTierInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeAdaptiveFeeTierInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    funder: TAccountMetas[2];\n    feeAuthority: TAccountMetas[3];\n    systemProgram: TAccountMetas[4];\n  };\n  data: InitializeAdaptiveFeeTierInstructionData;\n};\n\nexport function parseInitializeAdaptiveFeeTierInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeAdaptiveFeeTierInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      funder: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeAdaptiveFeeTierInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressDecoder,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_CONFIG_DISCRIMINATOR = new Uint8Array([\n  208, 127, 21, 1, 194, 190, 196, 70,\n]);\n\nexport function getInitializeConfigDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_CONFIG_DISCRIMINATOR\n  );\n}\n\nexport type InitializeConfigInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? WritableSignerAccount<TAccountConfig> &\n            AccountSignerMeta<TAccountConfig>\n        : TAccountConfig,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeConfigInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  feeAuthority: Address;\n  collectProtocolFeesAuthority: Address;\n  rewardEmissionsSuperAuthority: Address;\n  defaultProtocolFeeRate: number;\n};\n\nexport type InitializeConfigInstructionDataArgs = {\n  feeAuthority: Address;\n  collectProtocolFeesAuthority: Address;\n  rewardEmissionsSuperAuthority: Address;\n  defaultProtocolFeeRate: number;\n};\n\nexport function getInitializeConfigInstructionDataEncoder(): FixedSizeEncoder<InitializeConfigInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['feeAuthority', getAddressEncoder()],\n      ['collectProtocolFeesAuthority', getAddressEncoder()],\n      ['rewardEmissionsSuperAuthority', getAddressEncoder()],\n      ['defaultProtocolFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_CONFIG_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializeConfigInstructionDataDecoder(): FixedSizeDecoder<InitializeConfigInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['feeAuthority', getAddressDecoder()],\n    ['collectProtocolFeesAuthority', getAddressDecoder()],\n    ['rewardEmissionsSuperAuthority', getAddressDecoder()],\n    ['defaultProtocolFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getInitializeConfigInstructionDataCodec(): FixedSizeCodec<\n  InitializeConfigInstructionDataArgs,\n  InitializeConfigInstructionData\n> {\n  return combineCodec(\n    getInitializeConfigInstructionDataEncoder(),\n    getInitializeConfigInstructionDataDecoder()\n  );\n}\n\nexport type InitializeConfigInput<\n  TAccountConfig extends string = string,\n  TAccountFunder extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  config: TransactionSigner<TAccountConfig>;\n  funder: TransactionSigner<TAccountFunder>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  feeAuthority: InitializeConfigInstructionDataArgs['feeAuthority'];\n  collectProtocolFeesAuthority: InitializeConfigInstructionDataArgs['collectProtocolFeesAuthority'];\n  rewardEmissionsSuperAuthority: InitializeConfigInstructionDataArgs['rewardEmissionsSuperAuthority'];\n  defaultProtocolFeeRate: InitializeConfigInstructionDataArgs['defaultProtocolFeeRate'];\n};\n\nexport function getInitializeConfigInstruction<\n  TAccountConfig extends string,\n  TAccountFunder extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigInput<\n    TAccountConfig,\n    TAccountFunder,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeConfigInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountFunder,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.config),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeConfigInstructionDataEncoder().encode(\n      args as InitializeConfigInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeConfigInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountFunder,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeConfigInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    funder: TAccountMetas[1];\n    systemProgram: TAccountMetas[2];\n  };\n  data: InitializeConfigInstructionData;\n};\n\nexport function parseInitializeConfigInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeConfigInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      funder: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeConfigInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_CONFIG_EXTENSION_DISCRIMINATOR = new Uint8Array([\n  55, 9, 53, 9, 114, 57, 209, 52,\n]);\n\nexport function getInitializeConfigExtensionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_CONFIG_EXTENSION_DISCRIMINATOR\n  );\n}\n\nexport type InitializeConfigExtensionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountConfigExtension extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? ReadonlyAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountConfigExtension extends string\n        ? WritableAccount<TAccountConfigExtension>\n        : TAccountConfigExtension,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeConfigExtensionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type InitializeConfigExtensionInstructionDataArgs = {};\n\nexport function getInitializeConfigExtensionInstructionDataEncoder(): FixedSizeEncoder<InitializeConfigExtensionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_CONFIG_EXTENSION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializeConfigExtensionInstructionDataDecoder(): FixedSizeDecoder<InitializeConfigExtensionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getInitializeConfigExtensionInstructionDataCodec(): FixedSizeCodec<\n  InitializeConfigExtensionInstructionDataArgs,\n  InitializeConfigExtensionInstructionData\n> {\n  return combineCodec(\n    getInitializeConfigExtensionInstructionDataEncoder(),\n    getInitializeConfigExtensionInstructionDataDecoder()\n  );\n}\n\nexport type InitializeConfigExtensionAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountConfigExtension extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  configExtension?: Address<TAccountConfigExtension>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getInitializeConfigExtensionInstructionAsync<\n  TAccountConfig extends string,\n  TAccountConfigExtension extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigExtensionAsyncInput<\n    TAccountConfig,\n    TAccountConfigExtension,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeConfigExtensionInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountConfigExtension,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    configExtension: { value: input.configExtension ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.configExtension.value) {\n    accounts.configExtension.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            99, 111, 110, 102, 105, 103, 95, 101, 120, 116, 101, 110, 115, 105,\n            111, 110,\n          ])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.config.value)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.config),\n      getAccountMeta(accounts.configExtension),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeConfigExtensionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializeConfigExtensionInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountConfigExtension,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeConfigExtensionInput<\n  TAccountConfig extends string = string,\n  TAccountConfigExtension extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  configExtension: Address<TAccountConfigExtension>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getInitializeConfigExtensionInstruction<\n  TAccountConfig extends string,\n  TAccountConfigExtension extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeConfigExtensionInput<\n    TAccountConfig,\n    TAccountConfigExtension,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeConfigExtensionInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountConfigExtension,\n  TAccountFunder,\n  TAccountFeeAuthority,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    configExtension: { value: input.configExtension ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.config),\n      getAccountMeta(accounts.configExtension),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeConfigExtensionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializeConfigExtensionInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountConfigExtension,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeConfigExtensionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    configExtension: TAccountMetas[1];\n    funder: TAccountMetas[2];\n    feeAuthority: TAccountMetas[3];\n    systemProgram: TAccountMetas[4];\n  };\n  data: InitializeConfigExtensionInstructionData;\n};\n\nexport function parseInitializeConfigExtensionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeConfigExtensionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      configExtension: getNextAccount(),\n      funder: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeConfigExtensionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_DYNAMIC_TICK_ARRAY_DISCRIMINATOR = new Uint8Array([\n  41, 33, 165, 200, 120, 231, 142, 50,\n]);\n\nexport function getInitializeDynamicTickArrayDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_DYNAMIC_TICK_ARRAY_DISCRIMINATOR\n  );\n}\n\nexport type InitializeDynamicTickArrayInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountTickArray extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountTickArray extends string\n        ? WritableAccount<TAccountTickArray>\n        : TAccountTickArray,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeDynamicTickArrayInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  startTickIndex: number;\n  idempotent: boolean;\n};\n\nexport type InitializeDynamicTickArrayInstructionDataArgs = {\n  startTickIndex: number;\n  idempotent: boolean;\n};\n\nexport function getInitializeDynamicTickArrayInstructionDataEncoder(): FixedSizeEncoder<InitializeDynamicTickArrayInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['startTickIndex', getI32Encoder()],\n      ['idempotent', getBooleanEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_DYNAMIC_TICK_ARRAY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializeDynamicTickArrayInstructionDataDecoder(): FixedSizeDecoder<InitializeDynamicTickArrayInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['startTickIndex', getI32Decoder()],\n    ['idempotent', getBooleanDecoder()],\n  ]);\n}\n\nexport function getInitializeDynamicTickArrayInstructionDataCodec(): FixedSizeCodec<\n  InitializeDynamicTickArrayInstructionDataArgs,\n  InitializeDynamicTickArrayInstructionData\n> {\n  return combineCodec(\n    getInitializeDynamicTickArrayInstructionDataEncoder(),\n    getInitializeDynamicTickArrayInstructionDataDecoder()\n  );\n}\n\nexport type InitializeDynamicTickArrayAsyncInput<\n  TAccountWhirlpool extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTickArray extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  funder: TransactionSigner<TAccountFunder>;\n  tickArray?: Address<TAccountTickArray>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  startTickIndex: InitializeDynamicTickArrayInstructionDataArgs['startTickIndex'];\n  idempotent: InitializeDynamicTickArrayInstructionDataArgs['idempotent'];\n};\n\nexport async function getInitializeDynamicTickArrayInstructionAsync<\n  TAccountWhirlpool extends string,\n  TAccountFunder extends string,\n  TAccountTickArray extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeDynamicTickArrayAsyncInput<\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeDynamicTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tickArray: { value: input.tickArray ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tickArray.value) {\n    accounts.tickArray.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 105, 99, 107, 95, 97, 114, 114, 97, 121])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpool.value)),\n        getI32Encoder().encode(expectSome(args.startTickIndex)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tickArray),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeDynamicTickArrayInstructionDataEncoder().encode(\n      args as InitializeDynamicTickArrayInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeDynamicTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeDynamicTickArrayInput<\n  TAccountWhirlpool extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTickArray extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  funder: TransactionSigner<TAccountFunder>;\n  tickArray: Address<TAccountTickArray>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  startTickIndex: InitializeDynamicTickArrayInstructionDataArgs['startTickIndex'];\n  idempotent: InitializeDynamicTickArrayInstructionDataArgs['idempotent'];\n};\n\nexport function getInitializeDynamicTickArrayInstruction<\n  TAccountWhirlpool extends string,\n  TAccountFunder extends string,\n  TAccountTickArray extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeDynamicTickArrayInput<\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeDynamicTickArrayInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountFunder,\n  TAccountTickArray,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tickArray: { value: input.tickArray ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tickArray),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeDynamicTickArrayInstructionDataEncoder().encode(\n      args as InitializeDynamicTickArrayInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeDynamicTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeDynamicTickArrayInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    funder: TAccountMetas[1];\n    tickArray: TAccountMetas[2];\n    systemProgram: TAccountMetas[3];\n  };\n  data: InitializeDynamicTickArrayInstructionData;\n};\n\nexport function parseInitializeDynamicTickArrayInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeDynamicTickArrayInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      funder: getNextAccount(),\n      tickArray: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeDynamicTickArrayInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_FEE_TIER_DISCRIMINATOR = new Uint8Array([\n  183, 74, 156, 160, 112, 2, 42, 30,\n]);\n\nexport function getInitializeFeeTierDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_FEE_TIER_DISCRIMINATOR\n  );\n}\n\nexport type InitializeFeeTierInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountConfig extends string | AccountMeta<string> = string,\n  TAccountFeeTier extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountConfig extends string\n        ? ReadonlyAccount<TAccountConfig>\n        : TAccountConfig,\n      TAccountFeeTier extends string\n        ? WritableAccount<TAccountFeeTier>\n        : TAccountFeeTier,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeFeeTierInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  tickSpacing: number;\n  defaultFeeRate: number;\n};\n\nexport type InitializeFeeTierInstructionDataArgs = {\n  tickSpacing: number;\n  defaultFeeRate: number;\n};\n\nexport function getInitializeFeeTierInstructionDataEncoder(): FixedSizeEncoder<InitializeFeeTierInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['tickSpacing', getU16Encoder()],\n      ['defaultFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_FEE_TIER_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializeFeeTierInstructionDataDecoder(): FixedSizeDecoder<InitializeFeeTierInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['tickSpacing', getU16Decoder()],\n    ['defaultFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getInitializeFeeTierInstructionDataCodec(): FixedSizeCodec<\n  InitializeFeeTierInstructionDataArgs,\n  InitializeFeeTierInstructionData\n> {\n  return combineCodec(\n    getInitializeFeeTierInstructionDataEncoder(),\n    getInitializeFeeTierInstructionDataDecoder()\n  );\n}\n\nexport type InitializeFeeTierAsyncInput<\n  TAccountConfig extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  feeTier?: Address<TAccountFeeTier>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  tickSpacing: InitializeFeeTierInstructionDataArgs['tickSpacing'];\n  defaultFeeRate: InitializeFeeTierInstructionDataArgs['defaultFeeRate'];\n};\n\nexport async function getInitializeFeeTierInstructionAsync<\n  TAccountConfig extends string,\n  TAccountFeeTier extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeFeeTierAsyncInput<\n    TAccountConfig,\n    TAccountFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeFeeTierInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    feeTier: { value: input.feeTier ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.feeTier.value) {\n    accounts.feeTier.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([102, 101, 101, 95, 116, 105, 101, 114])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.config.value)),\n        getU16Encoder().encode(expectSome(args.tickSpacing)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.config),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeFeeTierInstructionDataEncoder().encode(\n      args as InitializeFeeTierInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeFeeTierInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeFeeTierInput<\n  TAccountConfig extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountFunder extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  config: Address<TAccountConfig>;\n  feeTier: Address<TAccountFeeTier>;\n  funder: TransactionSigner<TAccountFunder>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  tickSpacing: InitializeFeeTierInstructionDataArgs['tickSpacing'];\n  defaultFeeRate: InitializeFeeTierInstructionDataArgs['defaultFeeRate'];\n};\n\nexport function getInitializeFeeTierInstruction<\n  TAccountConfig extends string,\n  TAccountFeeTier extends string,\n  TAccountFunder extends string,\n  TAccountFeeAuthority extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeFeeTierInput<\n    TAccountConfig,\n    TAccountFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeFeeTierInstruction<\n  TProgramAddress,\n  TAccountConfig,\n  TAccountFeeTier,\n  TAccountFunder,\n  TAccountFeeAuthority,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    config: { value: input.config ?? null, isWritable: false },\n    feeTier: { value: input.feeTier ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.config),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeFeeTierInstructionDataEncoder().encode(\n      args as InitializeFeeTierInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeFeeTierInstruction<\n    TProgramAddress,\n    TAccountConfig,\n    TAccountFeeTier,\n    TAccountFunder,\n    TAccountFeeAuthority,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeFeeTierInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    config: TAccountMetas[0];\n    feeTier: TAccountMetas[1];\n    funder: TAccountMetas[2];\n    feeAuthority: TAccountMetas[3];\n    systemProgram: TAccountMetas[4];\n  };\n  data: InitializeFeeTierInstructionData;\n};\n\nexport function parseInitializeFeeTierInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeFeeTierInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      config: getNextAccount(),\n      feeTier: getNextAccount(),\n      funder: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeFeeTierInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_POOL_DISCRIMINATOR = new Uint8Array([\n  95, 180, 10, 172, 84, 174, 232, 40,\n]);\n\nexport function getInitializePoolDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_POOL_DISCRIMINATOR\n  );\n}\n\nexport type InitializePoolInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountFeeTier extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenVaultA extends string\n        ? WritableSignerAccount<TAccountTokenVaultA> &\n            AccountSignerMeta<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableSignerAccount<TAccountTokenVaultB> &\n            AccountSignerMeta<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountFeeTier extends string\n        ? ReadonlyAccount<TAccountFeeTier>\n        : TAccountFeeTier,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializePoolInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  whirlpoolBump: number;\n  tickSpacing: number;\n  initialSqrtPrice: bigint;\n};\n\nexport type InitializePoolInstructionDataArgs = {\n  whirlpoolBump: number;\n  tickSpacing: number;\n  initialSqrtPrice: number | bigint;\n};\n\nexport function getInitializePoolInstructionDataEncoder(): FixedSizeEncoder<InitializePoolInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['whirlpoolBump', getU8Encoder()],\n      ['tickSpacing', getU16Encoder()],\n      ['initialSqrtPrice', getU128Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_POOL_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializePoolInstructionDataDecoder(): FixedSizeDecoder<InitializePoolInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['whirlpoolBump', getU8Decoder()],\n    ['tickSpacing', getU16Decoder()],\n    ['initialSqrtPrice', getU128Decoder()],\n  ]);\n}\n\nexport function getInitializePoolInstructionDataCodec(): FixedSizeCodec<\n  InitializePoolInstructionDataArgs,\n  InitializePoolInstructionData\n> {\n  return combineCodec(\n    getInitializePoolInstructionDataEncoder(),\n    getInitializePoolInstructionDataDecoder()\n  );\n}\n\nexport type InitializePoolAsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool?: Address<TAccountWhirlpool>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  feeTier: Address<TAccountFeeTier>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  whirlpoolBump: InitializePoolInstructionDataArgs['whirlpoolBump'];\n  tickSpacing: InitializePoolInstructionDataArgs['tickSpacing'];\n  initialSqrtPrice: InitializePoolInstructionDataArgs['initialSqrtPrice'];\n};\n\nexport async function getInitializePoolInstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountFeeTier extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolAsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializePoolInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    feeTier: { value: input.feeTier ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.whirlpool.value) {\n    accounts.whirlpool.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([119, 104, 105, 114, 108, 112, 111, 111, 108])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintA.value)),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintB.value)),\n        getU16Encoder().encode(expectSome(args.tickSpacing)),\n      ],\n    });\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolInstructionDataEncoder().encode(\n      args as InitializePoolInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type InitializePoolInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  feeTier: Address<TAccountFeeTier>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  whirlpoolBump: InitializePoolInstructionDataArgs['whirlpoolBump'];\n  tickSpacing: InitializePoolInstructionDataArgs['tickSpacing'];\n  initialSqrtPrice: InitializePoolInstructionDataArgs['initialSqrtPrice'];\n};\n\nexport function getInitializePoolInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountFeeTier extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolInput<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializePoolInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountFunder,\n  TAccountWhirlpool,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountFeeTier,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    feeTier: { value: input.feeTier ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolInstructionDataEncoder().encode(\n      args as InitializePoolInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedInitializePoolInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    tokenMintA: TAccountMetas[1];\n    tokenMintB: TAccountMetas[2];\n    funder: TAccountMetas[3];\n    whirlpool: TAccountMetas[4];\n    tokenVaultA: TAccountMetas[5];\n    tokenVaultB: TAccountMetas[6];\n    feeTier: TAccountMetas[7];\n    tokenProgram: TAccountMetas[8];\n    systemProgram: TAccountMetas[9];\n    rent: TAccountMetas[10];\n  };\n  data: InitializePoolInstructionData;\n};\n\nexport function parseInitializePoolInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializePoolInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 11) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      funder: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      feeTier: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getInitializePoolInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_POOL_V2_DISCRIMINATOR = new Uint8Array([\n  207, 45, 87, 242, 27, 63, 204, 67,\n]);\n\nexport function getInitializePoolV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_POOL_V2_DISCRIMINATOR\n  );\n}\n\nexport type InitializePoolV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenBadgeA extends string | AccountMeta<string> = string,\n  TAccountTokenBadgeB extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountFeeTier extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenBadgeA extends string\n        ? ReadonlyAccount<TAccountTokenBadgeA>\n        : TAccountTokenBadgeA,\n      TAccountTokenBadgeB extends string\n        ? ReadonlyAccount<TAccountTokenBadgeB>\n        : TAccountTokenBadgeB,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenVaultA extends string\n        ? WritableSignerAccount<TAccountTokenVaultA> &\n            AccountSignerMeta<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableSignerAccount<TAccountTokenVaultB> &\n            AccountSignerMeta<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountFeeTier extends string\n        ? ReadonlyAccount<TAccountFeeTier>\n        : TAccountFeeTier,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializePoolV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  tickSpacing: number;\n  initialSqrtPrice: bigint;\n};\n\nexport type InitializePoolV2InstructionDataArgs = {\n  tickSpacing: number;\n  initialSqrtPrice: number | bigint;\n};\n\nexport function getInitializePoolV2InstructionDataEncoder(): FixedSizeEncoder<InitializePoolV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['tickSpacing', getU16Encoder()],\n      ['initialSqrtPrice', getU128Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_POOL_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializePoolV2InstructionDataDecoder(): FixedSizeDecoder<InitializePoolV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['tickSpacing', getU16Decoder()],\n    ['initialSqrtPrice', getU128Decoder()],\n  ]);\n}\n\nexport function getInitializePoolV2InstructionDataCodec(): FixedSizeCodec<\n  InitializePoolV2InstructionDataArgs,\n  InitializePoolV2InstructionData\n> {\n  return combineCodec(\n    getInitializePoolV2InstructionDataEncoder(),\n    getInitializePoolV2InstructionDataDecoder()\n  );\n}\n\nexport type InitializePoolV2AsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenBadgeA extends string = string,\n  TAccountTokenBadgeB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenBadgeA?: Address<TAccountTokenBadgeA>;\n  tokenBadgeB?: Address<TAccountTokenBadgeB>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool?: Address<TAccountWhirlpool>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  feeTier: Address<TAccountFeeTier>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  tickSpacing: InitializePoolV2InstructionDataArgs['tickSpacing'];\n  initialSqrtPrice: InitializePoolV2InstructionDataArgs['initialSqrtPrice'];\n};\n\nexport async function getInitializePoolV2InstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenBadgeA extends string,\n  TAccountTokenBadgeB extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountFeeTier extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolV2AsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializePoolV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenBadgeA: { value: input.tokenBadgeA ?? null, isWritable: false },\n    tokenBadgeB: { value: input.tokenBadgeB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    feeTier: { value: input.feeTier ?? null, isWritable: false },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenBadgeA.value) {\n    accounts.tokenBadgeA.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintA.value)),\n      ],\n    });\n  }\n  if (!accounts.tokenBadgeB.value) {\n    accounts.tokenBadgeB.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintB.value)),\n      ],\n    });\n  }\n  if (!accounts.whirlpool.value) {\n    accounts.whirlpool.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([119, 104, 105, 114, 108, 112, 111, 111, 108])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintA.value)),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintB.value)),\n        getU16Encoder().encode(expectSome(args.tickSpacing)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenBadgeA),\n      getAccountMeta(accounts.tokenBadgeB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolV2InstructionDataEncoder().encode(\n      args as InitializePoolV2InstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type InitializePoolV2Input<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenBadgeA extends string = string,\n  TAccountTokenBadgeB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenBadgeA: Address<TAccountTokenBadgeA>;\n  tokenBadgeB: Address<TAccountTokenBadgeB>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  feeTier: Address<TAccountFeeTier>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  tickSpacing: InitializePoolV2InstructionDataArgs['tickSpacing'];\n  initialSqrtPrice: InitializePoolV2InstructionDataArgs['initialSqrtPrice'];\n};\n\nexport function getInitializePoolV2Instruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenBadgeA extends string,\n  TAccountTokenBadgeB extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountFeeTier extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolV2Input<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializePoolV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenBadgeA,\n  TAccountTokenBadgeB,\n  TAccountFunder,\n  TAccountWhirlpool,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountFeeTier,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenBadgeA: { value: input.tokenBadgeA ?? null, isWritable: false },\n    tokenBadgeB: { value: input.tokenBadgeB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    feeTier: { value: input.feeTier ?? null, isWritable: false },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenBadgeA),\n      getAccountMeta(accounts.tokenBadgeB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolV2InstructionDataEncoder().encode(\n      args as InitializePoolV2InstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedInitializePoolV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    tokenMintA: TAccountMetas[1];\n    tokenMintB: TAccountMetas[2];\n    tokenBadgeA: TAccountMetas[3];\n    tokenBadgeB: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    whirlpool: TAccountMetas[6];\n    tokenVaultA: TAccountMetas[7];\n    tokenVaultB: TAccountMetas[8];\n    feeTier: TAccountMetas[9];\n    tokenProgramA: TAccountMetas[10];\n    tokenProgramB: TAccountMetas[11];\n    systemProgram: TAccountMetas[12];\n    rent: TAccountMetas[13];\n  };\n  data: InitializePoolV2InstructionData;\n};\n\nexport function parseInitializePoolV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializePoolV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 14) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenBadgeA: getNextAccount(),\n      tokenBadgeB: getNextAccount(),\n      funder: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      feeTier: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getInitializePoolV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_POOL_WITH_ADAPTIVE_FEE_DISCRIMINATOR = new Uint8Array([\n  143, 94, 96, 76, 172, 124, 119, 199,\n]);\n\nexport function getInitializePoolWithAdaptiveFeeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_POOL_WITH_ADAPTIVE_FEE_DISCRIMINATOR\n  );\n}\n\nexport type InitializePoolWithAdaptiveFeeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenBadgeA extends string | AccountMeta<string> = string,\n  TAccountTokenBadgeB extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountInitializePoolAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenBadgeA extends string\n        ? ReadonlyAccount<TAccountTokenBadgeA>\n        : TAccountTokenBadgeA,\n      TAccountTokenBadgeB extends string\n        ? ReadonlyAccount<TAccountTokenBadgeB>\n        : TAccountTokenBadgeB,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountInitializePoolAuthority extends string\n        ? ReadonlySignerAccount<TAccountInitializePoolAuthority> &\n            AccountSignerMeta<TAccountInitializePoolAuthority>\n        : TAccountInitializePoolAuthority,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountOracle extends string\n        ? WritableAccount<TAccountOracle>\n        : TAccountOracle,\n      TAccountTokenVaultA extends string\n        ? WritableSignerAccount<TAccountTokenVaultA> &\n            AccountSignerMeta<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableSignerAccount<TAccountTokenVaultB> &\n            AccountSignerMeta<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountAdaptiveFeeTier extends string\n        ? ReadonlyAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializePoolWithAdaptiveFeeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  initialSqrtPrice: bigint;\n  tradeEnableTimestamp: Option<bigint>;\n};\n\nexport type InitializePoolWithAdaptiveFeeInstructionDataArgs = {\n  initialSqrtPrice: number | bigint;\n  tradeEnableTimestamp: OptionOrNullable<number | bigint>;\n};\n\nexport function getInitializePoolWithAdaptiveFeeInstructionDataEncoder(): Encoder<InitializePoolWithAdaptiveFeeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['initialSqrtPrice', getU128Encoder()],\n      ['tradeEnableTimestamp', getOptionEncoder(getU64Encoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_POOL_WITH_ADAPTIVE_FEE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializePoolWithAdaptiveFeeInstructionDataDecoder(): Decoder<InitializePoolWithAdaptiveFeeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['initialSqrtPrice', getU128Decoder()],\n    ['tradeEnableTimestamp', getOptionDecoder(getU64Decoder())],\n  ]);\n}\n\nexport function getInitializePoolWithAdaptiveFeeInstructionDataCodec(): Codec<\n  InitializePoolWithAdaptiveFeeInstructionDataArgs,\n  InitializePoolWithAdaptiveFeeInstructionData\n> {\n  return combineCodec(\n    getInitializePoolWithAdaptiveFeeInstructionDataEncoder(),\n    getInitializePoolWithAdaptiveFeeInstructionDataDecoder()\n  );\n}\n\nexport type InitializePoolWithAdaptiveFeeAsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenBadgeA extends string = string,\n  TAccountTokenBadgeB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountInitializePoolAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountOracle extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenBadgeA?: Address<TAccountTokenBadgeA>;\n  tokenBadgeB?: Address<TAccountTokenBadgeB>;\n  funder: TransactionSigner<TAccountFunder>;\n  initializePoolAuthority: TransactionSigner<TAccountInitializePoolAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  oracle?: Address<TAccountOracle>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  initialSqrtPrice: InitializePoolWithAdaptiveFeeInstructionDataArgs['initialSqrtPrice'];\n  tradeEnableTimestamp: InitializePoolWithAdaptiveFeeInstructionDataArgs['tradeEnableTimestamp'];\n};\n\nexport async function getInitializePoolWithAdaptiveFeeInstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenBadgeA extends string,\n  TAccountTokenBadgeB extends string,\n  TAccountFunder extends string,\n  TAccountInitializePoolAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountOracle extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolWithAdaptiveFeeAsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountInitializePoolAuthority,\n    TAccountWhirlpool,\n    TAccountOracle,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountAdaptiveFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializePoolWithAdaptiveFeeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountInitializePoolAuthority,\n    TAccountWhirlpool,\n    TAccountOracle,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountAdaptiveFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenBadgeA: { value: input.tokenBadgeA ?? null, isWritable: false },\n    tokenBadgeB: { value: input.tokenBadgeB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    initializePoolAuthority: {\n      value: input.initializePoolAuthority ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    adaptiveFeeTier: {\n      value: input.adaptiveFeeTier ?? null,\n      isWritable: false,\n    },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenBadgeA.value) {\n    accounts.tokenBadgeA.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintA.value)),\n      ],\n    });\n  }\n  if (!accounts.tokenBadgeB.value) {\n    accounts.tokenBadgeB.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMintB.value)),\n      ],\n    });\n  }\n  if (!accounts.oracle.value) {\n    accounts.oracle.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpool.value)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenBadgeA),\n      getAccountMeta(accounts.tokenBadgeB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.initializePoolAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.oracle),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolWithAdaptiveFeeInstructionDataEncoder().encode(\n      args as InitializePoolWithAdaptiveFeeInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolWithAdaptiveFeeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountInitializePoolAuthority,\n    TAccountWhirlpool,\n    TAccountOracle,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountAdaptiveFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type InitializePoolWithAdaptiveFeeInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenBadgeA extends string = string,\n  TAccountTokenBadgeB extends string = string,\n  TAccountFunder extends string = string,\n  TAccountInitializePoolAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountOracle extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenBadgeA: Address<TAccountTokenBadgeA>;\n  tokenBadgeB: Address<TAccountTokenBadgeB>;\n  funder: TransactionSigner<TAccountFunder>;\n  initializePoolAuthority: TransactionSigner<TAccountInitializePoolAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  oracle: Address<TAccountOracle>;\n  tokenVaultA: TransactionSigner<TAccountTokenVaultA>;\n  tokenVaultB: TransactionSigner<TAccountTokenVaultB>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  initialSqrtPrice: InitializePoolWithAdaptiveFeeInstructionDataArgs['initialSqrtPrice'];\n  tradeEnableTimestamp: InitializePoolWithAdaptiveFeeInstructionDataArgs['tradeEnableTimestamp'];\n};\n\nexport function getInitializePoolWithAdaptiveFeeInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenBadgeA extends string,\n  TAccountTokenBadgeB extends string,\n  TAccountFunder extends string,\n  TAccountInitializePoolAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountOracle extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePoolWithAdaptiveFeeInput<\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountInitializePoolAuthority,\n    TAccountWhirlpool,\n    TAccountOracle,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountAdaptiveFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializePoolWithAdaptiveFeeInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenBadgeA,\n  TAccountTokenBadgeB,\n  TAccountFunder,\n  TAccountInitializePoolAuthority,\n  TAccountWhirlpool,\n  TAccountOracle,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountAdaptiveFeeTier,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenBadgeA: { value: input.tokenBadgeA ?? null, isWritable: false },\n    tokenBadgeB: { value: input.tokenBadgeB ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    initializePoolAuthority: {\n      value: input.initializePoolAuthority ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    adaptiveFeeTier: {\n      value: input.adaptiveFeeTier ?? null,\n      isWritable: false,\n    },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenBadgeA),\n      getAccountMeta(accounts.tokenBadgeB),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.initializePoolAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.oracle),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializePoolWithAdaptiveFeeInstructionDataEncoder().encode(\n      args as InitializePoolWithAdaptiveFeeInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializePoolWithAdaptiveFeeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenBadgeA,\n    TAccountTokenBadgeB,\n    TAccountFunder,\n    TAccountInitializePoolAuthority,\n    TAccountWhirlpool,\n    TAccountOracle,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountAdaptiveFeeTier,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedInitializePoolWithAdaptiveFeeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    tokenMintA: TAccountMetas[1];\n    tokenMintB: TAccountMetas[2];\n    tokenBadgeA: TAccountMetas[3];\n    tokenBadgeB: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    initializePoolAuthority: TAccountMetas[6];\n    whirlpool: TAccountMetas[7];\n    oracle: TAccountMetas[8];\n    tokenVaultA: TAccountMetas[9];\n    tokenVaultB: TAccountMetas[10];\n    adaptiveFeeTier: TAccountMetas[11];\n    tokenProgramA: TAccountMetas[12];\n    tokenProgramB: TAccountMetas[13];\n    systemProgram: TAccountMetas[14];\n    rent: TAccountMetas[15];\n  };\n  data: InitializePoolWithAdaptiveFeeInstructionData;\n};\n\nexport function parseInitializePoolWithAdaptiveFeeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializePoolWithAdaptiveFeeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 16) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenBadgeA: getNextAccount(),\n      tokenBadgeB: getNextAccount(),\n      funder: getNextAccount(),\n      initializePoolAuthority: getNextAccount(),\n      whirlpool: getNextAccount(),\n      oracle: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getInitializePoolWithAdaptiveFeeInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_POSITION_BUNDLE_DISCRIMINATOR = new Uint8Array([\n  117, 45, 241, 149, 24, 18, 194, 65,\n]);\n\nexport function getInitializePositionBundleDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_POSITION_BUNDLE_DISCRIMINATOR\n  );\n}\n\nexport type InitializePositionBundleInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionBundle extends string | AccountMeta<string> = string,\n  TAccountPositionBundleMint extends string | AccountMeta<string> = string,\n  TAccountPositionBundleTokenAccount extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountPositionBundleOwner extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionBundle extends string\n        ? WritableAccount<TAccountPositionBundle>\n        : TAccountPositionBundle,\n      TAccountPositionBundleMint extends string\n        ? WritableSignerAccount<TAccountPositionBundleMint> &\n            AccountSignerMeta<TAccountPositionBundleMint>\n        : TAccountPositionBundleMint,\n      TAccountPositionBundleTokenAccount extends string\n        ? WritableAccount<TAccountPositionBundleTokenAccount>\n        : TAccountPositionBundleTokenAccount,\n      TAccountPositionBundleOwner extends string\n        ? ReadonlyAccount<TAccountPositionBundleOwner>\n        : TAccountPositionBundleOwner,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializePositionBundleInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type InitializePositionBundleInstructionDataArgs = {};\n\nexport function getInitializePositionBundleInstructionDataEncoder(): FixedSizeEncoder<InitializePositionBundleInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_POSITION_BUNDLE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializePositionBundleInstructionDataDecoder(): FixedSizeDecoder<InitializePositionBundleInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getInitializePositionBundleInstructionDataCodec(): FixedSizeCodec<\n  InitializePositionBundleInstructionDataArgs,\n  InitializePositionBundleInstructionData\n> {\n  return combineCodec(\n    getInitializePositionBundleInstructionDataEncoder(),\n    getInitializePositionBundleInstructionDataDecoder()\n  );\n}\n\nexport type InitializePositionBundleAsyncInput<\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleMint extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleOwner extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n> = {\n  positionBundle?: Address<TAccountPositionBundle>;\n  positionBundleMint: TransactionSigner<TAccountPositionBundleMint>;\n  positionBundleTokenAccount?: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleOwner: Address<TAccountPositionBundleOwner>;\n  funder: TransactionSigner<TAccountFunder>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n};\n\nexport async function getInitializePositionBundleInstructionAsync<\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleMint extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleOwner extends string,\n  TAccountFunder extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePositionBundleAsyncInput<\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializePositionBundleInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleMint: {\n      value: input.positionBundleMint ?? null,\n      isWritable: true,\n    },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: true,\n    },\n    positionBundleOwner: {\n      value: input.positionBundleOwner ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.positionBundle.value) {\n    accounts.positionBundle.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            112, 111, 115, 105, 116, 105, 111, 110, 95, 98, 117, 110, 100, 108,\n            101,\n          ])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleMint.value)\n        ),\n      ],\n    });\n  }\n  if (!accounts.positionBundleTokenAccount.value) {\n    accounts.positionBundleTokenAccount.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleOwner.value)\n        ),\n        getBytesEncoder().encode(\n          new Uint8Array([\n            6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235,\n            121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133,\n            126, 255, 0, 169,\n          ])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleMint.value)\n        ),\n      ],\n    });\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleMint),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleOwner),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n    ],\n    data: getInitializePositionBundleInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializePositionBundleInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >);\n}\n\nexport type InitializePositionBundleInput<\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleMint extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleOwner extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n> = {\n  positionBundle: Address<TAccountPositionBundle>;\n  positionBundleMint: TransactionSigner<TAccountPositionBundleMint>;\n  positionBundleTokenAccount: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleOwner: Address<TAccountPositionBundleOwner>;\n  funder: TransactionSigner<TAccountFunder>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n};\n\nexport function getInitializePositionBundleInstruction<\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleMint extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleOwner extends string,\n  TAccountFunder extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePositionBundleInput<\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializePositionBundleInstruction<\n  TProgramAddress,\n  TAccountPositionBundle,\n  TAccountPositionBundleMint,\n  TAccountPositionBundleTokenAccount,\n  TAccountPositionBundleOwner,\n  TAccountFunder,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountAssociatedTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleMint: {\n      value: input.positionBundleMint ?? null,\n      isWritable: true,\n    },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: true,\n    },\n    positionBundleOwner: {\n      value: input.positionBundleOwner ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleMint),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleOwner),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n    ],\n    data: getInitializePositionBundleInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializePositionBundleInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >);\n}\n\nexport type ParsedInitializePositionBundleInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionBundle: TAccountMetas[0];\n    positionBundleMint: TAccountMetas[1];\n    positionBundleTokenAccount: TAccountMetas[2];\n    positionBundleOwner: TAccountMetas[3];\n    funder: TAccountMetas[4];\n    tokenProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n    rent: TAccountMetas[7];\n    associatedTokenProgram: TAccountMetas[8];\n  };\n  data: InitializePositionBundleInstructionData;\n};\n\nexport function parseInitializePositionBundleInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializePositionBundleInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionBundle: getNextAccount(),\n      positionBundleMint: getNextAccount(),\n      positionBundleTokenAccount: getNextAccount(),\n      positionBundleOwner: getNextAccount(),\n      funder: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n    },\n    data: getInitializePositionBundleInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_POSITION_BUNDLE_WITH_METADATA_DISCRIMINATOR =\n  new Uint8Array([93, 124, 16, 179, 249, 131, 115, 245]);\n\nexport function getInitializePositionBundleWithMetadataDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_POSITION_BUNDLE_WITH_METADATA_DISCRIMINATOR\n  );\n}\n\nexport type InitializePositionBundleWithMetadataInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionBundle extends string | AccountMeta<string> = string,\n  TAccountPositionBundleMint extends string | AccountMeta<string> = string,\n  TAccountPositionBundleMetadata extends string | AccountMeta<string> = string,\n  TAccountPositionBundleTokenAccount extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountPositionBundleOwner extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountMetadataUpdateAuth extends\n    | string\n    | AccountMeta<string> = '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr',\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionBundle extends string\n        ? WritableAccount<TAccountPositionBundle>\n        : TAccountPositionBundle,\n      TAccountPositionBundleMint extends string\n        ? WritableSignerAccount<TAccountPositionBundleMint> &\n            AccountSignerMeta<TAccountPositionBundleMint>\n        : TAccountPositionBundleMint,\n      TAccountPositionBundleMetadata extends string\n        ? WritableAccount<TAccountPositionBundleMetadata>\n        : TAccountPositionBundleMetadata,\n      TAccountPositionBundleTokenAccount extends string\n        ? WritableAccount<TAccountPositionBundleTokenAccount>\n        : TAccountPositionBundleTokenAccount,\n      TAccountPositionBundleOwner extends string\n        ? ReadonlyAccount<TAccountPositionBundleOwner>\n        : TAccountPositionBundleOwner,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountMetadataUpdateAuth extends string\n        ? ReadonlyAccount<TAccountMetadataUpdateAuth>\n        : TAccountMetadataUpdateAuth,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountMetadataProgram extends string\n        ? ReadonlyAccount<TAccountMetadataProgram>\n        : TAccountMetadataProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializePositionBundleWithMetadataInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type InitializePositionBundleWithMetadataInstructionDataArgs = {};\n\nexport function getInitializePositionBundleWithMetadataInstructionDataEncoder(): FixedSizeEncoder<InitializePositionBundleWithMetadataInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_POSITION_BUNDLE_WITH_METADATA_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializePositionBundleWithMetadataInstructionDataDecoder(): FixedSizeDecoder<InitializePositionBundleWithMetadataInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getInitializePositionBundleWithMetadataInstructionDataCodec(): FixedSizeCodec<\n  InitializePositionBundleWithMetadataInstructionDataArgs,\n  InitializePositionBundleWithMetadataInstructionData\n> {\n  return combineCodec(\n    getInitializePositionBundleWithMetadataInstructionDataEncoder(),\n    getInitializePositionBundleWithMetadataInstructionDataDecoder()\n  );\n}\n\nexport type InitializePositionBundleWithMetadataAsyncInput<\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleMint extends string = string,\n  TAccountPositionBundleMetadata extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleOwner extends string = string,\n  TAccountFunder extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataProgram extends string = string,\n> = {\n  positionBundle?: Address<TAccountPositionBundle>;\n  positionBundleMint: TransactionSigner<TAccountPositionBundleMint>;\n  /** https://github.com/metaplex-foundation/metaplex-program-library/blob/773a574c4b34e5b9f248a81306ec24db064e255f/token-metadata/program/src/utils/metadata.rs#L100 */\n  positionBundleMetadata: Address<TAccountPositionBundleMetadata>;\n  positionBundleTokenAccount?: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleOwner: Address<TAccountPositionBundleOwner>;\n  funder: TransactionSigner<TAccountFunder>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataProgram?: Address<TAccountMetadataProgram>;\n};\n\nexport async function getInitializePositionBundleWithMetadataInstructionAsync<\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleMint extends string,\n  TAccountPositionBundleMetadata extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleOwner extends string,\n  TAccountFunder extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePositionBundleWithMetadataAsyncInput<\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleMetadata,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountMetadataUpdateAuth,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializePositionBundleWithMetadataInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleMetadata,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountMetadataUpdateAuth,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleMint: {\n      value: input.positionBundleMint ?? null,\n      isWritable: true,\n    },\n    positionBundleMetadata: {\n      value: input.positionBundleMetadata ?? null,\n      isWritable: true,\n    },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: true,\n    },\n    positionBundleOwner: {\n      value: input.positionBundleOwner ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.positionBundle.value) {\n    accounts.positionBundle.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([\n            112, 111, 115, 105, 116, 105, 111, 110, 95, 98, 117, 110, 100, 108,\n            101,\n          ])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleMint.value)\n        ),\n      ],\n    });\n  }\n  if (!accounts.positionBundleTokenAccount.value) {\n    accounts.positionBundleTokenAccount.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleOwner.value)\n        ),\n        getBytesEncoder().encode(\n          new Uint8Array([\n            6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235,\n            121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133,\n            126, 255, 0, 169,\n          ])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.positionBundleMint.value)\n        ),\n      ],\n    });\n  }\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataProgram.value) {\n    accounts.metadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleMint),\n      getAccountMeta(accounts.positionBundleMetadata),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleOwner),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.metadataUpdateAuth),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataProgram),\n    ],\n    data: getInitializePositionBundleWithMetadataInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as InitializePositionBundleWithMetadataInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleMetadata,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountMetadataUpdateAuth,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram\n  >);\n}\n\nexport type InitializePositionBundleWithMetadataInput<\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleMint extends string = string,\n  TAccountPositionBundleMetadata extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleOwner extends string = string,\n  TAccountFunder extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataProgram extends string = string,\n> = {\n  positionBundle: Address<TAccountPositionBundle>;\n  positionBundleMint: TransactionSigner<TAccountPositionBundleMint>;\n  /** https://github.com/metaplex-foundation/metaplex-program-library/blob/773a574c4b34e5b9f248a81306ec24db064e255f/token-metadata/program/src/utils/metadata.rs#L100 */\n  positionBundleMetadata: Address<TAccountPositionBundleMetadata>;\n  positionBundleTokenAccount: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleOwner: Address<TAccountPositionBundleOwner>;\n  funder: TransactionSigner<TAccountFunder>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataProgram?: Address<TAccountMetadataProgram>;\n};\n\nexport function getInitializePositionBundleWithMetadataInstruction<\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleMint extends string,\n  TAccountPositionBundleMetadata extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleOwner extends string,\n  TAccountFunder extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializePositionBundleWithMetadataInput<\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleMetadata,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountMetadataUpdateAuth,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializePositionBundleWithMetadataInstruction<\n  TProgramAddress,\n  TAccountPositionBundle,\n  TAccountPositionBundleMint,\n  TAccountPositionBundleMetadata,\n  TAccountPositionBundleTokenAccount,\n  TAccountPositionBundleOwner,\n  TAccountFunder,\n  TAccountMetadataUpdateAuth,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountAssociatedTokenProgram,\n  TAccountMetadataProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleMint: {\n      value: input.positionBundleMint ?? null,\n      isWritable: true,\n    },\n    positionBundleMetadata: {\n      value: input.positionBundleMetadata ?? null,\n      isWritable: true,\n    },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: true,\n    },\n    positionBundleOwner: {\n      value: input.positionBundleOwner ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataProgram.value) {\n    accounts.metadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleMint),\n      getAccountMeta(accounts.positionBundleMetadata),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleOwner),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.metadataUpdateAuth),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataProgram),\n    ],\n    data: getInitializePositionBundleWithMetadataInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as InitializePositionBundleWithMetadataInstruction<\n    TProgramAddress,\n    TAccountPositionBundle,\n    TAccountPositionBundleMint,\n    TAccountPositionBundleMetadata,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleOwner,\n    TAccountFunder,\n    TAccountMetadataUpdateAuth,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram\n  >);\n}\n\nexport type ParsedInitializePositionBundleWithMetadataInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionBundle: TAccountMetas[0];\n    positionBundleMint: TAccountMetas[1];\n    /** https://github.com/metaplex-foundation/metaplex-program-library/blob/773a574c4b34e5b9f248a81306ec24db064e255f/token-metadata/program/src/utils/metadata.rs#L100 */\n    positionBundleMetadata: TAccountMetas[2];\n    positionBundleTokenAccount: TAccountMetas[3];\n    positionBundleOwner: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    metadataUpdateAuth: TAccountMetas[6];\n    tokenProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n    rent: TAccountMetas[9];\n    associatedTokenProgram: TAccountMetas[10];\n    metadataProgram: TAccountMetas[11];\n  };\n  data: InitializePositionBundleWithMetadataInstructionData;\n};\n\nexport function parseInitializePositionBundleWithMetadataInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializePositionBundleWithMetadataInstruction<\n  TProgram,\n  TAccountMetas\n> {\n  if (instruction.accounts.length < 12) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionBundle: getNextAccount(),\n      positionBundleMint: getNextAccount(),\n      positionBundleMetadata: getNextAccount(),\n      positionBundleTokenAccount: getNextAccount(),\n      positionBundleOwner: getNextAccount(),\n      funder: getNextAccount(),\n      metadataUpdateAuth: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      metadataProgram: getNextAccount(),\n    },\n    data: getInitializePositionBundleWithMetadataInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_REWARD_DISCRIMINATOR = new Uint8Array([\n  95, 135, 192, 196, 242, 129, 230, 68,\n]);\n\nexport function getInitializeRewardDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_REWARD_DISCRIMINATOR\n  );\n}\n\nexport type InitializeRewardInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountRewardAuthority extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardMint extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountRewardAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardAuthority> &\n            AccountSignerMeta<TAccountRewardAuthority>\n        : TAccountRewardAuthority,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardMint extends string\n        ? ReadonlyAccount<TAccountRewardMint>\n        : TAccountRewardMint,\n      TAccountRewardVault extends string\n        ? WritableSignerAccount<TAccountRewardVault> &\n            AccountSignerMeta<TAccountRewardVault>\n        : TAccountRewardVault,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeRewardInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n};\n\nexport type InitializeRewardInstructionDataArgs = { rewardIndex: number };\n\nexport function getInitializeRewardInstructionDataEncoder(): FixedSizeEncoder<InitializeRewardInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_REWARD_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializeRewardInstructionDataDecoder(): FixedSizeDecoder<InitializeRewardInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getInitializeRewardInstructionDataCodec(): FixedSizeCodec<\n  InitializeRewardInstructionDataArgs,\n  InitializeRewardInstructionData\n> {\n  return combineCodec(\n    getInitializeRewardInstructionDataEncoder(),\n    getInitializeRewardInstructionDataDecoder()\n  );\n}\n\nexport type InitializeRewardInput<\n  TAccountRewardAuthority extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountRewardMint extends string = string,\n  TAccountRewardVault extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  rewardAuthority: TransactionSigner<TAccountRewardAuthority>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardMint: Address<TAccountRewardMint>;\n  rewardVault: TransactionSigner<TAccountRewardVault>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  rewardIndex: InitializeRewardInstructionDataArgs['rewardIndex'];\n};\n\nexport function getInitializeRewardInstruction<\n  TAccountRewardAuthority extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountRewardMint extends string,\n  TAccountRewardVault extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeRewardInput<\n    TAccountRewardAuthority,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountRewardMint,\n    TAccountRewardVault,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeRewardInstruction<\n  TProgramAddress,\n  TAccountRewardAuthority,\n  TAccountFunder,\n  TAccountWhirlpool,\n  TAccountRewardMint,\n  TAccountRewardVault,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    rewardAuthority: {\n      value: input.rewardAuthority ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardMint: { value: input.rewardMint ?? null, isWritable: false },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: true },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.rewardAuthority),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardMint),\n      getAccountMeta(accounts.rewardVault),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializeRewardInstructionDataEncoder().encode(\n      args as InitializeRewardInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeRewardInstruction<\n    TProgramAddress,\n    TAccountRewardAuthority,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountRewardMint,\n    TAccountRewardVault,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedInitializeRewardInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    rewardAuthority: TAccountMetas[0];\n    funder: TAccountMetas[1];\n    whirlpool: TAccountMetas[2];\n    rewardMint: TAccountMetas[3];\n    rewardVault: TAccountMetas[4];\n    tokenProgram: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n    rent: TAccountMetas[7];\n  };\n  data: InitializeRewardInstructionData;\n};\n\nexport function parseInitializeRewardInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeRewardInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      rewardAuthority: getNextAccount(),\n      funder: getNextAccount(),\n      whirlpool: getNextAccount(),\n      rewardMint: getNextAccount(),\n      rewardVault: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getInitializeRewardInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const INITIALIZE_REWARD_V2_DISCRIMINATOR = new Uint8Array([\n  91, 1, 77, 50, 235, 229, 133, 49,\n]);\n\nexport function getInitializeRewardV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_REWARD_V2_DISCRIMINATOR\n  );\n}\n\nexport type InitializeRewardV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountRewardAuthority extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardMint extends string | AccountMeta<string> = string,\n  TAccountRewardTokenBadge extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TAccountRewardTokenProgram extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountRewardAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardAuthority> &\n            AccountSignerMeta<TAccountRewardAuthority>\n        : TAccountRewardAuthority,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardMint extends string\n        ? ReadonlyAccount<TAccountRewardMint>\n        : TAccountRewardMint,\n      TAccountRewardTokenBadge extends string\n        ? ReadonlyAccount<TAccountRewardTokenBadge>\n        : TAccountRewardTokenBadge,\n      TAccountRewardVault extends string\n        ? WritableSignerAccount<TAccountRewardVault> &\n            AccountSignerMeta<TAccountRewardVault>\n        : TAccountRewardVault,\n      TAccountRewardTokenProgram extends string\n        ? ReadonlyAccount<TAccountRewardTokenProgram>\n        : TAccountRewardTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeRewardV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n};\n\nexport type InitializeRewardV2InstructionDataArgs = { rewardIndex: number };\n\nexport function getInitializeRewardV2InstructionDataEncoder(): FixedSizeEncoder<InitializeRewardV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: INITIALIZE_REWARD_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getInitializeRewardV2InstructionDataDecoder(): FixedSizeDecoder<InitializeRewardV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getInitializeRewardV2InstructionDataCodec(): FixedSizeCodec<\n  InitializeRewardV2InstructionDataArgs,\n  InitializeRewardV2InstructionData\n> {\n  return combineCodec(\n    getInitializeRewardV2InstructionDataEncoder(),\n    getInitializeRewardV2InstructionDataDecoder()\n  );\n}\n\nexport type InitializeRewardV2Input<\n  TAccountRewardAuthority extends string = string,\n  TAccountFunder extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountRewardMint extends string = string,\n  TAccountRewardTokenBadge extends string = string,\n  TAccountRewardVault extends string = string,\n  TAccountRewardTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  rewardAuthority: TransactionSigner<TAccountRewardAuthority>;\n  funder: TransactionSigner<TAccountFunder>;\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardMint: Address<TAccountRewardMint>;\n  rewardTokenBadge: Address<TAccountRewardTokenBadge>;\n  rewardVault: TransactionSigner<TAccountRewardVault>;\n  rewardTokenProgram: Address<TAccountRewardTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  rewardIndex: InitializeRewardV2InstructionDataArgs['rewardIndex'];\n};\n\nexport function getInitializeRewardV2Instruction<\n  TAccountRewardAuthority extends string,\n  TAccountFunder extends string,\n  TAccountWhirlpool extends string,\n  TAccountRewardMint extends string,\n  TAccountRewardTokenBadge extends string,\n  TAccountRewardVault extends string,\n  TAccountRewardTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeRewardV2Input<\n    TAccountRewardAuthority,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountRewardMint,\n    TAccountRewardTokenBadge,\n    TAccountRewardVault,\n    TAccountRewardTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeRewardV2Instruction<\n  TProgramAddress,\n  TAccountRewardAuthority,\n  TAccountFunder,\n  TAccountWhirlpool,\n  TAccountRewardMint,\n  TAccountRewardTokenBadge,\n  TAccountRewardVault,\n  TAccountRewardTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    rewardAuthority: {\n      value: input.rewardAuthority ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardMint: { value: input.rewardMint ?? null, isWritable: false },\n    rewardTokenBadge: {\n      value: input.rewardTokenBadge ?? null,\n      isWritable: false,\n    },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: true },\n    rewardTokenProgram: {\n      value: input.rewardTokenProgram ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.rewardAuthority),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardMint),\n      getAccountMeta(accounts.rewardTokenBadge),\n      getAccountMeta(accounts.rewardVault),\n      getAccountMeta(accounts.rewardTokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getInitializeRewardV2InstructionDataEncoder().encode(\n      args as InitializeRewardV2InstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeRewardV2Instruction<\n    TProgramAddress,\n    TAccountRewardAuthority,\n    TAccountFunder,\n    TAccountWhirlpool,\n    TAccountRewardMint,\n    TAccountRewardTokenBadge,\n    TAccountRewardVault,\n    TAccountRewardTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedInitializeRewardV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    rewardAuthority: TAccountMetas[0];\n    funder: TAccountMetas[1];\n    whirlpool: TAccountMetas[2];\n    rewardMint: TAccountMetas[3];\n    rewardTokenBadge: TAccountMetas[4];\n    rewardVault: TAccountMetas[5];\n    rewardTokenProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n    rent: TAccountMetas[8];\n  };\n  data: InitializeRewardV2InstructionData;\n};\n\nexport function parseInitializeRewardV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeRewardV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      rewardAuthority: getNextAccount(),\n      funder: getNextAccount(),\n      whirlpool: getNextAccount(),\n      rewardMint: getNextAccount(),\n      rewardTokenBadge: getNextAccount(),\n      rewardVault: getNextAccount(),\n      rewardTokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getInitializeRewardV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  expectSome,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_TICK_ARRAY_DISCRIMINATOR = new Uint8Array([\n  11, 188, 193, 214, 141, 91, 149, 184,\n]);\n\nexport function getInitializeTickArrayDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_TICK_ARRAY_DISCRIMINATOR\n  );\n}\n\nexport type InitializeTickArrayInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountTickArray extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountTickArray extends string\n        ? WritableAccount<TAccountTickArray>\n        : TAccountTickArray,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeTickArrayInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  startTickIndex: number;\n};\n\nexport type InitializeTickArrayInstructionDataArgs = { startTickIndex: number };\n\nexport function getInitializeTickArrayInstructionDataEncoder(): FixedSizeEncoder<InitializeTickArrayInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['startTickIndex', getI32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_TICK_ARRAY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializeTickArrayInstructionDataDecoder(): FixedSizeDecoder<InitializeTickArrayInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['startTickIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getInitializeTickArrayInstructionDataCodec(): FixedSizeCodec<\n  InitializeTickArrayInstructionDataArgs,\n  InitializeTickArrayInstructionData\n> {\n  return combineCodec(\n    getInitializeTickArrayInstructionDataEncoder(),\n    getInitializeTickArrayInstructionDataDecoder()\n  );\n}\n\nexport type InitializeTickArrayAsyncInput<\n  TAccountWhirlpool extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTickArray extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  funder: TransactionSigner<TAccountFunder>;\n  tickArray?: Address<TAccountTickArray>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  startTickIndex: InitializeTickArrayInstructionDataArgs['startTickIndex'];\n};\n\nexport async function getInitializeTickArrayInstructionAsync<\n  TAccountWhirlpool extends string,\n  TAccountFunder extends string,\n  TAccountTickArray extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeTickArrayAsyncInput<\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tickArray: { value: input.tickArray ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tickArray.value) {\n    accounts.tickArray.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 105, 99, 107, 95, 97, 114, 114, 97, 121])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpool.value)),\n        getI32Encoder().encode(expectSome(args.startTickIndex)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tickArray),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeTickArrayInstructionDataEncoder().encode(\n      args as InitializeTickArrayInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeTickArrayInput<\n  TAccountWhirlpool extends string = string,\n  TAccountFunder extends string = string,\n  TAccountTickArray extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  funder: TransactionSigner<TAccountFunder>;\n  tickArray: Address<TAccountTickArray>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  startTickIndex: InitializeTickArrayInstructionDataArgs['startTickIndex'];\n};\n\nexport function getInitializeTickArrayInstruction<\n  TAccountWhirlpool extends string,\n  TAccountFunder extends string,\n  TAccountTickArray extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeTickArrayInput<\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeTickArrayInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountFunder,\n  TAccountTickArray,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    tickArray: { value: input.tickArray ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.tickArray),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeTickArrayInstructionDataEncoder().encode(\n      args as InitializeTickArrayInstructionDataArgs\n    ),\n    programAddress,\n  } as InitializeTickArrayInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountTickArray,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeTickArrayInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    funder: TAccountMetas[1];\n    tickArray: TAccountMetas[2];\n    systemProgram: TAccountMetas[3];\n  };\n  data: InitializeTickArrayInstructionData;\n};\n\nexport function parseInitializeTickArrayInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeTickArrayInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      funder: getNextAccount(),\n      tickArray: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeTickArrayInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const INITIALIZE_TOKEN_BADGE_DISCRIMINATOR = new Uint8Array([\n  253, 77, 205, 95, 27, 224, 89, 223,\n]);\n\nexport function getInitializeTokenBadgeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    INITIALIZE_TOKEN_BADGE_DISCRIMINATOR\n  );\n}\n\nexport type InitializeTokenBadgeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfigExtension extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenBadgeAuthority extends string | AccountMeta<string> = string,\n  TAccountTokenMint extends string | AccountMeta<string> = string,\n  TAccountTokenBadge extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpoolsConfigExtension extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfigExtension>\n        : TAccountWhirlpoolsConfigExtension,\n      TAccountTokenBadgeAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenBadgeAuthority> &\n            AccountSignerMeta<TAccountTokenBadgeAuthority>\n        : TAccountTokenBadgeAuthority,\n      TAccountTokenMint extends string\n        ? ReadonlyAccount<TAccountTokenMint>\n        : TAccountTokenMint,\n      TAccountTokenBadge extends string\n        ? WritableAccount<TAccountTokenBadge>\n        : TAccountTokenBadge,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type InitializeTokenBadgeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type InitializeTokenBadgeInstructionDataArgs = {};\n\nexport function getInitializeTokenBadgeInstructionDataEncoder(): FixedSizeEncoder<InitializeTokenBadgeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: INITIALIZE_TOKEN_BADGE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getInitializeTokenBadgeInstructionDataDecoder(): FixedSizeDecoder<InitializeTokenBadgeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getInitializeTokenBadgeInstructionDataCodec(): FixedSizeCodec<\n  InitializeTokenBadgeInstructionDataArgs,\n  InitializeTokenBadgeInstructionData\n> {\n  return combineCodec(\n    getInitializeTokenBadgeInstructionDataEncoder(),\n    getInitializeTokenBadgeInstructionDataDecoder()\n  );\n}\n\nexport type InitializeTokenBadgeAsyncInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountTokenBadgeAuthority extends string = string,\n  TAccountTokenMint extends string = string,\n  TAccountTokenBadge extends string = string,\n  TAccountFunder extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  tokenBadgeAuthority: TransactionSigner<TAccountTokenBadgeAuthority>;\n  tokenMint: Address<TAccountTokenMint>;\n  tokenBadge?: Address<TAccountTokenBadge>;\n  funder: TransactionSigner<TAccountFunder>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport async function getInitializeTokenBadgeInstructionAsync<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountTokenBadgeAuthority extends string,\n  TAccountTokenMint extends string,\n  TAccountTokenBadge extends string,\n  TAccountFunder extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeTokenBadgeAsyncInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountFunder,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  InitializeTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountFunder,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: false,\n    },\n    tokenBadgeAuthority: {\n      value: input.tokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n    tokenBadge: { value: input.tokenBadge ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.tokenBadge.value) {\n    accounts.tokenBadge.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([116, 111, 107, 101, 110, 95, 98, 97, 100, 103, 101])\n        ),\n        getAddressEncoder().encode(\n          expectAddress(accounts.whirlpoolsConfig.value)\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.tokenMint.value)),\n      ],\n    });\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.tokenBadgeAuthority),\n      getAccountMeta(accounts.tokenMint),\n      getAccountMeta(accounts.tokenBadge),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeTokenBadgeInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializeTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountFunder,\n    TAccountSystemProgram\n  >);\n}\n\nexport type InitializeTokenBadgeInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountTokenBadgeAuthority extends string = string,\n  TAccountTokenMint extends string = string,\n  TAccountTokenBadge extends string = string,\n  TAccountFunder extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  tokenBadgeAuthority: TransactionSigner<TAccountTokenBadgeAuthority>;\n  tokenMint: Address<TAccountTokenMint>;\n  tokenBadge: Address<TAccountTokenBadge>;\n  funder: TransactionSigner<TAccountFunder>;\n  systemProgram?: Address<TAccountSystemProgram>;\n};\n\nexport function getInitializeTokenBadgeInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountTokenBadgeAuthority extends string,\n  TAccountTokenMint extends string,\n  TAccountTokenBadge extends string,\n  TAccountFunder extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: InitializeTokenBadgeInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountFunder,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): InitializeTokenBadgeInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpoolsConfigExtension,\n  TAccountTokenBadgeAuthority,\n  TAccountTokenMint,\n  TAccountTokenBadge,\n  TAccountFunder,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: false,\n    },\n    tokenBadgeAuthority: {\n      value: input.tokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n    tokenBadge: { value: input.tokenBadge ?? null, isWritable: true },\n    funder: { value: input.funder ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.tokenBadgeAuthority),\n      getAccountMeta(accounts.tokenMint),\n      getAccountMeta(accounts.tokenBadge),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getInitializeTokenBadgeInstructionDataEncoder().encode({}),\n    programAddress,\n  } as InitializeTokenBadgeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge,\n    TAccountFunder,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedInitializeTokenBadgeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpoolsConfigExtension: TAccountMetas[1];\n    tokenBadgeAuthority: TAccountMetas[2];\n    tokenMint: TAccountMetas[3];\n    tokenBadge: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n  };\n  data: InitializeTokenBadgeInstructionData;\n};\n\nexport function parseInitializeTokenBadgeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedInitializeTokenBadgeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 7) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpoolsConfigExtension: getNextAccount(),\n      tokenBadgeAuthority: getNextAccount(),\n      tokenMint: getNextAccount(),\n      tokenBadge: getNextAccount(),\n      funder: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getInitializeTokenBadgeInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getLockTypeDecoder,\n  getLockTypeEncoder,\n  type LockType,\n  type LockTypeArgs,\n} from '../types';\n\nexport const LOCK_POSITION_DISCRIMINATOR = new Uint8Array([\n  227, 62, 2, 252, 247, 10, 171, 185,\n]);\n\nexport function getLockPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    LOCK_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type LockPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountLockConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountToken2022Program extends\n    | string\n    | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountPosition extends string\n        ? ReadonlyAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? ReadonlyAccount<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountLockConfig extends string\n        ? WritableAccount<TAccountLockConfig>\n        : TAccountLockConfig,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountToken2022Program extends string\n        ? ReadonlyAccount<TAccountToken2022Program>\n        : TAccountToken2022Program,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type LockPositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  lockType: LockType;\n};\n\nexport type LockPositionInstructionDataArgs = { lockType: LockTypeArgs };\n\nexport function getLockPositionInstructionDataEncoder(): FixedSizeEncoder<LockPositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['lockType', getLockTypeEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: LOCK_POSITION_DISCRIMINATOR })\n  );\n}\n\nexport function getLockPositionInstructionDataDecoder(): FixedSizeDecoder<LockPositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['lockType', getLockTypeDecoder()],\n  ]);\n}\n\nexport function getLockPositionInstructionDataCodec(): FixedSizeCodec<\n  LockPositionInstructionDataArgs,\n  LockPositionInstructionData\n> {\n  return combineCodec(\n    getLockPositionInstructionDataEncoder(),\n    getLockPositionInstructionDataDecoder()\n  );\n}\n\nexport type LockPositionAsyncInput<\n  TAccountFunder extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountLockConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountToken2022Program extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position?: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  lockConfig?: Address<TAccountLockConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  token2022Program?: Address<TAccountToken2022Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  lockType: LockPositionInstructionDataArgs['lockType'];\n};\n\nexport async function getLockPositionInstructionAsync<\n  TAccountFunder extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountLockConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountToken2022Program extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: LockPositionAsyncInput<\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountLockConfig,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  LockPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountLockConfig,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: false },\n    positionMint: { value: input.positionMint ?? null, isWritable: false },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    lockConfig: { value: input.lockConfig ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.lockConfig.value) {\n    accounts.lockConfig.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([108, 111, 99, 107, 95, 99, 111, 110, 102, 105, 103])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.position.value)),\n      ],\n    });\n  }\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.lockConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.token2022Program),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getLockPositionInstructionDataEncoder().encode(\n      args as LockPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as LockPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountLockConfig,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram\n  >);\n}\n\nexport type LockPositionInput<\n  TAccountFunder extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountLockConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountToken2022Program extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  position: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  lockConfig: Address<TAccountLockConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  token2022Program?: Address<TAccountToken2022Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  lockType: LockPositionInstructionDataArgs['lockType'];\n};\n\nexport function getLockPositionInstruction<\n  TAccountFunder extends string,\n  TAccountPositionAuthority extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountLockConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountToken2022Program extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: LockPositionInput<\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountLockConfig,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): LockPositionInstruction<\n  TProgramAddress,\n  TAccountFunder,\n  TAccountPositionAuthority,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountLockConfig,\n  TAccountWhirlpool,\n  TAccountToken2022Program,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    position: { value: input.position ?? null, isWritable: false },\n    positionMint: { value: input.positionMint ?? null, isWritable: false },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    lockConfig: { value: input.lockConfig ?? null, isWritable: true },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.lockConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.token2022Program),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getLockPositionInstructionDataEncoder().encode(\n      args as LockPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as LockPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountLockConfig,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedLockPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    funder: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    lockConfig: TAccountMetas[5];\n    whirlpool: TAccountMetas[6];\n    token2022Program: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n  };\n  data: LockPositionInstructionData;\n};\n\nexport function parseLockPositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedLockPositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 9) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      funder: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      lockConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      token2022Program: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getLockPositionInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyUint8Array,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const MIGRATE_REPURPOSE_REWARD_AUTHORITY_SPACE_DISCRIMINATOR =\n  new Uint8Array([214, 161, 248, 79, 152, 98, 172, 231]);\n\nexport function getMigrateRepurposeRewardAuthoritySpaceDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    MIGRATE_REPURPOSE_REWARD_AUTHORITY_SPACE_DISCRIMINATOR\n  );\n}\n\nexport type MigrateRepurposeRewardAuthoritySpaceInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type MigrateRepurposeRewardAuthoritySpaceInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type MigrateRepurposeRewardAuthoritySpaceInstructionDataArgs = {};\n\nexport function getMigrateRepurposeRewardAuthoritySpaceInstructionDataEncoder(): FixedSizeEncoder<MigrateRepurposeRewardAuthoritySpaceInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: MIGRATE_REPURPOSE_REWARD_AUTHORITY_SPACE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getMigrateRepurposeRewardAuthoritySpaceInstructionDataDecoder(): FixedSizeDecoder<MigrateRepurposeRewardAuthoritySpaceInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getMigrateRepurposeRewardAuthoritySpaceInstructionDataCodec(): FixedSizeCodec<\n  MigrateRepurposeRewardAuthoritySpaceInstructionDataArgs,\n  MigrateRepurposeRewardAuthoritySpaceInstructionData\n> {\n  return combineCodec(\n    getMigrateRepurposeRewardAuthoritySpaceInstructionDataEncoder(),\n    getMigrateRepurposeRewardAuthoritySpaceInstructionDataDecoder()\n  );\n}\n\nexport type MigrateRepurposeRewardAuthoritySpaceInput<\n  TAccountWhirlpool extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n};\n\nexport function getMigrateRepurposeRewardAuthoritySpaceInstruction<\n  TAccountWhirlpool extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: MigrateRepurposeRewardAuthoritySpaceInput<TAccountWhirlpool>,\n  config?: { programAddress?: TProgramAddress }\n): MigrateRepurposeRewardAuthoritySpaceInstruction<\n  TProgramAddress,\n  TAccountWhirlpool\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [getAccountMeta(accounts.whirlpool)],\n    data: getMigrateRepurposeRewardAuthoritySpaceInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as MigrateRepurposeRewardAuthoritySpaceInstruction<\n    TProgramAddress,\n    TAccountWhirlpool\n  >);\n}\n\nexport type ParsedMigrateRepurposeRewardAuthoritySpaceInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n  };\n  data: MigrateRepurposeRewardAuthoritySpaceInstructionData;\n};\n\nexport function parseMigrateRepurposeRewardAuthoritySpaceInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedMigrateRepurposeRewardAuthoritySpaceInstruction<\n  TProgram,\n  TAccountMetas\n> {\n  if (instruction.accounts.length < 1) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: { whirlpool: getNextAccount() },\n    data: getMigrateRepurposeRewardAuthoritySpaceInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const OPEN_BUNDLED_POSITION_DISCRIMINATOR = new Uint8Array([\n  169, 113, 126, 171, 213, 172, 212, 49,\n]);\n\nexport function getOpenBundledPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    OPEN_BUNDLED_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type OpenBundledPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountBundledPosition extends string | AccountMeta<string> = string,\n  TAccountPositionBundle extends string | AccountMeta<string> = string,\n  TAccountPositionBundleTokenAccount extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountPositionBundleAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountBundledPosition extends string\n        ? WritableAccount<TAccountBundledPosition>\n        : TAccountBundledPosition,\n      TAccountPositionBundle extends string\n        ? WritableAccount<TAccountPositionBundle>\n        : TAccountPositionBundle,\n      TAccountPositionBundleTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionBundleTokenAccount>\n        : TAccountPositionBundleTokenAccount,\n      TAccountPositionBundleAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionBundleAuthority> &\n            AccountSignerMeta<TAccountPositionBundleAuthority>\n        : TAccountPositionBundleAuthority,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type OpenBundledPositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  bundleIndex: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport type OpenBundledPositionInstructionDataArgs = {\n  bundleIndex: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport function getOpenBundledPositionInstructionDataEncoder(): FixedSizeEncoder<OpenBundledPositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['bundleIndex', getU16Encoder()],\n      ['tickLowerIndex', getI32Encoder()],\n      ['tickUpperIndex', getI32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: OPEN_BUNDLED_POSITION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getOpenBundledPositionInstructionDataDecoder(): FixedSizeDecoder<OpenBundledPositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['bundleIndex', getU16Decoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getOpenBundledPositionInstructionDataCodec(): FixedSizeCodec<\n  OpenBundledPositionInstructionDataArgs,\n  OpenBundledPositionInstructionData\n> {\n  return combineCodec(\n    getOpenBundledPositionInstructionDataEncoder(),\n    getOpenBundledPositionInstructionDataDecoder()\n  );\n}\n\nexport type OpenBundledPositionInput<\n  TAccountBundledPosition extends string = string,\n  TAccountPositionBundle extends string = string,\n  TAccountPositionBundleTokenAccount extends string = string,\n  TAccountPositionBundleAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountFunder extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n> = {\n  bundledPosition: Address<TAccountBundledPosition>;\n  positionBundle: Address<TAccountPositionBundle>;\n  positionBundleTokenAccount: Address<TAccountPositionBundleTokenAccount>;\n  positionBundleAuthority: TransactionSigner<TAccountPositionBundleAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  funder: TransactionSigner<TAccountFunder>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  bundleIndex: OpenBundledPositionInstructionDataArgs['bundleIndex'];\n  tickLowerIndex: OpenBundledPositionInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenBundledPositionInstructionDataArgs['tickUpperIndex'];\n};\n\nexport function getOpenBundledPositionInstruction<\n  TAccountBundledPosition extends string,\n  TAccountPositionBundle extends string,\n  TAccountPositionBundleTokenAccount extends string,\n  TAccountPositionBundleAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountFunder extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenBundledPositionInput<\n    TAccountBundledPosition,\n    TAccountPositionBundle,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleAuthority,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountSystemProgram,\n    TAccountRent\n  >,\n  config?: { programAddress?: TProgramAddress }\n): OpenBundledPositionInstruction<\n  TProgramAddress,\n  TAccountBundledPosition,\n  TAccountPositionBundle,\n  TAccountPositionBundleTokenAccount,\n  TAccountPositionBundleAuthority,\n  TAccountWhirlpool,\n  TAccountFunder,\n  TAccountSystemProgram,\n  TAccountRent\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    bundledPosition: { value: input.bundledPosition ?? null, isWritable: true },\n    positionBundle: { value: input.positionBundle ?? null, isWritable: true },\n    positionBundleTokenAccount: {\n      value: input.positionBundleTokenAccount ?? null,\n      isWritable: false,\n    },\n    positionBundleAuthority: {\n      value: input.positionBundleAuthority ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    funder: { value: input.funder ?? null, isWritable: true },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.bundledPosition),\n      getAccountMeta(accounts.positionBundle),\n      getAccountMeta(accounts.positionBundleTokenAccount),\n      getAccountMeta(accounts.positionBundleAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n    ],\n    data: getOpenBundledPositionInstructionDataEncoder().encode(\n      args as OpenBundledPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenBundledPositionInstruction<\n    TProgramAddress,\n    TAccountBundledPosition,\n    TAccountPositionBundle,\n    TAccountPositionBundleTokenAccount,\n    TAccountPositionBundleAuthority,\n    TAccountWhirlpool,\n    TAccountFunder,\n    TAccountSystemProgram,\n    TAccountRent\n  >);\n}\n\nexport type ParsedOpenBundledPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    bundledPosition: TAccountMetas[0];\n    positionBundle: TAccountMetas[1];\n    positionBundleTokenAccount: TAccountMetas[2];\n    positionBundleAuthority: TAccountMetas[3];\n    whirlpool: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    systemProgram: TAccountMetas[6];\n    rent: TAccountMetas[7];\n  };\n  data: OpenBundledPositionInstructionData;\n};\n\nexport function parseOpenBundledPositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenBundledPositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      bundledPosition: getNextAccount(),\n      positionBundle: getNextAccount(),\n      positionBundleTokenAccount: getNextAccount(),\n      positionBundleAuthority: getNextAccount(),\n      whirlpool: getNextAccount(),\n      funder: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n    },\n    data: getOpenBundledPositionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const OPEN_POSITION_DISCRIMINATOR = new Uint8Array([\n  135, 128, 47, 77, 15, 152, 240, 49,\n]);\n\nexport function getOpenPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    OPEN_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type OpenPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountOwner extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountOwner extends string\n        ? ReadonlyAccount<TAccountOwner>\n        : TAccountOwner,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? WritableSignerAccount<TAccountPositionMint> &\n            AccountSignerMeta<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type OpenPositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  positionBump: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport type OpenPositionInstructionDataArgs = {\n  positionBump: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport function getOpenPositionInstructionDataEncoder(): FixedSizeEncoder<OpenPositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['positionBump', getU8Encoder()],\n      ['tickLowerIndex', getI32Encoder()],\n      ['tickUpperIndex', getI32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: OPEN_POSITION_DISCRIMINATOR })\n  );\n}\n\nexport function getOpenPositionInstructionDataDecoder(): FixedSizeDecoder<OpenPositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['positionBump', getU8Decoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getOpenPositionInstructionDataCodec(): FixedSizeCodec<\n  OpenPositionInstructionDataArgs,\n  OpenPositionInstructionData\n> {\n  return combineCodec(\n    getOpenPositionInstructionDataEncoder(),\n    getOpenPositionInstructionDataDecoder()\n  );\n}\n\nexport type OpenPositionAsyncInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position?: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  positionTokenAccount?: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  positionBump: OpenPositionInstructionDataArgs['positionBump'];\n  tickLowerIndex: OpenPositionInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionInstructionDataArgs['tickUpperIndex'];\n};\n\nexport async function getOpenPositionInstructionAsync<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionAsyncInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  OpenPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.positionTokenAccount.value) {\n    accounts.positionTokenAccount.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n        getBytesEncoder().encode(\n          new Uint8Array([\n            6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235,\n            121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133,\n            126, 255, 0, 169,\n          ])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n    ],\n    data: getOpenPositionInstructionDataEncoder().encode(\n      args as OpenPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >);\n}\n\nexport type OpenPositionInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  positionBump: OpenPositionInstructionDataArgs['positionBump'];\n  tickLowerIndex: OpenPositionInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionInstructionDataArgs['tickUpperIndex'];\n};\n\nexport function getOpenPositionInstruction<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): OpenPositionInstruction<\n  TProgramAddress,\n  TAccountFunder,\n  TAccountOwner,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountWhirlpool,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountAssociatedTokenProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n    ],\n    data: getOpenPositionInstructionDataEncoder().encode(\n      args as OpenPositionInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram\n  >);\n}\n\nexport type ParsedOpenPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    funder: TAccountMetas[0];\n    owner: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    whirlpool: TAccountMetas[5];\n    tokenProgram: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n    rent: TAccountMetas[8];\n    associatedTokenProgram: TAccountMetas[9];\n  };\n  data: OpenPositionInstructionData;\n};\n\nexport function parseOpenPositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenPositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      funder: getNextAccount(),\n      owner: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n    },\n    data: getOpenPositionInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const OPEN_POSITION_WITH_METADATA_DISCRIMINATOR = new Uint8Array([\n  242, 29, 134, 48, 58, 110, 14, 60,\n]);\n\nexport function getOpenPositionWithMetadataDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    OPEN_POSITION_WITH_METADATA_DISCRIMINATOR\n  );\n}\n\nexport type OpenPositionWithMetadataInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountOwner extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionMetadataAccount extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountRent extends\n    | string\n    | AccountMeta<string> = 'SysvarRent111111111111111111111111111111111',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountMetadataProgram extends\n    | string\n    | AccountMeta<string> = 'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s',\n  TAccountMetadataUpdateAuth extends\n    | string\n    | AccountMeta<string> = '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountOwner extends string\n        ? ReadonlyAccount<TAccountOwner>\n        : TAccountOwner,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? WritableSignerAccount<TAccountPositionMint> &\n            AccountSignerMeta<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionMetadataAccount extends string\n        ? WritableAccount<TAccountPositionMetadataAccount>\n        : TAccountPositionMetadataAccount,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountRent extends string\n        ? ReadonlyAccount<TAccountRent>\n        : TAccountRent,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountMetadataProgram extends string\n        ? ReadonlyAccount<TAccountMetadataProgram>\n        : TAccountMetadataProgram,\n      TAccountMetadataUpdateAuth extends string\n        ? ReadonlyAccount<TAccountMetadataUpdateAuth>\n        : TAccountMetadataUpdateAuth,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type OpenPositionWithMetadataInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  positionBump: number;\n  metadataBump: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport type OpenPositionWithMetadataInstructionDataArgs = {\n  positionBump: number;\n  metadataBump: number;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n};\n\nexport function getOpenPositionWithMetadataInstructionDataEncoder(): FixedSizeEncoder<OpenPositionWithMetadataInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['positionBump', getU8Encoder()],\n      ['metadataBump', getU8Encoder()],\n      ['tickLowerIndex', getI32Encoder()],\n      ['tickUpperIndex', getI32Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: OPEN_POSITION_WITH_METADATA_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getOpenPositionWithMetadataInstructionDataDecoder(): FixedSizeDecoder<OpenPositionWithMetadataInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['positionBump', getU8Decoder()],\n    ['metadataBump', getU8Decoder()],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getOpenPositionWithMetadataInstructionDataCodec(): FixedSizeCodec<\n  OpenPositionWithMetadataInstructionDataArgs,\n  OpenPositionWithMetadataInstructionData\n> {\n  return combineCodec(\n    getOpenPositionWithMetadataInstructionDataEncoder(),\n    getOpenPositionWithMetadataInstructionDataDecoder()\n  );\n}\n\nexport type OpenPositionWithMetadataAsyncInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionMetadataAccount extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataProgram extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position?: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  /** https://github.com/metaplex-foundation/mpl-token-metadata/blob/master/programs/token-metadata/program/src/utils/metadata.rs#L78 */\n  positionMetadataAccount: Address<TAccountPositionMetadataAccount>;\n  positionTokenAccount?: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataProgram?: Address<TAccountMetadataProgram>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  positionBump: OpenPositionWithMetadataInstructionDataArgs['positionBump'];\n  metadataBump: OpenPositionWithMetadataInstructionDataArgs['metadataBump'];\n  tickLowerIndex: OpenPositionWithMetadataInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionWithMetadataInstructionDataArgs['tickUpperIndex'];\n};\n\nexport async function getOpenPositionWithMetadataInstructionAsync<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionMetadataAccount extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataProgram extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionWithMetadataAsyncInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionMetadataAccount,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram,\n    TAccountMetadataUpdateAuth\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  OpenPositionWithMetadataInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionMetadataAccount,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram,\n    TAccountMetadataUpdateAuth\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionMetadataAccount: {\n      value: input.positionMetadataAccount ?? null,\n      isWritable: true,\n    },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.positionTokenAccount.value) {\n    accounts.positionTokenAccount.value = await getProgramDerivedAddress({\n      programAddress:\n        'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>,\n      seeds: [\n        getAddressEncoder().encode(expectAddress(accounts.owner.value)),\n        getBytesEncoder().encode(\n          new Uint8Array([\n            6, 221, 246, 225, 215, 101, 161, 147, 217, 203, 225, 70, 206, 235,\n            121, 172, 28, 180, 133, 237, 95, 91, 55, 145, 58, 140, 245, 133,\n            126, 255, 0, 169,\n          ])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataProgram.value) {\n    accounts.metadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionMetadataAccount),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataProgram),\n      getAccountMeta(accounts.metadataUpdateAuth),\n    ],\n    data: getOpenPositionWithMetadataInstructionDataEncoder().encode(\n      args as OpenPositionWithMetadataInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionWithMetadataInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionMetadataAccount,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram,\n    TAccountMetadataUpdateAuth\n  >);\n}\n\nexport type OpenPositionWithMetadataInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionMetadataAccount extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgram extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountRent extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataProgram extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  /** https://github.com/metaplex-foundation/mpl-token-metadata/blob/master/programs/token-metadata/program/src/utils/metadata.rs#L78 */\n  positionMetadataAccount: Address<TAccountPositionMetadataAccount>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgram?: Address<TAccountTokenProgram>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  rent?: Address<TAccountRent>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataProgram?: Address<TAccountMetadataProgram>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  positionBump: OpenPositionWithMetadataInstructionDataArgs['positionBump'];\n  metadataBump: OpenPositionWithMetadataInstructionDataArgs['metadataBump'];\n  tickLowerIndex: OpenPositionWithMetadataInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionWithMetadataInstructionDataArgs['tickUpperIndex'];\n};\n\nexport function getOpenPositionWithMetadataInstruction<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionMetadataAccount extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenProgram extends string,\n  TAccountSystemProgram extends string,\n  TAccountRent extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataProgram extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionWithMetadataInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionMetadataAccount,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram,\n    TAccountMetadataUpdateAuth\n  >,\n  config?: { programAddress?: TProgramAddress }\n): OpenPositionWithMetadataInstruction<\n  TProgramAddress,\n  TAccountFunder,\n  TAccountOwner,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionMetadataAccount,\n  TAccountPositionTokenAccount,\n  TAccountWhirlpool,\n  TAccountTokenProgram,\n  TAccountSystemProgram,\n  TAccountRent,\n  TAccountAssociatedTokenProgram,\n  TAccountMetadataProgram,\n  TAccountMetadataUpdateAuth\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionMetadataAccount: {\n      value: input.positionMetadataAccount ?? null,\n      isWritable: true,\n    },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    rent: { value: input.rent ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataProgram: {\n      value: input.metadataProgram ?? null,\n      isWritable: false,\n    },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.rent.value) {\n    accounts.rent.value =\n      'SysvarRent111111111111111111111111111111111' as Address<'SysvarRent111111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataProgram.value) {\n    accounts.metadataProgram.value =\n      'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s' as Address<'metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s'>;\n  }\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionMetadataAccount),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.rent),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataProgram),\n      getAccountMeta(accounts.metadataUpdateAuth),\n    ],\n    data: getOpenPositionWithMetadataInstructionDataEncoder().encode(\n      args as OpenPositionWithMetadataInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionWithMetadataInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionMetadataAccount,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountTokenProgram,\n    TAccountSystemProgram,\n    TAccountRent,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataProgram,\n    TAccountMetadataUpdateAuth\n  >);\n}\n\nexport type ParsedOpenPositionWithMetadataInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    funder: TAccountMetas[0];\n    owner: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    /** https://github.com/metaplex-foundation/mpl-token-metadata/blob/master/programs/token-metadata/program/src/utils/metadata.rs#L78 */\n    positionMetadataAccount: TAccountMetas[4];\n    positionTokenAccount: TAccountMetas[5];\n    whirlpool: TAccountMetas[6];\n    tokenProgram: TAccountMetas[7];\n    systemProgram: TAccountMetas[8];\n    rent: TAccountMetas[9];\n    associatedTokenProgram: TAccountMetas[10];\n    metadataProgram: TAccountMetas[11];\n    metadataUpdateAuth: TAccountMetas[12];\n  };\n  data: OpenPositionWithMetadataInstructionData;\n};\n\nexport function parseOpenPositionWithMetadataInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenPositionWithMetadataInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 13) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      funder: getNextAccount(),\n      owner: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionMetadataAccount: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenProgram: getNextAccount(),\n      systemProgram: getNextAccount(),\n      rent: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      metadataProgram: getNextAccount(),\n      metadataUpdateAuth: getNextAccount(),\n    },\n    data: getOpenPositionWithMetadataInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const OPEN_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR = new Uint8Array(\n  [212, 47, 95, 92, 114, 102, 131, 250]\n);\n\nexport function getOpenPositionWithTokenExtensionsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    OPEN_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR\n  );\n}\n\nexport type OpenPositionWithTokenExtensionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountOwner extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountToken2022Program extends\n    | string\n    | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TAccountAssociatedTokenProgram extends\n    | string\n    | AccountMeta<string> = 'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL',\n  TAccountMetadataUpdateAuth extends\n    | string\n    | AccountMeta<string> = '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountOwner extends string\n        ? ReadonlyAccount<TAccountOwner>\n        : TAccountOwner,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? WritableSignerAccount<TAccountPositionMint> &\n            AccountSignerMeta<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountToken2022Program extends string\n        ? ReadonlyAccount<TAccountToken2022Program>\n        : TAccountToken2022Program,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      TAccountAssociatedTokenProgram extends string\n        ? ReadonlyAccount<TAccountAssociatedTokenProgram>\n        : TAccountAssociatedTokenProgram,\n      TAccountMetadataUpdateAuth extends string\n        ? ReadonlyAccount<TAccountMetadataUpdateAuth>\n        : TAccountMetadataUpdateAuth,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type OpenPositionWithTokenExtensionsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  withTokenMetadataExtension: boolean;\n};\n\nexport type OpenPositionWithTokenExtensionsInstructionDataArgs = {\n  tickLowerIndex: number;\n  tickUpperIndex: number;\n  withTokenMetadataExtension: boolean;\n};\n\nexport function getOpenPositionWithTokenExtensionsInstructionDataEncoder(): FixedSizeEncoder<OpenPositionWithTokenExtensionsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['tickLowerIndex', getI32Encoder()],\n      ['tickUpperIndex', getI32Encoder()],\n      ['withTokenMetadataExtension', getBooleanEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: OPEN_POSITION_WITH_TOKEN_EXTENSIONS_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getOpenPositionWithTokenExtensionsInstructionDataDecoder(): FixedSizeDecoder<OpenPositionWithTokenExtensionsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['tickLowerIndex', getI32Decoder()],\n    ['tickUpperIndex', getI32Decoder()],\n    ['withTokenMetadataExtension', getBooleanDecoder()],\n  ]);\n}\n\nexport function getOpenPositionWithTokenExtensionsInstructionDataCodec(): FixedSizeCodec<\n  OpenPositionWithTokenExtensionsInstructionDataArgs,\n  OpenPositionWithTokenExtensionsInstructionData\n> {\n  return combineCodec(\n    getOpenPositionWithTokenExtensionsInstructionDataEncoder(),\n    getOpenPositionWithTokenExtensionsInstructionDataDecoder()\n  );\n}\n\nexport type OpenPositionWithTokenExtensionsAsyncInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountToken2022Program extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position?: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  token2022Program?: Address<TAccountToken2022Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  tickLowerIndex: OpenPositionWithTokenExtensionsInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionWithTokenExtensionsInstructionDataArgs['tickUpperIndex'];\n  withTokenMetadataExtension: OpenPositionWithTokenExtensionsInstructionDataArgs['withTokenMetadataExtension'];\n};\n\nexport async function getOpenPositionWithTokenExtensionsInstructionAsync<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountToken2022Program extends string,\n  TAccountSystemProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionWithTokenExtensionsAsyncInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataUpdateAuth\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  OpenPositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataUpdateAuth\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.token2022Program),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataUpdateAuth),\n    ],\n    data: getOpenPositionWithTokenExtensionsInstructionDataEncoder().encode(\n      args as OpenPositionWithTokenExtensionsInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataUpdateAuth\n  >);\n}\n\nexport type OpenPositionWithTokenExtensionsInput<\n  TAccountFunder extends string = string,\n  TAccountOwner extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountToken2022Program extends string = string,\n  TAccountSystemProgram extends string = string,\n  TAccountAssociatedTokenProgram extends string = string,\n  TAccountMetadataUpdateAuth extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  owner: Address<TAccountOwner>;\n  position: Address<TAccountPosition>;\n  positionMint: TransactionSigner<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  whirlpool: Address<TAccountWhirlpool>;\n  token2022Program?: Address<TAccountToken2022Program>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  associatedTokenProgram?: Address<TAccountAssociatedTokenProgram>;\n  metadataUpdateAuth?: Address<TAccountMetadataUpdateAuth>;\n  tickLowerIndex: OpenPositionWithTokenExtensionsInstructionDataArgs['tickLowerIndex'];\n  tickUpperIndex: OpenPositionWithTokenExtensionsInstructionDataArgs['tickUpperIndex'];\n  withTokenMetadataExtension: OpenPositionWithTokenExtensionsInstructionDataArgs['withTokenMetadataExtension'];\n};\n\nexport function getOpenPositionWithTokenExtensionsInstruction<\n  TAccountFunder extends string,\n  TAccountOwner extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountWhirlpool extends string,\n  TAccountToken2022Program extends string,\n  TAccountSystemProgram extends string,\n  TAccountAssociatedTokenProgram extends string,\n  TAccountMetadataUpdateAuth extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: OpenPositionWithTokenExtensionsInput<\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataUpdateAuth\n  >,\n  config?: { programAddress?: TProgramAddress }\n): OpenPositionWithTokenExtensionsInstruction<\n  TProgramAddress,\n  TAccountFunder,\n  TAccountOwner,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountWhirlpool,\n  TAccountToken2022Program,\n  TAccountSystemProgram,\n  TAccountAssociatedTokenProgram,\n  TAccountMetadataUpdateAuth\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    owner: { value: input.owner ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionMint: { value: input.positionMint ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n    associatedTokenProgram: {\n      value: input.associatedTokenProgram ?? null,\n      isWritable: false,\n    },\n    metadataUpdateAuth: {\n      value: input.metadataUpdateAuth ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n  if (!accounts.associatedTokenProgram.value) {\n    accounts.associatedTokenProgram.value =\n      'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL' as Address<'ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL'>;\n  }\n  if (!accounts.metadataUpdateAuth.value) {\n    accounts.metadataUpdateAuth.value =\n      '3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr' as Address<'3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.owner),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.token2022Program),\n      getAccountMeta(accounts.systemProgram),\n      getAccountMeta(accounts.associatedTokenProgram),\n      getAccountMeta(accounts.metadataUpdateAuth),\n    ],\n    data: getOpenPositionWithTokenExtensionsInstructionDataEncoder().encode(\n      args as OpenPositionWithTokenExtensionsInstructionDataArgs\n    ),\n    programAddress,\n  } as OpenPositionWithTokenExtensionsInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountOwner,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountWhirlpool,\n    TAccountToken2022Program,\n    TAccountSystemProgram,\n    TAccountAssociatedTokenProgram,\n    TAccountMetadataUpdateAuth\n  >);\n}\n\nexport type ParsedOpenPositionWithTokenExtensionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    funder: TAccountMetas[0];\n    owner: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    whirlpool: TAccountMetas[5];\n    token2022Program: TAccountMetas[6];\n    systemProgram: TAccountMetas[7];\n    associatedTokenProgram: TAccountMetas[8];\n    metadataUpdateAuth: TAccountMetas[9];\n  };\n  data: OpenPositionWithTokenExtensionsInstructionData;\n};\n\nexport function parseOpenPositionWithTokenExtensionsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedOpenPositionWithTokenExtensionsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 10) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      funder: getNextAccount(),\n      owner: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      whirlpool: getNextAccount(),\n      token2022Program: getNextAccount(),\n      systemProgram: getNextAccount(),\n      associatedTokenProgram: getNextAccount(),\n      metadataUpdateAuth: getNextAccount(),\n    },\n    data: getOpenPositionWithTokenExtensionsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  getRepositionLiquidityMethodDecoder,\n  getRepositionLiquidityMethodEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n  type RepositionLiquidityMethod,\n  type RepositionLiquidityMethodArgs,\n} from '../types';\n\nexport const REPOSITION_LIQUIDITY_V2_DISCRIMINATOR = new Uint8Array([\n  191, 169, 224, 11, 131, 19, 158, 253,\n]);\n\nexport function getRepositionLiquidityV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    REPOSITION_LIQUIDITY_V2_DISCRIMINATOR\n  );\n}\n\nexport type RepositionLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountExistingTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountExistingTickArrayUpper extends string | AccountMeta<string> = string,\n  TAccountNewTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountNewTickArrayUpper extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountExistingTickArrayLower extends string\n        ? WritableAccount<TAccountExistingTickArrayLower>\n        : TAccountExistingTickArrayLower,\n      TAccountExistingTickArrayUpper extends string\n        ? WritableAccount<TAccountExistingTickArrayUpper>\n        : TAccountExistingTickArrayUpper,\n      TAccountNewTickArrayLower extends string\n        ? WritableAccount<TAccountNewTickArrayLower>\n        : TAccountNewTickArrayLower,\n      TAccountNewTickArrayUpper extends string\n        ? WritableAccount<TAccountNewTickArrayUpper>\n        : TAccountNewTickArrayUpper,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type RepositionLiquidityV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  newTickLowerIndex: number;\n  newTickUpperIndex: number;\n  method: RepositionLiquidityMethod;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type RepositionLiquidityV2InstructionDataArgs = {\n  newTickLowerIndex: number;\n  newTickUpperIndex: number;\n  method: RepositionLiquidityMethodArgs;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getRepositionLiquidityV2InstructionDataEncoder(): Encoder<RepositionLiquidityV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['newTickLowerIndex', getI32Encoder()],\n      ['newTickUpperIndex', getI32Encoder()],\n      ['method', getRepositionLiquidityMethodEncoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: REPOSITION_LIQUIDITY_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getRepositionLiquidityV2InstructionDataDecoder(): Decoder<RepositionLiquidityV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['newTickLowerIndex', getI32Decoder()],\n    ['newTickUpperIndex', getI32Decoder()],\n    ['method', getRepositionLiquidityMethodDecoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getRepositionLiquidityV2InstructionDataCodec(): Codec<\n  RepositionLiquidityV2InstructionDataArgs,\n  RepositionLiquidityV2InstructionData\n> {\n  return combineCodec(\n    getRepositionLiquidityV2InstructionDataEncoder(),\n    getRepositionLiquidityV2InstructionDataDecoder()\n  );\n}\n\nexport type RepositionLiquidityV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountFunder extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountExistingTickArrayLower extends string = string,\n  TAccountExistingTickArrayUpper extends string = string,\n  TAccountNewTickArrayLower extends string = string,\n  TAccountNewTickArrayUpper extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  funder: TransactionSigner<TAccountFunder>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  existingTickArrayLower: Address<TAccountExistingTickArrayLower>;\n  existingTickArrayUpper: Address<TAccountExistingTickArrayUpper>;\n  newTickArrayLower: Address<TAccountNewTickArrayLower>;\n  newTickArrayUpper: Address<TAccountNewTickArrayUpper>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  newTickLowerIndex: RepositionLiquidityV2InstructionDataArgs['newTickLowerIndex'];\n  newTickUpperIndex: RepositionLiquidityV2InstructionDataArgs['newTickUpperIndex'];\n  method: RepositionLiquidityV2InstructionDataArgs['method'];\n  remainingAccountsInfo: RepositionLiquidityV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getRepositionLiquidityV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountPositionAuthority extends string,\n  TAccountFunder extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenVaultB extends string,\n  TAccountExistingTickArrayLower extends string,\n  TAccountExistingTickArrayUpper extends string,\n  TAccountNewTickArrayLower extends string,\n  TAccountNewTickArrayUpper extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: RepositionLiquidityV2Input<\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountFunder,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountExistingTickArrayLower,\n    TAccountExistingTickArrayUpper,\n    TAccountNewTickArrayLower,\n    TAccountNewTickArrayUpper,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): RepositionLiquidityV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram,\n  TAccountPositionAuthority,\n  TAccountFunder,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultA,\n  TAccountTokenVaultB,\n  TAccountExistingTickArrayLower,\n  TAccountExistingTickArrayUpper,\n  TAccountNewTickArrayLower,\n  TAccountNewTickArrayUpper,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    funder: { value: input.funder ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    existingTickArrayLower: {\n      value: input.existingTickArrayLower ?? null,\n      isWritable: true,\n    },\n    existingTickArrayUpper: {\n      value: input.existingTickArrayUpper ?? null,\n      isWritable: true,\n    },\n    newTickArrayLower: {\n      value: input.newTickArrayLower ?? null,\n      isWritable: true,\n    },\n    newTickArrayUpper: {\n      value: input.newTickArrayUpper ?? null,\n      isWritable: true,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.existingTickArrayLower),\n      getAccountMeta(accounts.existingTickArrayUpper),\n      getAccountMeta(accounts.newTickArrayLower),\n      getAccountMeta(accounts.newTickArrayUpper),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getRepositionLiquidityV2InstructionDataEncoder().encode(\n      args as RepositionLiquidityV2InstructionDataArgs\n    ),\n    programAddress,\n  } as RepositionLiquidityV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountPositionAuthority,\n    TAccountFunder,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultA,\n    TAccountTokenVaultB,\n    TAccountExistingTickArrayLower,\n    TAccountExistingTickArrayUpper,\n    TAccountNewTickArrayLower,\n    TAccountNewTickArrayUpper,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedRepositionLiquidityV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    tokenProgramA: TAccountMetas[1];\n    tokenProgramB: TAccountMetas[2];\n    memoProgram: TAccountMetas[3];\n    positionAuthority: TAccountMetas[4];\n    funder: TAccountMetas[5];\n    position: TAccountMetas[6];\n    positionTokenAccount: TAccountMetas[7];\n    tokenMintA: TAccountMetas[8];\n    tokenMintB: TAccountMetas[9];\n    tokenOwnerAccountA: TAccountMetas[10];\n    tokenOwnerAccountB: TAccountMetas[11];\n    tokenVaultA: TAccountMetas[12];\n    tokenVaultB: TAccountMetas[13];\n    existingTickArrayLower: TAccountMetas[14];\n    existingTickArrayUpper: TAccountMetas[15];\n    newTickArrayLower: TAccountMetas[16];\n    newTickArrayUpper: TAccountMetas[17];\n    systemProgram: TAccountMetas[18];\n  };\n  data: RepositionLiquidityV2InstructionData;\n};\n\nexport function parseRepositionLiquidityV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedRepositionLiquidityV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 19) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      funder: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      existingTickArrayLower: getNextAccount(),\n      existingTickArrayUpper: getNextAccount(),\n      newTickArrayLower: getNextAccount(),\n      newTickArrayUpper: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getRepositionLiquidityV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getI32Decoder,\n  getI32Encoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n  type WritableSignerAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const RESET_POSITION_RANGE_DISCRIMINATOR = new Uint8Array([\n  164, 123, 180, 141, 194, 100, 160, 175,\n]);\n\nexport function getResetPositionRangeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    RESET_POSITION_RANGE_DISCRIMINATOR\n  );\n}\n\nexport type ResetPositionRangeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountFunder extends string | AccountMeta<string> = string,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountSystemProgram extends\n    | string\n    | AccountMeta<string> = '11111111111111111111111111111111',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountFunder extends string\n        ? WritableSignerAccount<TAccountFunder> &\n            AccountSignerMeta<TAccountFunder>\n        : TAccountFunder,\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionTokenAccount extends string\n        ? ReadonlyAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountSystemProgram extends string\n        ? ReadonlyAccount<TAccountSystemProgram>\n        : TAccountSystemProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type ResetPositionRangeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  newTickLowerIndex: number;\n  newTickUpperIndex: number;\n};\n\nexport type ResetPositionRangeInstructionDataArgs = {\n  newTickLowerIndex: number;\n  newTickUpperIndex: number;\n};\n\nexport function getResetPositionRangeInstructionDataEncoder(): FixedSizeEncoder<ResetPositionRangeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['newTickLowerIndex', getI32Encoder()],\n      ['newTickUpperIndex', getI32Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: RESET_POSITION_RANGE_DISCRIMINATOR })\n  );\n}\n\nexport function getResetPositionRangeInstructionDataDecoder(): FixedSizeDecoder<ResetPositionRangeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['newTickLowerIndex', getI32Decoder()],\n    ['newTickUpperIndex', getI32Decoder()],\n  ]);\n}\n\nexport function getResetPositionRangeInstructionDataCodec(): FixedSizeCodec<\n  ResetPositionRangeInstructionDataArgs,\n  ResetPositionRangeInstructionData\n> {\n  return combineCodec(\n    getResetPositionRangeInstructionDataEncoder(),\n    getResetPositionRangeInstructionDataDecoder()\n  );\n}\n\nexport type ResetPositionRangeInput<\n  TAccountFunder extends string = string,\n  TAccountPositionAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountSystemProgram extends string = string,\n> = {\n  funder: TransactionSigner<TAccountFunder>;\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  position: Address<TAccountPosition>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  systemProgram?: Address<TAccountSystemProgram>;\n  newTickLowerIndex: ResetPositionRangeInstructionDataArgs['newTickLowerIndex'];\n  newTickUpperIndex: ResetPositionRangeInstructionDataArgs['newTickUpperIndex'];\n};\n\nexport function getResetPositionRangeInstruction<\n  TAccountFunder extends string,\n  TAccountPositionAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountPosition extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountSystemProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: ResetPositionRangeInput<\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountWhirlpool,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountSystemProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): ResetPositionRangeInstruction<\n  TProgramAddress,\n  TAccountFunder,\n  TAccountPositionAuthority,\n  TAccountWhirlpool,\n  TAccountPosition,\n  TAccountPositionTokenAccount,\n  TAccountSystemProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    funder: { value: input.funder ?? null, isWritable: true },\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    position: { value: input.position ?? null, isWritable: true },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: false,\n    },\n    systemProgram: { value: input.systemProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.systemProgram.value) {\n    accounts.systemProgram.value =\n      '11111111111111111111111111111111' as Address<'11111111111111111111111111111111'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.funder),\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.systemProgram),\n    ],\n    data: getResetPositionRangeInstructionDataEncoder().encode(\n      args as ResetPositionRangeInstructionDataArgs\n    ),\n    programAddress,\n  } as ResetPositionRangeInstruction<\n    TProgramAddress,\n    TAccountFunder,\n    TAccountPositionAuthority,\n    TAccountWhirlpool,\n    TAccountPosition,\n    TAccountPositionTokenAccount,\n    TAccountSystemProgram\n  >);\n}\n\nexport type ParsedResetPositionRangeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    funder: TAccountMetas[0];\n    positionAuthority: TAccountMetas[1];\n    whirlpool: TAccountMetas[2];\n    position: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    systemProgram: TAccountMetas[5];\n  };\n  data: ResetPositionRangeInstructionData;\n};\n\nexport function parseResetPositionRangeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedResetPositionRangeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 6) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      funder: getNextAccount(),\n      positionAuthority: getNextAccount(),\n      whirlpool: getNextAccount(),\n      position: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      systemProgram: getNextAccount(),\n    },\n    data: getResetPositionRangeInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR = new Uint8Array([\n  133, 158, 212, 189, 237, 12, 73, 39,\n]);\n\nexport function getSetAdaptiveFeeConstantsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR\n  );\n}\n\nexport type SetAdaptiveFeeConstantsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? ReadonlyAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountOracle extends string\n        ? WritableAccount<TAccountOracle>\n        : TAccountOracle,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetAdaptiveFeeConstantsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  filterPeriod: Option<number>;\n  decayPeriod: Option<number>;\n  reductionFactor: Option<number>;\n  adaptiveFeeControlFactor: Option<number>;\n  maxVolatilityAccumulator: Option<number>;\n  tickGroupSize: Option<number>;\n  majorSwapThresholdTicks: Option<number>;\n};\n\nexport type SetAdaptiveFeeConstantsInstructionDataArgs = {\n  filterPeriod: OptionOrNullable<number>;\n  decayPeriod: OptionOrNullable<number>;\n  reductionFactor: OptionOrNullable<number>;\n  adaptiveFeeControlFactor: OptionOrNullable<number>;\n  maxVolatilityAccumulator: OptionOrNullable<number>;\n  tickGroupSize: OptionOrNullable<number>;\n  majorSwapThresholdTicks: OptionOrNullable<number>;\n};\n\nexport function getSetAdaptiveFeeConstantsInstructionDataEncoder(): Encoder<SetAdaptiveFeeConstantsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['filterPeriod', getOptionEncoder(getU16Encoder())],\n      ['decayPeriod', getOptionEncoder(getU16Encoder())],\n      ['reductionFactor', getOptionEncoder(getU16Encoder())],\n      ['adaptiveFeeControlFactor', getOptionEncoder(getU32Encoder())],\n      ['maxVolatilityAccumulator', getOptionEncoder(getU32Encoder())],\n      ['tickGroupSize', getOptionEncoder(getU16Encoder())],\n      ['majorSwapThresholdTicks', getOptionEncoder(getU16Encoder())],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetAdaptiveFeeConstantsInstructionDataDecoder(): Decoder<SetAdaptiveFeeConstantsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['filterPeriod', getOptionDecoder(getU16Decoder())],\n    ['decayPeriod', getOptionDecoder(getU16Decoder())],\n    ['reductionFactor', getOptionDecoder(getU16Decoder())],\n    ['adaptiveFeeControlFactor', getOptionDecoder(getU32Decoder())],\n    ['maxVolatilityAccumulator', getOptionDecoder(getU32Decoder())],\n    ['tickGroupSize', getOptionDecoder(getU16Decoder())],\n    ['majorSwapThresholdTicks', getOptionDecoder(getU16Decoder())],\n  ]);\n}\n\nexport function getSetAdaptiveFeeConstantsInstructionDataCodec(): Codec<\n  SetAdaptiveFeeConstantsInstructionDataArgs,\n  SetAdaptiveFeeConstantsInstructionData\n> {\n  return combineCodec(\n    getSetAdaptiveFeeConstantsInstructionDataEncoder(),\n    getSetAdaptiveFeeConstantsInstructionDataDecoder()\n  );\n}\n\nexport type SetAdaptiveFeeConstantsInput<\n  TAccountWhirlpool extends string = string,\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountOracle extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  oracle: Address<TAccountOracle>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  filterPeriod: SetAdaptiveFeeConstantsInstructionDataArgs['filterPeriod'];\n  decayPeriod: SetAdaptiveFeeConstantsInstructionDataArgs['decayPeriod'];\n  reductionFactor: SetAdaptiveFeeConstantsInstructionDataArgs['reductionFactor'];\n  adaptiveFeeControlFactor: SetAdaptiveFeeConstantsInstructionDataArgs['adaptiveFeeControlFactor'];\n  maxVolatilityAccumulator: SetAdaptiveFeeConstantsInstructionDataArgs['maxVolatilityAccumulator'];\n  tickGroupSize: SetAdaptiveFeeConstantsInstructionDataArgs['tickGroupSize'];\n  majorSwapThresholdTicks: SetAdaptiveFeeConstantsInstructionDataArgs['majorSwapThresholdTicks'];\n};\n\nexport function getSetAdaptiveFeeConstantsInstruction<\n  TAccountWhirlpool extends string,\n  TAccountWhirlpoolsConfig extends string,\n  TAccountOracle extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetAdaptiveFeeConstantsInput<\n    TAccountWhirlpool,\n    TAccountWhirlpoolsConfig,\n    TAccountOracle,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetAdaptiveFeeConstantsInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountWhirlpoolsConfig,\n  TAccountOracle,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: false },\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.oracle),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetAdaptiveFeeConstantsInstructionDataEncoder().encode(\n      args as SetAdaptiveFeeConstantsInstructionDataArgs\n    ),\n    programAddress,\n  } as SetAdaptiveFeeConstantsInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountWhirlpoolsConfig,\n    TAccountOracle,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetAdaptiveFeeConstantsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    whirlpoolsConfig: TAccountMetas[1];\n    oracle: TAccountMetas[2];\n    feeAuthority: TAccountMetas[3];\n  };\n  data: SetAdaptiveFeeConstantsInstructionData;\n};\n\nexport function parseSetAdaptiveFeeConstantsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetAdaptiveFeeConstantsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      whirlpoolsConfig: getNextAccount(),\n      oracle: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetAdaptiveFeeConstantsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_COLLECT_PROTOCOL_FEES_AUTHORITY_DISCRIMINATOR = new Uint8Array(\n  [34, 150, 93, 244, 139, 225, 233, 67]\n);\n\nexport function getSetCollectProtocolFeesAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_COLLECT_PROTOCOL_FEES_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetCollectProtocolFeesAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountCollectProtocolFeesAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountNewCollectProtocolFeesAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? WritableAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountCollectProtocolFeesAuthority extends string\n        ? ReadonlySignerAccount<TAccountCollectProtocolFeesAuthority> &\n            AccountSignerMeta<TAccountCollectProtocolFeesAuthority>\n        : TAccountCollectProtocolFeesAuthority,\n      TAccountNewCollectProtocolFeesAuthority extends string\n        ? ReadonlyAccount<TAccountNewCollectProtocolFeesAuthority>\n        : TAccountNewCollectProtocolFeesAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetCollectProtocolFeesAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetCollectProtocolFeesAuthorityInstructionDataArgs = {};\n\nexport function getSetCollectProtocolFeesAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetCollectProtocolFeesAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_COLLECT_PROTOCOL_FEES_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetCollectProtocolFeesAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetCollectProtocolFeesAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetCollectProtocolFeesAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetCollectProtocolFeesAuthorityInstructionDataArgs,\n  SetCollectProtocolFeesAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetCollectProtocolFeesAuthorityInstructionDataEncoder(),\n    getSetCollectProtocolFeesAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetCollectProtocolFeesAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountCollectProtocolFeesAuthority extends string = string,\n  TAccountNewCollectProtocolFeesAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  collectProtocolFeesAuthority: TransactionSigner<TAccountCollectProtocolFeesAuthority>;\n  newCollectProtocolFeesAuthority: Address<TAccountNewCollectProtocolFeesAuthority>;\n};\n\nexport function getSetCollectProtocolFeesAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountCollectProtocolFeesAuthority extends string,\n  TAccountNewCollectProtocolFeesAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetCollectProtocolFeesAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountNewCollectProtocolFeesAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetCollectProtocolFeesAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountCollectProtocolFeesAuthority,\n  TAccountNewCollectProtocolFeesAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: true,\n    },\n    collectProtocolFeesAuthority: {\n      value: input.collectProtocolFeesAuthority ?? null,\n      isWritable: false,\n    },\n    newCollectProtocolFeesAuthority: {\n      value: input.newCollectProtocolFeesAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.collectProtocolFeesAuthority),\n      getAccountMeta(accounts.newCollectProtocolFeesAuthority),\n    ],\n    data: getSetCollectProtocolFeesAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetCollectProtocolFeesAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountCollectProtocolFeesAuthority,\n    TAccountNewCollectProtocolFeesAuthority\n  >);\n}\n\nexport type ParsedSetCollectProtocolFeesAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    collectProtocolFeesAuthority: TAccountMetas[1];\n    newCollectProtocolFeesAuthority: TAccountMetas[2];\n  };\n  data: SetCollectProtocolFeesAuthorityInstructionData;\n};\n\nexport function parseSetCollectProtocolFeesAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetCollectProtocolFeesAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      collectProtocolFeesAuthority: getNextAccount(),\n      newCollectProtocolFeesAuthority: getNextAccount(),\n    },\n    data: getSetCollectProtocolFeesAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_CONFIG_EXTENSION_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  44, 94, 241, 116, 24, 188, 60, 143,\n]);\n\nexport function getSetConfigExtensionAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_CONFIG_EXTENSION_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetConfigExtensionAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfigExtension extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountConfigExtensionAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountNewConfigExtensionAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpoolsConfigExtension extends string\n        ? WritableAccount<TAccountWhirlpoolsConfigExtension>\n        : TAccountWhirlpoolsConfigExtension,\n      TAccountConfigExtensionAuthority extends string\n        ? ReadonlySignerAccount<TAccountConfigExtensionAuthority> &\n            AccountSignerMeta<TAccountConfigExtensionAuthority>\n        : TAccountConfigExtensionAuthority,\n      TAccountNewConfigExtensionAuthority extends string\n        ? ReadonlyAccount<TAccountNewConfigExtensionAuthority>\n        : TAccountNewConfigExtensionAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetConfigExtensionAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetConfigExtensionAuthorityInstructionDataArgs = {};\n\nexport function getSetConfigExtensionAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetConfigExtensionAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_CONFIG_EXTENSION_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetConfigExtensionAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetConfigExtensionAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetConfigExtensionAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetConfigExtensionAuthorityInstructionDataArgs,\n  SetConfigExtensionAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetConfigExtensionAuthorityInstructionDataEncoder(),\n    getSetConfigExtensionAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetConfigExtensionAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountConfigExtensionAuthority extends string = string,\n  TAccountNewConfigExtensionAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  configExtensionAuthority: TransactionSigner<TAccountConfigExtensionAuthority>;\n  newConfigExtensionAuthority: Address<TAccountNewConfigExtensionAuthority>;\n};\n\nexport function getSetConfigExtensionAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountConfigExtensionAuthority extends string,\n  TAccountNewConfigExtensionAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetConfigExtensionAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountConfigExtensionAuthority,\n    TAccountNewConfigExtensionAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetConfigExtensionAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpoolsConfigExtension,\n  TAccountConfigExtensionAuthority,\n  TAccountNewConfigExtensionAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: true,\n    },\n    configExtensionAuthority: {\n      value: input.configExtensionAuthority ?? null,\n      isWritable: false,\n    },\n    newConfigExtensionAuthority: {\n      value: input.newConfigExtensionAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.configExtensionAuthority),\n      getAccountMeta(accounts.newConfigExtensionAuthority),\n    ],\n    data: getSetConfigExtensionAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetConfigExtensionAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountConfigExtensionAuthority,\n    TAccountNewConfigExtensionAuthority\n  >);\n}\n\nexport type ParsedSetConfigExtensionAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpoolsConfigExtension: TAccountMetas[1];\n    configExtensionAuthority: TAccountMetas[2];\n    newConfigExtensionAuthority: TAccountMetas[3];\n  };\n  data: SetConfigExtensionAuthorityInstructionData;\n};\n\nexport function parseSetConfigExtensionAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetConfigExtensionAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpoolsConfigExtension: getNextAccount(),\n      configExtensionAuthority: getNextAccount(),\n      newConfigExtensionAuthority: getNextAccount(),\n    },\n    data: getSetConfigExtensionAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getConfigFeatureFlagDecoder,\n  getConfigFeatureFlagEncoder,\n  type ConfigFeatureFlag,\n  type ConfigFeatureFlagArgs,\n} from '../types';\n\nexport const SET_CONFIG_FEATURE_FLAG_DISCRIMINATOR = new Uint8Array([\n  71, 173, 228, 18, 67, 247, 210, 57,\n]);\n\nexport function getSetConfigFeatureFlagDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_CONFIG_FEATURE_FLAG_DISCRIMINATOR\n  );\n}\n\nexport type SetConfigFeatureFlagInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? WritableAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAuthority extends string\n        ? ReadonlySignerAccount<TAccountAuthority> &\n            AccountSignerMeta<TAccountAuthority>\n        : TAccountAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetConfigFeatureFlagInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  featureFlag: ConfigFeatureFlag;\n};\n\nexport type SetConfigFeatureFlagInstructionDataArgs = {\n  featureFlag: ConfigFeatureFlagArgs;\n};\n\nexport function getSetConfigFeatureFlagInstructionDataEncoder(): FixedSizeEncoder<SetConfigFeatureFlagInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['featureFlag', getConfigFeatureFlagEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_CONFIG_FEATURE_FLAG_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetConfigFeatureFlagInstructionDataDecoder(): FixedSizeDecoder<SetConfigFeatureFlagInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['featureFlag', getConfigFeatureFlagDecoder()],\n  ]);\n}\n\nexport function getSetConfigFeatureFlagInstructionDataCodec(): FixedSizeCodec<\n  SetConfigFeatureFlagInstructionDataArgs,\n  SetConfigFeatureFlagInstructionData\n> {\n  return combineCodec(\n    getSetConfigFeatureFlagInstructionDataEncoder(),\n    getSetConfigFeatureFlagInstructionDataDecoder()\n  );\n}\n\nexport type SetConfigFeatureFlagInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  authority: TransactionSigner<TAccountAuthority>;\n  featureFlag: SetConfigFeatureFlagInstructionDataArgs['featureFlag'];\n};\n\nexport function getSetConfigFeatureFlagInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetConfigFeatureFlagInput<TAccountWhirlpoolsConfig, TAccountAuthority>,\n  config?: { programAddress?: TProgramAddress }\n): SetConfigFeatureFlagInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: true,\n    },\n    authority: { value: input.authority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.authority),\n    ],\n    data: getSetConfigFeatureFlagInstructionDataEncoder().encode(\n      args as SetConfigFeatureFlagInstructionDataArgs\n    ),\n    programAddress,\n  } as SetConfigFeatureFlagInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAuthority\n  >);\n}\n\nexport type ParsedSetConfigFeatureFlagInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    authority: TAccountMetas[1];\n  };\n  data: SetConfigFeatureFlagInstructionData;\n};\n\nexport function parseSetConfigFeatureFlagInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetConfigFeatureFlagInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      authority: getNextAccount(),\n    },\n    data: getSetConfigFeatureFlagInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_DEFAULT_BASE_FEE_RATE_DISCRIMINATOR = new Uint8Array([\n  229, 66, 84, 251, 164, 134, 183, 7,\n]);\n\nexport function getSetDefaultBaseFeeRateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_DEFAULT_BASE_FEE_RATE_DISCRIMINATOR\n  );\n}\n\nexport type SetDefaultBaseFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAdaptiveFeeTier extends string\n        ? WritableAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetDefaultBaseFeeRateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  defaultBaseFeeRate: number;\n};\n\nexport type SetDefaultBaseFeeRateInstructionDataArgs = {\n  defaultBaseFeeRate: number;\n};\n\nexport function getSetDefaultBaseFeeRateInstructionDataEncoder(): FixedSizeEncoder<SetDefaultBaseFeeRateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['defaultBaseFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_DEFAULT_BASE_FEE_RATE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetDefaultBaseFeeRateInstructionDataDecoder(): FixedSizeDecoder<SetDefaultBaseFeeRateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['defaultBaseFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetDefaultBaseFeeRateInstructionDataCodec(): FixedSizeCodec<\n  SetDefaultBaseFeeRateInstructionDataArgs,\n  SetDefaultBaseFeeRateInstructionData\n> {\n  return combineCodec(\n    getSetDefaultBaseFeeRateInstructionDataEncoder(),\n    getSetDefaultBaseFeeRateInstructionDataDecoder()\n  );\n}\n\nexport type SetDefaultBaseFeeRateInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  defaultBaseFeeRate: SetDefaultBaseFeeRateInstructionDataArgs['defaultBaseFeeRate'];\n};\n\nexport function getSetDefaultBaseFeeRateInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetDefaultBaseFeeRateInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetDefaultBaseFeeRateInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAdaptiveFeeTier,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetDefaultBaseFeeRateInstructionDataEncoder().encode(\n      args as SetDefaultBaseFeeRateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetDefaultBaseFeeRateInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetDefaultBaseFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n  };\n  data: SetDefaultBaseFeeRateInstructionData;\n};\n\nexport function parseSetDefaultBaseFeeRateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetDefaultBaseFeeRateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetDefaultBaseFeeRateInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_DEFAULT_FEE_RATE_DISCRIMINATOR = new Uint8Array([\n  118, 215, 214, 157, 182, 229, 208, 228,\n]);\n\nexport function getSetDefaultFeeRateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_DEFAULT_FEE_RATE_DISCRIMINATOR\n  );\n}\n\nexport type SetDefaultFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountFeeTier extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountFeeTier extends string\n        ? WritableAccount<TAccountFeeTier>\n        : TAccountFeeTier,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetDefaultFeeRateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  defaultFeeRate: number;\n};\n\nexport type SetDefaultFeeRateInstructionDataArgs = { defaultFeeRate: number };\n\nexport function getSetDefaultFeeRateInstructionDataEncoder(): FixedSizeEncoder<SetDefaultFeeRateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['defaultFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_DEFAULT_FEE_RATE_DISCRIMINATOR })\n  );\n}\n\nexport function getSetDefaultFeeRateInstructionDataDecoder(): FixedSizeDecoder<SetDefaultFeeRateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['defaultFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetDefaultFeeRateInstructionDataCodec(): FixedSizeCodec<\n  SetDefaultFeeRateInstructionDataArgs,\n  SetDefaultFeeRateInstructionData\n> {\n  return combineCodec(\n    getSetDefaultFeeRateInstructionDataEncoder(),\n    getSetDefaultFeeRateInstructionDataDecoder()\n  );\n}\n\nexport type SetDefaultFeeRateInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountFeeTier extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  feeTier: Address<TAccountFeeTier>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  defaultFeeRate: SetDefaultFeeRateInstructionDataArgs['defaultFeeRate'];\n};\n\nexport function getSetDefaultFeeRateInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountFeeTier extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetDefaultFeeRateInput<\n    TAccountWhirlpoolsConfig,\n    TAccountFeeTier,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetDefaultFeeRateInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountFeeTier,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    feeTier: { value: input.feeTier ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.feeTier),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetDefaultFeeRateInstructionDataEncoder().encode(\n      args as SetDefaultFeeRateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetDefaultFeeRateInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountFeeTier,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetDefaultFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    feeTier: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n  };\n  data: SetDefaultFeeRateInstructionData;\n};\n\nexport function parseSetDefaultFeeRateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetDefaultFeeRateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      feeTier: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetDefaultFeeRateInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_DEFAULT_PROTOCOL_FEE_RATE_DISCRIMINATOR = new Uint8Array([\n  107, 205, 249, 226, 151, 35, 86, 0,\n]);\n\nexport function getSetDefaultProtocolFeeRateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_DEFAULT_PROTOCOL_FEE_RATE_DISCRIMINATOR\n  );\n}\n\nexport type SetDefaultProtocolFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? WritableAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetDefaultProtocolFeeRateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  defaultProtocolFeeRate: number;\n};\n\nexport type SetDefaultProtocolFeeRateInstructionDataArgs = {\n  defaultProtocolFeeRate: number;\n};\n\nexport function getSetDefaultProtocolFeeRateInstructionDataEncoder(): FixedSizeEncoder<SetDefaultProtocolFeeRateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['defaultProtocolFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_DEFAULT_PROTOCOL_FEE_RATE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetDefaultProtocolFeeRateInstructionDataDecoder(): FixedSizeDecoder<SetDefaultProtocolFeeRateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['defaultProtocolFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetDefaultProtocolFeeRateInstructionDataCodec(): FixedSizeCodec<\n  SetDefaultProtocolFeeRateInstructionDataArgs,\n  SetDefaultProtocolFeeRateInstructionData\n> {\n  return combineCodec(\n    getSetDefaultProtocolFeeRateInstructionDataEncoder(),\n    getSetDefaultProtocolFeeRateInstructionDataDecoder()\n  );\n}\n\nexport type SetDefaultProtocolFeeRateInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  defaultProtocolFeeRate: SetDefaultProtocolFeeRateInstructionDataArgs['defaultProtocolFeeRate'];\n};\n\nexport function getSetDefaultProtocolFeeRateInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetDefaultProtocolFeeRateInput<\n    TAccountWhirlpoolsConfig,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetDefaultProtocolFeeRateInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: true,\n    },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetDefaultProtocolFeeRateInstructionDataEncoder().encode(\n      args as SetDefaultProtocolFeeRateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetDefaultProtocolFeeRateInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetDefaultProtocolFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    feeAuthority: TAccountMetas[1];\n  };\n  data: SetDefaultProtocolFeeRateInstructionData;\n};\n\nexport function parseSetDefaultProtocolFeeRateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetDefaultProtocolFeeRateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 2) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetDefaultProtocolFeeRateInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  193, 234, 231, 147, 138, 57, 3, 122,\n]);\n\nexport function getSetDelegatedFeeAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetDelegatedFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountNewDelegatedFeeAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAdaptiveFeeTier extends string\n        ? WritableAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountNewDelegatedFeeAuthority extends string\n        ? ReadonlyAccount<TAccountNewDelegatedFeeAuthority>\n        : TAccountNewDelegatedFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetDelegatedFeeAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetDelegatedFeeAuthorityInstructionDataArgs = {};\n\nexport function getSetDelegatedFeeAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetDelegatedFeeAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetDelegatedFeeAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetDelegatedFeeAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetDelegatedFeeAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetDelegatedFeeAuthorityInstructionDataArgs,\n  SetDelegatedFeeAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetDelegatedFeeAuthorityInstructionDataEncoder(),\n    getSetDelegatedFeeAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetDelegatedFeeAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountNewDelegatedFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  newDelegatedFeeAuthority: Address<TAccountNewDelegatedFeeAuthority>;\n};\n\nexport function getSetDelegatedFeeAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFeeAuthority extends string,\n  TAccountNewDelegatedFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetDelegatedFeeAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority,\n    TAccountNewDelegatedFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetDelegatedFeeAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAdaptiveFeeTier,\n  TAccountFeeAuthority,\n  TAccountNewDelegatedFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    newDelegatedFeeAuthority: {\n      value: input.newDelegatedFeeAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.newDelegatedFeeAuthority),\n    ],\n    data: getSetDelegatedFeeAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetDelegatedFeeAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority,\n    TAccountNewDelegatedFeeAuthority\n  >);\n}\n\nexport type ParsedSetDelegatedFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n    newDelegatedFeeAuthority: TAccountMetas[3];\n  };\n  data: SetDelegatedFeeAuthorityInstructionData;\n};\n\nexport function parseSetDelegatedFeeAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetDelegatedFeeAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      newDelegatedFeeAuthority: getNextAccount(),\n    },\n    data: getSetDelegatedFeeAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_FEE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  31, 1, 50, 87, 237, 101, 97, 132,\n]);\n\nexport function getSetFeeAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_FEE_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountNewFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? WritableAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountNewFeeAuthority extends string\n        ? ReadonlyAccount<TAccountNewFeeAuthority>\n        : TAccountNewFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetFeeAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetFeeAuthorityInstructionDataArgs = {};\n\nexport function getSetFeeAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetFeeAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({ ...value, discriminator: SET_FEE_AUTHORITY_DISCRIMINATOR })\n  );\n}\n\nexport function getSetFeeAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetFeeAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetFeeAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetFeeAuthorityInstructionDataArgs,\n  SetFeeAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetFeeAuthorityInstructionDataEncoder(),\n    getSetFeeAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetFeeAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountNewFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  newFeeAuthority: Address<TAccountNewFeeAuthority>;\n};\n\nexport function getSetFeeAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountFeeAuthority extends string,\n  TAccountNewFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetFeeAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountFeeAuthority,\n    TAccountNewFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetFeeAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountFeeAuthority,\n  TAccountNewFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: true,\n    },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    newFeeAuthority: {\n      value: input.newFeeAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.newFeeAuthority),\n    ],\n    data: getSetFeeAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetFeeAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountFeeAuthority,\n    TAccountNewFeeAuthority\n  >);\n}\n\nexport type ParsedSetFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    feeAuthority: TAccountMetas[1];\n    newFeeAuthority: TAccountMetas[2];\n  };\n  data: SetFeeAuthorityInstructionData;\n};\n\nexport function parseSetFeeAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetFeeAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      newFeeAuthority: getNextAccount(),\n    },\n    data: getSetFeeAuthorityInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_FEE_RATE_DISCRIMINATOR = new Uint8Array([\n  53, 243, 137, 65, 8, 140, 158, 6,\n]);\n\nexport function getSetFeeRateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_FEE_RATE_DISCRIMINATOR\n  );\n}\n\nexport type SetFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetFeeRateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  feeRate: number;\n};\n\nexport type SetFeeRateInstructionDataArgs = { feeRate: number };\n\nexport function getSetFeeRateInstructionDataEncoder(): FixedSizeEncoder<SetFeeRateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['feeRate', getU16Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_FEE_RATE_DISCRIMINATOR })\n  );\n}\n\nexport function getSetFeeRateInstructionDataDecoder(): FixedSizeDecoder<SetFeeRateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['feeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetFeeRateInstructionDataCodec(): FixedSizeCodec<\n  SetFeeRateInstructionDataArgs,\n  SetFeeRateInstructionData\n> {\n  return combineCodec(\n    getSetFeeRateInstructionDataEncoder(),\n    getSetFeeRateInstructionDataDecoder()\n  );\n}\n\nexport type SetFeeRateInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  feeRate: SetFeeRateInstructionDataArgs['feeRate'];\n};\n\nexport function getSetFeeRateInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetFeeRateInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetFeeRateInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpool,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetFeeRateInstructionDataEncoder().encode(\n      args as SetFeeRateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetFeeRateInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpool: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n  };\n  data: SetFeeRateInstructionData;\n};\n\nexport function parseSetFeeRateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetFeeRateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetFeeRateInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_FEE_RATE_BY_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR =\n  new Uint8Array([121, 121, 54, 114, 131, 230, 162, 104]);\n\nexport function getSetFeeRateByDelegatedFeeAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_FEE_RATE_BY_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetFeeRateByDelegatedFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountDelegatedFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountAdaptiveFeeTier extends string\n        ? ReadonlyAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountDelegatedFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountDelegatedFeeAuthority> &\n            AccountSignerMeta<TAccountDelegatedFeeAuthority>\n        : TAccountDelegatedFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetFeeRateByDelegatedFeeAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  feeRate: number;\n};\n\nexport type SetFeeRateByDelegatedFeeAuthorityInstructionDataArgs = {\n  feeRate: number;\n};\n\nexport function getSetFeeRateByDelegatedFeeAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetFeeRateByDelegatedFeeAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['feeRate', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_FEE_RATE_BY_DELEGATED_FEE_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetFeeRateByDelegatedFeeAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetFeeRateByDelegatedFeeAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['feeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetFeeRateByDelegatedFeeAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetFeeRateByDelegatedFeeAuthorityInstructionDataArgs,\n  SetFeeRateByDelegatedFeeAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetFeeRateByDelegatedFeeAuthorityInstructionDataEncoder(),\n    getSetFeeRateByDelegatedFeeAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetFeeRateByDelegatedFeeAuthorityInput<\n  TAccountWhirlpool extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountDelegatedFeeAuthority extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  delegatedFeeAuthority: TransactionSigner<TAccountDelegatedFeeAuthority>;\n  feeRate: SetFeeRateByDelegatedFeeAuthorityInstructionDataArgs['feeRate'];\n};\n\nexport function getSetFeeRateByDelegatedFeeAuthorityInstruction<\n  TAccountWhirlpool extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountDelegatedFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetFeeRateByDelegatedFeeAuthorityInput<\n    TAccountWhirlpool,\n    TAccountAdaptiveFeeTier,\n    TAccountDelegatedFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetFeeRateByDelegatedFeeAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountAdaptiveFeeTier,\n  TAccountDelegatedFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    adaptiveFeeTier: {\n      value: input.adaptiveFeeTier ?? null,\n      isWritable: false,\n    },\n    delegatedFeeAuthority: {\n      value: input.delegatedFeeAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.delegatedFeeAuthority),\n    ],\n    data: getSetFeeRateByDelegatedFeeAuthorityInstructionDataEncoder().encode(\n      args as SetFeeRateByDelegatedFeeAuthorityInstructionDataArgs\n    ),\n    programAddress,\n  } as SetFeeRateByDelegatedFeeAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountAdaptiveFeeTier,\n    TAccountDelegatedFeeAuthority\n  >);\n}\n\nexport type ParsedSetFeeRateByDelegatedFeeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    delegatedFeeAuthority: TAccountMetas[2];\n  };\n  data: SetFeeRateByDelegatedFeeAuthorityInstructionData;\n};\n\nexport function parseSetFeeRateByDelegatedFeeAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetFeeRateByDelegatedFeeAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      delegatedFeeAuthority: getNextAccount(),\n    },\n    data: getSetFeeRateByDelegatedFeeAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_INITIALIZE_POOL_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  125, 43, 127, 235, 149, 26, 106, 236,\n]);\n\nexport function getSetInitializePoolAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_INITIALIZE_POOL_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetInitializePoolAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TAccountNewInitializePoolAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAdaptiveFeeTier extends string\n        ? WritableAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      TAccountNewInitializePoolAuthority extends string\n        ? ReadonlyAccount<TAccountNewInitializePoolAuthority>\n        : TAccountNewInitializePoolAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetInitializePoolAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetInitializePoolAuthorityInstructionDataArgs = {};\n\nexport function getSetInitializePoolAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetInitializePoolAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_INITIALIZE_POOL_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetInitializePoolAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetInitializePoolAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetInitializePoolAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetInitializePoolAuthorityInstructionDataArgs,\n  SetInitializePoolAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetInitializePoolAuthorityInstructionDataEncoder(),\n    getSetInitializePoolAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetInitializePoolAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFeeAuthority extends string = string,\n  TAccountNewInitializePoolAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  newInitializePoolAuthority: Address<TAccountNewInitializePoolAuthority>;\n};\n\nexport function getSetInitializePoolAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFeeAuthority extends string,\n  TAccountNewInitializePoolAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetInitializePoolAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority,\n    TAccountNewInitializePoolAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetInitializePoolAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAdaptiveFeeTier,\n  TAccountFeeAuthority,\n  TAccountNewInitializePoolAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n    newInitializePoolAuthority: {\n      value: input.newInitializePoolAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.feeAuthority),\n      getAccountMeta(accounts.newInitializePoolAuthority),\n    ],\n    data: getSetInitializePoolAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetInitializePoolAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority,\n    TAccountNewInitializePoolAuthority\n  >);\n}\n\nexport type ParsedSetInitializePoolAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n    newInitializePoolAuthority: TAccountMetas[3];\n  };\n  data: SetInitializePoolAuthorityInstructionData;\n};\n\nexport function parseSetInitializePoolAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetInitializePoolAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      feeAuthority: getNextAccount(),\n      newInitializePoolAuthority: getNextAccount(),\n    },\n    data: getSetInitializePoolAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  getU32Decoder,\n  getU32Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_PRESET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR = new Uint8Array([\n  132, 185, 66, 148, 83, 88, 134, 198,\n]);\n\nexport function getSetPresetAdaptiveFeeConstantsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_PRESET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR\n  );\n}\n\nexport type SetPresetAdaptiveFeeConstantsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountAdaptiveFeeTier extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountAdaptiveFeeTier extends string\n        ? WritableAccount<TAccountAdaptiveFeeTier>\n        : TAccountAdaptiveFeeTier,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetPresetAdaptiveFeeConstantsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport type SetPresetAdaptiveFeeConstantsInstructionDataArgs = {\n  filterPeriod: number;\n  decayPeriod: number;\n  reductionFactor: number;\n  adaptiveFeeControlFactor: number;\n  maxVolatilityAccumulator: number;\n  tickGroupSize: number;\n  majorSwapThresholdTicks: number;\n};\n\nexport function getSetPresetAdaptiveFeeConstantsInstructionDataEncoder(): FixedSizeEncoder<SetPresetAdaptiveFeeConstantsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['filterPeriod', getU16Encoder()],\n      ['decayPeriod', getU16Encoder()],\n      ['reductionFactor', getU16Encoder()],\n      ['adaptiveFeeControlFactor', getU32Encoder()],\n      ['maxVolatilityAccumulator', getU32Encoder()],\n      ['tickGroupSize', getU16Encoder()],\n      ['majorSwapThresholdTicks', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_PRESET_ADAPTIVE_FEE_CONSTANTS_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetPresetAdaptiveFeeConstantsInstructionDataDecoder(): FixedSizeDecoder<SetPresetAdaptiveFeeConstantsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['filterPeriod', getU16Decoder()],\n    ['decayPeriod', getU16Decoder()],\n    ['reductionFactor', getU16Decoder()],\n    ['adaptiveFeeControlFactor', getU32Decoder()],\n    ['maxVolatilityAccumulator', getU32Decoder()],\n    ['tickGroupSize', getU16Decoder()],\n    ['majorSwapThresholdTicks', getU16Decoder()],\n  ]);\n}\n\nexport function getSetPresetAdaptiveFeeConstantsInstructionDataCodec(): FixedSizeCodec<\n  SetPresetAdaptiveFeeConstantsInstructionDataArgs,\n  SetPresetAdaptiveFeeConstantsInstructionData\n> {\n  return combineCodec(\n    getSetPresetAdaptiveFeeConstantsInstructionDataEncoder(),\n    getSetPresetAdaptiveFeeConstantsInstructionDataDecoder()\n  );\n}\n\nexport type SetPresetAdaptiveFeeConstantsInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountAdaptiveFeeTier extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  adaptiveFeeTier: Address<TAccountAdaptiveFeeTier>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  filterPeriod: SetPresetAdaptiveFeeConstantsInstructionDataArgs['filterPeriod'];\n  decayPeriod: SetPresetAdaptiveFeeConstantsInstructionDataArgs['decayPeriod'];\n  reductionFactor: SetPresetAdaptiveFeeConstantsInstructionDataArgs['reductionFactor'];\n  adaptiveFeeControlFactor: SetPresetAdaptiveFeeConstantsInstructionDataArgs['adaptiveFeeControlFactor'];\n  maxVolatilityAccumulator: SetPresetAdaptiveFeeConstantsInstructionDataArgs['maxVolatilityAccumulator'];\n  tickGroupSize: SetPresetAdaptiveFeeConstantsInstructionDataArgs['tickGroupSize'];\n  majorSwapThresholdTicks: SetPresetAdaptiveFeeConstantsInstructionDataArgs['majorSwapThresholdTicks'];\n};\n\nexport function getSetPresetAdaptiveFeeConstantsInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountAdaptiveFeeTier extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetPresetAdaptiveFeeConstantsInput<\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetPresetAdaptiveFeeConstantsInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountAdaptiveFeeTier,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    adaptiveFeeTier: { value: input.adaptiveFeeTier ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.adaptiveFeeTier),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetPresetAdaptiveFeeConstantsInstructionDataEncoder().encode(\n      args as SetPresetAdaptiveFeeConstantsInstructionDataArgs\n    ),\n    programAddress,\n  } as SetPresetAdaptiveFeeConstantsInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountAdaptiveFeeTier,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetPresetAdaptiveFeeConstantsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    adaptiveFeeTier: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n  };\n  data: SetPresetAdaptiveFeeConstantsInstructionData;\n};\n\nexport function parseSetPresetAdaptiveFeeConstantsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetPresetAdaptiveFeeConstantsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      adaptiveFeeTier: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetPresetAdaptiveFeeConstantsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU16Decoder,\n  getU16Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_PROTOCOL_FEE_RATE_DISCRIMINATOR = new Uint8Array([\n  95, 7, 4, 50, 154, 79, 156, 131,\n]);\n\nexport function getSetProtocolFeeRateDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_PROTOCOL_FEE_RATE_DISCRIMINATOR\n  );\n}\n\nexport type SetProtocolFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountFeeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountFeeAuthority extends string\n        ? ReadonlySignerAccount<TAccountFeeAuthority> &\n            AccountSignerMeta<TAccountFeeAuthority>\n        : TAccountFeeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetProtocolFeeRateInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  protocolFeeRate: number;\n};\n\nexport type SetProtocolFeeRateInstructionDataArgs = { protocolFeeRate: number };\n\nexport function getSetProtocolFeeRateInstructionDataEncoder(): FixedSizeEncoder<SetProtocolFeeRateInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['protocolFeeRate', getU16Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_PROTOCOL_FEE_RATE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetProtocolFeeRateInstructionDataDecoder(): FixedSizeDecoder<SetProtocolFeeRateInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['protocolFeeRate', getU16Decoder()],\n  ]);\n}\n\nexport function getSetProtocolFeeRateInstructionDataCodec(): FixedSizeCodec<\n  SetProtocolFeeRateInstructionDataArgs,\n  SetProtocolFeeRateInstructionData\n> {\n  return combineCodec(\n    getSetProtocolFeeRateInstructionDataEncoder(),\n    getSetProtocolFeeRateInstructionDataDecoder()\n  );\n}\n\nexport type SetProtocolFeeRateInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountFeeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  feeAuthority: TransactionSigner<TAccountFeeAuthority>;\n  protocolFeeRate: SetProtocolFeeRateInstructionDataArgs['protocolFeeRate'];\n};\n\nexport function getSetProtocolFeeRateInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountFeeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetProtocolFeeRateInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountFeeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetProtocolFeeRateInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpool,\n  TAccountFeeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    feeAuthority: { value: input.feeAuthority ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.feeAuthority),\n    ],\n    data: getSetProtocolFeeRateInstructionDataEncoder().encode(\n      args as SetProtocolFeeRateInstructionDataArgs\n    ),\n    programAddress,\n  } as SetProtocolFeeRateInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountFeeAuthority\n  >);\n}\n\nexport type ParsedSetProtocolFeeRateInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpool: TAccountMetas[1];\n    feeAuthority: TAccountMetas[2];\n  };\n  data: SetProtocolFeeRateInstructionData;\n};\n\nexport function parseSetProtocolFeeRateInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetProtocolFeeRateInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      feeAuthority: getNextAccount(),\n    },\n    data: getSetProtocolFeeRateInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_REWARD_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  34, 39, 183, 252, 83, 28, 85, 127,\n]);\n\nexport function getSetRewardAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_REWARD_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetRewardAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardAuthority extends string | AccountMeta<string> = string,\n  TAccountNewRewardAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardAuthority> &\n            AccountSignerMeta<TAccountRewardAuthority>\n        : TAccountRewardAuthority,\n      TAccountNewRewardAuthority extends string\n        ? ReadonlyAccount<TAccountNewRewardAuthority>\n        : TAccountNewRewardAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetRewardAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n};\n\nexport type SetRewardAuthorityInstructionDataArgs = { rewardIndex: number };\n\nexport function getSetRewardAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetRewardAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_REWARD_AUTHORITY_DISCRIMINATOR })\n  );\n}\n\nexport function getSetRewardAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetRewardAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getSetRewardAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetRewardAuthorityInstructionDataArgs,\n  SetRewardAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetRewardAuthorityInstructionDataEncoder(),\n    getSetRewardAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetRewardAuthorityInput<\n  TAccountWhirlpool extends string = string,\n  TAccountRewardAuthority extends string = string,\n  TAccountNewRewardAuthority extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardAuthority: TransactionSigner<TAccountRewardAuthority>;\n  newRewardAuthority: Address<TAccountNewRewardAuthority>;\n  rewardIndex: SetRewardAuthorityInstructionDataArgs['rewardIndex'];\n};\n\nexport function getSetRewardAuthorityInstruction<\n  TAccountWhirlpool extends string,\n  TAccountRewardAuthority extends string,\n  TAccountNewRewardAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetRewardAuthorityInput<\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountNewRewardAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetRewardAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountRewardAuthority,\n  TAccountNewRewardAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardAuthority: {\n      value: input.rewardAuthority ?? null,\n      isWritable: false,\n    },\n    newRewardAuthority: {\n      value: input.newRewardAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardAuthority),\n      getAccountMeta(accounts.newRewardAuthority),\n    ],\n    data: getSetRewardAuthorityInstructionDataEncoder().encode(\n      args as SetRewardAuthorityInstructionDataArgs\n    ),\n    programAddress,\n  } as SetRewardAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountNewRewardAuthority\n  >);\n}\n\nexport type ParsedSetRewardAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    rewardAuthority: TAccountMetas[1];\n    newRewardAuthority: TAccountMetas[2];\n  };\n  data: SetRewardAuthorityInstructionData;\n};\n\nexport function parseSetRewardAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetRewardAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      rewardAuthority: getNextAccount(),\n      newRewardAuthority: getNextAccount(),\n    },\n    data: getSetRewardAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_REWARD_AUTHORITY_BY_SUPER_AUTHORITY_DISCRIMINATOR =\n  new Uint8Array([240, 154, 201, 198, 148, 93, 56, 25]);\n\nexport function getSetRewardAuthorityBySuperAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_REWARD_AUTHORITY_BY_SUPER_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetRewardAuthorityBySuperAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardEmissionsSuperAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountNewRewardAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardEmissionsSuperAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardEmissionsSuperAuthority> &\n            AccountSignerMeta<TAccountRewardEmissionsSuperAuthority>\n        : TAccountRewardEmissionsSuperAuthority,\n      TAccountNewRewardAuthority extends string\n        ? ReadonlyAccount<TAccountNewRewardAuthority>\n        : TAccountNewRewardAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetRewardAuthorityBySuperAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n};\n\nexport type SetRewardAuthorityBySuperAuthorityInstructionDataArgs = {\n  rewardIndex: number;\n};\n\nexport function getSetRewardAuthorityBySuperAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetRewardAuthorityBySuperAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_REWARD_AUTHORITY_BY_SUPER_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetRewardAuthorityBySuperAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetRewardAuthorityBySuperAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n  ]);\n}\n\nexport function getSetRewardAuthorityBySuperAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetRewardAuthorityBySuperAuthorityInstructionDataArgs,\n  SetRewardAuthorityBySuperAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetRewardAuthorityBySuperAuthorityInstructionDataEncoder(),\n    getSetRewardAuthorityBySuperAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetRewardAuthorityBySuperAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountRewardEmissionsSuperAuthority extends string = string,\n  TAccountNewRewardAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardEmissionsSuperAuthority: TransactionSigner<TAccountRewardEmissionsSuperAuthority>;\n  newRewardAuthority: Address<TAccountNewRewardAuthority>;\n  rewardIndex: SetRewardAuthorityBySuperAuthorityInstructionDataArgs['rewardIndex'];\n};\n\nexport function getSetRewardAuthorityBySuperAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpool extends string,\n  TAccountRewardEmissionsSuperAuthority extends string,\n  TAccountNewRewardAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetRewardAuthorityBySuperAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountRewardEmissionsSuperAuthority,\n    TAccountNewRewardAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetRewardAuthorityBySuperAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpool,\n  TAccountRewardEmissionsSuperAuthority,\n  TAccountNewRewardAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardEmissionsSuperAuthority: {\n      value: input.rewardEmissionsSuperAuthority ?? null,\n      isWritable: false,\n    },\n    newRewardAuthority: {\n      value: input.newRewardAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardEmissionsSuperAuthority),\n      getAccountMeta(accounts.newRewardAuthority),\n    ],\n    data: getSetRewardAuthorityBySuperAuthorityInstructionDataEncoder().encode(\n      args as SetRewardAuthorityBySuperAuthorityInstructionDataArgs\n    ),\n    programAddress,\n  } as SetRewardAuthorityBySuperAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpool,\n    TAccountRewardEmissionsSuperAuthority,\n    TAccountNewRewardAuthority\n  >);\n}\n\nexport type ParsedSetRewardAuthorityBySuperAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpool: TAccountMetas[1];\n    rewardEmissionsSuperAuthority: TAccountMetas[2];\n    newRewardAuthority: TAccountMetas[3];\n  };\n  data: SetRewardAuthorityBySuperAuthorityInstructionData;\n};\n\nexport function parseSetRewardAuthorityBySuperAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetRewardAuthorityBySuperAuthorityInstruction<\n  TProgram,\n  TAccountMetas\n> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpool: getNextAccount(),\n      rewardEmissionsSuperAuthority: getNextAccount(),\n      newRewardAuthority: getNextAccount(),\n    },\n    data: getSetRewardAuthorityBySuperAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_REWARD_EMISSIONS_DISCRIMINATOR = new Uint8Array([\n  13, 197, 86, 168, 109, 176, 27, 244,\n]);\n\nexport function getSetRewardEmissionsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_REWARD_EMISSIONS_DISCRIMINATOR\n  );\n}\n\nexport type SetRewardEmissionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardAuthority extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardAuthority> &\n            AccountSignerMeta<TAccountRewardAuthority>\n        : TAccountRewardAuthority,\n      TAccountRewardVault extends string\n        ? ReadonlyAccount<TAccountRewardVault>\n        : TAccountRewardVault,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetRewardEmissionsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n  emissionsPerSecondX64: bigint;\n};\n\nexport type SetRewardEmissionsInstructionDataArgs = {\n  rewardIndex: number;\n  emissionsPerSecondX64: number | bigint;\n};\n\nexport function getSetRewardEmissionsInstructionDataEncoder(): FixedSizeEncoder<SetRewardEmissionsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n      ['emissionsPerSecondX64', getU128Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SET_REWARD_EMISSIONS_DISCRIMINATOR })\n  );\n}\n\nexport function getSetRewardEmissionsInstructionDataDecoder(): FixedSizeDecoder<SetRewardEmissionsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n    ['emissionsPerSecondX64', getU128Decoder()],\n  ]);\n}\n\nexport function getSetRewardEmissionsInstructionDataCodec(): FixedSizeCodec<\n  SetRewardEmissionsInstructionDataArgs,\n  SetRewardEmissionsInstructionData\n> {\n  return combineCodec(\n    getSetRewardEmissionsInstructionDataEncoder(),\n    getSetRewardEmissionsInstructionDataDecoder()\n  );\n}\n\nexport type SetRewardEmissionsInput<\n  TAccountWhirlpool extends string = string,\n  TAccountRewardAuthority extends string = string,\n  TAccountRewardVault extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardAuthority: TransactionSigner<TAccountRewardAuthority>;\n  rewardVault: Address<TAccountRewardVault>;\n  rewardIndex: SetRewardEmissionsInstructionDataArgs['rewardIndex'];\n  emissionsPerSecondX64: SetRewardEmissionsInstructionDataArgs['emissionsPerSecondX64'];\n};\n\nexport function getSetRewardEmissionsInstruction<\n  TAccountWhirlpool extends string,\n  TAccountRewardAuthority extends string,\n  TAccountRewardVault extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetRewardEmissionsInput<\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountRewardVault\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetRewardEmissionsInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountRewardAuthority,\n  TAccountRewardVault\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardAuthority: {\n      value: input.rewardAuthority ?? null,\n      isWritable: false,\n    },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardAuthority),\n      getAccountMeta(accounts.rewardVault),\n    ],\n    data: getSetRewardEmissionsInstructionDataEncoder().encode(\n      args as SetRewardEmissionsInstructionDataArgs\n    ),\n    programAddress,\n  } as SetRewardEmissionsInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountRewardVault\n  >);\n}\n\nexport type ParsedSetRewardEmissionsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    rewardAuthority: TAccountMetas[1];\n    rewardVault: TAccountMetas[2];\n  };\n  data: SetRewardEmissionsInstructionData;\n};\n\nexport function parseSetRewardEmissionsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetRewardEmissionsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      rewardAuthority: getNextAccount(),\n      rewardVault: getNextAccount(),\n    },\n    data: getSetRewardEmissionsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_REWARD_EMISSIONS_SUPER_AUTHORITY_DISCRIMINATOR =\n  new Uint8Array([207, 5, 200, 209, 122, 56, 82, 183]);\n\nexport function getSetRewardEmissionsSuperAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_REWARD_EMISSIONS_SUPER_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetRewardEmissionsSuperAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountRewardEmissionsSuperAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountNewRewardEmissionsSuperAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? WritableAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountRewardEmissionsSuperAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardEmissionsSuperAuthority> &\n            AccountSignerMeta<TAccountRewardEmissionsSuperAuthority>\n        : TAccountRewardEmissionsSuperAuthority,\n      TAccountNewRewardEmissionsSuperAuthority extends string\n        ? ReadonlyAccount<TAccountNewRewardEmissionsSuperAuthority>\n        : TAccountNewRewardEmissionsSuperAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetRewardEmissionsSuperAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetRewardEmissionsSuperAuthorityInstructionDataArgs = {};\n\nexport function getSetRewardEmissionsSuperAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetRewardEmissionsSuperAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_REWARD_EMISSIONS_SUPER_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetRewardEmissionsSuperAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetRewardEmissionsSuperAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetRewardEmissionsSuperAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetRewardEmissionsSuperAuthorityInstructionDataArgs,\n  SetRewardEmissionsSuperAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetRewardEmissionsSuperAuthorityInstructionDataEncoder(),\n    getSetRewardEmissionsSuperAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetRewardEmissionsSuperAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountRewardEmissionsSuperAuthority extends string = string,\n  TAccountNewRewardEmissionsSuperAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  rewardEmissionsSuperAuthority: TransactionSigner<TAccountRewardEmissionsSuperAuthority>;\n  newRewardEmissionsSuperAuthority: Address<TAccountNewRewardEmissionsSuperAuthority>;\n};\n\nexport function getSetRewardEmissionsSuperAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountRewardEmissionsSuperAuthority extends string,\n  TAccountNewRewardEmissionsSuperAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetRewardEmissionsSuperAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountRewardEmissionsSuperAuthority,\n    TAccountNewRewardEmissionsSuperAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetRewardEmissionsSuperAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountRewardEmissionsSuperAuthority,\n  TAccountNewRewardEmissionsSuperAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: true,\n    },\n    rewardEmissionsSuperAuthority: {\n      value: input.rewardEmissionsSuperAuthority ?? null,\n      isWritable: false,\n    },\n    newRewardEmissionsSuperAuthority: {\n      value: input.newRewardEmissionsSuperAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.rewardEmissionsSuperAuthority),\n      getAccountMeta(accounts.newRewardEmissionsSuperAuthority),\n    ],\n    data: getSetRewardEmissionsSuperAuthorityInstructionDataEncoder().encode(\n      {}\n    ),\n    programAddress,\n  } as SetRewardEmissionsSuperAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountRewardEmissionsSuperAuthority,\n    TAccountNewRewardEmissionsSuperAuthority\n  >);\n}\n\nexport type ParsedSetRewardEmissionsSuperAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    rewardEmissionsSuperAuthority: TAccountMetas[1];\n    newRewardEmissionsSuperAuthority: TAccountMetas[2];\n  };\n  data: SetRewardEmissionsSuperAuthorityInstructionData;\n};\n\nexport function parseSetRewardEmissionsSuperAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetRewardEmissionsSuperAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      rewardEmissionsSuperAuthority: getNextAccount(),\n      newRewardEmissionsSuperAuthority: getNextAccount(),\n    },\n    data: getSetRewardEmissionsSuperAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU8Decoder,\n  getU8Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_REWARD_EMISSIONS_V2_DISCRIMINATOR = new Uint8Array([\n  114, 228, 72, 32, 193, 48, 160, 102,\n]);\n\nexport function getSetRewardEmissionsV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_REWARD_EMISSIONS_V2_DISCRIMINATOR\n  );\n}\n\nexport type SetRewardEmissionsV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountRewardAuthority extends string | AccountMeta<string> = string,\n  TAccountRewardVault extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountRewardAuthority extends string\n        ? ReadonlySignerAccount<TAccountRewardAuthority> &\n            AccountSignerMeta<TAccountRewardAuthority>\n        : TAccountRewardAuthority,\n      TAccountRewardVault extends string\n        ? ReadonlyAccount<TAccountRewardVault>\n        : TAccountRewardVault,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetRewardEmissionsV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  rewardIndex: number;\n  emissionsPerSecondX64: bigint;\n};\n\nexport type SetRewardEmissionsV2InstructionDataArgs = {\n  rewardIndex: number;\n  emissionsPerSecondX64: number | bigint;\n};\n\nexport function getSetRewardEmissionsV2InstructionDataEncoder(): FixedSizeEncoder<SetRewardEmissionsV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['rewardIndex', getU8Encoder()],\n      ['emissionsPerSecondX64', getU128Encoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_REWARD_EMISSIONS_V2_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetRewardEmissionsV2InstructionDataDecoder(): FixedSizeDecoder<SetRewardEmissionsV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['rewardIndex', getU8Decoder()],\n    ['emissionsPerSecondX64', getU128Decoder()],\n  ]);\n}\n\nexport function getSetRewardEmissionsV2InstructionDataCodec(): FixedSizeCodec<\n  SetRewardEmissionsV2InstructionDataArgs,\n  SetRewardEmissionsV2InstructionData\n> {\n  return combineCodec(\n    getSetRewardEmissionsV2InstructionDataEncoder(),\n    getSetRewardEmissionsV2InstructionDataDecoder()\n  );\n}\n\nexport type SetRewardEmissionsV2Input<\n  TAccountWhirlpool extends string = string,\n  TAccountRewardAuthority extends string = string,\n  TAccountRewardVault extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  rewardAuthority: TransactionSigner<TAccountRewardAuthority>;\n  rewardVault: Address<TAccountRewardVault>;\n  rewardIndex: SetRewardEmissionsV2InstructionDataArgs['rewardIndex'];\n  emissionsPerSecondX64: SetRewardEmissionsV2InstructionDataArgs['emissionsPerSecondX64'];\n};\n\nexport function getSetRewardEmissionsV2Instruction<\n  TAccountWhirlpool extends string,\n  TAccountRewardAuthority extends string,\n  TAccountRewardVault extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetRewardEmissionsV2Input<\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountRewardVault\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetRewardEmissionsV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountRewardAuthority,\n  TAccountRewardVault\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    rewardAuthority: {\n      value: input.rewardAuthority ?? null,\n      isWritable: false,\n    },\n    rewardVault: { value: input.rewardVault ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.rewardAuthority),\n      getAccountMeta(accounts.rewardVault),\n    ],\n    data: getSetRewardEmissionsV2InstructionDataEncoder().encode(\n      args as SetRewardEmissionsV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SetRewardEmissionsV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountRewardAuthority,\n    TAccountRewardVault\n  >);\n}\n\nexport type ParsedSetRewardEmissionsV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    rewardAuthority: TAccountMetas[1];\n    rewardVault: TAccountMetas[2];\n  };\n  data: SetRewardEmissionsV2InstructionData;\n};\n\nexport function parseSetRewardEmissionsV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetRewardEmissionsV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 3) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      rewardAuthority: getNextAccount(),\n      rewardVault: getNextAccount(),\n    },\n    data: getSetRewardEmissionsV2InstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\nimport {\n  getTokenBadgeAttributeDecoder,\n  getTokenBadgeAttributeEncoder,\n  type TokenBadgeAttribute,\n  type TokenBadgeAttributeArgs,\n} from '../types';\n\nexport const SET_TOKEN_BADGE_ATTRIBUTE_DISCRIMINATOR = new Uint8Array([\n  224, 88, 65, 33, 138, 147, 246, 137,\n]);\n\nexport function getSetTokenBadgeAttributeDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_TOKEN_BADGE_ATTRIBUTE_DISCRIMINATOR\n  );\n}\n\nexport type SetTokenBadgeAttributeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfigExtension extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenBadgeAuthority extends string | AccountMeta<string> = string,\n  TAccountTokenMint extends string | AccountMeta<string> = string,\n  TAccountTokenBadge extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpoolsConfigExtension extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfigExtension>\n        : TAccountWhirlpoolsConfigExtension,\n      TAccountTokenBadgeAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenBadgeAuthority> &\n            AccountSignerMeta<TAccountTokenBadgeAuthority>\n        : TAccountTokenBadgeAuthority,\n      TAccountTokenMint extends string\n        ? ReadonlyAccount<TAccountTokenMint>\n        : TAccountTokenMint,\n      TAccountTokenBadge extends string\n        ? WritableAccount<TAccountTokenBadge>\n        : TAccountTokenBadge,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetTokenBadgeAttributeInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  attribute: TokenBadgeAttribute;\n};\n\nexport type SetTokenBadgeAttributeInstructionDataArgs = {\n  attribute: TokenBadgeAttributeArgs;\n};\n\nexport function getSetTokenBadgeAttributeInstructionDataEncoder(): FixedSizeEncoder<SetTokenBadgeAttributeInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['attribute', getTokenBadgeAttributeEncoder()],\n    ]),\n    (value) => ({\n      ...value,\n      discriminator: SET_TOKEN_BADGE_ATTRIBUTE_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetTokenBadgeAttributeInstructionDataDecoder(): FixedSizeDecoder<SetTokenBadgeAttributeInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['attribute', getTokenBadgeAttributeDecoder()],\n  ]);\n}\n\nexport function getSetTokenBadgeAttributeInstructionDataCodec(): FixedSizeCodec<\n  SetTokenBadgeAttributeInstructionDataArgs,\n  SetTokenBadgeAttributeInstructionData\n> {\n  return combineCodec(\n    getSetTokenBadgeAttributeInstructionDataEncoder(),\n    getSetTokenBadgeAttributeInstructionDataDecoder()\n  );\n}\n\nexport type SetTokenBadgeAttributeInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountTokenBadgeAuthority extends string = string,\n  TAccountTokenMint extends string = string,\n  TAccountTokenBadge extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  tokenBadgeAuthority: TransactionSigner<TAccountTokenBadgeAuthority>;\n  tokenMint: Address<TAccountTokenMint>;\n  tokenBadge: Address<TAccountTokenBadge>;\n  attribute: SetTokenBadgeAttributeInstructionDataArgs['attribute'];\n};\n\nexport function getSetTokenBadgeAttributeInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountTokenBadgeAuthority extends string,\n  TAccountTokenMint extends string,\n  TAccountTokenBadge extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetTokenBadgeAttributeInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetTokenBadgeAttributeInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpoolsConfigExtension,\n  TAccountTokenBadgeAuthority,\n  TAccountTokenMint,\n  TAccountTokenBadge\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: false,\n    },\n    tokenBadgeAuthority: {\n      value: input.tokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n    tokenMint: { value: input.tokenMint ?? null, isWritable: false },\n    tokenBadge: { value: input.tokenBadge ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.tokenBadgeAuthority),\n      getAccountMeta(accounts.tokenMint),\n      getAccountMeta(accounts.tokenBadge),\n    ],\n    data: getSetTokenBadgeAttributeInstructionDataEncoder().encode(\n      args as SetTokenBadgeAttributeInstructionDataArgs\n    ),\n    programAddress,\n  } as SetTokenBadgeAttributeInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountTokenBadgeAuthority,\n    TAccountTokenMint,\n    TAccountTokenBadge\n  >);\n}\n\nexport type ParsedSetTokenBadgeAttributeInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpoolsConfigExtension: TAccountMetas[1];\n    tokenBadgeAuthority: TAccountMetas[2];\n    tokenMint: TAccountMetas[3];\n    tokenBadge: TAccountMetas[4];\n  };\n  data: SetTokenBadgeAttributeInstructionData;\n};\n\nexport function parseSetTokenBadgeAttributeInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetTokenBadgeAttributeInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 5) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpoolsConfigExtension: getNextAccount(),\n      tokenBadgeAuthority: getNextAccount(),\n      tokenMint: getNextAccount(),\n      tokenBadge: getNextAccount(),\n    },\n    data: getSetTokenBadgeAttributeInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const SET_TOKEN_BADGE_AUTHORITY_DISCRIMINATOR = new Uint8Array([\n  207, 202, 4, 32, 205, 79, 13, 178,\n]);\n\nexport function getSetTokenBadgeAuthorityDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    SET_TOKEN_BADGE_AUTHORITY_DISCRIMINATOR\n  );\n}\n\nexport type SetTokenBadgeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolsConfig extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolsConfigExtension extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountConfigExtensionAuthority extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountNewTokenBadgeAuthority extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolsConfig extends string\n        ? ReadonlyAccount<TAccountWhirlpoolsConfig>\n        : TAccountWhirlpoolsConfig,\n      TAccountWhirlpoolsConfigExtension extends string\n        ? WritableAccount<TAccountWhirlpoolsConfigExtension>\n        : TAccountWhirlpoolsConfigExtension,\n      TAccountConfigExtensionAuthority extends string\n        ? ReadonlySignerAccount<TAccountConfigExtensionAuthority> &\n            AccountSignerMeta<TAccountConfigExtensionAuthority>\n        : TAccountConfigExtensionAuthority,\n      TAccountNewTokenBadgeAuthority extends string\n        ? ReadonlyAccount<TAccountNewTokenBadgeAuthority>\n        : TAccountNewTokenBadgeAuthority,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SetTokenBadgeAuthorityInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type SetTokenBadgeAuthorityInstructionDataArgs = {};\n\nexport function getSetTokenBadgeAuthorityInstructionDataEncoder(): FixedSizeEncoder<SetTokenBadgeAuthorityInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: SET_TOKEN_BADGE_AUTHORITY_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getSetTokenBadgeAuthorityInstructionDataDecoder(): FixedSizeDecoder<SetTokenBadgeAuthorityInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getSetTokenBadgeAuthorityInstructionDataCodec(): FixedSizeCodec<\n  SetTokenBadgeAuthorityInstructionDataArgs,\n  SetTokenBadgeAuthorityInstructionData\n> {\n  return combineCodec(\n    getSetTokenBadgeAuthorityInstructionDataEncoder(),\n    getSetTokenBadgeAuthorityInstructionDataDecoder()\n  );\n}\n\nexport type SetTokenBadgeAuthorityInput<\n  TAccountWhirlpoolsConfig extends string = string,\n  TAccountWhirlpoolsConfigExtension extends string = string,\n  TAccountConfigExtensionAuthority extends string = string,\n  TAccountNewTokenBadgeAuthority extends string = string,\n> = {\n  whirlpoolsConfig: Address<TAccountWhirlpoolsConfig>;\n  whirlpoolsConfigExtension: Address<TAccountWhirlpoolsConfigExtension>;\n  configExtensionAuthority: TransactionSigner<TAccountConfigExtensionAuthority>;\n  newTokenBadgeAuthority: Address<TAccountNewTokenBadgeAuthority>;\n};\n\nexport function getSetTokenBadgeAuthorityInstruction<\n  TAccountWhirlpoolsConfig extends string,\n  TAccountWhirlpoolsConfigExtension extends string,\n  TAccountConfigExtensionAuthority extends string,\n  TAccountNewTokenBadgeAuthority extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SetTokenBadgeAuthorityInput<\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountConfigExtensionAuthority,\n    TAccountNewTokenBadgeAuthority\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SetTokenBadgeAuthorityInstruction<\n  TProgramAddress,\n  TAccountWhirlpoolsConfig,\n  TAccountWhirlpoolsConfigExtension,\n  TAccountConfigExtensionAuthority,\n  TAccountNewTokenBadgeAuthority\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolsConfig: {\n      value: input.whirlpoolsConfig ?? null,\n      isWritable: false,\n    },\n    whirlpoolsConfigExtension: {\n      value: input.whirlpoolsConfigExtension ?? null,\n      isWritable: true,\n    },\n    configExtensionAuthority: {\n      value: input.configExtensionAuthority ?? null,\n      isWritable: false,\n    },\n    newTokenBadgeAuthority: {\n      value: input.newTokenBadgeAuthority ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolsConfig),\n      getAccountMeta(accounts.whirlpoolsConfigExtension),\n      getAccountMeta(accounts.configExtensionAuthority),\n      getAccountMeta(accounts.newTokenBadgeAuthority),\n    ],\n    data: getSetTokenBadgeAuthorityInstructionDataEncoder().encode({}),\n    programAddress,\n  } as SetTokenBadgeAuthorityInstruction<\n    TProgramAddress,\n    TAccountWhirlpoolsConfig,\n    TAccountWhirlpoolsConfigExtension,\n    TAccountConfigExtensionAuthority,\n    TAccountNewTokenBadgeAuthority\n  >);\n}\n\nexport type ParsedSetTokenBadgeAuthorityInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolsConfig: TAccountMetas[0];\n    whirlpoolsConfigExtension: TAccountMetas[1];\n    configExtensionAuthority: TAccountMetas[2];\n    newTokenBadgeAuthority: TAccountMetas[3];\n  };\n  data: SetTokenBadgeAuthorityInstructionData;\n};\n\nexport function parseSetTokenBadgeAuthorityInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSetTokenBadgeAuthorityInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolsConfig: getNextAccount(),\n      whirlpoolsConfigExtension: getNextAccount(),\n      configExtensionAuthority: getNextAccount(),\n      newTokenBadgeAuthority: getNextAccount(),\n    },\n    data: getSetTokenBadgeAuthorityInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const SWAP_DISCRIMINATOR = new Uint8Array([\n  248, 198, 158, 145, 225, 117, 135, 200,\n]);\n\nexport function getSwapDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(SWAP_DISCRIMINATOR);\n}\n\nexport type SwapInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountTokenAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArray0 extends string | AccountMeta<string> = string,\n  TAccountTickArray1 extends string | AccountMeta<string> = string,\n  TAccountTickArray2 extends string | AccountMeta<string> = string,\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountTokenAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenAuthority> &\n            AccountSignerMeta<TAccountTokenAuthority>\n        : TAccountTokenAuthority,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArray0 extends string\n        ? WritableAccount<TAccountTickArray0>\n        : TAccountTickArray0,\n      TAccountTickArray1 extends string\n        ? WritableAccount<TAccountTickArray1>\n        : TAccountTickArray1,\n      TAccountTickArray2 extends string\n        ? WritableAccount<TAccountTickArray2>\n        : TAccountTickArray2,\n      TAccountOracle extends string\n        ? ReadonlyAccount<TAccountOracle>\n        : TAccountOracle,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SwapInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amount: bigint;\n  otherAmountThreshold: bigint;\n  sqrtPriceLimit: bigint;\n  amountSpecifiedIsInput: boolean;\n  aToB: boolean;\n};\n\nexport type SwapInstructionDataArgs = {\n  amount: number | bigint;\n  otherAmountThreshold: number | bigint;\n  sqrtPriceLimit: number | bigint;\n  amountSpecifiedIsInput: boolean;\n  aToB: boolean;\n};\n\nexport function getSwapInstructionDataEncoder(): FixedSizeEncoder<SwapInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amount', getU64Encoder()],\n      ['otherAmountThreshold', getU64Encoder()],\n      ['sqrtPriceLimit', getU128Encoder()],\n      ['amountSpecifiedIsInput', getBooleanEncoder()],\n      ['aToB', getBooleanEncoder()],\n    ]),\n    (value) => ({ ...value, discriminator: SWAP_DISCRIMINATOR })\n  );\n}\n\nexport function getSwapInstructionDataDecoder(): FixedSizeDecoder<SwapInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amount', getU64Decoder()],\n    ['otherAmountThreshold', getU64Decoder()],\n    ['sqrtPriceLimit', getU128Decoder()],\n    ['amountSpecifiedIsInput', getBooleanDecoder()],\n    ['aToB', getBooleanDecoder()],\n  ]);\n}\n\nexport function getSwapInstructionDataCodec(): FixedSizeCodec<\n  SwapInstructionDataArgs,\n  SwapInstructionData\n> {\n  return combineCodec(\n    getSwapInstructionDataEncoder(),\n    getSwapInstructionDataDecoder()\n  );\n}\n\nexport type SwapAsyncInput<\n  TAccountTokenProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArray0 extends string = string,\n  TAccountTickArray1 extends string = string,\n  TAccountTickArray2 extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  tokenProgram?: Address<TAccountTokenProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArray0: Address<TAccountTickArray0>;\n  tickArray1: Address<TAccountTickArray1>;\n  tickArray2: Address<TAccountTickArray2>;\n  oracle?: Address<TAccountOracle>;\n  amount: SwapInstructionDataArgs['amount'];\n  otherAmountThreshold: SwapInstructionDataArgs['otherAmountThreshold'];\n  sqrtPriceLimit: SwapInstructionDataArgs['sqrtPriceLimit'];\n  amountSpecifiedIsInput: SwapInstructionDataArgs['amountSpecifiedIsInput'];\n  aToB: SwapInstructionDataArgs['aToB'];\n};\n\nexport async function getSwapInstructionAsync<\n  TAccountTokenProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArray0 extends string,\n  TAccountTickArray1 extends string,\n  TAccountTickArray2 extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SwapAsyncInput<\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArray0: { value: input.tickArray0 ?? null, isWritable: true },\n    tickArray1: { value: input.tickArray1 ?? null, isWritable: true },\n    tickArray2: { value: input.tickArray2 ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.oracle.value) {\n    accounts.oracle.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpool.value)),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArray0),\n      getAccountMeta(accounts.tickArray1),\n      getAccountMeta(accounts.tickArray2),\n      getAccountMeta(accounts.oracle),\n    ],\n    data: getSwapInstructionDataEncoder().encode(\n      args as SwapInstructionDataArgs\n    ),\n    programAddress,\n  } as SwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >);\n}\n\nexport type SwapInput<\n  TAccountTokenProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArray0 extends string = string,\n  TAccountTickArray1 extends string = string,\n  TAccountTickArray2 extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  tokenProgram?: Address<TAccountTokenProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArray0: Address<TAccountTickArray0>;\n  tickArray1: Address<TAccountTickArray1>;\n  tickArray2: Address<TAccountTickArray2>;\n  oracle: Address<TAccountOracle>;\n  amount: SwapInstructionDataArgs['amount'];\n  otherAmountThreshold: SwapInstructionDataArgs['otherAmountThreshold'];\n  sqrtPriceLimit: SwapInstructionDataArgs['sqrtPriceLimit'];\n  amountSpecifiedIsInput: SwapInstructionDataArgs['amountSpecifiedIsInput'];\n  aToB: SwapInstructionDataArgs['aToB'];\n};\n\nexport function getSwapInstruction<\n  TAccountTokenProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArray0 extends string,\n  TAccountTickArray1 extends string,\n  TAccountTickArray2 extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SwapInput<\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SwapInstruction<\n  TProgramAddress,\n  TAccountTokenProgram,\n  TAccountTokenAuthority,\n  TAccountWhirlpool,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenVaultA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultB,\n  TAccountTickArray0,\n  TAccountTickArray1,\n  TAccountTickArray2,\n  TAccountOracle\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArray0: { value: input.tickArray0 ?? null, isWritable: true },\n    tickArray1: { value: input.tickArray1 ?? null, isWritable: true },\n    tickArray2: { value: input.tickArray2 ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArray0),\n      getAccountMeta(accounts.tickArray1),\n      getAccountMeta(accounts.tickArray2),\n      getAccountMeta(accounts.oracle),\n    ],\n    data: getSwapInstructionDataEncoder().encode(\n      args as SwapInstructionDataArgs\n    ),\n    programAddress,\n  } as SwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >);\n}\n\nexport type ParsedSwapInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    tokenProgram: TAccountMetas[0];\n    tokenAuthority: TAccountMetas[1];\n    whirlpool: TAccountMetas[2];\n    tokenOwnerAccountA: TAccountMetas[3];\n    tokenVaultA: TAccountMetas[4];\n    tokenOwnerAccountB: TAccountMetas[5];\n    tokenVaultB: TAccountMetas[6];\n    tickArray0: TAccountMetas[7];\n    tickArray1: TAccountMetas[8];\n    tickArray2: TAccountMetas[9];\n    oracle: TAccountMetas[10];\n  };\n  data: SwapInstructionData;\n};\n\nexport function parseSwapInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSwapInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 11) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      tokenProgram: getNextAccount(),\n      tokenAuthority: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArray0: getNextAccount(),\n      tickArray1: getNextAccount(),\n      tickArray2: getNextAccount(),\n      oracle: getNextAccount(),\n    },\n    data: getSwapInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const SWAP_V2_DISCRIMINATOR = new Uint8Array([\n  43, 4, 237, 11, 26, 201, 30, 98,\n]);\n\nexport function getSwapV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(SWAP_V2_DISCRIMINATOR);\n}\n\nexport type SwapV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountTokenProgramA extends string | AccountMeta<string> = string,\n  TAccountTokenProgramB extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TAccountTokenAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountTokenMintA extends string | AccountMeta<string> = string,\n  TAccountTokenMintB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultB extends string | AccountMeta<string> = string,\n  TAccountTickArray0 extends string | AccountMeta<string> = string,\n  TAccountTickArray1 extends string | AccountMeta<string> = string,\n  TAccountTickArray2 extends string | AccountMeta<string> = string,\n  TAccountOracle extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTokenProgramA extends string\n        ? ReadonlyAccount<TAccountTokenProgramA>\n        : TAccountTokenProgramA,\n      TAccountTokenProgramB extends string\n        ? ReadonlyAccount<TAccountTokenProgramB>\n        : TAccountTokenProgramB,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      TAccountTokenAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenAuthority> &\n            AccountSignerMeta<TAccountTokenAuthority>\n        : TAccountTokenAuthority,\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountTokenMintA extends string\n        ? ReadonlyAccount<TAccountTokenMintA>\n        : TAccountTokenMintA,\n      TAccountTokenMintB extends string\n        ? ReadonlyAccount<TAccountTokenMintB>\n        : TAccountTokenMintB,\n      TAccountTokenOwnerAccountA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountA>\n        : TAccountTokenOwnerAccountA,\n      TAccountTokenVaultA extends string\n        ? WritableAccount<TAccountTokenVaultA>\n        : TAccountTokenVaultA,\n      TAccountTokenOwnerAccountB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountB>\n        : TAccountTokenOwnerAccountB,\n      TAccountTokenVaultB extends string\n        ? WritableAccount<TAccountTokenVaultB>\n        : TAccountTokenVaultB,\n      TAccountTickArray0 extends string\n        ? WritableAccount<TAccountTickArray0>\n        : TAccountTickArray0,\n      TAccountTickArray1 extends string\n        ? WritableAccount<TAccountTickArray1>\n        : TAccountTickArray1,\n      TAccountTickArray2 extends string\n        ? WritableAccount<TAccountTickArray2>\n        : TAccountTickArray2,\n      TAccountOracle extends string\n        ? WritableAccount<TAccountOracle>\n        : TAccountOracle,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type SwapV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amount: bigint;\n  otherAmountThreshold: bigint;\n  sqrtPriceLimit: bigint;\n  amountSpecifiedIsInput: boolean;\n  aToB: boolean;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type SwapV2InstructionDataArgs = {\n  amount: number | bigint;\n  otherAmountThreshold: number | bigint;\n  sqrtPriceLimit: number | bigint;\n  amountSpecifiedIsInput: boolean;\n  aToB: boolean;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getSwapV2InstructionDataEncoder(): Encoder<SwapV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amount', getU64Encoder()],\n      ['otherAmountThreshold', getU64Encoder()],\n      ['sqrtPriceLimit', getU128Encoder()],\n      ['amountSpecifiedIsInput', getBooleanEncoder()],\n      ['aToB', getBooleanEncoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: SWAP_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getSwapV2InstructionDataDecoder(): Decoder<SwapV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amount', getU64Decoder()],\n    ['otherAmountThreshold', getU64Decoder()],\n    ['sqrtPriceLimit', getU128Decoder()],\n    ['amountSpecifiedIsInput', getBooleanDecoder()],\n    ['aToB', getBooleanDecoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getSwapV2InstructionDataCodec(): Codec<\n  SwapV2InstructionDataArgs,\n  SwapV2InstructionData\n> {\n  return combineCodec(\n    getSwapV2InstructionDataEncoder(),\n    getSwapV2InstructionDataDecoder()\n  );\n}\n\nexport type SwapV2AsyncInput<\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArray0 extends string = string,\n  TAccountTickArray1 extends string = string,\n  TAccountTickArray2 extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArray0: Address<TAccountTickArray0>;\n  tickArray1: Address<TAccountTickArray1>;\n  tickArray2: Address<TAccountTickArray2>;\n  oracle?: Address<TAccountOracle>;\n  amount: SwapV2InstructionDataArgs['amount'];\n  otherAmountThreshold: SwapV2InstructionDataArgs['otherAmountThreshold'];\n  sqrtPriceLimit: SwapV2InstructionDataArgs['sqrtPriceLimit'];\n  amountSpecifiedIsInput: SwapV2InstructionDataArgs['amountSpecifiedIsInput'];\n  aToB: SwapV2InstructionDataArgs['aToB'];\n  remainingAccountsInfo: SwapV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport async function getSwapV2InstructionAsync<\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArray0 extends string,\n  TAccountTickArray1 extends string,\n  TAccountTickArray2 extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SwapV2AsyncInput<\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  SwapV2Instruction<\n    TProgramAddress,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArray0: { value: input.tickArray0 ?? null, isWritable: true },\n    tickArray1: { value: input.tickArray1 ?? null, isWritable: true },\n    tickArray2: { value: input.tickArray2 ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n  if (!accounts.oracle.value) {\n    accounts.oracle.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpool.value)),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArray0),\n      getAccountMeta(accounts.tickArray1),\n      getAccountMeta(accounts.tickArray2),\n      getAccountMeta(accounts.oracle),\n    ],\n    data: getSwapV2InstructionDataEncoder().encode(\n      args as SwapV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SwapV2Instruction<\n    TProgramAddress,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >);\n}\n\nexport type SwapV2Input<\n  TAccountTokenProgramA extends string = string,\n  TAccountTokenProgramB extends string = string,\n  TAccountMemoProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpool extends string = string,\n  TAccountTokenMintA extends string = string,\n  TAccountTokenMintB extends string = string,\n  TAccountTokenOwnerAccountA extends string = string,\n  TAccountTokenVaultA extends string = string,\n  TAccountTokenOwnerAccountB extends string = string,\n  TAccountTokenVaultB extends string = string,\n  TAccountTickArray0 extends string = string,\n  TAccountTickArray1 extends string = string,\n  TAccountTickArray2 extends string = string,\n  TAccountOracle extends string = string,\n> = {\n  tokenProgramA: Address<TAccountTokenProgramA>;\n  tokenProgramB: Address<TAccountTokenProgramB>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpool: Address<TAccountWhirlpool>;\n  tokenMintA: Address<TAccountTokenMintA>;\n  tokenMintB: Address<TAccountTokenMintB>;\n  tokenOwnerAccountA: Address<TAccountTokenOwnerAccountA>;\n  tokenVaultA: Address<TAccountTokenVaultA>;\n  tokenOwnerAccountB: Address<TAccountTokenOwnerAccountB>;\n  tokenVaultB: Address<TAccountTokenVaultB>;\n  tickArray0: Address<TAccountTickArray0>;\n  tickArray1: Address<TAccountTickArray1>;\n  tickArray2: Address<TAccountTickArray2>;\n  oracle: Address<TAccountOracle>;\n  amount: SwapV2InstructionDataArgs['amount'];\n  otherAmountThreshold: SwapV2InstructionDataArgs['otherAmountThreshold'];\n  sqrtPriceLimit: SwapV2InstructionDataArgs['sqrtPriceLimit'];\n  amountSpecifiedIsInput: SwapV2InstructionDataArgs['amountSpecifiedIsInput'];\n  aToB: SwapV2InstructionDataArgs['aToB'];\n  remainingAccountsInfo: SwapV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getSwapV2Instruction<\n  TAccountTokenProgramA extends string,\n  TAccountTokenProgramB extends string,\n  TAccountMemoProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpool extends string,\n  TAccountTokenMintA extends string,\n  TAccountTokenMintB extends string,\n  TAccountTokenOwnerAccountA extends string,\n  TAccountTokenVaultA extends string,\n  TAccountTokenOwnerAccountB extends string,\n  TAccountTokenVaultB extends string,\n  TAccountTickArray0 extends string,\n  TAccountTickArray1 extends string,\n  TAccountTickArray2 extends string,\n  TAccountOracle extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: SwapV2Input<\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >,\n  config?: { programAddress?: TProgramAddress }\n): SwapV2Instruction<\n  TProgramAddress,\n  TAccountTokenProgramA,\n  TAccountTokenProgramB,\n  TAccountMemoProgram,\n  TAccountTokenAuthority,\n  TAccountWhirlpool,\n  TAccountTokenMintA,\n  TAccountTokenMintB,\n  TAccountTokenOwnerAccountA,\n  TAccountTokenVaultA,\n  TAccountTokenOwnerAccountB,\n  TAccountTokenVaultB,\n  TAccountTickArray0,\n  TAccountTickArray1,\n  TAccountTickArray2,\n  TAccountOracle\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgramA: { value: input.tokenProgramA ?? null, isWritable: false },\n    tokenProgramB: { value: input.tokenProgramB ?? null, isWritable: false },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    tokenMintA: { value: input.tokenMintA ?? null, isWritable: false },\n    tokenMintB: { value: input.tokenMintB ?? null, isWritable: false },\n    tokenOwnerAccountA: {\n      value: input.tokenOwnerAccountA ?? null,\n      isWritable: true,\n    },\n    tokenVaultA: { value: input.tokenVaultA ?? null, isWritable: true },\n    tokenOwnerAccountB: {\n      value: input.tokenOwnerAccountB ?? null,\n      isWritable: true,\n    },\n    tokenVaultB: { value: input.tokenVaultB ?? null, isWritable: true },\n    tickArray0: { value: input.tickArray0 ?? null, isWritable: true },\n    tickArray1: { value: input.tickArray1 ?? null, isWritable: true },\n    tickArray2: { value: input.tickArray2 ?? null, isWritable: true },\n    oracle: { value: input.oracle ?? null, isWritable: true },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgramA),\n      getAccountMeta(accounts.tokenProgramB),\n      getAccountMeta(accounts.memoProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.tokenMintA),\n      getAccountMeta(accounts.tokenMintB),\n      getAccountMeta(accounts.tokenOwnerAccountA),\n      getAccountMeta(accounts.tokenVaultA),\n      getAccountMeta(accounts.tokenOwnerAccountB),\n      getAccountMeta(accounts.tokenVaultB),\n      getAccountMeta(accounts.tickArray0),\n      getAccountMeta(accounts.tickArray1),\n      getAccountMeta(accounts.tickArray2),\n      getAccountMeta(accounts.oracle),\n    ],\n    data: getSwapV2InstructionDataEncoder().encode(\n      args as SwapV2InstructionDataArgs\n    ),\n    programAddress,\n  } as SwapV2Instruction<\n    TProgramAddress,\n    TAccountTokenProgramA,\n    TAccountTokenProgramB,\n    TAccountMemoProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpool,\n    TAccountTokenMintA,\n    TAccountTokenMintB,\n    TAccountTokenOwnerAccountA,\n    TAccountTokenVaultA,\n    TAccountTokenOwnerAccountB,\n    TAccountTokenVaultB,\n    TAccountTickArray0,\n    TAccountTickArray1,\n    TAccountTickArray2,\n    TAccountOracle\n  >);\n}\n\nexport type ParsedSwapV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    tokenProgramA: TAccountMetas[0];\n    tokenProgramB: TAccountMetas[1];\n    memoProgram: TAccountMetas[2];\n    tokenAuthority: TAccountMetas[3];\n    whirlpool: TAccountMetas[4];\n    tokenMintA: TAccountMetas[5];\n    tokenMintB: TAccountMetas[6];\n    tokenOwnerAccountA: TAccountMetas[7];\n    tokenVaultA: TAccountMetas[8];\n    tokenOwnerAccountB: TAccountMetas[9];\n    tokenVaultB: TAccountMetas[10];\n    tickArray0: TAccountMetas[11];\n    tickArray1: TAccountMetas[12];\n    tickArray2: TAccountMetas[13];\n    oracle: TAccountMetas[14];\n  };\n  data: SwapV2InstructionData;\n};\n\nexport function parseSwapV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedSwapV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 15) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      tokenProgramA: getNextAccount(),\n      tokenProgramB: getNextAccount(),\n      memoProgram: getNextAccount(),\n      tokenAuthority: getNextAccount(),\n      whirlpool: getNextAccount(),\n      tokenMintA: getNextAccount(),\n      tokenMintB: getNextAccount(),\n      tokenOwnerAccountA: getNextAccount(),\n      tokenVaultA: getNextAccount(),\n      tokenOwnerAccountB: getNextAccount(),\n      tokenVaultB: getNextAccount(),\n      tickArray0: getNextAccount(),\n      tickArray1: getNextAccount(),\n      tickArray2: getNextAccount(),\n      oracle: getNextAccount(),\n    },\n    data: getSwapV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const TRANSFER_LOCKED_POSITION_DISCRIMINATOR = new Uint8Array([\n  179, 121, 229, 46, 67, 138, 194, 138,\n]);\n\nexport function getTransferLockedPositionDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    TRANSFER_LOCKED_POSITION_DISCRIMINATOR\n  );\n}\n\nexport type TransferLockedPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountPositionAuthority extends string | AccountMeta<string> = string,\n  TAccountReceiver extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountPositionMint extends string | AccountMeta<string> = string,\n  TAccountPositionTokenAccount extends string | AccountMeta<string> = string,\n  TAccountDestinationTokenAccount extends string | AccountMeta<string> = string,\n  TAccountLockConfig extends string | AccountMeta<string> = string,\n  TAccountToken2022Program extends\n    | string\n    | AccountMeta<string> = 'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountPositionAuthority extends string\n        ? ReadonlySignerAccount<TAccountPositionAuthority> &\n            AccountSignerMeta<TAccountPositionAuthority>\n        : TAccountPositionAuthority,\n      TAccountReceiver extends string\n        ? WritableAccount<TAccountReceiver>\n        : TAccountReceiver,\n      TAccountPosition extends string\n        ? ReadonlyAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountPositionMint extends string\n        ? ReadonlyAccount<TAccountPositionMint>\n        : TAccountPositionMint,\n      TAccountPositionTokenAccount extends string\n        ? WritableAccount<TAccountPositionTokenAccount>\n        : TAccountPositionTokenAccount,\n      TAccountDestinationTokenAccount extends string\n        ? WritableAccount<TAccountDestinationTokenAccount>\n        : TAccountDestinationTokenAccount,\n      TAccountLockConfig extends string\n        ? WritableAccount<TAccountLockConfig>\n        : TAccountLockConfig,\n      TAccountToken2022Program extends string\n        ? ReadonlyAccount<TAccountToken2022Program>\n        : TAccountToken2022Program,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type TransferLockedPositionInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type TransferLockedPositionInstructionDataArgs = {};\n\nexport function getTransferLockedPositionInstructionDataEncoder(): FixedSizeEncoder<TransferLockedPositionInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: TRANSFER_LOCKED_POSITION_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getTransferLockedPositionInstructionDataDecoder(): FixedSizeDecoder<TransferLockedPositionInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getTransferLockedPositionInstructionDataCodec(): FixedSizeCodec<\n  TransferLockedPositionInstructionDataArgs,\n  TransferLockedPositionInstructionData\n> {\n  return combineCodec(\n    getTransferLockedPositionInstructionDataEncoder(),\n    getTransferLockedPositionInstructionDataDecoder()\n  );\n}\n\nexport type TransferLockedPositionAsyncInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountDestinationTokenAccount extends string = string,\n  TAccountLockConfig extends string = string,\n  TAccountToken2022Program extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position?: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n  lockConfig: Address<TAccountLockConfig>;\n  token2022Program?: Address<TAccountToken2022Program>;\n};\n\nexport async function getTransferLockedPositionInstructionAsync<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountDestinationTokenAccount extends string,\n  TAccountLockConfig extends string,\n  TAccountToken2022Program extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TransferLockedPositionAsyncInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountDestinationTokenAccount,\n    TAccountLockConfig,\n    TAccountToken2022Program\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  TransferLockedPositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountDestinationTokenAccount,\n    TAccountLockConfig,\n    TAccountToken2022Program\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: false },\n    positionMint: { value: input.positionMint ?? null, isWritable: false },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    destinationTokenAccount: {\n      value: input.destinationTokenAccount ?? null,\n      isWritable: true,\n    },\n    lockConfig: { value: input.lockConfig ?? null, isWritable: true },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.position.value) {\n    accounts.position.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(\n          new Uint8Array([112, 111, 115, 105, 116, 105, 111, 110])\n        ),\n        getAddressEncoder().encode(expectAddress(accounts.positionMint.value)),\n      ],\n    });\n  }\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.destinationTokenAccount),\n      getAccountMeta(accounts.lockConfig),\n      getAccountMeta(accounts.token2022Program),\n    ],\n    data: getTransferLockedPositionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as TransferLockedPositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountDestinationTokenAccount,\n    TAccountLockConfig,\n    TAccountToken2022Program\n  >);\n}\n\nexport type TransferLockedPositionInput<\n  TAccountPositionAuthority extends string = string,\n  TAccountReceiver extends string = string,\n  TAccountPosition extends string = string,\n  TAccountPositionMint extends string = string,\n  TAccountPositionTokenAccount extends string = string,\n  TAccountDestinationTokenAccount extends string = string,\n  TAccountLockConfig extends string = string,\n  TAccountToken2022Program extends string = string,\n> = {\n  positionAuthority: TransactionSigner<TAccountPositionAuthority>;\n  receiver: Address<TAccountReceiver>;\n  position: Address<TAccountPosition>;\n  positionMint: Address<TAccountPositionMint>;\n  positionTokenAccount: Address<TAccountPositionTokenAccount>;\n  destinationTokenAccount: Address<TAccountDestinationTokenAccount>;\n  lockConfig: Address<TAccountLockConfig>;\n  token2022Program?: Address<TAccountToken2022Program>;\n};\n\nexport function getTransferLockedPositionInstruction<\n  TAccountPositionAuthority extends string,\n  TAccountReceiver extends string,\n  TAccountPosition extends string,\n  TAccountPositionMint extends string,\n  TAccountPositionTokenAccount extends string,\n  TAccountDestinationTokenAccount extends string,\n  TAccountLockConfig extends string,\n  TAccountToken2022Program extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TransferLockedPositionInput<\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountDestinationTokenAccount,\n    TAccountLockConfig,\n    TAccountToken2022Program\n  >,\n  config?: { programAddress?: TProgramAddress }\n): TransferLockedPositionInstruction<\n  TProgramAddress,\n  TAccountPositionAuthority,\n  TAccountReceiver,\n  TAccountPosition,\n  TAccountPositionMint,\n  TAccountPositionTokenAccount,\n  TAccountDestinationTokenAccount,\n  TAccountLockConfig,\n  TAccountToken2022Program\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    positionAuthority: {\n      value: input.positionAuthority ?? null,\n      isWritable: false,\n    },\n    receiver: { value: input.receiver ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: false },\n    positionMint: { value: input.positionMint ?? null, isWritable: false },\n    positionTokenAccount: {\n      value: input.positionTokenAccount ?? null,\n      isWritable: true,\n    },\n    destinationTokenAccount: {\n      value: input.destinationTokenAccount ?? null,\n      isWritable: true,\n    },\n    lockConfig: { value: input.lockConfig ?? null, isWritable: true },\n    token2022Program: {\n      value: input.token2022Program ?? null,\n      isWritable: false,\n    },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Resolve default values.\n  if (!accounts.token2022Program.value) {\n    accounts.token2022Program.value =\n      'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb' as Address<'TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.positionAuthority),\n      getAccountMeta(accounts.receiver),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.positionMint),\n      getAccountMeta(accounts.positionTokenAccount),\n      getAccountMeta(accounts.destinationTokenAccount),\n      getAccountMeta(accounts.lockConfig),\n      getAccountMeta(accounts.token2022Program),\n    ],\n    data: getTransferLockedPositionInstructionDataEncoder().encode({}),\n    programAddress,\n  } as TransferLockedPositionInstruction<\n    TProgramAddress,\n    TAccountPositionAuthority,\n    TAccountReceiver,\n    TAccountPosition,\n    TAccountPositionMint,\n    TAccountPositionTokenAccount,\n    TAccountDestinationTokenAccount,\n    TAccountLockConfig,\n    TAccountToken2022Program\n  >);\n}\n\nexport type ParsedTransferLockedPositionInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    positionAuthority: TAccountMetas[0];\n    receiver: TAccountMetas[1];\n    position: TAccountMetas[2];\n    positionMint: TAccountMetas[3];\n    positionTokenAccount: TAccountMetas[4];\n    destinationTokenAccount: TAccountMetas[5];\n    lockConfig: TAccountMetas[6];\n    token2022Program: TAccountMetas[7];\n  };\n  data: TransferLockedPositionInstructionData;\n};\n\nexport function parseTransferLockedPositionInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedTransferLockedPositionInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 8) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      positionAuthority: getNextAccount(),\n      receiver: getNextAccount(),\n      position: getNextAccount(),\n      positionMint: getNextAccount(),\n      positionTokenAccount: getNextAccount(),\n      destinationTokenAccount: getNextAccount(),\n      lockConfig: getNextAccount(),\n      token2022Program: getNextAccount(),\n    },\n    data: getTransferLockedPositionInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\n\nexport const TWO_HOP_SWAP_DISCRIMINATOR = new Uint8Array([\n  195, 96, 237, 108, 68, 162, 219, 230,\n]);\n\nexport function getTwoHopSwapDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    TWO_HOP_SWAP_DISCRIMINATOR\n  );\n}\n\nexport type TwoHopSwapInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountTokenProgram extends\n    | string\n    | AccountMeta<string> = 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA',\n  TAccountTokenAuthority extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolOne extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolTwo extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountOneA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultOneA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountOneB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultOneB extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountTwoA extends string | AccountMeta<string> = string,\n  TAccountTokenVaultTwoA extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountTwoB extends string | AccountMeta<string> = string,\n  TAccountTokenVaultTwoB extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne0 extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne1 extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne2 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo0 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo1 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo2 extends string | AccountMeta<string> = string,\n  TAccountOracleOne extends string | AccountMeta<string> = string,\n  TAccountOracleTwo extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountTokenProgram extends string\n        ? ReadonlyAccount<TAccountTokenProgram>\n        : TAccountTokenProgram,\n      TAccountTokenAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenAuthority> &\n            AccountSignerMeta<TAccountTokenAuthority>\n        : TAccountTokenAuthority,\n      TAccountWhirlpoolOne extends string\n        ? WritableAccount<TAccountWhirlpoolOne>\n        : TAccountWhirlpoolOne,\n      TAccountWhirlpoolTwo extends string\n        ? WritableAccount<TAccountWhirlpoolTwo>\n        : TAccountWhirlpoolTwo,\n      TAccountTokenOwnerAccountOneA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountOneA>\n        : TAccountTokenOwnerAccountOneA,\n      TAccountTokenVaultOneA extends string\n        ? WritableAccount<TAccountTokenVaultOneA>\n        : TAccountTokenVaultOneA,\n      TAccountTokenOwnerAccountOneB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountOneB>\n        : TAccountTokenOwnerAccountOneB,\n      TAccountTokenVaultOneB extends string\n        ? WritableAccount<TAccountTokenVaultOneB>\n        : TAccountTokenVaultOneB,\n      TAccountTokenOwnerAccountTwoA extends string\n        ? WritableAccount<TAccountTokenOwnerAccountTwoA>\n        : TAccountTokenOwnerAccountTwoA,\n      TAccountTokenVaultTwoA extends string\n        ? WritableAccount<TAccountTokenVaultTwoA>\n        : TAccountTokenVaultTwoA,\n      TAccountTokenOwnerAccountTwoB extends string\n        ? WritableAccount<TAccountTokenOwnerAccountTwoB>\n        : TAccountTokenOwnerAccountTwoB,\n      TAccountTokenVaultTwoB extends string\n        ? WritableAccount<TAccountTokenVaultTwoB>\n        : TAccountTokenVaultTwoB,\n      TAccountTickArrayOne0 extends string\n        ? WritableAccount<TAccountTickArrayOne0>\n        : TAccountTickArrayOne0,\n      TAccountTickArrayOne1 extends string\n        ? WritableAccount<TAccountTickArrayOne1>\n        : TAccountTickArrayOne1,\n      TAccountTickArrayOne2 extends string\n        ? WritableAccount<TAccountTickArrayOne2>\n        : TAccountTickArrayOne2,\n      TAccountTickArrayTwo0 extends string\n        ? WritableAccount<TAccountTickArrayTwo0>\n        : TAccountTickArrayTwo0,\n      TAccountTickArrayTwo1 extends string\n        ? WritableAccount<TAccountTickArrayTwo1>\n        : TAccountTickArrayTwo1,\n      TAccountTickArrayTwo2 extends string\n        ? WritableAccount<TAccountTickArrayTwo2>\n        : TAccountTickArrayTwo2,\n      TAccountOracleOne extends string\n        ? ReadonlyAccount<TAccountOracleOne>\n        : TAccountOracleOne,\n      TAccountOracleTwo extends string\n        ? ReadonlyAccount<TAccountOracleTwo>\n        : TAccountOracleTwo,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type TwoHopSwapInstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amount: bigint;\n  otherAmountThreshold: bigint;\n  amountSpecifiedIsInput: boolean;\n  aToBOne: boolean;\n  aToBTwo: boolean;\n  sqrtPriceLimitOne: bigint;\n  sqrtPriceLimitTwo: bigint;\n};\n\nexport type TwoHopSwapInstructionDataArgs = {\n  amount: number | bigint;\n  otherAmountThreshold: number | bigint;\n  amountSpecifiedIsInput: boolean;\n  aToBOne: boolean;\n  aToBTwo: boolean;\n  sqrtPriceLimitOne: number | bigint;\n  sqrtPriceLimitTwo: number | bigint;\n};\n\nexport function getTwoHopSwapInstructionDataEncoder(): FixedSizeEncoder<TwoHopSwapInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amount', getU64Encoder()],\n      ['otherAmountThreshold', getU64Encoder()],\n      ['amountSpecifiedIsInput', getBooleanEncoder()],\n      ['aToBOne', getBooleanEncoder()],\n      ['aToBTwo', getBooleanEncoder()],\n      ['sqrtPriceLimitOne', getU128Encoder()],\n      ['sqrtPriceLimitTwo', getU128Encoder()],\n    ]),\n    (value) => ({ ...value, discriminator: TWO_HOP_SWAP_DISCRIMINATOR })\n  );\n}\n\nexport function getTwoHopSwapInstructionDataDecoder(): FixedSizeDecoder<TwoHopSwapInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amount', getU64Decoder()],\n    ['otherAmountThreshold', getU64Decoder()],\n    ['amountSpecifiedIsInput', getBooleanDecoder()],\n    ['aToBOne', getBooleanDecoder()],\n    ['aToBTwo', getBooleanDecoder()],\n    ['sqrtPriceLimitOne', getU128Decoder()],\n    ['sqrtPriceLimitTwo', getU128Decoder()],\n  ]);\n}\n\nexport function getTwoHopSwapInstructionDataCodec(): FixedSizeCodec<\n  TwoHopSwapInstructionDataArgs,\n  TwoHopSwapInstructionData\n> {\n  return combineCodec(\n    getTwoHopSwapInstructionDataEncoder(),\n    getTwoHopSwapInstructionDataDecoder()\n  );\n}\n\nexport type TwoHopSwapAsyncInput<\n  TAccountTokenProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpoolOne extends string = string,\n  TAccountWhirlpoolTwo extends string = string,\n  TAccountTokenOwnerAccountOneA extends string = string,\n  TAccountTokenVaultOneA extends string = string,\n  TAccountTokenOwnerAccountOneB extends string = string,\n  TAccountTokenVaultOneB extends string = string,\n  TAccountTokenOwnerAccountTwoA extends string = string,\n  TAccountTokenVaultTwoA extends string = string,\n  TAccountTokenOwnerAccountTwoB extends string = string,\n  TAccountTokenVaultTwoB extends string = string,\n  TAccountTickArrayOne0 extends string = string,\n  TAccountTickArrayOne1 extends string = string,\n  TAccountTickArrayOne2 extends string = string,\n  TAccountTickArrayTwo0 extends string = string,\n  TAccountTickArrayTwo1 extends string = string,\n  TAccountTickArrayTwo2 extends string = string,\n  TAccountOracleOne extends string = string,\n  TAccountOracleTwo extends string = string,\n> = {\n  tokenProgram?: Address<TAccountTokenProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpoolOne: Address<TAccountWhirlpoolOne>;\n  whirlpoolTwo: Address<TAccountWhirlpoolTwo>;\n  tokenOwnerAccountOneA: Address<TAccountTokenOwnerAccountOneA>;\n  tokenVaultOneA: Address<TAccountTokenVaultOneA>;\n  tokenOwnerAccountOneB: Address<TAccountTokenOwnerAccountOneB>;\n  tokenVaultOneB: Address<TAccountTokenVaultOneB>;\n  tokenOwnerAccountTwoA: Address<TAccountTokenOwnerAccountTwoA>;\n  tokenVaultTwoA: Address<TAccountTokenVaultTwoA>;\n  tokenOwnerAccountTwoB: Address<TAccountTokenOwnerAccountTwoB>;\n  tokenVaultTwoB: Address<TAccountTokenVaultTwoB>;\n  tickArrayOne0: Address<TAccountTickArrayOne0>;\n  tickArrayOne1: Address<TAccountTickArrayOne1>;\n  tickArrayOne2: Address<TAccountTickArrayOne2>;\n  tickArrayTwo0: Address<TAccountTickArrayTwo0>;\n  tickArrayTwo1: Address<TAccountTickArrayTwo1>;\n  tickArrayTwo2: Address<TAccountTickArrayTwo2>;\n  oracleOne?: Address<TAccountOracleOne>;\n  oracleTwo?: Address<TAccountOracleTwo>;\n  amount: TwoHopSwapInstructionDataArgs['amount'];\n  otherAmountThreshold: TwoHopSwapInstructionDataArgs['otherAmountThreshold'];\n  amountSpecifiedIsInput: TwoHopSwapInstructionDataArgs['amountSpecifiedIsInput'];\n  aToBOne: TwoHopSwapInstructionDataArgs['aToBOne'];\n  aToBTwo: TwoHopSwapInstructionDataArgs['aToBTwo'];\n  sqrtPriceLimitOne: TwoHopSwapInstructionDataArgs['sqrtPriceLimitOne'];\n  sqrtPriceLimitTwo: TwoHopSwapInstructionDataArgs['sqrtPriceLimitTwo'];\n};\n\nexport async function getTwoHopSwapInstructionAsync<\n  TAccountTokenProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpoolOne extends string,\n  TAccountWhirlpoolTwo extends string,\n  TAccountTokenOwnerAccountOneA extends string,\n  TAccountTokenVaultOneA extends string,\n  TAccountTokenOwnerAccountOneB extends string,\n  TAccountTokenVaultOneB extends string,\n  TAccountTokenOwnerAccountTwoA extends string,\n  TAccountTokenVaultTwoA extends string,\n  TAccountTokenOwnerAccountTwoB extends string,\n  TAccountTokenVaultTwoB extends string,\n  TAccountTickArrayOne0 extends string,\n  TAccountTickArrayOne1 extends string,\n  TAccountTickArrayOne2 extends string,\n  TAccountTickArrayTwo0 extends string,\n  TAccountTickArrayTwo1 extends string,\n  TAccountTickArrayTwo2 extends string,\n  TAccountOracleOne extends string,\n  TAccountOracleTwo extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TwoHopSwapAsyncInput<\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenOwnerAccountOneA,\n    TAccountTokenVaultOneA,\n    TAccountTokenOwnerAccountOneB,\n    TAccountTokenVaultOneB,\n    TAccountTokenOwnerAccountTwoA,\n    TAccountTokenVaultTwoA,\n    TAccountTokenOwnerAccountTwoB,\n    TAccountTokenVaultTwoB,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  TwoHopSwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenOwnerAccountOneA,\n    TAccountTokenVaultOneA,\n    TAccountTokenOwnerAccountOneB,\n    TAccountTokenVaultOneB,\n    TAccountTokenOwnerAccountTwoA,\n    TAccountTokenVaultTwoA,\n    TAccountTokenOwnerAccountTwoB,\n    TAccountTokenVaultTwoB,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpoolOne: { value: input.whirlpoolOne ?? null, isWritable: true },\n    whirlpoolTwo: { value: input.whirlpoolTwo ?? null, isWritable: true },\n    tokenOwnerAccountOneA: {\n      value: input.tokenOwnerAccountOneA ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneA: { value: input.tokenVaultOneA ?? null, isWritable: true },\n    tokenOwnerAccountOneB: {\n      value: input.tokenOwnerAccountOneB ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneB: { value: input.tokenVaultOneB ?? null, isWritable: true },\n    tokenOwnerAccountTwoA: {\n      value: input.tokenOwnerAccountTwoA ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoA: { value: input.tokenVaultTwoA ?? null, isWritable: true },\n    tokenOwnerAccountTwoB: {\n      value: input.tokenOwnerAccountTwoB ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoB: { value: input.tokenVaultTwoB ?? null, isWritable: true },\n    tickArrayOne0: { value: input.tickArrayOne0 ?? null, isWritable: true },\n    tickArrayOne1: { value: input.tickArrayOne1 ?? null, isWritable: true },\n    tickArrayOne2: { value: input.tickArrayOne2 ?? null, isWritable: true },\n    tickArrayTwo0: { value: input.tickArrayTwo0 ?? null, isWritable: true },\n    tickArrayTwo1: { value: input.tickArrayTwo1 ?? null, isWritable: true },\n    tickArrayTwo2: { value: input.tickArrayTwo2 ?? null, isWritable: true },\n    oracleOne: { value: input.oracleOne ?? null, isWritable: false },\n    oracleTwo: { value: input.oracleTwo ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n  if (!accounts.oracleOne.value) {\n    accounts.oracleOne.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpoolOne.value)),\n      ],\n    });\n  }\n  if (!accounts.oracleTwo.value) {\n    accounts.oracleTwo.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpoolTwo.value)),\n      ],\n    });\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpoolOne),\n      getAccountMeta(accounts.whirlpoolTwo),\n      getAccountMeta(accounts.tokenOwnerAccountOneA),\n      getAccountMeta(accounts.tokenVaultOneA),\n      getAccountMeta(accounts.tokenOwnerAccountOneB),\n      getAccountMeta(accounts.tokenVaultOneB),\n      getAccountMeta(accounts.tokenOwnerAccountTwoA),\n      getAccountMeta(accounts.tokenVaultTwoA),\n      getAccountMeta(accounts.tokenOwnerAccountTwoB),\n      getAccountMeta(accounts.tokenVaultTwoB),\n      getAccountMeta(accounts.tickArrayOne0),\n      getAccountMeta(accounts.tickArrayOne1),\n      getAccountMeta(accounts.tickArrayOne2),\n      getAccountMeta(accounts.tickArrayTwo0),\n      getAccountMeta(accounts.tickArrayTwo1),\n      getAccountMeta(accounts.tickArrayTwo2),\n      getAccountMeta(accounts.oracleOne),\n      getAccountMeta(accounts.oracleTwo),\n    ],\n    data: getTwoHopSwapInstructionDataEncoder().encode(\n      args as TwoHopSwapInstructionDataArgs\n    ),\n    programAddress,\n  } as TwoHopSwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenOwnerAccountOneA,\n    TAccountTokenVaultOneA,\n    TAccountTokenOwnerAccountOneB,\n    TAccountTokenVaultOneB,\n    TAccountTokenOwnerAccountTwoA,\n    TAccountTokenVaultTwoA,\n    TAccountTokenOwnerAccountTwoB,\n    TAccountTokenVaultTwoB,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo\n  >);\n}\n\nexport type TwoHopSwapInput<\n  TAccountTokenProgram extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountWhirlpoolOne extends string = string,\n  TAccountWhirlpoolTwo extends string = string,\n  TAccountTokenOwnerAccountOneA extends string = string,\n  TAccountTokenVaultOneA extends string = string,\n  TAccountTokenOwnerAccountOneB extends string = string,\n  TAccountTokenVaultOneB extends string = string,\n  TAccountTokenOwnerAccountTwoA extends string = string,\n  TAccountTokenVaultTwoA extends string = string,\n  TAccountTokenOwnerAccountTwoB extends string = string,\n  TAccountTokenVaultTwoB extends string = string,\n  TAccountTickArrayOne0 extends string = string,\n  TAccountTickArrayOne1 extends string = string,\n  TAccountTickArrayOne2 extends string = string,\n  TAccountTickArrayTwo0 extends string = string,\n  TAccountTickArrayTwo1 extends string = string,\n  TAccountTickArrayTwo2 extends string = string,\n  TAccountOracleOne extends string = string,\n  TAccountOracleTwo extends string = string,\n> = {\n  tokenProgram?: Address<TAccountTokenProgram>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  whirlpoolOne: Address<TAccountWhirlpoolOne>;\n  whirlpoolTwo: Address<TAccountWhirlpoolTwo>;\n  tokenOwnerAccountOneA: Address<TAccountTokenOwnerAccountOneA>;\n  tokenVaultOneA: Address<TAccountTokenVaultOneA>;\n  tokenOwnerAccountOneB: Address<TAccountTokenOwnerAccountOneB>;\n  tokenVaultOneB: Address<TAccountTokenVaultOneB>;\n  tokenOwnerAccountTwoA: Address<TAccountTokenOwnerAccountTwoA>;\n  tokenVaultTwoA: Address<TAccountTokenVaultTwoA>;\n  tokenOwnerAccountTwoB: Address<TAccountTokenOwnerAccountTwoB>;\n  tokenVaultTwoB: Address<TAccountTokenVaultTwoB>;\n  tickArrayOne0: Address<TAccountTickArrayOne0>;\n  tickArrayOne1: Address<TAccountTickArrayOne1>;\n  tickArrayOne2: Address<TAccountTickArrayOne2>;\n  tickArrayTwo0: Address<TAccountTickArrayTwo0>;\n  tickArrayTwo1: Address<TAccountTickArrayTwo1>;\n  tickArrayTwo2: Address<TAccountTickArrayTwo2>;\n  oracleOne: Address<TAccountOracleOne>;\n  oracleTwo: Address<TAccountOracleTwo>;\n  amount: TwoHopSwapInstructionDataArgs['amount'];\n  otherAmountThreshold: TwoHopSwapInstructionDataArgs['otherAmountThreshold'];\n  amountSpecifiedIsInput: TwoHopSwapInstructionDataArgs['amountSpecifiedIsInput'];\n  aToBOne: TwoHopSwapInstructionDataArgs['aToBOne'];\n  aToBTwo: TwoHopSwapInstructionDataArgs['aToBTwo'];\n  sqrtPriceLimitOne: TwoHopSwapInstructionDataArgs['sqrtPriceLimitOne'];\n  sqrtPriceLimitTwo: TwoHopSwapInstructionDataArgs['sqrtPriceLimitTwo'];\n};\n\nexport function getTwoHopSwapInstruction<\n  TAccountTokenProgram extends string,\n  TAccountTokenAuthority extends string,\n  TAccountWhirlpoolOne extends string,\n  TAccountWhirlpoolTwo extends string,\n  TAccountTokenOwnerAccountOneA extends string,\n  TAccountTokenVaultOneA extends string,\n  TAccountTokenOwnerAccountOneB extends string,\n  TAccountTokenVaultOneB extends string,\n  TAccountTokenOwnerAccountTwoA extends string,\n  TAccountTokenVaultTwoA extends string,\n  TAccountTokenOwnerAccountTwoB extends string,\n  TAccountTokenVaultTwoB extends string,\n  TAccountTickArrayOne0 extends string,\n  TAccountTickArrayOne1 extends string,\n  TAccountTickArrayOne2 extends string,\n  TAccountTickArrayTwo0 extends string,\n  TAccountTickArrayTwo1 extends string,\n  TAccountTickArrayTwo2 extends string,\n  TAccountOracleOne extends string,\n  TAccountOracleTwo extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TwoHopSwapInput<\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenOwnerAccountOneA,\n    TAccountTokenVaultOneA,\n    TAccountTokenOwnerAccountOneB,\n    TAccountTokenVaultOneB,\n    TAccountTokenOwnerAccountTwoA,\n    TAccountTokenVaultTwoA,\n    TAccountTokenOwnerAccountTwoB,\n    TAccountTokenVaultTwoB,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo\n  >,\n  config?: { programAddress?: TProgramAddress }\n): TwoHopSwapInstruction<\n  TProgramAddress,\n  TAccountTokenProgram,\n  TAccountTokenAuthority,\n  TAccountWhirlpoolOne,\n  TAccountWhirlpoolTwo,\n  TAccountTokenOwnerAccountOneA,\n  TAccountTokenVaultOneA,\n  TAccountTokenOwnerAccountOneB,\n  TAccountTokenVaultOneB,\n  TAccountTokenOwnerAccountTwoA,\n  TAccountTokenVaultTwoA,\n  TAccountTokenOwnerAccountTwoB,\n  TAccountTokenVaultTwoB,\n  TAccountTickArrayOne0,\n  TAccountTickArrayOne1,\n  TAccountTickArrayOne2,\n  TAccountTickArrayTwo0,\n  TAccountTickArrayTwo1,\n  TAccountTickArrayTwo2,\n  TAccountOracleOne,\n  TAccountOracleTwo\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    tokenProgram: { value: input.tokenProgram ?? null, isWritable: false },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    whirlpoolOne: { value: input.whirlpoolOne ?? null, isWritable: true },\n    whirlpoolTwo: { value: input.whirlpoolTwo ?? null, isWritable: true },\n    tokenOwnerAccountOneA: {\n      value: input.tokenOwnerAccountOneA ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneA: { value: input.tokenVaultOneA ?? null, isWritable: true },\n    tokenOwnerAccountOneB: {\n      value: input.tokenOwnerAccountOneB ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneB: { value: input.tokenVaultOneB ?? null, isWritable: true },\n    tokenOwnerAccountTwoA: {\n      value: input.tokenOwnerAccountTwoA ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoA: { value: input.tokenVaultTwoA ?? null, isWritable: true },\n    tokenOwnerAccountTwoB: {\n      value: input.tokenOwnerAccountTwoB ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoB: { value: input.tokenVaultTwoB ?? null, isWritable: true },\n    tickArrayOne0: { value: input.tickArrayOne0 ?? null, isWritable: true },\n    tickArrayOne1: { value: input.tickArrayOne1 ?? null, isWritable: true },\n    tickArrayOne2: { value: input.tickArrayOne2 ?? null, isWritable: true },\n    tickArrayTwo0: { value: input.tickArrayTwo0 ?? null, isWritable: true },\n    tickArrayTwo1: { value: input.tickArrayTwo1 ?? null, isWritable: true },\n    tickArrayTwo2: { value: input.tickArrayTwo2 ?? null, isWritable: true },\n    oracleOne: { value: input.oracleOne ?? null, isWritable: false },\n    oracleTwo: { value: input.oracleTwo ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.tokenProgram.value) {\n    accounts.tokenProgram.value =\n      'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA' as Address<'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.tokenProgram),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.whirlpoolOne),\n      getAccountMeta(accounts.whirlpoolTwo),\n      getAccountMeta(accounts.tokenOwnerAccountOneA),\n      getAccountMeta(accounts.tokenVaultOneA),\n      getAccountMeta(accounts.tokenOwnerAccountOneB),\n      getAccountMeta(accounts.tokenVaultOneB),\n      getAccountMeta(accounts.tokenOwnerAccountTwoA),\n      getAccountMeta(accounts.tokenVaultTwoA),\n      getAccountMeta(accounts.tokenOwnerAccountTwoB),\n      getAccountMeta(accounts.tokenVaultTwoB),\n      getAccountMeta(accounts.tickArrayOne0),\n      getAccountMeta(accounts.tickArrayOne1),\n      getAccountMeta(accounts.tickArrayOne2),\n      getAccountMeta(accounts.tickArrayTwo0),\n      getAccountMeta(accounts.tickArrayTwo1),\n      getAccountMeta(accounts.tickArrayTwo2),\n      getAccountMeta(accounts.oracleOne),\n      getAccountMeta(accounts.oracleTwo),\n    ],\n    data: getTwoHopSwapInstructionDataEncoder().encode(\n      args as TwoHopSwapInstructionDataArgs\n    ),\n    programAddress,\n  } as TwoHopSwapInstruction<\n    TProgramAddress,\n    TAccountTokenProgram,\n    TAccountTokenAuthority,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenOwnerAccountOneA,\n    TAccountTokenVaultOneA,\n    TAccountTokenOwnerAccountOneB,\n    TAccountTokenVaultOneB,\n    TAccountTokenOwnerAccountTwoA,\n    TAccountTokenVaultTwoA,\n    TAccountTokenOwnerAccountTwoB,\n    TAccountTokenVaultTwoB,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo\n  >);\n}\n\nexport type ParsedTwoHopSwapInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    tokenProgram: TAccountMetas[0];\n    tokenAuthority: TAccountMetas[1];\n    whirlpoolOne: TAccountMetas[2];\n    whirlpoolTwo: TAccountMetas[3];\n    tokenOwnerAccountOneA: TAccountMetas[4];\n    tokenVaultOneA: TAccountMetas[5];\n    tokenOwnerAccountOneB: TAccountMetas[6];\n    tokenVaultOneB: TAccountMetas[7];\n    tokenOwnerAccountTwoA: TAccountMetas[8];\n    tokenVaultTwoA: TAccountMetas[9];\n    tokenOwnerAccountTwoB: TAccountMetas[10];\n    tokenVaultTwoB: TAccountMetas[11];\n    tickArrayOne0: TAccountMetas[12];\n    tickArrayOne1: TAccountMetas[13];\n    tickArrayOne2: TAccountMetas[14];\n    tickArrayTwo0: TAccountMetas[15];\n    tickArrayTwo1: TAccountMetas[16];\n    tickArrayTwo2: TAccountMetas[17];\n    oracleOne: TAccountMetas[18];\n    oracleTwo: TAccountMetas[19];\n  };\n  data: TwoHopSwapInstructionData;\n};\n\nexport function parseTwoHopSwapInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedTwoHopSwapInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 20) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      tokenProgram: getNextAccount(),\n      tokenAuthority: getNextAccount(),\n      whirlpoolOne: getNextAccount(),\n      whirlpoolTwo: getNextAccount(),\n      tokenOwnerAccountOneA: getNextAccount(),\n      tokenVaultOneA: getNextAccount(),\n      tokenOwnerAccountOneB: getNextAccount(),\n      tokenVaultOneB: getNextAccount(),\n      tokenOwnerAccountTwoA: getNextAccount(),\n      tokenVaultTwoA: getNextAccount(),\n      tokenOwnerAccountTwoB: getNextAccount(),\n      tokenVaultTwoB: getNextAccount(),\n      tickArrayOne0: getNextAccount(),\n      tickArrayOne1: getNextAccount(),\n      tickArrayOne2: getNextAccount(),\n      tickArrayTwo0: getNextAccount(),\n      tickArrayTwo1: getNextAccount(),\n      tickArrayTwo2: getNextAccount(),\n      oracleOne: getNextAccount(),\n      oracleTwo: getNextAccount(),\n    },\n    data: getTwoHopSwapInstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getAddressEncoder,\n  getBooleanDecoder,\n  getBooleanEncoder,\n  getBytesDecoder,\n  getBytesEncoder,\n  getOptionDecoder,\n  getOptionEncoder,\n  getProgramDerivedAddress,\n  getStructDecoder,\n  getStructEncoder,\n  getU128Decoder,\n  getU128Encoder,\n  getU64Decoder,\n  getU64Encoder,\n  transformEncoder,\n  type AccountMeta,\n  type AccountSignerMeta,\n  type Address,\n  type Codec,\n  type Decoder,\n  type Encoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type Option,\n  type OptionOrNullable,\n  type ReadonlyAccount,\n  type ReadonlySignerAccount,\n  type ReadonlyUint8Array,\n  type TransactionSigner,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport {\n  expectAddress,\n  getAccountMetaFactory,\n  type ResolvedAccount,\n} from '../shared';\nimport {\n  getRemainingAccountsInfoDecoder,\n  getRemainingAccountsInfoEncoder,\n  type RemainingAccountsInfo,\n  type RemainingAccountsInfoArgs,\n} from '../types';\n\nexport const TWO_HOP_SWAP_V2_DISCRIMINATOR = new Uint8Array([\n  186, 143, 209, 29, 254, 2, 194, 117,\n]);\n\nexport function getTwoHopSwapV2DiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    TWO_HOP_SWAP_V2_DISCRIMINATOR\n  );\n}\n\nexport type TwoHopSwapV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpoolOne extends string | AccountMeta<string> = string,\n  TAccountWhirlpoolTwo extends string | AccountMeta<string> = string,\n  TAccountTokenMintInput extends string | AccountMeta<string> = string,\n  TAccountTokenMintIntermediate extends string | AccountMeta<string> = string,\n  TAccountTokenMintOutput extends string | AccountMeta<string> = string,\n  TAccountTokenProgramInput extends string | AccountMeta<string> = string,\n  TAccountTokenProgramIntermediate extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenProgramOutput extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountInput extends string | AccountMeta<string> = string,\n  TAccountTokenVaultOneInput extends string | AccountMeta<string> = string,\n  TAccountTokenVaultOneIntermediate extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenVaultTwoIntermediate extends\n    | string\n    | AccountMeta<string> = string,\n  TAccountTokenVaultTwoOutput extends string | AccountMeta<string> = string,\n  TAccountTokenOwnerAccountOutput extends string | AccountMeta<string> = string,\n  TAccountTokenAuthority extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne0 extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne1 extends string | AccountMeta<string> = string,\n  TAccountTickArrayOne2 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo0 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo1 extends string | AccountMeta<string> = string,\n  TAccountTickArrayTwo2 extends string | AccountMeta<string> = string,\n  TAccountOracleOne extends string | AccountMeta<string> = string,\n  TAccountOracleTwo extends string | AccountMeta<string> = string,\n  TAccountMemoProgram extends\n    | string\n    | AccountMeta<string> = 'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr',\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpoolOne extends string\n        ? WritableAccount<TAccountWhirlpoolOne>\n        : TAccountWhirlpoolOne,\n      TAccountWhirlpoolTwo extends string\n        ? WritableAccount<TAccountWhirlpoolTwo>\n        : TAccountWhirlpoolTwo,\n      TAccountTokenMintInput extends string\n        ? ReadonlyAccount<TAccountTokenMintInput>\n        : TAccountTokenMintInput,\n      TAccountTokenMintIntermediate extends string\n        ? ReadonlyAccount<TAccountTokenMintIntermediate>\n        : TAccountTokenMintIntermediate,\n      TAccountTokenMintOutput extends string\n        ? ReadonlyAccount<TAccountTokenMintOutput>\n        : TAccountTokenMintOutput,\n      TAccountTokenProgramInput extends string\n        ? ReadonlyAccount<TAccountTokenProgramInput>\n        : TAccountTokenProgramInput,\n      TAccountTokenProgramIntermediate extends string\n        ? ReadonlyAccount<TAccountTokenProgramIntermediate>\n        : TAccountTokenProgramIntermediate,\n      TAccountTokenProgramOutput extends string\n        ? ReadonlyAccount<TAccountTokenProgramOutput>\n        : TAccountTokenProgramOutput,\n      TAccountTokenOwnerAccountInput extends string\n        ? WritableAccount<TAccountTokenOwnerAccountInput>\n        : TAccountTokenOwnerAccountInput,\n      TAccountTokenVaultOneInput extends string\n        ? WritableAccount<TAccountTokenVaultOneInput>\n        : TAccountTokenVaultOneInput,\n      TAccountTokenVaultOneIntermediate extends string\n        ? WritableAccount<TAccountTokenVaultOneIntermediate>\n        : TAccountTokenVaultOneIntermediate,\n      TAccountTokenVaultTwoIntermediate extends string\n        ? WritableAccount<TAccountTokenVaultTwoIntermediate>\n        : TAccountTokenVaultTwoIntermediate,\n      TAccountTokenVaultTwoOutput extends string\n        ? WritableAccount<TAccountTokenVaultTwoOutput>\n        : TAccountTokenVaultTwoOutput,\n      TAccountTokenOwnerAccountOutput extends string\n        ? WritableAccount<TAccountTokenOwnerAccountOutput>\n        : TAccountTokenOwnerAccountOutput,\n      TAccountTokenAuthority extends string\n        ? ReadonlySignerAccount<TAccountTokenAuthority> &\n            AccountSignerMeta<TAccountTokenAuthority>\n        : TAccountTokenAuthority,\n      TAccountTickArrayOne0 extends string\n        ? WritableAccount<TAccountTickArrayOne0>\n        : TAccountTickArrayOne0,\n      TAccountTickArrayOne1 extends string\n        ? WritableAccount<TAccountTickArrayOne1>\n        : TAccountTickArrayOne1,\n      TAccountTickArrayOne2 extends string\n        ? WritableAccount<TAccountTickArrayOne2>\n        : TAccountTickArrayOne2,\n      TAccountTickArrayTwo0 extends string\n        ? WritableAccount<TAccountTickArrayTwo0>\n        : TAccountTickArrayTwo0,\n      TAccountTickArrayTwo1 extends string\n        ? WritableAccount<TAccountTickArrayTwo1>\n        : TAccountTickArrayTwo1,\n      TAccountTickArrayTwo2 extends string\n        ? WritableAccount<TAccountTickArrayTwo2>\n        : TAccountTickArrayTwo2,\n      TAccountOracleOne extends string\n        ? WritableAccount<TAccountOracleOne>\n        : TAccountOracleOne,\n      TAccountOracleTwo extends string\n        ? WritableAccount<TAccountOracleTwo>\n        : TAccountOracleTwo,\n      TAccountMemoProgram extends string\n        ? ReadonlyAccount<TAccountMemoProgram>\n        : TAccountMemoProgram,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type TwoHopSwapV2InstructionData = {\n  discriminator: ReadonlyUint8Array;\n  amount: bigint;\n  otherAmountThreshold: bigint;\n  amountSpecifiedIsInput: boolean;\n  aToBOne: boolean;\n  aToBTwo: boolean;\n  sqrtPriceLimitOne: bigint;\n  sqrtPriceLimitTwo: bigint;\n  remainingAccountsInfo: Option<RemainingAccountsInfo>;\n};\n\nexport type TwoHopSwapV2InstructionDataArgs = {\n  amount: number | bigint;\n  otherAmountThreshold: number | bigint;\n  amountSpecifiedIsInput: boolean;\n  aToBOne: boolean;\n  aToBTwo: boolean;\n  sqrtPriceLimitOne: number | bigint;\n  sqrtPriceLimitTwo: number | bigint;\n  remainingAccountsInfo: OptionOrNullable<RemainingAccountsInfoArgs>;\n};\n\nexport function getTwoHopSwapV2InstructionDataEncoder(): Encoder<TwoHopSwapV2InstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([\n      ['discriminator', fixEncoderSize(getBytesEncoder(), 8)],\n      ['amount', getU64Encoder()],\n      ['otherAmountThreshold', getU64Encoder()],\n      ['amountSpecifiedIsInput', getBooleanEncoder()],\n      ['aToBOne', getBooleanEncoder()],\n      ['aToBTwo', getBooleanEncoder()],\n      ['sqrtPriceLimitOne', getU128Encoder()],\n      ['sqrtPriceLimitTwo', getU128Encoder()],\n      [\n        'remainingAccountsInfo',\n        getOptionEncoder(getRemainingAccountsInfoEncoder()),\n      ],\n    ]),\n    (value) => ({ ...value, discriminator: TWO_HOP_SWAP_V2_DISCRIMINATOR })\n  );\n}\n\nexport function getTwoHopSwapV2InstructionDataDecoder(): Decoder<TwoHopSwapV2InstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n    ['amount', getU64Decoder()],\n    ['otherAmountThreshold', getU64Decoder()],\n    ['amountSpecifiedIsInput', getBooleanDecoder()],\n    ['aToBOne', getBooleanDecoder()],\n    ['aToBTwo', getBooleanDecoder()],\n    ['sqrtPriceLimitOne', getU128Decoder()],\n    ['sqrtPriceLimitTwo', getU128Decoder()],\n    [\n      'remainingAccountsInfo',\n      getOptionDecoder(getRemainingAccountsInfoDecoder()),\n    ],\n  ]);\n}\n\nexport function getTwoHopSwapV2InstructionDataCodec(): Codec<\n  TwoHopSwapV2InstructionDataArgs,\n  TwoHopSwapV2InstructionData\n> {\n  return combineCodec(\n    getTwoHopSwapV2InstructionDataEncoder(),\n    getTwoHopSwapV2InstructionDataDecoder()\n  );\n}\n\nexport type TwoHopSwapV2AsyncInput<\n  TAccountWhirlpoolOne extends string = string,\n  TAccountWhirlpoolTwo extends string = string,\n  TAccountTokenMintInput extends string = string,\n  TAccountTokenMintIntermediate extends string = string,\n  TAccountTokenMintOutput extends string = string,\n  TAccountTokenProgramInput extends string = string,\n  TAccountTokenProgramIntermediate extends string = string,\n  TAccountTokenProgramOutput extends string = string,\n  TAccountTokenOwnerAccountInput extends string = string,\n  TAccountTokenVaultOneInput extends string = string,\n  TAccountTokenVaultOneIntermediate extends string = string,\n  TAccountTokenVaultTwoIntermediate extends string = string,\n  TAccountTokenVaultTwoOutput extends string = string,\n  TAccountTokenOwnerAccountOutput extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountTickArrayOne0 extends string = string,\n  TAccountTickArrayOne1 extends string = string,\n  TAccountTickArrayOne2 extends string = string,\n  TAccountTickArrayTwo0 extends string = string,\n  TAccountTickArrayTwo1 extends string = string,\n  TAccountTickArrayTwo2 extends string = string,\n  TAccountOracleOne extends string = string,\n  TAccountOracleTwo extends string = string,\n  TAccountMemoProgram extends string = string,\n> = {\n  whirlpoolOne: Address<TAccountWhirlpoolOne>;\n  whirlpoolTwo: Address<TAccountWhirlpoolTwo>;\n  tokenMintInput: Address<TAccountTokenMintInput>;\n  tokenMintIntermediate: Address<TAccountTokenMintIntermediate>;\n  tokenMintOutput: Address<TAccountTokenMintOutput>;\n  tokenProgramInput: Address<TAccountTokenProgramInput>;\n  tokenProgramIntermediate: Address<TAccountTokenProgramIntermediate>;\n  tokenProgramOutput: Address<TAccountTokenProgramOutput>;\n  tokenOwnerAccountInput: Address<TAccountTokenOwnerAccountInput>;\n  tokenVaultOneInput: Address<TAccountTokenVaultOneInput>;\n  tokenVaultOneIntermediate: Address<TAccountTokenVaultOneIntermediate>;\n  tokenVaultTwoIntermediate: Address<TAccountTokenVaultTwoIntermediate>;\n  tokenVaultTwoOutput: Address<TAccountTokenVaultTwoOutput>;\n  tokenOwnerAccountOutput: Address<TAccountTokenOwnerAccountOutput>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  tickArrayOne0: Address<TAccountTickArrayOne0>;\n  tickArrayOne1: Address<TAccountTickArrayOne1>;\n  tickArrayOne2: Address<TAccountTickArrayOne2>;\n  tickArrayTwo0: Address<TAccountTickArrayTwo0>;\n  tickArrayTwo1: Address<TAccountTickArrayTwo1>;\n  tickArrayTwo2: Address<TAccountTickArrayTwo2>;\n  oracleOne?: Address<TAccountOracleOne>;\n  oracleTwo?: Address<TAccountOracleTwo>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  amount: TwoHopSwapV2InstructionDataArgs['amount'];\n  otherAmountThreshold: TwoHopSwapV2InstructionDataArgs['otherAmountThreshold'];\n  amountSpecifiedIsInput: TwoHopSwapV2InstructionDataArgs['amountSpecifiedIsInput'];\n  aToBOne: TwoHopSwapV2InstructionDataArgs['aToBOne'];\n  aToBTwo: TwoHopSwapV2InstructionDataArgs['aToBTwo'];\n  sqrtPriceLimitOne: TwoHopSwapV2InstructionDataArgs['sqrtPriceLimitOne'];\n  sqrtPriceLimitTwo: TwoHopSwapV2InstructionDataArgs['sqrtPriceLimitTwo'];\n  remainingAccountsInfo: TwoHopSwapV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport async function getTwoHopSwapV2InstructionAsync<\n  TAccountWhirlpoolOne extends string,\n  TAccountWhirlpoolTwo extends string,\n  TAccountTokenMintInput extends string,\n  TAccountTokenMintIntermediate extends string,\n  TAccountTokenMintOutput extends string,\n  TAccountTokenProgramInput extends string,\n  TAccountTokenProgramIntermediate extends string,\n  TAccountTokenProgramOutput extends string,\n  TAccountTokenOwnerAccountInput extends string,\n  TAccountTokenVaultOneInput extends string,\n  TAccountTokenVaultOneIntermediate extends string,\n  TAccountTokenVaultTwoIntermediate extends string,\n  TAccountTokenVaultTwoOutput extends string,\n  TAccountTokenOwnerAccountOutput extends string,\n  TAccountTokenAuthority extends string,\n  TAccountTickArrayOne0 extends string,\n  TAccountTickArrayOne1 extends string,\n  TAccountTickArrayOne2 extends string,\n  TAccountTickArrayTwo0 extends string,\n  TAccountTickArrayTwo1 extends string,\n  TAccountTickArrayTwo2 extends string,\n  TAccountOracleOne extends string,\n  TAccountOracleTwo extends string,\n  TAccountMemoProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TwoHopSwapV2AsyncInput<\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenMintInput,\n    TAccountTokenMintIntermediate,\n    TAccountTokenMintOutput,\n    TAccountTokenProgramInput,\n    TAccountTokenProgramIntermediate,\n    TAccountTokenProgramOutput,\n    TAccountTokenOwnerAccountInput,\n    TAccountTokenVaultOneInput,\n    TAccountTokenVaultOneIntermediate,\n    TAccountTokenVaultTwoIntermediate,\n    TAccountTokenVaultTwoOutput,\n    TAccountTokenOwnerAccountOutput,\n    TAccountTokenAuthority,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo,\n    TAccountMemoProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): Promise<\n  TwoHopSwapV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenMintInput,\n    TAccountTokenMintIntermediate,\n    TAccountTokenMintOutput,\n    TAccountTokenProgramInput,\n    TAccountTokenProgramIntermediate,\n    TAccountTokenProgramOutput,\n    TAccountTokenOwnerAccountInput,\n    TAccountTokenVaultOneInput,\n    TAccountTokenVaultOneIntermediate,\n    TAccountTokenVaultTwoIntermediate,\n    TAccountTokenVaultTwoOutput,\n    TAccountTokenOwnerAccountOutput,\n    TAccountTokenAuthority,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo,\n    TAccountMemoProgram\n  >\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolOne: { value: input.whirlpoolOne ?? null, isWritable: true },\n    whirlpoolTwo: { value: input.whirlpoolTwo ?? null, isWritable: true },\n    tokenMintInput: { value: input.tokenMintInput ?? null, isWritable: false },\n    tokenMintIntermediate: {\n      value: input.tokenMintIntermediate ?? null,\n      isWritable: false,\n    },\n    tokenMintOutput: {\n      value: input.tokenMintOutput ?? null,\n      isWritable: false,\n    },\n    tokenProgramInput: {\n      value: input.tokenProgramInput ?? null,\n      isWritable: false,\n    },\n    tokenProgramIntermediate: {\n      value: input.tokenProgramIntermediate ?? null,\n      isWritable: false,\n    },\n    tokenProgramOutput: {\n      value: input.tokenProgramOutput ?? null,\n      isWritable: false,\n    },\n    tokenOwnerAccountInput: {\n      value: input.tokenOwnerAccountInput ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneInput: {\n      value: input.tokenVaultOneInput ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneIntermediate: {\n      value: input.tokenVaultOneIntermediate ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoIntermediate: {\n      value: input.tokenVaultTwoIntermediate ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoOutput: {\n      value: input.tokenVaultTwoOutput ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountOutput: {\n      value: input.tokenOwnerAccountOutput ?? null,\n      isWritable: true,\n    },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    tickArrayOne0: { value: input.tickArrayOne0 ?? null, isWritable: true },\n    tickArrayOne1: { value: input.tickArrayOne1 ?? null, isWritable: true },\n    tickArrayOne2: { value: input.tickArrayOne2 ?? null, isWritable: true },\n    tickArrayTwo0: { value: input.tickArrayTwo0 ?? null, isWritable: true },\n    tickArrayTwo1: { value: input.tickArrayTwo1 ?? null, isWritable: true },\n    tickArrayTwo2: { value: input.tickArrayTwo2 ?? null, isWritable: true },\n    oracleOne: { value: input.oracleOne ?? null, isWritable: true },\n    oracleTwo: { value: input.oracleTwo ?? null, isWritable: true },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.oracleOne.value) {\n    accounts.oracleOne.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpoolOne.value)),\n      ],\n    });\n  }\n  if (!accounts.oracleTwo.value) {\n    accounts.oracleTwo.value = await getProgramDerivedAddress({\n      programAddress,\n      seeds: [\n        getBytesEncoder().encode(new Uint8Array([111, 114, 97, 99, 108, 101])),\n        getAddressEncoder().encode(expectAddress(accounts.whirlpoolTwo.value)),\n      ],\n    });\n  }\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolOne),\n      getAccountMeta(accounts.whirlpoolTwo),\n      getAccountMeta(accounts.tokenMintInput),\n      getAccountMeta(accounts.tokenMintIntermediate),\n      getAccountMeta(accounts.tokenMintOutput),\n      getAccountMeta(accounts.tokenProgramInput),\n      getAccountMeta(accounts.tokenProgramIntermediate),\n      getAccountMeta(accounts.tokenProgramOutput),\n      getAccountMeta(accounts.tokenOwnerAccountInput),\n      getAccountMeta(accounts.tokenVaultOneInput),\n      getAccountMeta(accounts.tokenVaultOneIntermediate),\n      getAccountMeta(accounts.tokenVaultTwoIntermediate),\n      getAccountMeta(accounts.tokenVaultTwoOutput),\n      getAccountMeta(accounts.tokenOwnerAccountOutput),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.tickArrayOne0),\n      getAccountMeta(accounts.tickArrayOne1),\n      getAccountMeta(accounts.tickArrayOne2),\n      getAccountMeta(accounts.tickArrayTwo0),\n      getAccountMeta(accounts.tickArrayTwo1),\n      getAccountMeta(accounts.tickArrayTwo2),\n      getAccountMeta(accounts.oracleOne),\n      getAccountMeta(accounts.oracleTwo),\n      getAccountMeta(accounts.memoProgram),\n    ],\n    data: getTwoHopSwapV2InstructionDataEncoder().encode(\n      args as TwoHopSwapV2InstructionDataArgs\n    ),\n    programAddress,\n  } as TwoHopSwapV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenMintInput,\n    TAccountTokenMintIntermediate,\n    TAccountTokenMintOutput,\n    TAccountTokenProgramInput,\n    TAccountTokenProgramIntermediate,\n    TAccountTokenProgramOutput,\n    TAccountTokenOwnerAccountInput,\n    TAccountTokenVaultOneInput,\n    TAccountTokenVaultOneIntermediate,\n    TAccountTokenVaultTwoIntermediate,\n    TAccountTokenVaultTwoOutput,\n    TAccountTokenOwnerAccountOutput,\n    TAccountTokenAuthority,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo,\n    TAccountMemoProgram\n  >);\n}\n\nexport type TwoHopSwapV2Input<\n  TAccountWhirlpoolOne extends string = string,\n  TAccountWhirlpoolTwo extends string = string,\n  TAccountTokenMintInput extends string = string,\n  TAccountTokenMintIntermediate extends string = string,\n  TAccountTokenMintOutput extends string = string,\n  TAccountTokenProgramInput extends string = string,\n  TAccountTokenProgramIntermediate extends string = string,\n  TAccountTokenProgramOutput extends string = string,\n  TAccountTokenOwnerAccountInput extends string = string,\n  TAccountTokenVaultOneInput extends string = string,\n  TAccountTokenVaultOneIntermediate extends string = string,\n  TAccountTokenVaultTwoIntermediate extends string = string,\n  TAccountTokenVaultTwoOutput extends string = string,\n  TAccountTokenOwnerAccountOutput extends string = string,\n  TAccountTokenAuthority extends string = string,\n  TAccountTickArrayOne0 extends string = string,\n  TAccountTickArrayOne1 extends string = string,\n  TAccountTickArrayOne2 extends string = string,\n  TAccountTickArrayTwo0 extends string = string,\n  TAccountTickArrayTwo1 extends string = string,\n  TAccountTickArrayTwo2 extends string = string,\n  TAccountOracleOne extends string = string,\n  TAccountOracleTwo extends string = string,\n  TAccountMemoProgram extends string = string,\n> = {\n  whirlpoolOne: Address<TAccountWhirlpoolOne>;\n  whirlpoolTwo: Address<TAccountWhirlpoolTwo>;\n  tokenMintInput: Address<TAccountTokenMintInput>;\n  tokenMintIntermediate: Address<TAccountTokenMintIntermediate>;\n  tokenMintOutput: Address<TAccountTokenMintOutput>;\n  tokenProgramInput: Address<TAccountTokenProgramInput>;\n  tokenProgramIntermediate: Address<TAccountTokenProgramIntermediate>;\n  tokenProgramOutput: Address<TAccountTokenProgramOutput>;\n  tokenOwnerAccountInput: Address<TAccountTokenOwnerAccountInput>;\n  tokenVaultOneInput: Address<TAccountTokenVaultOneInput>;\n  tokenVaultOneIntermediate: Address<TAccountTokenVaultOneIntermediate>;\n  tokenVaultTwoIntermediate: Address<TAccountTokenVaultTwoIntermediate>;\n  tokenVaultTwoOutput: Address<TAccountTokenVaultTwoOutput>;\n  tokenOwnerAccountOutput: Address<TAccountTokenOwnerAccountOutput>;\n  tokenAuthority: TransactionSigner<TAccountTokenAuthority>;\n  tickArrayOne0: Address<TAccountTickArrayOne0>;\n  tickArrayOne1: Address<TAccountTickArrayOne1>;\n  tickArrayOne2: Address<TAccountTickArrayOne2>;\n  tickArrayTwo0: Address<TAccountTickArrayTwo0>;\n  tickArrayTwo1: Address<TAccountTickArrayTwo1>;\n  tickArrayTwo2: Address<TAccountTickArrayTwo2>;\n  oracleOne: Address<TAccountOracleOne>;\n  oracleTwo: Address<TAccountOracleTwo>;\n  memoProgram?: Address<TAccountMemoProgram>;\n  amount: TwoHopSwapV2InstructionDataArgs['amount'];\n  otherAmountThreshold: TwoHopSwapV2InstructionDataArgs['otherAmountThreshold'];\n  amountSpecifiedIsInput: TwoHopSwapV2InstructionDataArgs['amountSpecifiedIsInput'];\n  aToBOne: TwoHopSwapV2InstructionDataArgs['aToBOne'];\n  aToBTwo: TwoHopSwapV2InstructionDataArgs['aToBTwo'];\n  sqrtPriceLimitOne: TwoHopSwapV2InstructionDataArgs['sqrtPriceLimitOne'];\n  sqrtPriceLimitTwo: TwoHopSwapV2InstructionDataArgs['sqrtPriceLimitTwo'];\n  remainingAccountsInfo: TwoHopSwapV2InstructionDataArgs['remainingAccountsInfo'];\n};\n\nexport function getTwoHopSwapV2Instruction<\n  TAccountWhirlpoolOne extends string,\n  TAccountWhirlpoolTwo extends string,\n  TAccountTokenMintInput extends string,\n  TAccountTokenMintIntermediate extends string,\n  TAccountTokenMintOutput extends string,\n  TAccountTokenProgramInput extends string,\n  TAccountTokenProgramIntermediate extends string,\n  TAccountTokenProgramOutput extends string,\n  TAccountTokenOwnerAccountInput extends string,\n  TAccountTokenVaultOneInput extends string,\n  TAccountTokenVaultOneIntermediate extends string,\n  TAccountTokenVaultTwoIntermediate extends string,\n  TAccountTokenVaultTwoOutput extends string,\n  TAccountTokenOwnerAccountOutput extends string,\n  TAccountTokenAuthority extends string,\n  TAccountTickArrayOne0 extends string,\n  TAccountTickArrayOne1 extends string,\n  TAccountTickArrayOne2 extends string,\n  TAccountTickArrayTwo0 extends string,\n  TAccountTickArrayTwo1 extends string,\n  TAccountTickArrayTwo2 extends string,\n  TAccountOracleOne extends string,\n  TAccountOracleTwo extends string,\n  TAccountMemoProgram extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: TwoHopSwapV2Input<\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenMintInput,\n    TAccountTokenMintIntermediate,\n    TAccountTokenMintOutput,\n    TAccountTokenProgramInput,\n    TAccountTokenProgramIntermediate,\n    TAccountTokenProgramOutput,\n    TAccountTokenOwnerAccountInput,\n    TAccountTokenVaultOneInput,\n    TAccountTokenVaultOneIntermediate,\n    TAccountTokenVaultTwoIntermediate,\n    TAccountTokenVaultTwoOutput,\n    TAccountTokenOwnerAccountOutput,\n    TAccountTokenAuthority,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo,\n    TAccountMemoProgram\n  >,\n  config?: { programAddress?: TProgramAddress }\n): TwoHopSwapV2Instruction<\n  TProgramAddress,\n  TAccountWhirlpoolOne,\n  TAccountWhirlpoolTwo,\n  TAccountTokenMintInput,\n  TAccountTokenMintIntermediate,\n  TAccountTokenMintOutput,\n  TAccountTokenProgramInput,\n  TAccountTokenProgramIntermediate,\n  TAccountTokenProgramOutput,\n  TAccountTokenOwnerAccountInput,\n  TAccountTokenVaultOneInput,\n  TAccountTokenVaultOneIntermediate,\n  TAccountTokenVaultTwoIntermediate,\n  TAccountTokenVaultTwoOutput,\n  TAccountTokenOwnerAccountOutput,\n  TAccountTokenAuthority,\n  TAccountTickArrayOne0,\n  TAccountTickArrayOne1,\n  TAccountTickArrayOne2,\n  TAccountTickArrayTwo0,\n  TAccountTickArrayTwo1,\n  TAccountTickArrayTwo2,\n  TAccountOracleOne,\n  TAccountOracleTwo,\n  TAccountMemoProgram\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpoolOne: { value: input.whirlpoolOne ?? null, isWritable: true },\n    whirlpoolTwo: { value: input.whirlpoolTwo ?? null, isWritable: true },\n    tokenMintInput: { value: input.tokenMintInput ?? null, isWritable: false },\n    tokenMintIntermediate: {\n      value: input.tokenMintIntermediate ?? null,\n      isWritable: false,\n    },\n    tokenMintOutput: {\n      value: input.tokenMintOutput ?? null,\n      isWritable: false,\n    },\n    tokenProgramInput: {\n      value: input.tokenProgramInput ?? null,\n      isWritable: false,\n    },\n    tokenProgramIntermediate: {\n      value: input.tokenProgramIntermediate ?? null,\n      isWritable: false,\n    },\n    tokenProgramOutput: {\n      value: input.tokenProgramOutput ?? null,\n      isWritable: false,\n    },\n    tokenOwnerAccountInput: {\n      value: input.tokenOwnerAccountInput ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneInput: {\n      value: input.tokenVaultOneInput ?? null,\n      isWritable: true,\n    },\n    tokenVaultOneIntermediate: {\n      value: input.tokenVaultOneIntermediate ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoIntermediate: {\n      value: input.tokenVaultTwoIntermediate ?? null,\n      isWritable: true,\n    },\n    tokenVaultTwoOutput: {\n      value: input.tokenVaultTwoOutput ?? null,\n      isWritable: true,\n    },\n    tokenOwnerAccountOutput: {\n      value: input.tokenOwnerAccountOutput ?? null,\n      isWritable: true,\n    },\n    tokenAuthority: { value: input.tokenAuthority ?? null, isWritable: false },\n    tickArrayOne0: { value: input.tickArrayOne0 ?? null, isWritable: true },\n    tickArrayOne1: { value: input.tickArrayOne1 ?? null, isWritable: true },\n    tickArrayOne2: { value: input.tickArrayOne2 ?? null, isWritable: true },\n    tickArrayTwo0: { value: input.tickArrayTwo0 ?? null, isWritable: true },\n    tickArrayTwo1: { value: input.tickArrayTwo1 ?? null, isWritable: true },\n    tickArrayTwo2: { value: input.tickArrayTwo2 ?? null, isWritable: true },\n    oracleOne: { value: input.oracleOne ?? null, isWritable: true },\n    oracleTwo: { value: input.oracleTwo ?? null, isWritable: true },\n    memoProgram: { value: input.memoProgram ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  // Original args.\n  const args = { ...input };\n\n  // Resolve default values.\n  if (!accounts.memoProgram.value) {\n    accounts.memoProgram.value =\n      'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr' as Address<'MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr'>;\n  }\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpoolOne),\n      getAccountMeta(accounts.whirlpoolTwo),\n      getAccountMeta(accounts.tokenMintInput),\n      getAccountMeta(accounts.tokenMintIntermediate),\n      getAccountMeta(accounts.tokenMintOutput),\n      getAccountMeta(accounts.tokenProgramInput),\n      getAccountMeta(accounts.tokenProgramIntermediate),\n      getAccountMeta(accounts.tokenProgramOutput),\n      getAccountMeta(accounts.tokenOwnerAccountInput),\n      getAccountMeta(accounts.tokenVaultOneInput),\n      getAccountMeta(accounts.tokenVaultOneIntermediate),\n      getAccountMeta(accounts.tokenVaultTwoIntermediate),\n      getAccountMeta(accounts.tokenVaultTwoOutput),\n      getAccountMeta(accounts.tokenOwnerAccountOutput),\n      getAccountMeta(accounts.tokenAuthority),\n      getAccountMeta(accounts.tickArrayOne0),\n      getAccountMeta(accounts.tickArrayOne1),\n      getAccountMeta(accounts.tickArrayOne2),\n      getAccountMeta(accounts.tickArrayTwo0),\n      getAccountMeta(accounts.tickArrayTwo1),\n      getAccountMeta(accounts.tickArrayTwo2),\n      getAccountMeta(accounts.oracleOne),\n      getAccountMeta(accounts.oracleTwo),\n      getAccountMeta(accounts.memoProgram),\n    ],\n    data: getTwoHopSwapV2InstructionDataEncoder().encode(\n      args as TwoHopSwapV2InstructionDataArgs\n    ),\n    programAddress,\n  } as TwoHopSwapV2Instruction<\n    TProgramAddress,\n    TAccountWhirlpoolOne,\n    TAccountWhirlpoolTwo,\n    TAccountTokenMintInput,\n    TAccountTokenMintIntermediate,\n    TAccountTokenMintOutput,\n    TAccountTokenProgramInput,\n    TAccountTokenProgramIntermediate,\n    TAccountTokenProgramOutput,\n    TAccountTokenOwnerAccountInput,\n    TAccountTokenVaultOneInput,\n    TAccountTokenVaultOneIntermediate,\n    TAccountTokenVaultTwoIntermediate,\n    TAccountTokenVaultTwoOutput,\n    TAccountTokenOwnerAccountOutput,\n    TAccountTokenAuthority,\n    TAccountTickArrayOne0,\n    TAccountTickArrayOne1,\n    TAccountTickArrayOne2,\n    TAccountTickArrayTwo0,\n    TAccountTickArrayTwo1,\n    TAccountTickArrayTwo2,\n    TAccountOracleOne,\n    TAccountOracleTwo,\n    TAccountMemoProgram\n  >);\n}\n\nexport type ParsedTwoHopSwapV2Instruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpoolOne: TAccountMetas[0];\n    whirlpoolTwo: TAccountMetas[1];\n    tokenMintInput: TAccountMetas[2];\n    tokenMintIntermediate: TAccountMetas[3];\n    tokenMintOutput: TAccountMetas[4];\n    tokenProgramInput: TAccountMetas[5];\n    tokenProgramIntermediate: TAccountMetas[6];\n    tokenProgramOutput: TAccountMetas[7];\n    tokenOwnerAccountInput: TAccountMetas[8];\n    tokenVaultOneInput: TAccountMetas[9];\n    tokenVaultOneIntermediate: TAccountMetas[10];\n    tokenVaultTwoIntermediate: TAccountMetas[11];\n    tokenVaultTwoOutput: TAccountMetas[12];\n    tokenOwnerAccountOutput: TAccountMetas[13];\n    tokenAuthority: TAccountMetas[14];\n    tickArrayOne0: TAccountMetas[15];\n    tickArrayOne1: TAccountMetas[16];\n    tickArrayOne2: TAccountMetas[17];\n    tickArrayTwo0: TAccountMetas[18];\n    tickArrayTwo1: TAccountMetas[19];\n    tickArrayTwo2: TAccountMetas[20];\n    oracleOne: TAccountMetas[21];\n    oracleTwo: TAccountMetas[22];\n    memoProgram: TAccountMetas[23];\n  };\n  data: TwoHopSwapV2InstructionData;\n};\n\nexport function parseTwoHopSwapV2Instruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedTwoHopSwapV2Instruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 24) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpoolOne: getNextAccount(),\n      whirlpoolTwo: getNextAccount(),\n      tokenMintInput: getNextAccount(),\n      tokenMintIntermediate: getNextAccount(),\n      tokenMintOutput: getNextAccount(),\n      tokenProgramInput: getNextAccount(),\n      tokenProgramIntermediate: getNextAccount(),\n      tokenProgramOutput: getNextAccount(),\n      tokenOwnerAccountInput: getNextAccount(),\n      tokenVaultOneInput: getNextAccount(),\n      tokenVaultOneIntermediate: getNextAccount(),\n      tokenVaultTwoIntermediate: getNextAccount(),\n      tokenVaultTwoOutput: getNextAccount(),\n      tokenOwnerAccountOutput: getNextAccount(),\n      tokenAuthority: getNextAccount(),\n      tickArrayOne0: getNextAccount(),\n      tickArrayOne1: getNextAccount(),\n      tickArrayOne2: getNextAccount(),\n      tickArrayTwo0: getNextAccount(),\n      tickArrayTwo1: getNextAccount(),\n      tickArrayTwo2: getNextAccount(),\n      oracleOne: getNextAccount(),\n      oracleTwo: getNextAccount(),\n      memoProgram: getNextAccount(),\n    },\n    data: getTwoHopSwapV2InstructionDataDecoder().decode(instruction.data),\n  };\n}\n","/**\n * This code was AUTOGENERATED using the Codama library.\n * Please DO NOT EDIT THIS FILE, instead use visitors\n * to add features, then rerun Codama to update it.\n *\n * @see https://github.com/codama-idl/codama\n */\n\nimport {\n  combineCodec,\n  fixDecoderSize,\n  fixEncoderSize,\n  getBytesDecoder,\n  getBytesEncoder,\n  getStructDecoder,\n  getStructEncoder,\n  transformEncoder,\n  type AccountMeta,\n  type Address,\n  type FixedSizeCodec,\n  type FixedSizeDecoder,\n  type FixedSizeEncoder,\n  type Instruction,\n  type InstructionWithAccounts,\n  type InstructionWithData,\n  type ReadonlyAccount,\n  type ReadonlyUint8Array,\n  type WritableAccount,\n} from '@solana/kit';\nimport { WHIRLPOOL_PROGRAM_ADDRESS } from '../programs';\nimport { getAccountMetaFactory, type ResolvedAccount } from '../shared';\n\nexport const UPDATE_FEES_AND_REWARDS_DISCRIMINATOR = new Uint8Array([\n  154, 230, 250, 13, 236, 209, 75, 223,\n]);\n\nexport function getUpdateFeesAndRewardsDiscriminatorBytes() {\n  return fixEncoderSize(getBytesEncoder(), 8).encode(\n    UPDATE_FEES_AND_REWARDS_DISCRIMINATOR\n  );\n}\n\nexport type UpdateFeesAndRewardsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountWhirlpool extends string | AccountMeta<string> = string,\n  TAccountPosition extends string | AccountMeta<string> = string,\n  TAccountTickArrayLower extends string | AccountMeta<string> = string,\n  TAccountTickArrayUpper extends string | AccountMeta<string> = string,\n  TRemainingAccounts extends readonly AccountMeta<string>[] = [],\n> = Instruction<TProgram> &\n  InstructionWithData<ReadonlyUint8Array> &\n  InstructionWithAccounts<\n    [\n      TAccountWhirlpool extends string\n        ? WritableAccount<TAccountWhirlpool>\n        : TAccountWhirlpool,\n      TAccountPosition extends string\n        ? WritableAccount<TAccountPosition>\n        : TAccountPosition,\n      TAccountTickArrayLower extends string\n        ? ReadonlyAccount<TAccountTickArrayLower>\n        : TAccountTickArrayLower,\n      TAccountTickArrayUpper extends string\n        ? ReadonlyAccount<TAccountTickArrayUpper>\n        : TAccountTickArrayUpper,\n      ...TRemainingAccounts,\n    ]\n  >;\n\nexport type UpdateFeesAndRewardsInstructionData = {\n  discriminator: ReadonlyUint8Array;\n};\n\nexport type UpdateFeesAndRewardsInstructionDataArgs = {};\n\nexport function getUpdateFeesAndRewardsInstructionDataEncoder(): FixedSizeEncoder<UpdateFeesAndRewardsInstructionDataArgs> {\n  return transformEncoder(\n    getStructEncoder([['discriminator', fixEncoderSize(getBytesEncoder(), 8)]]),\n    (value) => ({\n      ...value,\n      discriminator: UPDATE_FEES_AND_REWARDS_DISCRIMINATOR,\n    })\n  );\n}\n\nexport function getUpdateFeesAndRewardsInstructionDataDecoder(): FixedSizeDecoder<UpdateFeesAndRewardsInstructionData> {\n  return getStructDecoder([\n    ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n  ]);\n}\n\nexport function getUpdateFeesAndRewardsInstructionDataCodec(): FixedSizeCodec<\n  UpdateFeesAndRewardsInstructionDataArgs,\n  UpdateFeesAndRewardsInstructionData\n> {\n  return combineCodec(\n    getUpdateFeesAndRewardsInstructionDataEncoder(),\n    getUpdateFeesAndRewardsInstructionDataDecoder()\n  );\n}\n\nexport type UpdateFeesAndRewardsInput<\n  TAccountWhirlpool extends string = string,\n  TAccountPosition extends string = string,\n  TAccountTickArrayLower extends string = string,\n  TAccountTickArrayUpper extends string = string,\n> = {\n  whirlpool: Address<TAccountWhirlpool>;\n  position: Address<TAccountPosition>;\n  tickArrayLower: Address<TAccountTickArrayLower>;\n  tickArrayUpper: Address<TAccountTickArrayUpper>;\n};\n\nexport function getUpdateFeesAndRewardsInstruction<\n  TAccountWhirlpool extends string,\n  TAccountPosition extends string,\n  TAccountTickArrayLower extends string,\n  TAccountTickArrayUpper extends string,\n  TProgramAddress extends Address = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n>(\n  input: UpdateFeesAndRewardsInput<\n    TAccountWhirlpool,\n    TAccountPosition,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >,\n  config?: { programAddress?: TProgramAddress }\n): UpdateFeesAndRewardsInstruction<\n  TProgramAddress,\n  TAccountWhirlpool,\n  TAccountPosition,\n  TAccountTickArrayLower,\n  TAccountTickArrayUpper\n> {\n  // Program address.\n  const programAddress = config?.programAddress ?? WHIRLPOOL_PROGRAM_ADDRESS;\n\n  // Original accounts.\n  const originalAccounts = {\n    whirlpool: { value: input.whirlpool ?? null, isWritable: true },\n    position: { value: input.position ?? null, isWritable: true },\n    tickArrayLower: { value: input.tickArrayLower ?? null, isWritable: false },\n    tickArrayUpper: { value: input.tickArrayUpper ?? null, isWritable: false },\n  };\n  const accounts = originalAccounts as Record<\n    keyof typeof originalAccounts,\n    ResolvedAccount\n  >;\n\n  const getAccountMeta = getAccountMetaFactory(programAddress, 'programId');\n  return Object.freeze({\n    accounts: [\n      getAccountMeta(accounts.whirlpool),\n      getAccountMeta(accounts.position),\n      getAccountMeta(accounts.tickArrayLower),\n      getAccountMeta(accounts.tickArrayUpper),\n    ],\n    data: getUpdateFeesAndRewardsInstructionDataEncoder().encode({}),\n    programAddress,\n  } as UpdateFeesAndRewardsInstruction<\n    TProgramAddress,\n    TAccountWhirlpool,\n    TAccountPosition,\n    TAccountTickArrayLower,\n    TAccountTickArrayUpper\n  >);\n}\n\nexport type ParsedUpdateFeesAndRewardsInstruction<\n  TProgram extends string = typeof WHIRLPOOL_PROGRAM_ADDRESS,\n  TAccountMetas extends readonly AccountMeta[] = readonly AccountMeta[],\n> = {\n  programAddress: Address<TProgram>;\n  accounts: {\n    whirlpool: TAccountMetas[0];\n    position: TAccountMetas[1];\n    tickArrayLower: TAccountMetas[2];\n    tickArrayUpper: TAccountMetas[3];\n  };\n  data: UpdateFeesAndRewardsInstructionData;\n};\n\nexport function parseUpdateFeesAndRewardsInstruction<\n  TProgram extends string,\n  TAccountMetas extends readonly AccountMeta[],\n>(\n  instruction: Instruction<TProgram> &\n    InstructionWithAccounts<TAccountMetas> &\n    InstructionWithData<ReadonlyUint8Array>\n): ParsedUpdateFeesAndRewardsInstruction<TProgram, TAccountMetas> {\n  if (instruction.accounts.length < 4) {\n    // TODO: Coded error.\n    throw new Error('Not enough accounts');\n  }\n  let accountIndex = 0;\n  const getNextAccount = () => {\n    const accountMeta = (instruction.accounts as TAccountMetas)[accountIndex]!;\n    accountIndex += 1;\n    return accountMeta;\n  };\n  return {\n    programAddress: instruction.programAddress,\n    accounts: {\n      whirlpool: getNextAccount(),\n      position: getNextAccount(),\n      tickArrayLower: getNextAccount(),\n      tickArrayUpper: getNextAccount(),\n    },\n    data: getUpdateFeesAndRewardsInstructionDataDecoder().decode(\n      instruction.data\n    ),\n  };\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getU16Encoder,\n  getU32Encoder,\n} from \"@solana/kit\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\nimport type { AdaptiveFeeTier } from \"../generated\";\nimport {\n  ADAPTIVE_FEE_TIER_DISCRIMINATOR,\n  getAdaptiveFeeTierDecoder,\n} from \"../generated\";\n\ntype AdaptiveFeeTierFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function adaptiveFeeTierWhirlpoolsConfigFilter(\n  address: Address,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierFeeTierIndexFilter(\n  feeTierIndex: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(feeTierIndex)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierTickSpacingFilter(\n  tickSpacing: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 42n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(tickSpacing)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierInitializePoolAuthorityFilter(\n  address: Address,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 44n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierDelegatedFeeAuthorityFilter(\n  address: Address,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 76n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierDefaultBaseFeeRateFilter(\n  feeRate: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 108n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(feeRate)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierFilterPeriodFilter(\n  filterPeriod: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 110n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(filterPeriod)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierDecayPeriodFilter(\n  decayPeriod: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 112n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(decayPeriod)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierReductionFactorFilter(\n  reductionFactor: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 114n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(reductionFactor)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierAdaptiveFeeControlFactorFilter(\n  adaptiveFeeControlFactor: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 116n,\n      bytes: getBase58Decoder().decode(\n        getU32Encoder().encode(adaptiveFeeControlFactor),\n      ),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierMaxVolatilityFilter(\n  maxVolatility: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 120n,\n      bytes: getBase58Decoder().decode(getU32Encoder().encode(maxVolatility)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierTickGroupSizeFilter(\n  tickGroupSize: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 124n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(tickGroupSize)),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport function adaptiveFeeTierMajorSwapThresholdTicksFilter(\n  majorSwapThresholdTicks: number,\n): AdaptiveFeeTierFilter {\n  return {\n    memcmp: {\n      offset: 126n,\n      bytes: getBase58Decoder().decode(\n        getU16Encoder().encode(majorSwapThresholdTicks),\n      ),\n      encoding: \"base58\",\n    },\n  } as AdaptiveFeeTierFilter;\n}\n\nexport async function fetchAllAdaptiveFeeTierWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: AdaptiveFeeTierFilter[],\n  programAddress?: Address,\n): Promise<Account<AdaptiveFeeTier>[]> {\n  const discriminator = getBase58Decoder().decode(\n    ADAPTIVE_FEE_TIER_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getAdaptiveFeeTierDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n  VariableSizeDecoder,\n} from \"@solana/kit\";\nimport { getBase64Encoder } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\nexport async function fetchDecodedProgramAccounts<T extends object>(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: GetProgramAccountsMemcmpFilter[],\n  decoder: VariableSizeDecoder<T>,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<Account<T>[]> {\n  const accountInfos = await rpc\n    .getProgramAccounts(programAddress, {\n      encoding: \"base64\",\n      filters,\n    })\n    .send();\n  const encoder = getBase64Encoder();\n  return accountInfos.map((accountInfo) => {\n    const [base64Data, _encoding] = accountInfo.account.data;\n    return {\n      ...accountInfo.account,\n      address: accountInfo.pubkey,\n      programAddress,\n      data: decoder.decode(encoder.encode(base64Data)),\n    };\n  });\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getI32Encoder,\n} from \"@solana/kit\";\nimport type { DynamicTickArray } from \"../generated/accounts/dynamicTickArray\";\nimport {\n  DYNAMIC_TICK_ARRAY_DISCRIMINATOR,\n  getDynamicTickArrayDecoder,\n} from \"../generated/accounts/dynamicTickArray\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type DynamicTickArrayFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function dynamicTickArrayStartTickIndexFilter(\n  startTickIndex: number,\n): DynamicTickArrayFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getI32Encoder().encode(startTickIndex)),\n      encoding: \"base58\",\n    },\n  } as DynamicTickArrayFilter;\n}\n\nexport function dynamicTickArrayWhirlpoolFilter(\n  address: Address,\n): DynamicTickArrayFilter {\n  return {\n    memcmp: {\n      offset: 12n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as DynamicTickArrayFilter;\n}\n\nexport async function fetchAllDynamicTickArrayWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: DynamicTickArrayFilter[],\n  programAddress?: Address,\n): Promise<Account<DynamicTickArray>[]> {\n  const discriminator = getBase58Decoder().decode(\n    DYNAMIC_TICK_ARRAY_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getDynamicTickArrayDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getU16Encoder,\n} from \"@solana/kit\";\nimport type { FeeTier } from \"../generated/accounts/feeTier\";\nimport {\n  FEE_TIER_DISCRIMINATOR,\n  getFeeTierDecoder,\n} from \"../generated/accounts/feeTier\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\ntype FeeTierFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function feeTierWhirlpoolsConfigFilter(address: Address): FeeTierFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as FeeTierFilter;\n}\n\nexport function feeTierTickSpacingFilter(tickSpacing: number): FeeTierFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(tickSpacing)),\n      encoding: \"base58\",\n    },\n  } as FeeTierFilter;\n}\n\nexport function feeTierFeeRateFilter(defaultFeeRate: number): FeeTierFilter {\n  return {\n    memcmp: {\n      offset: 42n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(defaultFeeRate)),\n      encoding: \"base58\",\n    },\n  } as FeeTierFilter;\n}\n\nexport async function fetchAllFeeTierWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: FeeTierFilter[],\n  programAddress?: Address,\n): Promise<Account<FeeTier>[]> {\n  const discriminator = getBase58Decoder().decode(\n    FEE_TIER_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getFeeTierDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getI32Encoder,\n} from \"@solana/kit\";\nimport type { FixedTickArray } from \"../generated/accounts/fixedTickArray\";\nimport {\n  FIXED_TICK_ARRAY_DISCRIMINATOR,\n  getFixedTickArrayDecoder,\n} from \"../generated/accounts/fixedTickArray\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type FixedTickArrayFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function fixedTickArrayStartTickIndexFilter(\n  startTickIndex: number,\n): FixedTickArrayFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getI32Encoder().encode(startTickIndex)),\n      encoding: \"base58\",\n    },\n  } as FixedTickArrayFilter;\n}\n\nexport function fixedTickArrayWhirlpoolFilter(\n  address: Address,\n): FixedTickArrayFilter {\n  return {\n    memcmp: {\n      offset: 9956n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as FixedTickArrayFilter;\n}\n\nexport async function fetchAllFixedTickArrayWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: FixedTickArrayFilter[],\n  programAddress?: Address,\n): Promise<Account<FixedTickArray>[]> {\n  const discriminator = getBase58Decoder().decode(\n    FIXED_TICK_ARRAY_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getFixedTickArrayDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport { getAddressEncoder, getBase58Decoder } from \"@solana/kit\";\nimport { getLockConfigDecoder, LOCK_CONFIG_DISCRIMINATOR } from \"../generated\";\nimport type { LockConfig } from \"../generated/accounts/lockConfig\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\ntype LockConfigFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function lockConfigPositionFilter(address: Address): LockConfigFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as LockConfigFilter;\n}\n\nexport function lockConfigPositionOwnerFilter(\n  address: Address,\n): LockConfigFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as LockConfigFilter;\n}\n\nexport function lockConfigWhirlpoolFilter(address: Address): LockConfigFilter {\n  return {\n    memcmp: {\n      offset: 72n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as LockConfigFilter;\n}\n\nexport async function fetchAllLockConfigWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: LockConfigFilter[],\n  programAddress?: Address,\n): Promise<Account<LockConfig>[]> {\n  const discriminator = getBase58Decoder().decode(\n    LOCK_CONFIG_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getLockConfigDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getU16Encoder,\n  getU32Encoder,\n  getU64Encoder,\n} from \"@solana/kit\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\nimport type { Oracle } from \"../generated\";\nimport { getOracleDecoder, ORACLE_DISCRIMINATOR } from \"../generated\";\n\ntype OracleFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function oracleWhirlpoolFilter(address: Address): OracleFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleTradeEnableTimestampFilter(\n  timestamp: number | bigint,\n): OracleFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getU64Encoder().encode(timestamp)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleFilterPeriodFilter(filterPeriod: number): OracleFilter {\n  return {\n    memcmp: {\n      offset: 48n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(filterPeriod)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleDecayPeriodFilter(decayPeriod: number): OracleFilter {\n  return {\n    memcmp: {\n      offset: 50n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(decayPeriod)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleReductionFactorFilter(\n  reductionFactor: number,\n): OracleFilter {\n  return {\n    memcmp: {\n      offset: 52n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(reductionFactor)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleAdaptiveFeeControlFactorFilter(\n  adaptiveFeeControlFactor: number,\n): OracleFilter {\n  return {\n    memcmp: {\n      offset: 54n,\n      bytes: getBase58Decoder().decode(\n        getU32Encoder().encode(adaptiveFeeControlFactor),\n      ),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleMaxVolatilityFilter(maxVolatility: number): OracleFilter {\n  return {\n    memcmp: {\n      offset: 58n,\n      bytes: getBase58Decoder().decode(getU32Encoder().encode(maxVolatility)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleTickGroupSizeFilter(tickGroupSize: number): OracleFilter {\n  return {\n    memcmp: {\n      offset: 62n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(tickGroupSize)),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport function oracleMajorSwapThresholdTicksFilter(\n  majorSwapThresholdTicks: number,\n): OracleFilter {\n  return {\n    memcmp: {\n      offset: 64n,\n      bytes: getBase58Decoder().decode(\n        getU16Encoder().encode(majorSwapThresholdTicks),\n      ),\n      encoding: \"base58\",\n    },\n  } as OracleFilter;\n}\n\nexport async function fetchAllOracleWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: OracleFilter[],\n  programAddress?: Address,\n): Promise<Account<Oracle>[]> {\n  const discriminator = getBase58Decoder().decode(\n    ORACLE_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getOracleDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  GetProgramAccountsMemcmpFilter,\n  Account,\n  GetProgramAccountsApi,\n  Rpc,\n  Address,\n  Base58EncodedBytes,\n} from \"@solana/kit\";\nimport {\n  getBase58Decoder,\n  getAddressEncoder,\n  getI32Encoder,\n} from \"@solana/kit\";\nimport type { Position } from \"../generated/accounts/position\";\nimport {\n  POSITION_DISCRIMINATOR,\n  getPositionDecoder,\n} from \"../generated/accounts/position\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\ntype PositionFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function positionWhirlpoolFilter(address: Address): PositionFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as PositionFilter;\n}\n\nexport function positionMintFilter(address: Address): PositionFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as PositionFilter;\n}\n\nexport function positionTickLowerIndexFilter(\n  tickLowerIndex: number,\n): PositionFilter {\n  return {\n    memcmp: {\n      offset: 88n,\n      bytes: getBase58Decoder().decode(getI32Encoder().encode(tickLowerIndex)),\n      encoding: \"base58\",\n    },\n  } as PositionFilter;\n}\n\nexport function positionTickUpperIndexFilter(\n  tickUpperIndex: number,\n): PositionFilter {\n  return {\n    memcmp: {\n      offset: 92n,\n      bytes: getBase58Decoder().decode(getI32Encoder().encode(tickUpperIndex)),\n      encoding: \"base58\",\n    },\n  } as PositionFilter;\n}\n\nexport async function fetchAllPositionWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: PositionFilter[],\n  programAddress?: Address,\n): Promise<Account<Position>[]> {\n  const discriminator = getBase58Decoder().decode(\n    POSITION_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getPositionDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport { getAddressEncoder, getBase58Decoder } from \"@solana/kit\";\nimport type { PositionBundle } from \"../generated/accounts/positionBundle\";\nimport {\n  POSITION_BUNDLE_DISCRIMINATOR,\n  getPositionBundleDecoder,\n} from \"../generated/accounts/positionBundle\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type PositionBundleFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function positionBundleMintFilter(\n  address: Address,\n): PositionBundleFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as PositionBundleFilter;\n}\n\nexport async function fetchAllPositionBundleWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: PositionBundleFilter[],\n  programAddress?: Address,\n): Promise<Account<PositionBundle>[]> {\n  const discriminator = getBase58Decoder().decode(\n    POSITION_BUNDLE_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getPositionBundleDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Codec,\n  Decoder,\n  EncodedAccount,\n  Encoder,\n  FetchAccountConfig,\n  FetchAccountsConfig,\n  MaybeAccount,\n  MaybeEncodedAccount,\n} from \"@solana/kit\";\nimport {\n  assertAccountExists,\n  assertAccountsExist,\n  combineCodec,\n  fetchEncodedAccount,\n  fetchEncodedAccounts,\n  getU64Decoder,\n} from \"@solana/kit\";\nimport type { DynamicTickArray } from \"../generated/accounts/dynamicTickArray\";\nimport {\n  decodeDynamicTickArray,\n  DYNAMIC_TICK_ARRAY_DISCRIMINATOR,\n} from \"../generated/accounts/dynamicTickArray\";\nimport type {\n  FixedTickArray,\n  FixedTickArrayArgs,\n} from \"../generated/accounts/fixedTickArray\";\nimport {\n  decodeFixedTickArray,\n  FIXED_TICK_ARRAY_DISCRIMINATOR,\n  getFixedTickArrayDecoder,\n  getFixedTickArrayDiscriminatorBytes,\n  getFixedTickArrayEncoder,\n  getFixedTickArraySize,\n} from \"../generated/accounts/fixedTickArray\";\nimport type { Tick } from \"../generated/types/tick\";\nimport type { DynamicTick } from \"../generated/types/dynamicTick\";\n\nconst FIXED_TICK_ARRAY_DISCRIMINATOR_NUMBER = getU64Decoder().decode(\n  FIXED_TICK_ARRAY_DISCRIMINATOR,\n);\nconst DYNAMIC_TICK_ARRAY_DISCRIMINATOR_NUMBER = getU64Decoder().decode(\n  DYNAMIC_TICK_ARRAY_DISCRIMINATOR,\n);\n\nexport type TickArray = FixedTickArray & {\n  __kind: \"Fixed\" | \"Dynamic\";\n};\n\nexport function consolidateTick(tick: Tick | DynamicTick): Tick {\n  if (\"initialized\" in tick) {\n    return tick;\n  }\n  switch (tick.__kind) {\n    case \"Uninitialized\":\n      return {\n        initialized: false,\n        liquidityGross: 0n,\n        liquidityNet: 0n,\n        feeGrowthOutsideA: 0n,\n        feeGrowthOutsideB: 0n,\n        rewardGrowthsOutside: [0n, 0n, 0n],\n      };\n    case \"Initialized\":\n      return {\n        initialized: true,\n        liquidityGross: tick.fields[0].liquidityGross,\n        liquidityNet: tick.fields[0].liquidityNet,\n        feeGrowthOutsideA: tick.fields[0].feeGrowthOutsideA,\n        feeGrowthOutsideB: tick.fields[0].feeGrowthOutsideB,\n        rewardGrowthsOutside: tick.fields[0].rewardGrowthsOutside,\n      };\n  }\n}\n\nexport function consolidateTickArray<TAddress extends string = string>(\n  tickArrayAccount: Account<FixedTickArray | DynamicTickArray, TAddress>,\n): Account<TickArray, TAddress>;\nexport function consolidateTickArray<TAddress extends string = string>(\n  tickArrayAccount: MaybeAccount<FixedTickArray | DynamicTickArray, TAddress>,\n): MaybeAccount<TickArray, TAddress>;\nexport function consolidateTickArray<TAddress extends string = string>(\n  tickArrayAccount:\n    | Account<FixedTickArray | DynamicTickArray, TAddress>\n    | MaybeAccount<FixedTickArray | DynamicTickArray, TAddress>,\n): Account<TickArray, TAddress> | MaybeAccount<TickArray, TAddress> {\n  if (\"exists\" in tickArrayAccount && !tickArrayAccount.exists) {\n    return tickArrayAccount;\n  }\n\n  const discriminator = getU64Decoder().decode(\n    tickArrayAccount.data.discriminator.subarray(0, 8),\n  );\n  const __kind =\n    discriminator === FIXED_TICK_ARRAY_DISCRIMINATOR_NUMBER\n      ? \"Fixed\"\n      : \"Dynamic\";\n\n  return {\n    ...tickArrayAccount,\n    data: {\n      __kind,\n      ...tickArrayAccount.data,\n      ticks: tickArrayAccount.data.ticks.map(consolidateTick),\n    },\n  };\n}\n\nexport function decodeTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress>,\n): Account<TickArray, TAddress>;\nexport function decodeTickArray<TAddress extends string = string>(\n  encodedAccount: MaybeEncodedAccount<TAddress>,\n): MaybeAccount<TickArray, TAddress>;\nexport function decodeTickArray<TAddress extends string = string>(\n  encodedAccount: EncodedAccount<TAddress> | MaybeEncodedAccount<TAddress>,\n): Account<TickArray, TAddress> | MaybeAccount<TickArray, TAddress> {\n  if (\"exists\" in encodedAccount && !encodedAccount.exists) {\n    return encodedAccount;\n  }\n  const discriminator = getU64Decoder().decode(\n    encodedAccount.data.subarray(0, 8),\n  );\n  switch (discriminator) {\n    case FIXED_TICK_ARRAY_DISCRIMINATOR_NUMBER:\n      return consolidateTickArray(decodeFixedTickArray(encodedAccount));\n    case DYNAMIC_TICK_ARRAY_DISCRIMINATOR_NUMBER:\n      return consolidateTickArray(decodeDynamicTickArray(encodedAccount));\n    default:\n      throw new Error(`Unknown discriminator: ${discriminator}`);\n  }\n}\n\nexport async function fetchTickArray<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<Account<TickArray, TAddress>> {\n  const maybeAccount = await fetchMaybeTickArray(rpc, address, config);\n  assertAccountExists(maybeAccount);\n  return maybeAccount;\n}\n\nexport async function fetchMaybeTickArray<TAddress extends string = string>(\n  rpc: Parameters<typeof fetchEncodedAccount>[0],\n  address: Address<TAddress>,\n  config?: FetchAccountConfig,\n): Promise<MaybeAccount<TickArray, TAddress>> {\n  const maybeAccount = await fetchEncodedAccount(rpc, address, config);\n  return decodeTickArray(maybeAccount);\n}\n\nexport async function fetchAllTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<Account<TickArray>[]> {\n  const maybeAccounts = await fetchAllMaybeTickArray(rpc, addresses, config);\n  assertAccountsExist(maybeAccounts);\n  return maybeAccounts;\n}\n\nexport async function fetchAllMaybeTickArray(\n  rpc: Parameters<typeof fetchEncodedAccounts>[0],\n  addresses: Array<Address>,\n  config?: FetchAccountsConfig,\n): Promise<MaybeAccount<TickArray>[]> {\n  const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config);\n  return maybeAccounts.map((maybeAccount) => decodeTickArray(maybeAccount));\n}\n\n// Backwards compatibility\n\n/**\n * @deprecated use `FixedTickArrayArgs` or `DynamicTickArrayArgs` instead\n */\nexport type TickArrayArgs = FixedTickArrayArgs;\n\n/**\n * @deprecated use `getFixedTickArraySize` or `getDynamicTickArray(Min|Max)Size` instead\n */\nexport function getTickArraySize(): number {\n  return getFixedTickArraySize();\n}\n\n/**\n * @deprecated use `FIXED_TICK_ARRAY_DISCRIMINATOR` or `DYNAMIC_TICK_ARRAY_DISCRIMINATOR` instead\n */\nexport const TICK_ARRAY_DISCRIMINATOR = FIXED_TICK_ARRAY_DISCRIMINATOR;\n\n/**\n * @deprecated use `getFixedTickArrayDiscriminatorBytes` or `getDynamicTickArrayDiscriminatorBytes` instead\n */\nexport function getTickArrayDiscriminatorBytes() {\n  return getFixedTickArrayDiscriminatorBytes();\n}\n\n/**\n * @deprecated use `getFixedTickArrayEncoder` or `getDynamicTickArrayEncoder` instead\n */\nexport function getTickArrayEncoder(): Encoder<FixedTickArrayArgs> {\n  return getFixedTickArrayEncoder();\n}\n\n/**\n * @deprecated use `getFixedTickArrayDecoder` or `getDynamicTickArrayDecoder` instead\n */\nexport function getTickArrayDecoder(): Decoder<FixedTickArray> {\n  return getFixedTickArrayDecoder();\n}\n\n/**\n * @deprecated use `getFixedTickArrayCodec` or `getDynamicTickArrayCodec` instead\n */\nexport function getTickArrayCodec(): Codec<FixedTickArrayArgs, FixedTickArray> {\n  return combineCodec(getFixedTickArrayEncoder(), getFixedTickArrayDecoder());\n}\n","import type { Account, Address, GetProgramAccountsApi, Rpc } from \"@solana/kit\";\nimport type { DynamicTickArrayFilter } from \"./dynamicTickArray\";\nimport {\n  dynamicTickArrayStartTickIndexFilter,\n  dynamicTickArrayWhirlpoolFilter,\n  fetchAllDynamicTickArrayWithFilter,\n} from \"./dynamicTickArray\";\nimport type { TickArray } from \"../state/tickArray\";\nimport { consolidateTickArray } from \"../state/tickArray\";\nimport type { FixedTickArrayFilter } from \"./fixedTickArray\";\nimport {\n  fetchAllFixedTickArrayWithFilter,\n  fixedTickArrayStartTickIndexFilter,\n  fixedTickArrayWhirlpoolFilter,\n} from \"./fixedTickArray\";\n\nexport type TickArrayFilter = {\n  fixed: FixedTickArrayFilter;\n  dynamic: DynamicTickArrayFilter;\n  readonly __kind: unique symbol;\n};\n\nexport function tickArrayStartTickIndexFilter(\n  startTickIndex: number,\n): TickArrayFilter {\n  return {\n    fixed: fixedTickArrayStartTickIndexFilter(startTickIndex),\n    dynamic: dynamicTickArrayStartTickIndexFilter(startTickIndex),\n  } as TickArrayFilter;\n}\n\nexport function tickArrayWhirlpoolFilter(address: Address): TickArrayFilter {\n  return {\n    fixed: fixedTickArrayWhirlpoolFilter(address),\n    dynamic: dynamicTickArrayWhirlpoolFilter(address),\n  } as TickArrayFilter;\n}\n\nexport async function fetchAllTickArrayWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: TickArrayFilter[],\n  programAddress?: Address,\n): Promise<Account<TickArray>[]> {\n  const fixedAccounts = await fetchAllFixedTickArrayWithFilter(\n    rpc,\n    filters.map((filter) => filter.fixed),\n    programAddress,\n  );\n  const dynamicAccounts = await fetchAllDynamicTickArrayWithFilter(\n    rpc,\n    filters.map((filter) => filter.dynamic),\n    programAddress,\n  );\n\n  const tickArrays: Account<TickArray>[] = [];\n  for (const account of fixedAccounts) {\n    tickArrays.push(consolidateTickArray(account));\n  }\n  for (const account of dynamicAccounts) {\n    tickArrays.push(consolidateTickArray(account));\n  }\n\n  return tickArrays;\n}\n","import type {\n  GetProgramAccountsMemcmpFilter,\n  Address,\n  Account,\n  GetProgramAccountsApi,\n  Rpc,\n  Base58EncodedBytes,\n} from \"@solana/kit\";\nimport { getBase58Decoder, getAddressEncoder } from \"@solana/kit\";\nimport type { TokenBadge } from \"../generated/accounts/tokenBadge\";\nimport {\n  TOKEN_BADGE_DISCRIMINATOR,\n  getTokenBadgeDecoder,\n} from \"../generated/accounts/tokenBadge\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type TokenBadgeFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function tokenBadgeWhirlpoolsConfigFilter(\n  address: Address,\n): TokenBadgeFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as TokenBadgeFilter;\n}\n\nexport function tokenBadgeTokenMintFilter(address: Address): TokenBadgeFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as TokenBadgeFilter;\n}\n\nexport async function fetchAllTokenBadgeWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: TokenBadgeFilter[],\n  programAddress?: Address,\n): Promise<Account<TokenBadge>[]> {\n  const discriminator = getBase58Decoder().decode(\n    TOKEN_BADGE_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getTokenBadgeDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  Account,\n  Address,\n  Base58EncodedBytes,\n  GetProgramAccountsApi,\n  GetProgramAccountsMemcmpFilter,\n  Rpc,\n} from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getBase58Decoder,\n  getU16Encoder,\n} from \"@solana/kit\";\nimport type { Whirlpool } from \"../generated/accounts/whirlpool\";\nimport {\n  WHIRLPOOL_DISCRIMINATOR,\n  getWhirlpoolDecoder,\n} from \"../generated/accounts/whirlpool\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type WhirlpoolFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function whirlpoolWhirlpoolConfigFilter(\n  address: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolTickSpacingFilter(\n  tickSpacing: number,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 41n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(tickSpacing)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolFeeRateFilter(\n  defaultFeeRate: number,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 45n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(defaultFeeRate)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolProtocolFeeRateFilter(\n  protocolFeeRate: number,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 47n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(protocolFeeRate)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolTokenMintAFilter(\n  tokenMintA: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 101n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(tokenMintA)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolTokenVaultAFilter(\n  tokenVaultA: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 133n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(tokenVaultA)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolTokenMintBFilter(\n  tokenMintB: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 181n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(tokenMintB)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolTokenVaultBFilter(\n  tokenVaultB: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 213n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(tokenVaultB)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardMint1Filter(\n  rewardMint1: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 269n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(rewardMint1)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardVault1Filter(\n  rewardVault1: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 301n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(rewardVault1),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardMint2Filter(\n  rewardMint2: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 397n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(rewardMint2)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardVault2Filter(\n  rewardVault2: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 429n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(rewardVault2),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardMint3Filter(\n  rewardMint3: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 525n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(rewardMint3)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\nexport function whirlpoolRewardVault3Filter(\n  rewardVault3: Address,\n): WhirlpoolFilter {\n  return {\n    memcmp: {\n      offset: 557n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(rewardVault3),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolFilter;\n}\n\n/**\n * Fetches all Whirlpool accounts with the specified filters.\n *\n * This function fetches all Whirlpool accounts from the blockchain that match the specified filters.\n * It uses the Whirlpool discriminator to identify Whirlpool accounts and applies additional filters\n * provided as arguments.\n *\n * @param {Rpc<GetProgramAccountsApi>} rpc - The Solana RPC client to fetch program accounts.\n * @param {...WhirlpoolFilter[]} filters - The filters to apply when fetching Whirlpool accounts.\n * @returns {Promise<Account<Whirlpool>[]>} A promise that resolves to an array of Whirlpool accounts.\n *\n * @example\n * import { address, createSolanaRpc, devnet } from \"@solana/kit\";\n * import { fetchAllWhirlpoolWithFilter, whirlpoolWhirlpoolConfigFilter } from \"@orca-so/whirlpools-client\";\n *\n * const rpcDevnet = createSolanaRpc(devnet(\"https://api.devnet.solana.com\"));\n * const WHIRLPOOLS_CONFIG_ADDRESS_DEVNET = address(\"FcrweFY1G9HJAHG5inkGB6pKg1HZ6x9UC2WioAfWrGkR\");\n * const whirlpools = await fetchAllWhirlpoolWithFilter(rpcDevnet, whirlpoolWhirlpoolConfigFilter(WHIRLPOOLS_CONFIG_ADDRESS_DEVNET));\n */\nexport async function fetchAllWhirlpoolWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: WhirlpoolFilter[],\n  programAddress?: Address,\n): Promise<Account<Whirlpool>[]> {\n  const discriminator = getBase58Decoder().decode(\n    WHIRLPOOL_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getWhirlpoolDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  GetProgramAccountsMemcmpFilter,\n  Address,\n  Account,\n  GetProgramAccountsApi,\n  Rpc,\n  Base58EncodedBytes,\n} from \"@solana/kit\";\nimport {\n  getBase58Decoder,\n  getAddressEncoder,\n  getU16Encoder,\n} from \"@solana/kit\";\nimport type { WhirlpoolsConfig } from \"../generated/accounts/whirlpoolsConfig\";\nimport {\n  WHIRLPOOLS_CONFIG_DISCRIMINATOR,\n  getWhirlpoolsConfigDecoder,\n} from \"../generated/accounts/whirlpoolsConfig\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type WhirlpoolsConfigFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function whirlpoolsConfigFeeAuthorityFilter(\n  feeAuthority: Address,\n): WhirlpoolsConfigFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(feeAuthority),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigFilter;\n}\n\nexport function whirlpoolsConfigCollectProtocolFeesAuthorityFilter(\n  collectProtocolFeesAuthority: Address,\n): WhirlpoolsConfigFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(collectProtocolFeesAuthority),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigFilter;\n}\n\nexport function whirlpoolsConfigRewardEmissionsSuperAuthorityFilter(\n  rewardEmissionsSuperAuthority: Address,\n): WhirlpoolsConfigFilter {\n  return {\n    memcmp: {\n      offset: 72n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(rewardEmissionsSuperAuthority),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigFilter;\n}\n\nexport function whirlpoolsConfigDefaultProtocolFeeRateFilter(\n  defaultFeeRate: number,\n): WhirlpoolsConfigFilter {\n  return {\n    memcmp: {\n      offset: 104n,\n      bytes: getBase58Decoder().decode(getU16Encoder().encode(defaultFeeRate)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigFilter;\n}\n\nexport async function fetchAllWhirlpoolsConfigWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: WhirlpoolsConfigFilter[],\n  programAddress?: Address,\n): Promise<Account<WhirlpoolsConfig>[]> {\n  const discriminator = getBase58Decoder().decode(\n    WHIRLPOOLS_CONFIG_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getWhirlpoolsConfigDecoder(),\n    programAddress,\n  );\n}\n","import type {\n  GetProgramAccountsMemcmpFilter,\n  Address,\n  Account,\n  GetProgramAccountsApi,\n  Rpc,\n  Base58EncodedBytes,\n} from \"@solana/kit\";\nimport { getBase58Decoder, getAddressEncoder } from \"@solana/kit\";\nimport type { WhirlpoolsConfigExtension } from \"../generated/accounts/whirlpoolsConfigExtension\";\nimport {\n  WHIRLPOOLS_CONFIG_EXTENSION_DISCRIMINATOR,\n  getWhirlpoolsConfigExtensionDecoder,\n} from \"../generated/accounts/whirlpoolsConfigExtension\";\nimport { fetchDecodedProgramAccounts } from \"./utils\";\n\nexport type WhirlpoolsConfigExtensionFilter = GetProgramAccountsMemcmpFilter & {\n  readonly __kind: unique symbol;\n};\n\nexport function whirlpoolsConfigExtensionWhirlpoolsConfigFilter(\n  address: Address,\n): WhirlpoolsConfigExtensionFilter {\n  return {\n    memcmp: {\n      offset: 8n,\n      bytes: getBase58Decoder().decode(getAddressEncoder().encode(address)),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigExtensionFilter;\n}\n\nexport function whirlpoolsConfigExtensionConfigExtensionAuthorityFilter(\n  configExtensionAuthority: Address,\n): WhirlpoolsConfigExtensionFilter {\n  return {\n    memcmp: {\n      offset: 40n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(configExtensionAuthority),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigExtensionFilter;\n}\n\nexport function whirlpoolsConfigExtensionConfigTokenBadgeAuthorityFilter(\n  configTokenBadgeAuthority: Address,\n): WhirlpoolsConfigExtensionFilter {\n  return {\n    memcmp: {\n      offset: 72n,\n      bytes: getBase58Decoder().decode(\n        getAddressEncoder().encode(configTokenBadgeAuthority),\n      ),\n      encoding: \"base58\",\n    },\n  } as WhirlpoolsConfigExtensionFilter;\n}\n\nexport async function fetchAllWhirlpoolsConfigExtensionWithFilter(\n  rpc: Rpc<GetProgramAccountsApi>,\n  filters: WhirlpoolsConfigExtensionFilter[],\n  programAddress?: Address,\n): Promise<Account<WhirlpoolsConfigExtension>[]> {\n  const discriminator = getBase58Decoder().decode(\n    WHIRLPOOLS_CONFIG_EXTENSION_DISCRIMINATOR,\n  ) as Base58EncodedBytes;\n  const discriminatorFilter: GetProgramAccountsMemcmpFilter = {\n    memcmp: {\n      offset: 0n,\n      bytes: discriminator,\n      encoding: \"base58\",\n    },\n  };\n  return fetchDecodedProgramAccounts(\n    rpc,\n    [discriminatorFilter, ...filters],\n    getWhirlpoolsConfigExtensionDecoder(),\n    programAddress,\n  );\n}\n","import type { ProgramDerivedAddress } from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getU16Encoder,\n} from \"@solana/kit\";\nimport type { WhirlpoolDeployment } from \"../config\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the fee tier PDA for the given fee tier index under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getFeeTierAddress(\n  feeTierIndex: number,\n  whirlpoolDeployment: WhirlpoolDeployment = DEFAULT_WHIRLPOOL_DEPLOYMENT,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress: whirlpoolDeployment.programId,\n    seeds: [\n      \"fee_tier\",\n      getAddressEncoder().encode(whirlpoolDeployment.configAddress),\n      getU16Encoder().encode(feeTierIndex),\n    ],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the lock config PDA for the given position under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getLockConfigAddress(\n  position: Address,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\"lock_config\", getAddressEncoder().encode(position)],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the oracle PDA for the given whirlpool under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getOracleAddress(\n  whirlpool: Address,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\"oracle\", getAddressEncoder().encode(whirlpool)],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the position PDA for the given position mint under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getPositionAddress(\n  positionMint: Address,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\"position\", getAddressEncoder().encode(positionMint)],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the position bundle PDA for the given position mint under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getPositionBundleAddress(\n  positionBundleMint: Address,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\"position_bundle\", getAddressEncoder().encode(positionBundleMint)],\n  });\n}\n\n/**\n * Derives the bundled position PDA for the given position bundle address and bundle index\n * under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getBundledPositionAddress(\n  positionBundleAddress: Address,\n  bundleIndex: number,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      \"bundled_position\",\n      getAddressEncoder().encode(positionBundleAddress),\n      Buffer.from(bundleIndex.toString()),\n    ],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the tick array PDA for the given whirlpool and start tick index under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getTickArrayAddress(\n  whirlpool: Address,\n  startTickIndex: number,\n  programAddress: Address = DEFAULT_WHIRLPOOL_DEPLOYMENT.programId,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress,\n    seeds: [\n      \"tick_array\",\n      getAddressEncoder().encode(whirlpool),\n      `${startTickIndex}`,\n    ],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport type { WhirlpoolDeployment } from \"../config\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the token badge PDA for the given mint under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getTokenBadgeAddress(\n  tokenMint: Address,\n  whirlpoolDeployment: WhirlpoolDeployment = DEFAULT_WHIRLPOOL_DEPLOYMENT,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress: whirlpoolDeployment.programId,\n    seeds: [\n      \"token_badge\",\n      getAddressEncoder().encode(whirlpoolDeployment.configAddress),\n      getAddressEncoder().encode(tokenMint),\n    ],\n  });\n}\n","import type { Address, ProgramDerivedAddress } from \"@solana/kit\";\nimport {\n  getAddressEncoder,\n  getProgramDerivedAddress,\n  getU16Encoder,\n} from \"@solana/kit\";\nimport type { WhirlpoolDeployment } from \"../config\";\nimport { DEFAULT_WHIRLPOOL_DEPLOYMENT } from \"../config\";\n\n/**\n * Derives the whirlpool PDA for the given mint pair and fee tier index under the supplied whirlpool deployment.\n *\n * Uses {@link DEFAULT_WHIRLPOOL_DEPLOYMENT} when `whirlpoolDeployment` is omitted.\n */\nexport async function getWhirlpoolAddress(\n  tokenMintA: Address,\n  tokenMintB: Address,\n  feeTierIndex: number,\n  whirlpoolDeployment: WhirlpoolDeployment = DEFAULT_WHIRLPOOL_DEPLOYMENT,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress: whirlpoolDeployment.programId,\n    seeds: [\n      \"whirlpool\",\n      getAddressEncoder().encode(whirlpoolDeployment.configAddress),\n      getAddressEncoder().encode(tokenMintA),\n      getAddressEncoder().encode(tokenMintB),\n      getU16Encoder().encode(feeTierIndex),\n    ],\n  });\n}\n","import type { ProgramDerivedAddress } from \"@solana/kit\";\nimport { getAddressEncoder, getProgramDerivedAddress } from \"@solana/kit\";\nimport type { WhirlpoolDeployment } from \"../config\";\n\n/** Derives the whirlpool config extension PDA under the supplied whirlpool deployment. */\nexport async function getWhirlpoolsConfigExtensionAddress(\n  whirlpoolDeployment: WhirlpoolDeployment,\n): Promise<ProgramDerivedAddress> {\n  return await getProgramDerivedAddress({\n    programAddress: whirlpoolDeployment.programId,\n    seeds: [\n      \"config_extension\",\n      getAddressEncoder().encode(whirlpoolDeployment.configAddress),\n    ],\n  });\n}\n","export function getDynamicTickArrayMinSize(): number {\n  return 148;\n}\n\nexport function getDynamicTickArrayMaxSize(): number {\n  return 10004;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;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","names":["import_kit","address","import_kit","import_kit","AccountsType","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","LockType","import_kit","LockTypeLabel","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","import_kit","WhirlpoolAccount","WhirlpoolInstruction","import_kit","import_kit","kitIsTransactionSigner","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","import_kit","address","address","import_kit","address","import_kit","address","import_kit","import_kit","address","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit","import_kit"]}