@orca-so/whirlpools-client
Version:
Typescript client to interact with Orca's on-chain Whirlpool program.
1 lines • 998 kB
Source Map (JSON)
{"version":3,"sources":["../src/index.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/dynamicTick.ts","../src/generated/types/dynamicTickData.ts","../src/generated/types/lockType.ts","../src/generated/types/lockTypeLabel.ts","../src/generated/types/positionRewardInfo.ts","../src/generated/types/remainingAccountsInfo.ts","../src/generated/types/remainingAccountsSlice.ts","../src/generated/types/tick.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/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/openBundledPosition.ts","../src/generated/instructions/openPosition.ts","../src/generated/instructions/openPositionWithMetadata.ts","../src/generated/instructions/openPositionWithTokenExtensions.ts","../src/generated/instructions/resetPositionRange.ts","../src/generated/instructions/setCollectProtocolFeesAuthority.ts","../src/generated/instructions/setConfigExtensionAuthority.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/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/feeTier.ts","../src/gpa/oracle.ts","../src/gpa/position.ts","../src/gpa/positionBundle.ts","../src/gpa/fixedTickArray.ts","../src/gpa/tokenBadge.ts","../src/gpa/whirlpool.ts","../src/gpa/whirlpoolsConfig.ts","../src/gpa/whirlpoolsConfigExtension.ts","../src/pda/feeTier.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","../src/state/tickArray.ts"],"sourcesContent":["export * from \"./generated\";\nexport * from \"./gpa\";\nexport * from \"./pda\";\nexport * from \"./state\";\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 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';\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(): Encoder<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(): Decoder<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(): Codec<\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 Codec,\n type Decoder,\n type Encoder,\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}\n\nexport type AccountsTypeArgs = AccountsType;\n\nexport function getAccountsTypeEncoder(): Encoder<AccountsTypeArgs> {\n return getEnumEncoder(AccountsType);\n}\n\nexport function getAccountsTypeDecoder(): Decoder<AccountsType> {\n return getEnumDecoder(AccountsType);\n}\n\nexport function getAccountsTypeCodec(): Codec<AccountsTypeArgs, AccountsType> {\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 Codec,\n type Decoder,\n type Encoder,\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(): Encoder<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(): Decoder<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(): Codec<\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 Codec,\n type Decoder,\n type Encoder,\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(): Encoder<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(): Decoder<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(): Codec<\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 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 Codec,\n type Decoder,\n type Encoder,\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(): Encoder<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(): Decoder<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(): Codec<\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 getEnumDecoder,\n getEnumEncoder,\n type Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum LockType {\n Permanent,\n}\n\nexport type LockTypeArgs = LockType;\n\nexport function getLockTypeEncoder(): Encoder<LockTypeArgs> {\n return getEnumEncoder(LockType);\n}\n\nexport function getLockTypeDecoder(): Decoder<LockType> {\n return getEnumDecoder(LockType);\n}\n\nexport function getLockTypeCodec(): Codec<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 Codec,\n type Decoder,\n type Encoder,\n} from '@solana/kit';\n\nexport enum LockTypeLabel {\n Permanent,\n}\n\nexport type LockTypeLabelArgs = LockTypeLabel;\n\nexport function getLockTypeLabelEncoder(): Encoder<LockTypeLabelArgs> {\n return getEnumEncoder(LockTypeLabel);\n}\n\nexport function getLockTypeLabelDecoder(): Decoder<LockTypeLabel> {\n return getEnumDecoder(LockTypeLabel);\n}\n\nexport function getLockTypeLabelCodec(): Codec<\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 getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n getU64Decoder,\n getU64Encoder,\n type Codec,\n type Decoder,\n type Encoder,\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(): Encoder<PositionRewardInfoArgs> {\n return getStructEncoder([\n ['growthInsideCheckpoint', getU128Encoder()],\n ['amountOwed', getU64Encoder()],\n ]);\n}\n\nexport function getPositionRewardInfoDecoder(): Decoder<PositionRewardInfo> {\n return getStructDecoder([\n ['growthInsideCheckpoint', getU128Decoder()],\n ['amountOwed', getU64Decoder()],\n ]);\n}\n\nexport function getPositionRewardInfoCodec(): Codec<\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 Codec,\n type Decoder,\n type Encoder,\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(): Encoder<RemainingAccountsSliceArgs> {\n return getStructEncoder([\n ['accountsType', getAccountsTypeEncoder()],\n ['length', getU8Encoder()],\n ]);\n}\n\nexport function getRemainingAccountsSliceDecoder(): Decoder<RemainingAccountsSlice> {\n return getStructDecoder([\n ['accountsType', getAccountsTypeDecoder()],\n ['length', getU8Decoder()],\n ]);\n}\n\nexport function getRemainingAccountsSliceCodec(): Codec<\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 getArrayDecoder,\n getArrayEncoder,\n getBooleanDecoder,\n getBooleanEncoder,\n getI128Decoder,\n getI128Encoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n type Codec,\n type Decoder,\n type Encoder,\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(): Encoder<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(): Decoder<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(): Codec<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 getAddressDecoder,\n getAddressEncoder,\n getStructDecoder,\n getStructEncoder,\n getU128Decoder,\n getU128Encoder,\n type Address,\n type Codec,\n type Decoder,\n type Encoder,\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 */\n\nexport type WhirlpoolRewardInfo = {\n /** Reward token mint. */\n mint: Address;\n /** Reward vault token account. */\n vault: Address;\n /** Authority account that has permission to initialize the reward and set emissions. */\n authority: Address;\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 /** Authority account that has permission to initialize the reward and set emissions. */\n authority: Address;\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(): Encoder<WhirlpoolRewardInfoArgs> {\n return getStructEncoder([\n ['mint', getAddressEncoder()],\n ['vault', getAddressEncoder()],\n ['authority', getAddressEncoder()],\n ['emissionsPerSecondX64', getU128Encoder()],\n ['growthGlobalX64', getU128Encoder()],\n ]);\n}\n\nexport function getWhirlpoolRewardInfoDecoder(): Decoder<WhirlpoolRewardInfo> {\n return getStructDecoder([\n ['mint', getAddressDecoder()],\n ['vault', getAddressDecoder()],\n ['authority', getAddressDecoder()],\n ['emissionsPerSecondX64', getU128Decoder()],\n ['growthGlobalX64', getU128Decoder()],\n ]);\n}\n\nexport function getWhirlpoolRewardInfoCodec(): Codec<\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 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';\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(): Encoder<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(): Decoder<FeeTier> {\n return getStructDecoder([\n ['discriminator', fixDecoderSize(getBytesDecoder(), 8)],\n ['whirlpoolsConfig', getAddressDecoder()],\n ['tickSpacing', getU16Decoder()],\n ['defaultFeeRate', getU16Decoder()],\n ]);\n}\n\nexport function getFeeTierCodec(): Codec<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 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 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(): Encoder<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(): Decoder<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(): Codec<\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 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 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(): Encoder<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(): Decoder<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(): Codec<LockConfigArgs, LockConfig> {\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: Parame