import { Get } from './Get'; import { Optional } from './Types'; export type Constructor = { new (...args: any[]): T; }; export type Construct = Get | Constructor; export declare const isConstructor: (c?: unknown) => c is Constructor; export declare const isInstance: (ctor: Constructor, o?: unknown) => o is T; export declare const ofConstruct: (c: Construct, ...args: unknown[]) => T; export declare const toName: (subject?: unknown, postfix?: string) => string; export declare const on: (t: T, f: (t: T) => R) => R extends Promise ? Promise : T; export declare const use: (t: T, f: (t: T) => Out) => Out; export declare const ifA: (c: Constructor, t?: unknown, alt?: unknown) => Optional; export type RequireAtLeastOne = Pick> & { [K in Keys]-?: Required> & Partial>>; }[Keys];