import { Maker } from './make'; import * as runtime from './runtime'; export type Type = BinaryType | UnknownType | VoidType | BooleanType | IntegerType | NumberType | NullType | UnionType | IntersectionType | StringType | ArrayType | ObjectType | NamedType; export type NamedTypeDefinitionDeferred = () => NamedTypeDefinition; export interface NamedTypeDefinition { readonly name: string; readonly definition: Type; readonly maker: Maker; readonly isA: null | ((value: any) => value is A); } export interface BinaryType { readonly type: 'binary'; } export interface UnknownType { readonly type: 'unknown'; } export interface VoidType { readonly type: 'void'; } export interface NullType { readonly type: 'null'; } export interface UnionType { readonly type: 'union'; readonly options: Type[]; } export interface IntersectionType { readonly type: 'intersection'; readonly options: Type[]; } export interface StringType { readonly type: 'string'; readonly format?: string; readonly pattern?: string; readonly minLength?: number; readonly maxLength?: number; readonly enum?: string[]; } export interface BooleanType { readonly type: 'boolean'; readonly enum?: boolean[]; } export interface NumberType { readonly type: 'number'; readonly enum?: number[]; readonly minimum?: number; readonly maximum?: number; } export interface IntegerType { readonly type: 'integer'; readonly enum?: number[]; readonly minimum?: number; readonly maximum?: number; } export interface ArrayType { readonly type: 'array'; readonly items: Type; readonly minItems?: number; readonly maxItems?: number; } export interface NamedType { readonly type: 'named'; readonly reference: NamedTypeDefinitionDeferred; } export interface PropType { required: boolean; value: Type; networkName?: string; } export interface Props { [name: string]: PropType; } export type AdditionalProp = boolean | Type; export interface ObjectType { readonly type: 'object'; readonly additionalProperties: AdditionalProp; readonly properties: Props; } export declare class Traversal { private readonly root; private readonly leaf; static compile(root: NamedTypeDefinition, leaf: NamedTypeDefinition): runtime.reflection.Traversal; private cache; private cachedAncestors; private constructor(); private dedupePaths; map(value: Root, fn: (leaf: Leaf) => Leaf): Root; pmap(value: Root, fn: (leaf: Leaf) => Promise): Promise; private paths; private matcher; private validateRoot; private addAncestor; private ancestorNamedObjects; }