import type { Constructor, Intersection, Literal, OptionalTypeGuard, Tuple, TypeGuard, Union } from 'r-assign/lib'; type RemapObject = T extends any[] | Function ? T : { [K in keyof T]: T[K] }; type ShapeEntries = [string, TypeGuard][]; type StringifiedTemplateLiteral = (TypeGuard | string)[]; type ReducibleTemplateLiteral = (TypeGuard | S)[]; type BaseTypeGuardMeta = { annotation: string; description: string; }; type AnyTypeGuardMeta = BaseTypeGuardMeta & { classification: 'any'; }; type ArrayTypeGuardMeta = BaseTypeGuardMeta & { child: TypeGuardMeta; classification: 'array'; same: boolean; type: TypeGuard; }; type FunctionTypeGuardMeta = BaseTypeGuardMeta & { children: [TypeGuardMeta, TypeGuardMeta]; classification: 'function'; types: [TypeGuard, TypeGuard | undefined]; }; type InstanceTypeGuardMeta = BaseTypeGuardMeta & { builder: Constructor; classification: 'instance'; }; type IntersectionTypeGuardMeta = BaseTypeGuardMeta & { children: TypeGuardMeta[]; classification: 'intersection'; types: Intersection; }; type LiteralTypeGuardMeta = BaseTypeGuardMeta & { classification: 'literal'; literal: Literal; }; type LiteralsTypeGuardMeta = BaseTypeGuardMeta & { classification: 'literals'; literals: Literal[]; }; type NeverTypeGuardMeta = BaseTypeGuardMeta & { classification: 'never'; }; type ObjectTypeGuardMeta = BaseTypeGuardMeta & { classification: 'object'; keys: string[]; mapping?: TypeGuard> | undefined; optional: ShapeEntries; required: ShapeEntries; same: boolean; strict: boolean; }; type OptionalTypeGuardMeta = BaseTypeGuardMeta & { classification: 'optional'; main: OptionalTypeGuard; type: TypeGuard; undef: boolean; }; type PrimitiveTypeGuardMeta = BaseTypeGuardMeta & { classification: 'primitive'; } & ( | { primitive: 'bigint' | 'boolean' | 'string' | 'symbol' } | { primitive: 'number'; finite: boolean } ); type PromiseTypeGuardMeta = BaseTypeGuardMeta & { child: TypeGuardMeta; classification: 'promise'; type: TypeGuard | undefined; }; type RecordTypeGuardMeta = BaseTypeGuardMeta & { classification: 'record'; keys: TypeGuard; same: boolean; values: TypeGuard; }; type RestTypeGuardMeta = BaseTypeGuardMeta & { classification: 'rest'; type: TypeGuard; }; type TemplateLiteralTypeGuardMeta = BaseTypeGuardMeta & { classification: 'template-literal'; regexp: RegExp; template: StringifiedTemplateLiteral; }; type TupleTypeGuardMeta = BaseTypeGuardMeta & { classification: 'tuple'; indexes: { optional: number; required: number; rest: number; }; same: boolean; tuple: Tuple; }; type UnionTypeGuardMeta = BaseTypeGuardMeta & { children: TypeGuardMeta[]; classification: 'union'; union: Union; }; type VoidTypeGuardMeta = BaseTypeGuardMeta & { classification: 'void'; }; type TypeGuardMeta = | AnyTypeGuardMeta | ArrayTypeGuardMeta | FunctionTypeGuardMeta | InstanceTypeGuardMeta | IntersectionTypeGuardMeta | LiteralTypeGuardMeta | LiteralsTypeGuardMeta | NeverTypeGuardMeta | ObjectTypeGuardMeta | OptionalTypeGuardMeta | PrimitiveTypeGuardMeta | PromiseTypeGuardMeta | RecordTypeGuardMeta | RestTypeGuardMeta | TemplateLiteralTypeGuardMeta | TupleTypeGuardMeta | UnionTypeGuardMeta | VoidTypeGuardMeta; type TypeClassification = TypeGuardMeta['classification']; export type { ArrayTypeGuardMeta, ArrayTypeGuardMeta as ATGM, FunctionTypeGuardMeta, FunctionTypeGuardMeta as FTGM, LiteralTypeGuardMeta, LiteralTypeGuardMeta as LTGM, LiteralsTypeGuardMeta, LiteralsTypeGuardMeta as LsTGM, NeverTypeGuardMeta, NeverTypeGuardMeta as NTGM, ObjectTypeGuardMeta, ObjectTypeGuardMeta as OTTGM, OptionalTypeGuardMeta, OptionalTypeGuardMeta as OLTGM, PrimitiveTypeGuardMeta, PrimitiveTypeGuardMeta as PTGM, RecordTypeGuardMeta, RecordTypeGuardMeta as RDTGM, ReducibleTemplateLiteral, ReducibleTemplateLiteral as RTL, RemapObject, RemapObject as RO, RestTypeGuardMeta, RestTypeGuardMeta as RTTGM, ShapeEntries, ShapeEntries as SE, StringifiedTemplateLiteral, StringifiedTemplateLiteral as STL, TemplateLiteralTypeGuardMeta, TemplateLiteralTypeGuardMeta as TLTGM, TupleTypeGuardMeta, TupleTypeGuardMeta as TTGM, TypeGuardMeta, TypeGuardMeta as TGM, TypeClassification, TypeClassification as TC, UnionTypeGuardMeta, UnionTypeGuardMeta as UTGM };