import * as ByteBuffer from "bytebuffer"; import ISerializer, { SerializerInput, SerializerOutput } from "../ISerializer"; export type SerializersMap = { [key: string]: ISerializer }; type ExtraSerializer = { keyIndexInStructure: number, serializersData: [string, ISerializer][], } export type ExtraSerializersData = ExtraSerializer[]; type ExtraSerializerKey = ExtraSerializer['serializersData'][number][0]; type TInput = { [key in keyof T]: SerializerInput & { [key in ExtraSerializerKey]: SerializerInput } }; type TOutput = { [key in keyof T]: SerializerOutput & { [key in ExtraSerializerKey]: SerializerInput } }; export default class StructWithVariantKeysSerializer extends ISerializer, TOutput> { readonly serializers: Readonly; readonly extraSerializers: Readonly; constructor(serializers: Readonly, extraSerializers: Readonly); toRaw(value: TInput): TOutput; appendToByteBuffer(value: TInput, bytebuffer: ByteBuffer): void; readFromBuffer(buffer: Buffer, offset?: number): { res: TOutput, newOffset: number }; }