/** * 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, getStructDecoder, getStructEncoder, getU16Decoder, getU16Encoder, type FixedSizeCodec, type FixedSizeDecoder, type FixedSizeEncoder, } from '@solana/kit'; /** * 9 aptitude magnitudes + 3 independent tag bitmasks. A crew can be major/anomalous * on several aptitudes at once — the **breadth** axis (master §5.1; reference-impl * `CrewStats`, record_rs:231-282). * * Byte-exact to `layout.CrewStatsPod` (record_rs:518-527): * 9 aptitude `u16` (18) + 3 mask `u16` (6) = 24 B. Index order of `apt[9]` matches the * `Aptitude` discriminants and `RosterSummary.sum_apt[9]`. */ export type CrewStats = { /** Per-aptitude magnitude, indexed by `Aptitude.as_idx`. */ apt: Array; /** Bit `i` set ⇒ aptitude `i` is tagged `Minor`. */ minorMask: number; /** Bit `i` set ⇒ aptitude `i` is tagged `Major`. */ majorMask: number; /** Bit `i` set ⇒ aptitude `i` is tagged `Anomalous`. */ anomalousMask: number; }; export type CrewStatsArgs = CrewStats; export function getCrewStatsEncoder(): FixedSizeEncoder { return getStructEncoder([ ['apt', getArrayEncoder(getU16Encoder(), { size: 9 })], ['minorMask', getU16Encoder()], ['majorMask', getU16Encoder()], ['anomalousMask', getU16Encoder()], ]); } export function getCrewStatsDecoder(): FixedSizeDecoder { return getStructDecoder([ ['apt', getArrayDecoder(getU16Decoder(), { size: 9 })], ['minorMask', getU16Decoder()], ['majorMask', getU16Decoder()], ['anomalousMask', getU16Decoder()], ]); } export function getCrewStatsCodec(): FixedSizeCodec { return combineCodec(getCrewStatsEncoder(), getCrewStatsDecoder()); }