/** * 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 { getFactionDecoder, getFactionEncoder, type Faction, type FactionArgs, } from '@staratlas/dev-profile-faction'; export type RiskZoneBorsh = | { __kind: 'LowRiskZone'; fields: readonly [Faction] } | { __kind: 'MediumRiskZone' } | { __kind: 'HighRiskZone' }; export type RiskZoneBorshArgs = | { __kind: 'LowRiskZone'; fields: readonly [FactionArgs] } | { __kind: 'MediumRiskZone' } | { __kind: 'HighRiskZone' }; export function getRiskZoneBorshEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ 'LowRiskZone', getStructEncoder([['fields', getTupleEncoder([getFactionEncoder()])]]), ], ['MediumRiskZone', getUnitEncoder()], ['HighRiskZone', getUnitEncoder()], ]); } export function getRiskZoneBorshDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ 'LowRiskZone', getStructDecoder([['fields', getTupleDecoder([getFactionDecoder()])]]), ], ['MediumRiskZone', getUnitDecoder()], ['HighRiskZone', getUnitDecoder()], ]); } export function getRiskZoneBorshCodec(): Codec< RiskZoneBorshArgs, RiskZoneBorsh > { return combineCodec(getRiskZoneBorshEncoder(), getRiskZoneBorshDecoder()); } // Data Enum Helpers. export function riskZoneBorsh( kind: 'LowRiskZone', data: GetDiscriminatedUnionVariantContent< RiskZoneBorshArgs, '__kind', 'LowRiskZone' >['fields'], ): GetDiscriminatedUnionVariant; export function riskZoneBorsh( kind: 'MediumRiskZone', ): GetDiscriminatedUnionVariant; export function riskZoneBorsh( kind: 'HighRiskZone', ): GetDiscriminatedUnionVariant; export function riskZoneBorsh( kind: K, data?: Data, ) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isRiskZoneBorsh( kind: K, value: RiskZoneBorsh, ): value is RiskZoneBorsh & { __kind: K } { return value.__kind === kind; }