/** * 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, getArrayDecoder, getArrayEncoder, getDiscriminatedUnionDecoder, getDiscriminatedUnionEncoder, getStructDecoder, getStructEncoder, getTupleDecoder, getTupleEncoder, getU64Decoder, getU64Encoder, type Codec, type Decoder, type Encoder, type GetDiscriminatedUnionVariant, type GetDiscriminatedUnionVariantContent, } from '@solana/kit'; import { getBuildingTagDecoder, getBuildingTagEncoder, getCargoIdDecoder, getCargoIdEncoder, type BuildingTag, type BuildingTagArgs, type CargoId, type CargoIdArgs, } from '.'; export type CelestialBodyTypeBorsh = | { __kind: 'Planet'; fields: readonly [Array, Array]; } | { __kind: 'Asteroid'; fields: readonly [Array]; }; export type CelestialBodyTypeBorshArgs = | { __kind: 'Planet'; fields: readonly [ Array, Array, ]; } | { __kind: 'Asteroid'; fields: readonly [Array]; }; export function getCelestialBodyTypeBorshEncoder(): Encoder { return getDiscriminatedUnionEncoder([ [ 'Planet', getStructEncoder([ [ 'fields', getTupleEncoder([ getArrayEncoder( getTupleEncoder([getCargoIdEncoder(), getU64Encoder()]), ), getArrayEncoder(getBuildingTagEncoder()), ]), ], ]), ], [ 'Asteroid', getStructEncoder([ [ 'fields', getTupleEncoder([ getArrayEncoder( getTupleEncoder([getCargoIdEncoder(), getU64Encoder()]), ), ]), ], ]), ], ]); } export function getCelestialBodyTypeBorshDecoder(): Decoder { return getDiscriminatedUnionDecoder([ [ 'Planet', getStructDecoder([ [ 'fields', getTupleDecoder([ getArrayDecoder( getTupleDecoder([getCargoIdDecoder(), getU64Decoder()]), ), getArrayDecoder(getBuildingTagDecoder()), ]), ], ]), ], [ 'Asteroid', getStructDecoder([ [ 'fields', getTupleDecoder([ getArrayDecoder( getTupleDecoder([getCargoIdDecoder(), getU64Decoder()]), ), ]), ], ]), ], ]); } export function getCelestialBodyTypeBorshCodec(): Codec< CelestialBodyTypeBorshArgs, CelestialBodyTypeBorsh > { return combineCodec( getCelestialBodyTypeBorshEncoder(), getCelestialBodyTypeBorshDecoder(), ); } // Data Enum Helpers. export function celestialBodyTypeBorsh( kind: 'Planet', data: GetDiscriminatedUnionVariantContent< CelestialBodyTypeBorshArgs, '__kind', 'Planet' >['fields'], ): GetDiscriminatedUnionVariant; export function celestialBodyTypeBorsh( kind: 'Asteroid', data: GetDiscriminatedUnionVariantContent< CelestialBodyTypeBorshArgs, '__kind', 'Asteroid' >['fields'], ): GetDiscriminatedUnionVariant< CelestialBodyTypeBorshArgs, '__kind', 'Asteroid' >; export function celestialBodyTypeBorsh< K extends CelestialBodyTypeBorshArgs['__kind'], Data, >(kind: K, data?: Data) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isCelestialBodyTypeBorsh< K extends CelestialBodyTypeBorsh['__kind'], >( kind: K, value: CelestialBodyTypeBorsh, ): value is CelestialBodyTypeBorsh & { __kind: K } { return value.__kind === kind; }