export interface DrySync {
    <T extends (...args: never) => unknown>(isDry: boolean, whenWet: T, dryDefault: ReturnType<T>): T;
    <T extends (...args: never) => unknown>(isDry: true, whenWet: T, dryDefault?: ReturnType<T>): T;
    <T extends (...args: never) => unknown>(isDry: false, whenWet: T): T;
}
/**
 * Conditionally dries up a function. When a function is dry it will
 * no longer be called, instead it will return true
 */
export declare const drySync: DrySync;
export interface DryAsync {
    <T extends (...args: never) => Promise<unknown>>(isDry: boolean, whenWet: T, dryDefault?: Awaited<ReturnType<T>>): T;
    <T extends (...args: never) => Promise<unknown>>(isDry: true, whenWet: T, dryDefault?: Awaited<ReturnType<T>>): () => Promise<true>;
    <T extends (...args: never) => Promise<unknown>>(isDry: false, whenWet: T): T;
}
export declare const dry: DryAsync;
//# sourceMappingURL=dry.function.d.ts.map