import { A, B, C, F, I, L, M, N, O, S, T, U } from 'ts-toolbelt'; import { RuntimeError } from './RuntimeError'; export * from 'ts-toolbelt'; export { T, L, B, A, U, C, N, F, M, I, O, S }; export declare const tuple: (...args: T) => T; export declare type Serializable = null | undefined | Stringifiable | SerializableList; export interface Stringifiable { toString(): string; } export interface SerializableList extends Array { } export declare const tupleNum: (...args: T) => T; export declare const tupleEnum: (...values: T) => { readonly [K in T[number]]: K; } & (T[number] extends "list" ? { __list: T[number][]; } : { list: T[number][]; }) & (T[number] extends "enum" ? { __enum: T[number]; } : { enum: T[number]; }); export declare type IsAny = 0 extends 1 & T ? true : false; export declare type IsNever = [T] extends [never] ? true : false; export declare type IsNullable = Extract extends never ? false : true; export declare type IsOptional = Extract extends never ? false : true; export declare type IsUnknown = IsNever extends false ? T extends unknown ? unknown extends T ? IsAny extends false ? true : false : false : false : false; export declare type OnlyKnown = IsAny extends true ? never : IsNever extends true ? never : IsUnknown extends true ? never : T; export declare type MaybePromise = T | Promise; export declare type PromiseType

= P extends Promise ? T : never; export declare type MaybeArray = T | T[]; export declare type ArrayType = T extends Array ? N : T; export declare type AnyRecord = Record; export declare type IfExtends = Param extends Type ? IfTrue : IfFalse; export declare type ObjectUnion = { [K in keyof (A & B)]: (A & B)[K]; }; export declare type Entries = { [K in Extract]-?: [K, T[K]]; }[Extract][]; export declare type AnyFunction = (...args: any[]) => any; export declare type Writeable = { -readonly [P in keyof T]: T[P]; }; export declare type ForceString = T extends string ? T : never; export declare type NotString = string extends T ? never : T; export declare type NullableToPartial = UnionToIntersection<{ [K in keyof T as IsOptional extends true ? never : K]-?: T[K]; } | { [K in keyof T as IsOptional extends true ? K : never]?: T[K]; }>; declare type Join = { [K in keyof ({ [K in keyof L]: L[K]; } & { [K in keyof R]: R[K]; })]: ({ [K in keyof L]: L[K]; } & { [K in keyof R]: R[K]; })[K]; }; export declare type Merge = Omit extends infer P ? Join : never; export declare type ExtendListDeep = Extends extends [] ? Dest : Extends extends [infer Item, ...infer Rest] ? ExtendListDeep, Rest> : never; export declare type ExtendList = [ ...Dest, ...Extends ]; export declare type UnionToIntersection = (T extends any ? (x: T) => any : never) extends (x: infer R) => any ? { [K in keyof R]: R[K]; } : never; export declare type Simplify = { [KeyType in keyof T]: T[KeyType]; }; export declare type ArrayKeys = T extends any[] | ReadonlyArray ? T extends [any, ...infer Tail] ? ArrayKeys | Tail['length'] : never : never; export declare type DeepArrayKeys = { [K in keyof T]: `${Extract}.${ObjectDotNotations}`; }[number]; export declare type ObjectDotNotations = Level['length'] extends Limit ? never : Obj extends { [K: string]: any; } ? { [K in keyof Obj]: K extends string ? Obj[K] extends { [K: string]: any; } ? Obj[K] extends any[] ? K | `${K}.${ArrayKeys}` | `${K}.${DeepArrayKeys}` : K | `${K}.${ObjectDotNotations}` : K : never; }[keyof Obj] : never; export declare type TypeLike = [0]> = T extends { [K: string]: any; } ? { [K in keyof T]: T[K] extends { [K: string]: any; } ? Level['length'] extends 2 ? any : T[K] extends AnyFunction ? AnyFunction : TypeLike : any; } : any; export declare type IsKnown = IsAny extends true ? 0 : IsNever extends true ? 0 : IsUnknown extends true ? 0 : 1; export declare type BinKnown = { 0: False; 1: True; }[IsKnown]; export declare type BinAny = { 0: False; 1: True; }[IsAny extends true ? 0 : 1]; export declare const A_Z: ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "_"]; export declare type A_Z = typeof A_Z[number]; export declare type Name = `${A_Z}${string}`; export * from './IterationMap'; export declare class TypeAssertionError extends RuntimeError { constructor(message?: string, details?: any); } export declare type As = A.Cast; export declare type Cast = A.Cast;