/** * 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, getU8Decoder, getU8Encoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from "@solana/kit"; import { getFeeDecoder, getFeeEncoder, type Fee, type FeeArgs, } from "./index.ts"; /** The type of fees that can be set on the stake pool */ export type FeeType = | { __kind: "SolReferral"; fields: readonly [number] } | { __kind: "StakeReferral"; fields: readonly [number] } | { __kind: "Epoch"; fields: readonly [Fee] } | { __kind: "StakeWithdrawal"; fields: readonly [Fee] } | { __kind: "SolDeposit"; fields: readonly [Fee] } | { __kind: "StakeDeposit"; fields: readonly [Fee] } | { __kind: "SolWithdrawal"; fields: readonly [Fee] }; export type FeeTypeArgs = | { __kind: "SolReferral"; fields: readonly [number] } | { __kind: "StakeReferral"; fields: readonly [number] } | { __kind: "Epoch"; fields: readonly [FeeArgs] } | { __kind: "StakeWithdrawal"; fields: readonly [FeeArgs] } | { __kind: "SolDeposit"; fields: readonly [FeeArgs] } | { __kind: "StakeDeposit"; fields: readonly [FeeArgs] } | { __kind: "SolWithdrawal"; fields: readonly [FeeArgs] }; export function getFeeTypeEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ "SolReferral", getStructEncoder([["fields", getTupleEncoder([getU8Encoder()])]]), ], [ "StakeReferral", getStructEncoder([["fields", getTupleEncoder([getU8Encoder()])]]), ], [ "Epoch", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]]), ], [ "StakeWithdrawal", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]]), ], [ "SolDeposit", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]]), ], [ "StakeDeposit", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]]), ], [ "SolWithdrawal", getStructEncoder([["fields", getTupleEncoder([getFeeEncoder()])]]), ], ]); } export function getFeeTypeDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ "SolReferral", getStructDecoder([["fields", getTupleDecoder([getU8Decoder()])]]), ], [ "StakeReferral", getStructDecoder([["fields", getTupleDecoder([getU8Decoder()])]]), ], [ "Epoch", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]]), ], [ "StakeWithdrawal", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]]), ], [ "SolDeposit", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]]), ], [ "StakeDeposit", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]]), ], [ "SolWithdrawal", getStructDecoder([["fields", getTupleDecoder([getFeeDecoder()])]]), ], ]); } export function getFeeTypeCodec(): Codec { return combineCodec(getFeeTypeEncoder(), getFeeTypeDecoder()); } // Data Enum Helpers. export function feeType( kind: "SolReferral", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "SolReferral" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "StakeReferral", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "StakeReferral" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "Epoch", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "Epoch" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "StakeWithdrawal", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "StakeWithdrawal" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "SolDeposit", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "SolDeposit" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "StakeDeposit", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "StakeDeposit" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: "SolWithdrawal", data: GetDiscriminatedUnionVariantContent< FeeTypeArgs, "__kind", "SolWithdrawal" >["fields"], ): GetDiscriminatedUnionVariant; export function feeType( kind: K, data?: Data, ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isFeeType( kind: K, value: FeeType, ): value is FeeType & { __kind: K } { return value.__kind === kind; }