/// import { PosBuffer, ReaderState, FieldOptions, DataTypeCtor, Mode, Spec } from '..'; import { TypeOptions } from '../pos_buffer/pos_buffer'; export declare type Predicate = (r: any) => boolean; export declare type ValueProvider = (r: any) => Primitive; export declare type Primitive = number | string | boolean | Buffer; export interface Instruction { execute(buffer: PosBuffer, readerState: ReaderState): T | undefined; write(buffer: PosBuffer, readerState: ReaderState): void; } export declare abstract class ValueProducer implements Instruction> { options: FieldOptions | undefined; constructor(options: FieldOptions | undefined); abstract execute(buffer: PosBuffer, readerState: ReaderState): Primitive | Array | undefined; abstract write(buffer: PosBuffer, readerState: ReaderState): void; } export declare abstract class NamedValueProducer extends ValueProducer { protected _name: string; options: FieldOptions | undefined; constructor(_name: string, options: FieldOptions | undefined); abstract execute(buffer: PosBuffer, readerState: ReaderState): Primitive | Array | undefined; write(buffer: PosBuffer, readerState: ReaderState): void; protected resolveOptions(readerState: ReaderState): TypeOptions | undefined; private resolveOption; get name(): string; } export declare class Value extends NamedValueProducer { private Type; private _shouldBe; constructor(_name: string, Type: DataTypeCtor, options: FieldOptions | undefined); execute(buffer: PosBuffer, readerState: ReaderState): Primitive | undefined; write(buffer: PosBuffer, readerState: ReaderState): void; check(value: any): void; } export declare class Calculation extends NamedValueProducer { private callback; constructor(_name: string, callback: ValueProvider); execute(buffer: PosBuffer, readerState: ReaderState): Primitive; } export declare class Literal extends NamedValueProducer { private value; constructor(name: string, options?: FieldOptions); execute(buffer: PosBuffer, readerState: ReaderState): Primitive; } export declare class IfInstruction extends ValueProducer { private predicate; private otherSpec; constructor(predicate: Predicate, otherSpec: Spec); execute(buffer: PosBuffer, readerState: ReaderState): any; write(buffer: PosBuffer, readerState: ReaderState): void; } export declare class LookupInstruction extends ValueProducer { private valueProvider; private valueMap; constructor(valueProvider: ValueProvider, valueMap: { [k: string]: Spec; }); execute(buffer: PosBuffer, readerState: ReaderState): any; write(buffer: PosBuffer, readerState: ReaderState): void; } export declare class LoopInstruction extends NamedValueProducer { private repeat; private loopSpec; constructor(_name: string, repeat: number | ((r: any) => number) | null, loopSpec: Spec); execute(buffer: PosBuffer, readerState: ReaderState): Array; write(buffer: PosBuffer, readerState: ReaderState): void; get name(): string; } export declare class IncludeInstruction extends ValueProducer { private includedSpec; constructor(includedSpec: Spec); execute(buffer: PosBuffer, readerState: ReaderState): any; write(buffer: PosBuffer, readerState: ReaderState): void; } export declare class GroupInstruction extends NamedValueProducer { private includedSpec; constructor(_name: string, includedSpec: Spec); execute(buffer: PosBuffer, readerState: ReaderState): any; write(buffer: PosBuffer, readerState: ReaderState): void; } declare abstract class NullInstruction implements Instruction { abstract execute(buffer: PosBuffer, readerState: ReaderState): void; write(buffer: PosBuffer, readerState: ReaderState): void; } export declare class SkipInstruction extends NullInstruction { private bytes; constructor(bytes: number); execute(buffer: PosBuffer, reader: ReaderState): void; } export declare class EndiannessInstruction extends NullInstruction { mode: Mode; constructor(mode: Mode); execute(buffer: PosBuffer, readerState: ReaderState): void; } export declare class PadInstruction extends NullInstruction { execute(buffer: PosBuffer, readerState: ReaderState): void; } export declare class TapInstruction extends NullInstruction { private callback; constructor(callback: (buffer: PosBuffer, readerState: ReaderState) => void); execute(buffer: PosBuffer, readerState: ReaderState): void; } export {};