export declare type JSOSParserElementType = 'NodeType' | 'StringType' | 'NumericType' | 'ListType' | 'BooleanType' | 'NullishType'; export declare type JSOSParserContext> = T & { raw: JSOSParserDefinition; breadcrumbs: string; resolvers: JSOSParserResolver[]; get(path: string): JSOSParserValueDefinition; }; export declare type JSOSParserDynamicDefinition = (context: JSOSParserContext) => JSOSParserValueDefinition; export declare type JSOSParserPrimitiveDefinition = string | number | null | undefined | boolean; export declare type JSOSParserValueDefinition = JSOSParserNode | Array | JSOSParserPrimitiveDefinition; export declare type JSOSParserDefinition = JSOSParserDynamicDefinition | JSOSParserValueDefinition; export interface JSOSParserNode { [key: string]: JSOSParserDefinition; [key: number]: JSOSParserDefinition; } export interface JSOSParserRootElement { type: 'NodeType'; path: ''; parent?: JSOSParserElement; value: JSOSParserElement[]; } export interface JSOSParserNodeElement { type: 'NodeType'; path: string; parent?: JSOSParserElement; value: JSOSParserElement[]; } export interface JSOSParserStringElement { type: 'StringType'; path: string; parent?: JSOSParserElement; value: string; } export interface JSOSParserNumericElement { type: 'NumericType'; path: string; parent?: JSOSParserElement; value: number; } export interface JSOSParserListElement { type: 'ListType'; path: string; parent?: JSOSParserElement; value: JSOSParserElement[]; } export interface JSOSParserBooleanElement { type: 'BooleanType'; path: string; parent?: JSOSParserElement; value: boolean; } export interface JSOSParserNullishElement { type: 'NullishType'; path: string; parent?: JSOSParserElement; value: null; } export declare type JSOSParentElement = JSOSParserNodeElement | JSOSParserListElement; export declare type JSOSPrimitiveElement = JSOSParserStringElement | JSOSParserNumericElement | JSOSParserNullishElement | JSOSParserBooleanElement; export declare type JSOSParserElement = JSOSParserNodeElement | JSOSParserStringElement | JSOSParserNumericElement | JSOSParserListElement | JSOSParserBooleanElement | JSOSParserNullishElement; export declare type JSOSParserDynamicType = 'DynamicType'; export interface JSOSParserResolver { type: JSOSParserElementType | JSOSParserDynamicType; check(definition: JSOSParserDefinition): boolean; resolve(definition: JSOSParserDefinition, context: JSOSParserContext): JSOSParserElement; } export interface JSOSParserOptions> { elements: JSOSParserElement[]; resolvers: JSOSParserResolver[]; makeContext?(context: JSOSParserContext): T; context: JSOSParserContext | (JSOSParserContext & T); } export declare type JSOSParser = >(definition: JSOSParserDefinition, options?: Partial>) => JSOSParserElement[];