/** * 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 { combineCodec, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getU128Decoder, getU128Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from "@solana/kit"; export type DexSpecificPrice = | { __kind: "SqrtPrice"; fields: readonly [bigint] } | { __kind: "Q6464"; fields: readonly [bigint] }; export type DexSpecificPriceArgs = | { __kind: "SqrtPrice"; fields: readonly [number | bigint] } | { __kind: "Q6464"; fields: readonly [number | bigint] }; export function getDexSpecificPriceEncoder(): FixedSizeEncoder { return getDiscriminatedUnionEncoder([ [ "SqrtPrice", getStructEncoder([["fields", getTupleEncoder([getU128Encoder()])]]), ], [ "Q6464", getStructEncoder([["fields", getTupleEncoder([getU128Encoder()])]]), ], ]) as FixedSizeEncoder; } export function getDexSpecificPriceDecoder(): FixedSizeDecoder { return getDiscriminatedUnionDecoder([ [ "SqrtPrice", getStructDecoder([["fields", getTupleDecoder([getU128Decoder()])]]), ], [ "Q6464", getStructDecoder([["fields", getTupleDecoder([getU128Decoder()])]]), ], ]) as FixedSizeDecoder; } export function getDexSpecificPriceCodec(): FixedSizeCodec< DexSpecificPriceArgs, DexSpecificPrice > { return combineCodec( getDexSpecificPriceEncoder(), getDexSpecificPriceDecoder(), ); } // Data Enum Helpers. export function dexSpecificPrice( kind: "SqrtPrice", data: GetDiscriminatedUnionVariantContent< DexSpecificPriceArgs, "__kind", "SqrtPrice" >["fields"], ): GetDiscriminatedUnionVariant; export function dexSpecificPrice( kind: "Q6464", data: GetDiscriminatedUnionVariantContent< DexSpecificPriceArgs, "__kind", "Q6464" >["fields"], ): GetDiscriminatedUnionVariant; export function dexSpecificPrice< K extends DexSpecificPriceArgs["__kind"], Data, >(kind: K, data?: Data) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isDexSpecificPrice( kind: K, value: DexSpecificPrice, ): value is DexSpecificPrice & { __kind: K } { return value.__kind === kind; }