interface BinaryWriterStatic { new(): BinaryWriter; } interface BinaryWriter { writeString(): void; writeUint64(): void; } interface BinaryReaderStatic { new(bytes: Uint8Array): BinaryReader; } interface BinaryReader { readString(): string; readUint64(): number; isEndGroup(): boolean; nextField(): void; getFieldNumber(): number; skipField(): void; } // methods contained in a general message object interface MessageTypeStatic { deserializeBinary(bytes: Uint8Array): MessageType; deserializeBinaryFromReader(msg: MessageType, reader: BinaryReader): MessageType; serializeBinary(): Uint8Array; serializeBinaryToWriter(writer: BinaryWriter): Uint8Array; new(opt?: Array): MessageType; } interface MessageType { cloneMessage(): this; toObject(includeInstance: boolean, msg: this): Object; }