/** * 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, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from '@solana/kit'; import { getRefundPolicyDecoder, getRefundPolicyEncoder, getSettlementPolicyDecoder, getSettlementPolicyEncoder, type RefundPolicy, type RefundPolicyArgs, type SettlementPolicy, type SettlementPolicyArgs, } from '.'; export type PolicyData = | { __kind: 'Refund'; fields: readonly [RefundPolicy] } | { __kind: 'Settlement'; fields: readonly [SettlementPolicy] }; export type PolicyDataArgs = | { __kind: 'Refund'; fields: readonly [RefundPolicyArgs] } | { __kind: 'Settlement'; fields: readonly [SettlementPolicyArgs] }; export function getPolicyDataEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ 'Refund', getStructEncoder([ ['fields', getTupleEncoder([getRefundPolicyEncoder()])], ]), ], [ 'Settlement', getStructEncoder([ ['fields', getTupleEncoder([getSettlementPolicyEncoder()])], ]), ], ]); } export function getPolicyDataDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ 'Refund', getStructDecoder([ ['fields', getTupleDecoder([getRefundPolicyDecoder()])], ]), ], [ 'Settlement', getStructDecoder([ ['fields', getTupleDecoder([getSettlementPolicyDecoder()])], ]), ], ]); } export function getPolicyDataCodec(): Codec { return combineCodec(getPolicyDataEncoder(), getPolicyDataDecoder()); } // Data Enum Helpers. export function policyData( kind: 'Refund', data: GetDiscriminatedUnionVariantContent< PolicyDataArgs, '__kind', 'Refund' >['fields'] ): GetDiscriminatedUnionVariant; export function policyData( kind: 'Settlement', data: GetDiscriminatedUnionVariantContent< PolicyDataArgs, '__kind', 'Settlement' >['fields'] ): GetDiscriminatedUnionVariant; export function policyData( kind: K, data?: Data ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isPolicyData( kind: K, value: PolicyData ): value is PolicyData & { __kind: K } { return value.__kind === kind; }