import type { MaybePromiseLike } from "@yume-chan/async"; import type { AsyncExactReadable, ExactReadable } from "../readable.js"; export interface FieldDefaultSerializeContext { littleEndian: boolean; } export interface FieldByobSerializeContext extends FieldDefaultSerializeContext { buffer: Uint8Array; index?: number; } export interface FieldSerializer { type: "default" | "byob"; size: number; serialize(source: T, context: FieldDefaultSerializeContext): Uint8Array; serialize(source: T, context: FieldByobSerializeContext): number; } export interface Field extends FieldSerializer, FieldDeserializer { omitInit: OmitInit | undefined; /** * A function to convert deserialized value back to raw value for serialization. */ init?(value: T, dependencies: D): Raw; } export interface FieldDeserializeContext { littleEndian: boolean; dependencies: D; } export interface FieldDeserializer { deserialize(reader: ExactReadable, context: FieldDeserializeContext): T; deserialize(reader: AsyncExactReadable, context: FieldDeserializeContext): MaybePromiseLike; } export interface FieldOptions { omitInit?: OmitInit; dependencies?: D; /** * A function to convert deserialized value back to raw value for serialization. */ init?: ((value: T, dependencies: D) => Raw) | undefined; } //# sourceMappingURL=types.d.ts.map