/** * This code was AUTOGENERATED using the Codama library. * Please DO NOT EDIT THIS FILE, instead use visitors * to add features, then rerun Codama to update it. * * @see https://github.com/codama-idl/codama */ import { assertAccountExists, assertAccountsExist, combineCodec, decodeAccount, fetchEncodedAccount, fetchEncodedAccounts, fixDecoderSize, fixEncoderSize, getAddressDecoder, getAddressEncoder, getArrayDecoder, getArrayEncoder, getBytesDecoder, getBytesEncoder, getStructDecoder, getStructEncoder, getU128Decoder, getU128Encoder, getU64Decoder, getU64Encoder, getU8Decoder, getU8Encoder, transformEncoder, type Account, type Address, type EncodedAccount, type FetchAccountConfig, type FetchAccountsConfig, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type MaybeAccount, type MaybeEncodedAccount, type ReadonlyUint8Array, } from "@solana/kit"; import { getPoolFeesConfigDecoder, getPoolFeesConfigEncoder, type PoolFeesConfig, type PoolFeesConfigArgs, } from "../types/index.js"; export const CONFIG_DISCRIMINATOR: ReadonlyUint8Array = new Uint8Array([ 155, 12, 170, 224, 30, 250, 204, 130, ]); export function getConfigDiscriminatorBytes(): ReadonlyUint8Array { return fixEncoderSize(getBytesEncoder(), 8).encode(CONFIG_DISCRIMINATOR); } export type Config = { discriminator: ReadonlyUint8Array; /** Vault config key */ vaultConfigKey: Address; /** Only pool_creator_authority can use the current config to initialize new pool. When it's Pubkey::default, it's a public config. */ poolCreatorAuthority: Address; /** Pool fee */ poolFees: PoolFeesConfig; /** Activation type */ activationType: number; /** Collect fee mode */ collectFeeMode: number; /** Config type mode, 0 for static, 1 for dynamic */ configType: number; /** padding 0 */ padding0: Array; /** config index */ index: bigint; /** sqrt min price */ sqrtMinPrice: bigint; /** sqrt max price */ sqrtMaxPrice: bigint; /** * Fee curve point * Padding for further use */ padding1: Array; }; export type ConfigArgs = { /** Vault config key */ vaultConfigKey: Address; /** Only pool_creator_authority can use the current config to initialize new pool. When it's Pubkey::default, it's a public config. */ poolCreatorAuthority: Address; /** Pool fee */ poolFees: PoolFeesConfigArgs; /** Activation type */ activationType: number; /** Collect fee mode */ collectFeeMode: number; /** Config type mode, 0 for static, 1 for dynamic */ configType: number; /** padding 0 */ padding0: Array; /** config index */ index: number | bigint; /** sqrt min price */ sqrtMinPrice: number | bigint; /** sqrt max price */ sqrtMaxPrice: number | bigint; /** * Fee curve point * Padding for further use */ padding1: Array; }; /** Gets the encoder for {@link ConfigArgs} account data. */ export function getConfigEncoder(): FixedSizeEncoder { return transformEncoder( getStructEncoder([ ["discriminator", fixEncoderSize(getBytesEncoder(), 8)], ["vaultConfigKey", getAddressEncoder()], ["poolCreatorAuthority", getAddressEncoder()], ["poolFees", getPoolFeesConfigEncoder()], ["activationType", getU8Encoder()], ["collectFeeMode", getU8Encoder()], ["configType", getU8Encoder()], ["padding0", getArrayEncoder(getU8Encoder(), { size: 5 })], ["index", getU64Encoder()], ["sqrtMinPrice", getU128Encoder()], ["sqrtMaxPrice", getU128Encoder()], ["padding1", getArrayEncoder(getU64Encoder(), { size: 10 })], ]), (value) => ({ ...value, discriminator: CONFIG_DISCRIMINATOR }), ); } /** Gets the decoder for {@link Config} account data. */ export function getConfigDecoder(): FixedSizeDecoder { return getStructDecoder([ ["discriminator", fixDecoderSize(getBytesDecoder(), 8)], ["vaultConfigKey", getAddressDecoder()], ["poolCreatorAuthority", getAddressDecoder()], ["poolFees", getPoolFeesConfigDecoder()], ["activationType", getU8Decoder()], ["collectFeeMode", getU8Decoder()], ["configType", getU8Decoder()], ["padding0", getArrayDecoder(getU8Decoder(), { size: 5 })], ["index", getU64Decoder()], ["sqrtMinPrice", getU128Decoder()], ["sqrtMaxPrice", getU128Decoder()], ["padding1", getArrayDecoder(getU64Decoder(), { size: 10 })], ]); } /** Gets the codec for {@link Config} account data. */ export function getConfigCodec(): FixedSizeCodec { return combineCodec(getConfigEncoder(), getConfigDecoder()); } export function decodeConfig( encodedAccount: EncodedAccount, ): Account; export function decodeConfig( encodedAccount: MaybeEncodedAccount, ): MaybeAccount; export function decodeConfig( encodedAccount: EncodedAccount | MaybeEncodedAccount, ): Account | MaybeAccount { return decodeAccount( encodedAccount as MaybeEncodedAccount, getConfigDecoder(), ); } export async function fetchConfig( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchMaybeConfig(rpc, address, config); assertAccountExists(maybeAccount); return maybeAccount; } export async function fetchMaybeConfig( rpc: Parameters[0], address: Address, config?: FetchAccountConfig, ): Promise> { const maybeAccount = await fetchEncodedAccount(rpc, address, config); return decodeConfig(maybeAccount); } export async function fetchAllConfig( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchAllMaybeConfig(rpc, addresses, config); assertAccountsExist(maybeAccounts); return maybeAccounts; } export async function fetchAllMaybeConfig( rpc: Parameters[0], addresses: Array
, config?: FetchAccountsConfig, ): Promise[]> { const maybeAccounts = await fetchEncodedAccounts(rpc, addresses, config); return maybeAccounts.map((maybeAccount) => decodeConfig(maybeAccount)); }