/** * 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 { getIntermediateDataDecoder, getIntermediateDataEncoder, getStructureStateDecoder, getStructureStateEncoder, type IntermediateData, type IntermediateDataArgs, type StructureState, type StructureStateArgs, } from '.'; export type StructureInstanceState = | { __kind: 'Active' } | { __kind: 'Design'; fields: readonly [IntermediateData] } | { __kind: 'Deactivated'; fields: readonly [StructureState] }; export type StructureInstanceStateArgs = | { __kind: 'Active' } | { __kind: 'Design'; fields: readonly [IntermediateDataArgs] } | { __kind: 'Deactivated'; fields: readonly [StructureStateArgs] }; export function getStructureInstanceStateEncoder(): Encoder { return getDiscriminatedUnionEncoder([ ['Active', getUnitEncoder()], [ 'Design', getStructEncoder([ ['fields', getTupleEncoder([getIntermediateDataEncoder()])], ]), ], [ 'Deactivated', getStructEncoder([ ['fields', getTupleEncoder([getStructureStateEncoder()])], ]), ], ]); } export function getStructureInstanceStateDecoder(): Decoder { return getDiscriminatedUnionDecoder([ ['Active', getUnitDecoder()], [ 'Design', getStructDecoder([ ['fields', getTupleDecoder([getIntermediateDataDecoder()])], ]), ], [ 'Deactivated', getStructDecoder([ ['fields', getTupleDecoder([getStructureStateDecoder()])], ]), ], ]); } export function getStructureInstanceStateCodec(): Codec< StructureInstanceStateArgs, StructureInstanceState > { return combineCodec( getStructureInstanceStateEncoder(), getStructureInstanceStateDecoder(), ); } // Data Enum Helpers. export function structureInstanceState( kind: 'Active', ): GetDiscriminatedUnionVariant; export function structureInstanceState( kind: 'Design', data: GetDiscriminatedUnionVariantContent< StructureInstanceStateArgs, '__kind', 'Design' >['fields'], ): GetDiscriminatedUnionVariant; export function structureInstanceState( kind: 'Deactivated', data: GetDiscriminatedUnionVariantContent< StructureInstanceStateArgs, '__kind', 'Deactivated' >['fields'], ): GetDiscriminatedUnionVariant< StructureInstanceStateArgs, '__kind', 'Deactivated' >; export function structureInstanceState< K extends StructureInstanceStateArgs['__kind'], Data, >(kind: K, data?: Data) { return Array.isArray(data) ? { __kind: kind, fields: data } : { __kind: kind, ...(data ?? {}) }; } export function isStructureInstanceState< K extends StructureInstanceState['__kind'], >( kind: K, value: StructureInstanceState, ): value is StructureInstanceState & { __kind: K } { return value.__kind === kind; }