import type { ExtraToIntersection, FieldsValue, Struct, StructFields, } from "./struct.js"; import { struct } from "./struct.js"; /* #__NO_SIDE_EFFECTS__ */ export function extend< Base extends Struct< StructFields, Record | undefined, unknown >, Fields extends StructFields, PostDeserialize = FieldsValue & ExtraToIntersection, >( base: Base, fields: Fields, options?: { littleEndian?: boolean | undefined; postDeserialize?: ( this: FieldsValue & ExtraToIntersection, value: FieldsValue & ExtraToIntersection, ) => PostDeserialize; }, ): Struct { return struct(Object.assign({}, base.fields, fields), { littleEndian: options?.littleEndian ?? base.littleEndian, extra: base.extra as never, postDeserialize: options?.postDeserialize, }) as never; }