/// import { Readable } from 'stream'; import { JsonStreamOptions } from '../jsonStreamOptions'; import { NextStackElement, StackElementType } from './types'; export declare class StackElement { private options; protected isComplete: boolean; depth: number; protected value: any; constructor(value: any, options: JsonStreamOptions, depth: any); parseValue(value: any, _options?: JsonStreamOptions): any; static factory(value: any, options: JsonStreamOptions, depth?: number): StackElementType; spaceStart(char: string): string; spaceEnd(char: string): string; newSpacedElement(char: string, start?: boolean): StackElementType; newElement(value: any, depth?: number): StackElementType; completed(): void; nextState(next: any, elements?: any[], done?: boolean): NextStackElement; next(size: number): Promise | NextStackElement; debug(msg: string): void; } export declare class ObjectStackElement extends StackElement { protected _first: boolean; protected value: [any, any][]; constructor(value: Record, options: JsonStreamOptions, depth: number); get isEmpty(): boolean; parseValue(value: any, options: JsonStreamOptions): [string, unknown][]; shouldValueBeStringified(value: any): boolean; next(size: number): NextStackElement; } export declare class PromiseStackElement extends StackElement { next(size: number): Promise; } export declare class ArrayStackElement extends StackElement { atIndex: number; constructor(value: any, options: JsonStreamOptions, depth: number); next(size: number): NextStackElement; } export declare enum StreamStackElementState { FIRST = 0, WAITING = 1, READABLE = 2, ENDED = 3, ERROR = 4 } export declare class StreamStackElement extends StackElement { protected value: Readable; protected state: StreamStackElementState; protected rejections: Set<(reason: any) => void>; protected error: Error; constructor(value: Readable, options: JsonStreamOptions, depth: number); handleError(error: Error): void; endState(): NextStackElement; firstState(): any; initValidate(): void; untilReadable(): { cleanup: () => void; promise: Promise; }; untilEnd(): { cleanup: () => void; promise: Promise; }; nextWhenReadable(size: number): Promise | NextStackElement; nextWhenWaiting(size: number): Promise; next(size: number): Promise; end(): void; } export declare class ArrayStreamStackElement extends StreamStackElement { protected _secondStateSent: boolean; constructor(value: any, options: JsonStreamOptions, depth: number); endState(): NextStackElement; firstState(): NextStackElement; nextState(next: string, elements?: any[]): NextStackElement; } export declare class ArrayObjectStreamStackElement extends ArrayStreamStackElement { nextWhenReadable(size: number): Promise; } export declare class StringStreamStackElement extends StreamStackElement { constructor(value: Readable, options: JsonStreamOptions, depth: number); endState(): NextStackElement; firstState(): NextStackElement; nextWhenReadable(size: number): Promise; }