import type { Constructor } from './function'; import type { Key, InferArrayType, Arr, TT$ } from './types'; export declare function chain(exp: () => T, defaultValue?: T): T; export declare function isErrorOf(e: any, errorCtor: Constructor): boolean; export declare function ensureArray(v: T): T extends Arr ? T : T[]; export declare function ensurePromise(v: T | Promise): Promise; export declare function ensureFunction(v: T): T extends (...args: any[]) => any ? T : never; declare type Filler = (i: number) => T; export declare const arrayN: (n: number, fill?: T | Filler) => T[]; export declare const filterByKey: , V extends T[K], K extends Key = "type">(array: A, value: V, key?: K) => T extends { [k in K]: V; } ? T[] : never; export declare const firstTruthy: (...array: T[]) => any; export declare const arrayFromIterable: (it: Iterable) => T[]; export interface PollOptions { duration: number; timeStep?: number; } export declare const poll: (handler: () => TT$<{ stop: boolean; error?: E; success?: S; }>, options: PollOptions) => Promise; export {};