import type { Field, FieldDeserializer } from "./field/index.js"; import type { StructDeserializer, StructLike, StructSerializer } from "./types.js"; export type StructField = Field | (StructSerializer & StructDeserializer); export type StructFields = Record; export type FieldsValue = { [K in keyof T]: T[K] extends FieldDeserializer ? U : never; }; export type FieldOmitInit = T extends Field ? string extends U ? never : U : never; export type FieldsOmitInits = { [K in keyof T]: FieldOmitInit; }[keyof T]; export type FieldsInit = Omit, FieldsOmitInits>; export declare class StructDeserializeError extends Error { constructor(message: string); } export declare class StructNotEnoughDataError extends StructDeserializeError { constructor(); } export declare class StructEmptyError extends StructDeserializeError { constructor(); } export type ExtraToIntersection | undefined> = Extra extends undefined ? unknown : Extra; export interface Struct | undefined = undefined, PostDeserialize = FieldsValue & Extra> extends StructSerializer>, StructDeserializer { littleEndian: boolean; fields: Fields; extra: Extra; } export declare function struct>, unknown> | StructLike>, Extra extends Record | undefined = undefined, PostDeserialize = FieldsValue & ExtraToIntersection>(fields: Fields, options: { littleEndian: boolean; extra?: (Extra & ThisType>) | undefined; postDeserialize?: ((this: FieldsValue & ExtraToIntersection, value: FieldsValue & ExtraToIntersection) => PostDeserialize) | undefined; }): Struct; //# sourceMappingURL=struct.d.ts.map