import type { FieldDescriptor } from '@ecsia/schema'; export interface TopicFieldCodec { readonly name: string; /** Words this field occupies in a row. */ readonly words: number; /** Word offset of this field within the row's payload section. */ readonly offset: number; readonly encode: (value: unknown, out: { [i: number]: number; }, at: number) => void; readonly decode: (words: ArrayLike, at: number) => unknown; } export interface TopicCodec { /** Total payload words per event row (sum of field words; 0 for a payload-less topic). */ readonly fieldWords: number; readonly fields: readonly TopicFieldCodec[]; /** Encode an init object into `out[at..at+fieldWords)`; missing fields take schema defaults. */ encode(init: Record | undefined, out: { [i: number]: number; }, at: number): void; } export declare function buildTopicCodec(fields: readonly FieldDescriptor[]): TopicCodec; //# sourceMappingURL=codec.d.ts.map