import type { Keys } from "./objects/keys"; export declare type Cast = A extends B ? A : B; export declare type Expand = T extends T ? { [P in keyof T]: T[P]; } : never; export declare type UnionToIntersection = (U extends U ? (x: U) => any : never) extends (x: infer I) => any ? I : never; export declare type Merge = { [K in Keys | Keys]: A[K & Keys] | B[K & Keys]; }; export declare type AssignableToType = { [K in Keys]-?: T[K] extends V ? K : never; }; export declare type KeysAssignableToType = AssignableToType[Keys]; export declare type OmitByType = Omit>; export declare type RequiredOnly = { [K in keyof T as T[K] extends Required[K] ? K : never]: T[K]; }; export declare type OptionalOnly = Omit>>; export declare type Constructor

, R> = new (...args: P) => R; export declare type AbstractConstructor

, R> = abstract new (...args: P) => R; export * as C from "./crypto"; export * as F from "./functions"; export * as M from "./math"; export * as O from "./objects"; export * as R from "./random";