/** * 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, getI32Decoder, getI32Encoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getUnitDecoder, getUnitEncoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from "@solana/kit"; import { getDexSpecificPriceDecoder, getDexSpecificPriceEncoder, type DexSpecificPrice, type DexSpecificPriceArgs, } from "."; export type RebalanceAction = | { __kind: "NewPriceRange"; fields: readonly [DexSpecificPrice, DexSpecificPrice]; } | { __kind: "NewTickRange"; fields: readonly [number, number] } | { __kind: "WithdrawAndFreeze" }; export type RebalanceActionArgs = | { __kind: "NewPriceRange"; fields: readonly [DexSpecificPriceArgs, DexSpecificPriceArgs]; } | { __kind: "NewTickRange"; fields: readonly [number, number] } | { __kind: "WithdrawAndFreeze" }; export function getRebalanceActionEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ "NewPriceRange", getStructEncoder([ [ "fields", getTupleEncoder([ getDexSpecificPriceEncoder(), getDexSpecificPriceEncoder(), ]), ], ]), ], [ "NewTickRange", getStructEncoder([ ["fields", getTupleEncoder([getI32Encoder(), getI32Encoder()])], ]), ], ["WithdrawAndFreeze", getUnitEncoder()], ]); } export function getRebalanceActionDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ "NewPriceRange", getStructDecoder([ [ "fields", getTupleDecoder([ getDexSpecificPriceDecoder(), getDexSpecificPriceDecoder(), ]), ], ]), ], [ "NewTickRange", getStructDecoder([ ["fields", getTupleDecoder([getI32Decoder(), getI32Decoder()])], ]), ], ["WithdrawAndFreeze", getUnitDecoder()], ]); } export function getRebalanceActionCodec(): Codec< RebalanceActionArgs, RebalanceAction > { return combineCodec(getRebalanceActionEncoder(), getRebalanceActionDecoder()); } // Data Enum Helpers. export function rebalanceAction( kind: "NewPriceRange", data: GetDiscriminatedUnionVariantContent< RebalanceActionArgs, "__kind", "NewPriceRange" >["fields"], ): GetDiscriminatedUnionVariant; export function rebalanceAction( kind: "NewTickRange", data: GetDiscriminatedUnionVariantContent< RebalanceActionArgs, "__kind", "NewTickRange" >["fields"], ): GetDiscriminatedUnionVariant; export function rebalanceAction( kind: "WithdrawAndFreeze", ): GetDiscriminatedUnionVariant< RebalanceActionArgs, "__kind", "WithdrawAndFreeze" >; export function rebalanceAction( kind: K, data?: Data, ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isRebalanceAction( kind: K, value: RebalanceAction, ): value is RebalanceAction & { __kind: K } { return value.__kind === kind; }