/** * 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, getAddressDecoder, getAddressEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getU64Decoder, getU64Encoder, type Address, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from "@solana/kit"; import { getProofInfoDecoder, getProofInfoEncoder, getSeedsVecDecoder, getSeedsVecEncoder, type ProofInfo, type ProofInfoArgs, type SeedsVec, type SeedsVecArgs, } from "./index.ts"; /** A single typed value supplied in a `validate` payload. */ export type PayloadType = | { __kind: "Pubkey"; fields: readonly [Address] } | { __kind: "Seeds"; fields: readonly [SeedsVec] } | { __kind: "MerkleProof"; fields: readonly [ProofInfo] } | { __kind: "Number"; fields: readonly [bigint] }; export type PayloadTypeArgs = | { __kind: "Pubkey"; fields: readonly [Address] } | { __kind: "Seeds"; fields: readonly [SeedsVecArgs] } | { __kind: "MerkleProof"; fields: readonly [ProofInfoArgs] } | { __kind: "Number"; fields: readonly [number | bigint] }; export function getPayloadTypeEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ "Pubkey", getStructEncoder([["fields", getTupleEncoder([getAddressEncoder()])]]), ], [ "Seeds", getStructEncoder([["fields", getTupleEncoder([getSeedsVecEncoder()])]]), ], [ "MerkleProof", getStructEncoder([["fields", getTupleEncoder([getProofInfoEncoder()])]]), ], [ "Number", getStructEncoder([["fields", getTupleEncoder([getU64Encoder()])]]), ], ]); } export function getPayloadTypeDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ "Pubkey", getStructDecoder([["fields", getTupleDecoder([getAddressDecoder()])]]), ], [ "Seeds", getStructDecoder([["fields", getTupleDecoder([getSeedsVecDecoder()])]]), ], [ "MerkleProof", getStructDecoder([["fields", getTupleDecoder([getProofInfoDecoder()])]]), ], [ "Number", getStructDecoder([["fields", getTupleDecoder([getU64Decoder()])]]), ], ]); } export function getPayloadTypeCodec(): Codec { return combineCodec(getPayloadTypeEncoder(), getPayloadTypeDecoder()); } // Data Enum Helpers. export function payloadType( kind: "Pubkey", data: GetDiscriminatedUnionVariantContent< PayloadTypeArgs, "__kind", "Pubkey" >["fields"], ): GetDiscriminatedUnionVariant; export function payloadType( kind: "Seeds", data: GetDiscriminatedUnionVariantContent< PayloadTypeArgs, "__kind", "Seeds" >["fields"], ): GetDiscriminatedUnionVariant; export function payloadType( kind: "MerkleProof", data: GetDiscriminatedUnionVariantContent< PayloadTypeArgs, "__kind", "MerkleProof" >["fields"], ): GetDiscriminatedUnionVariant; export function payloadType( kind: "Number", data: GetDiscriminatedUnionVariantContent< PayloadTypeArgs, "__kind", "Number" >["fields"], ): GetDiscriminatedUnionVariant; export function payloadType( kind: K, data?: Data, ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isPayloadType( kind: K, value: PayloadType, ): value is PayloadType & { __kind: K } { return value.__kind === kind; }