import type { ListOption } from '../types';
export declare function call<R>(f: () => R): R;
export declare function notEmpty<T>(v: T | null | undefined, message: string): T;
export declare function requestTick<P>(cb: (...args: P[]) => void): (...args: P[]) => void;
export declare function delay(ms: number): Promise<unknown>;
export declare function timeout(cb: () => void, ms: number): () => void;
export declare function randomInt(min: number, max: number): number;
export declare function randomString(length: number): string;
export declare function makeEaseOut(timing: (t: number) => number): (timeFraction: number) => number;
export declare function makeEaseInOut(timing: (t: number) => number): (timeFraction: number) => number;
export declare function animate(options: {
    duration: number;
    draw: (p: number) => void;
    timing: (t: number) => number;
}): () => void;
export declare function animateInfinite(options: {
    getFraction: (dt: number) => number;
    draw: (p: number) => void;
    timing: (t: number) => number;
}): () => void;
type AnyFunction = (...args: any[]) => any;
export declare function debounce<F extends AnyFunction>(func: F, delay: number): (...args: Parameters<F>) => void;
export declare function throttle<F extends AnyFunction>(callback: F, ms: number, trailing?: boolean): (...args: Parameters<F>) => void;
export declare function listToOptions<T>(list: T[] | readonly T[]): ListOption<T>[];
export declare function normalizeListOptions<V = unknown>(options: Readonly<ListOption<V>[]>): {
    label: string;
    value: V;
    description: string | undefined;
}[];
export {};
