// Type definitions for binary-parser 1.3 // Project: https://github.com/keichi/binary-parser // Definitions by: Benjamin Riggs , // Dolan Miu , // Yu Shimura // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped // TypeScript Version: 2.8 /// export interface Parser { parse(buffer: Buffer, callback?: (err?: Error, result?: any) => void): Parser.Parsed; create(constructorFunction: ObjectConstructor): Parser; int8(name: N, options?: Parser.Options): Parser.Next; uint8(name: N, options?: Parser.Options): Parser.Next; int16(name: N, options?: Parser.Options): Parser.Next; uint16(name: N, options?: Parser.Options): Parser.Next; int16le(name: N, options?: Parser.Options): Parser.Next; int16be(name: N, options?: Parser.Options): Parser.Next; uint16le(name: N, options?: Parser.Options): Parser.Next; uint16be(name: N, options?: Parser.Options): Parser.Next; int32(name: N, options?: Parser.Options): Parser.Next; uint32(name: N, options?: Parser.Options): Parser.Next; int32le(name: N, options?: Parser.Options): Parser.Next; int32be(name: N, options?: Parser.Options): Parser.Next; uint32le(name: N, options?: Parser.Options): Parser.Next; uint32be(name: N, options?: Parser.Options): Parser.Next; bit1(name: N, options?: Parser.Options): Parser.Next; bit2(name: N, options?: Parser.Options): Parser.Next; bit3(name: N, options?: Parser.Options): Parser.Next; bit4(name: N, options?: Parser.Options): Parser.Next; bit5(name: N, options?: Parser.Options): Parser.Next; bit6(name: N, options?: Parser.Options): Parser.Next; bit7(name: N, options?: Parser.Options): Parser.Next; bit8(name: N, options?: Parser.Options): Parser.Next; bit9(name: N, options?: Parser.Options): Parser.Next; bit10(name: N, options?: Parser.Options): Parser.Next; bit11(name: N, options?: Parser.Options): Parser.Next; bit12(name: N, options?: Parser.Options): Parser.Next; bit13(name: N, options?: Parser.Options): Parser.Next; bit14(name: N, options?: Parser.Options): Parser.Next; bit15(name: N, options?: Parser.Options): Parser.Next; bit16(name: N, options?: Parser.Options): Parser.Next; bit17(name: N, options?: Parser.Options): Parser.Next; bit18(name: N, options?: Parser.Options): Parser.Next; bit19(name: N, options?: Parser.Options): Parser.Next; bit20(name: N, options?: Parser.Options): Parser.Next; bit21(name: N, options?: Parser.Options): Parser.Next; bit22(name: N, options?: Parser.Options): Parser.Next; bit23(name: N, options?: Parser.Options): Parser.Next; bit24(name: N, options?: Parser.Options): Parser.Next; bit25(name: N, options?: Parser.Options): Parser.Next; bit26(name: N, options?: Parser.Options): Parser.Next; bit27(name: N, options?: Parser.Options): Parser.Next; bit28(name: N, options?: Parser.Options): Parser.Next; bit29(name: N, options?: Parser.Options): Parser.Next; bit30(name: N, options?: Parser.Options): Parser.Next; bit31(name: N, options?: Parser.Options): Parser.Next; bit32(name: N, options?: Parser.Options): Parser.Next; float(name: N, options?: Parser.Options): Parser.Next; floatle(name: N, options?: Parser.Options): Parser.Next; floatbe(name: N, options?: Parser.Options): Parser.Next; double(name: N, options?: Parser.Options): Parser.Next; doublele(name: N, options?: Parser.Options): Parser.Next; doublebe(name: N, options?: Parser.Options): Parser.Next; string(name: N, options?: Parser.StringOptions): Parser.Next; buffer(name: N, options: Parser.BufferOptions): Parser.Next; array(name: N, options: Q): Parser.Next ? O extends undefined ? Array<{}> : O[] : T extends string ? number[] : never : never >; choice(name: N, options: Q): Parser.Next ? O extends undefined ? {} : O : T extends string ? any : never : never : never >; nest(name: N, options: Q): Parser.Next ? O extends undefined ? {} : O : never : never >; skip(length: number): Parser; endianess(endianess: Parser.Endianness): Parser; /* [sic] */ namely(alias: string): Parser; compile(): void; getCode(): string; } export interface ParserConstructor { new(): Parser; } export const Parser: ParserConstructor; export namespace Parser { type Data = number | string | Array> | Parser | Buffer; type Parsed = O extends undefined ? {} : O; interface Options { formatter?: ((value: Data) => any); assert?: string | number | ((value: Data) => boolean); } interface StringOptions extends Options { encoding?: string; length?: number | string | ((this: Parser) => number); zeroTerminated?: boolean; greedy?: boolean; stripNull?: boolean; } interface BufferOptions extends Options { clone?: boolean; length?: number | string | ((this: Parser) => number); readUntil?: string | ((item: number, buffer: Buffer) => boolean); } interface ArrayOptions extends Options { type: string | Parser; length?: number | string | ((this: Parser) => number); lengthInBytes?: number | string | ((this: Parser) => number); readUntil?: string | ((item: number, buffer: Buffer) => boolean); } interface ChoiceOptions extends Options { tag: string | ((this: Parser) => number); choices: { [item: number]: Parser | string }; defaultChoice?: Parser | string; } interface NestOptions extends Options { type: Parser; } type Endianness = 'little' | 'big'; type Valid = O extends undefined ? P : O & P; type Next = Parser>; }