import { Func0, Func1, Func2, Func3 } from '@cotto/utils.ts'; export declare const defer: (f: Func0) => Promise; export declare function toKebabCase(s: string): string; export declare function invokeCallback(..._args: any[]): void; export declare function proxy(filter: Func0): (...funcs: Func0[]) => Func0; export declare function proxy(filter: Func1): (...funcs: Func1[]) => Func1; export declare function proxy(filter: Func2): (...funcs: Func2[]) => Func2; export declare function proxy(filter: Func3): (...funcs: Func3[]) => Func3; export declare function cond(...pairs: [Function, Function][]): (a: any, b?: any, c?: any) => any; export declare namespace cond { interface Pred { (value: any, ...args: any[]): value is T; } interface Task { (value: T, ...args: any[]): void; } function when(pred: Pred, task: Task): [Pred, Task]; } export declare function attach(key: K, creator: (value: T, a?: any, b?: any) => T[K]): (this: any, value: T, ..._extra: any[]) => T; export interface Visitor { (node: T, parent: T | null, context?: C): R; } export interface Director extends Visitor { } export interface Walker { (node: T, parent: T | null, context?: C, director?: Director): T; } export interface Node { children: T[]; } export declare function createTreeWalker, C = any>(...visitor: Visitor[]): Walker; export declare function createQueue(scheduler?: (f: Function) => void, debounceTime?: number, maxDebounceSize?: number): { enqueue: (f: Function) => Function; process: (done?: any) => void; }; export declare function html(strings: TemplateStringsArray, ...values: any[]): string;