/** * 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, getUnitDecoder, getUnitEncoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from "@solana/kit"; import { getFeeDecoder, getFeeEncoder, type Fee, type FeeArgs, } from "./index.ts"; /** * Wrapper type that "counts down" epochs, which is Borsh-compatible with the * native `Option` */ export type FutureEpoch = | { __kind: "None" } | { __kind: "One"; fields: readonly [Fee] } | { __kind: "Two"; fields: readonly [Fee] }; export type FutureEpochArgs = | { __kind: "None" } | { __kind: "One"; fields: readonly [FeeArgs] } | { __kind: "Two"; fields: readonly [FeeArgs] }; export function getFutureEpochEncoder(): Encoder { return getDiscriminatedUnionEncoder([ ["None", getUnitEncoder()], ["One", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]])], ["Two", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]])], ]); } export function getFutureEpochDecoder(): Decoder { return getDiscriminatedUnionDecoder([ ["None", getUnitDecoder()], ["One", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]])], ["Two", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]])], ]); } export function getFutureEpochCodec(): Codec { return combineCodec(getFutureEpochEncoder(), getFutureEpochDecoder()); } // Data Enum Helpers. export function futureEpoch( kind: "None", ): GetDiscriminatedUnionVariant; export function futureEpoch( kind: "One", data: GetDiscriminatedUnionVariantContent< FutureEpochArgs, "__kind", "One" >["fields"], ): GetDiscriminatedUnionVariant; export function futureEpoch( kind: "Two", data: GetDiscriminatedUnionVariantContent< FutureEpochArgs, "__kind", "Two" >["fields"], ): GetDiscriminatedUnionVariant; export function futureEpoch( kind: K, data?: Data, ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isFutureEpoch( kind: K, value: FutureEpoch, ): value is FutureEpoch & { __kind: K } { return value.__kind === kind; }