UNPKG

@solana/codecs-data-structures

Version:

Codecs for various data structures

51 lines 1.55 kB
/** * Defines the "lookup object" of an enum. * * @example * ```ts * enum Direction { Left, Right }; * ``` */ export type EnumLookupObject = { [key: string]: number | string; }; /** * Returns the allowed input for an enum. * * @example * ```ts * enum Direction { Left, Right }; * type DirectionInput = GetEnumFrom<Direction>; // "Left" | "Right" | 0 | 1 * ``` */ export type GetEnumFrom<TEnum extends EnumLookupObject> = TEnum[keyof TEnum] | keyof TEnum; /** * Returns all the available variants of an enum. * * @example * ```ts * enum Direction { Left, Right }; * type DirectionOutput = GetEnumTo<Direction>; // 0 | 1 * ``` */ export type GetEnumTo<TEnum extends EnumLookupObject> = TEnum[keyof TEnum]; export declare function getEnumStats(constructor: EnumLookupObject): { enumKeys: string[]; enumRecord: Record<string, string | number>; enumValues: (string | number)[]; numericalValues: number[]; stringValues: string[]; }; export declare function getEnumIndexFromVariant({ enumKeys, enumValues, variant, }: { enumKeys: string[]; enumValues: (number | string)[]; variant: number | string | symbol; }): number; export declare function getEnumIndexFromDiscriminator({ discriminator, enumKeys, enumValues, useValuesAsDiscriminators, }: { discriminator: number; enumKeys: string[]; enumValues: (number | string)[]; useValuesAsDiscriminators: boolean; }): number; export declare function formatNumericalValues(values: number[]): string; //# sourceMappingURL=enum-helpers.d.ts.map