/// import { Primitive, Predicate, ValueProvider } from './instructions'; import { PosBuffer, DataTypeCtor, Encoding, Mode, NumericTypeCtor } from '../pos_buffer/pos_buffer'; export interface FieldOptions { terminator?: string | number; dp?: number; then?: (v: any) => Primitive; before?: (v: any) => Primitive; shouldBe?: Primitive; size?: number | ((v: any) => number); encoding?: Encoding; value?: Primitive; store?: boolean; mode?: Mode; } export declare type ReaderState = { result: any; storedVars: any; }; export declare class Spec { private options; private instructions; constructor(options?: ParsingOptions); field(name: string, Type: DataTypeCtor | Primitive, options?: FieldOptions): Spec; store(name: string, Type: DataTypeCtor | Primitive, options?: FieldOptions): Spec; derive(name: string, callback: (r: any) => number | string): Spec; skip(sizable: number | NumericTypeCtor): Spec; if(predicate: Predicate, otherSpec: Spec): Spec; switch(valueProvider: ValueProvider, valueMap: { [k: string]: Spec; }): this; pad(): Spec; endianness(mode: Mode): Spec; loop(name: string, repeat: number | ((r: any) => number) | null, loopSpec: Spec): this; include(includedSpec: Spec): this; group(name: string, includedSpec: Spec): this; tap(callback: (buffer: PosBuffer, state: ReaderState) => void): this; exec(data: Buffer | PosBuffer, initialState?: ReaderState): any; read(data: Buffer | PosBuffer, initialState?: ReaderState): any; write(data: any, initialBuffer?: PosBuffer): Buffer; } export interface ParsingOptions { mode?: Mode; lenient?: boolean; } export declare const PayloadSpec: typeof Spec;