/**
 * @module Utilities
 */
import type { LazyPromise } from "../../async/utilities/_module.js";
import { type Invokable } from "../../utilities/functions/invokable.js";
import type { Promisable } from "../../utilities/types/promiseable.type.js";
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type Lazy<TValue> = Invokable<[], TValue>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type Lazyable<TValue> = TValue | Lazy<TValue>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type AsyncLazy_<TValue> = Invokable<[], Promisable<TValue>>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type AsyncLazy<TValue> = AsyncLazy_<TValue> | LazyPromise<TValue>;
/**
 *
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type AsyncLazyable<TValue> = TValue | AsyncLazy<TValue>;
/**
 * @internal
 */
export declare function isLazy<TValue>(lazyable: Lazyable<TValue>): lazyable is Lazy<TValue>;
/**
 * @internal
 */
export declare function isPromiseLike<TValue>(value: unknown): value is PromiseLike<TValue>;
/**
 * @internal
 */
export declare function isLazyPromise<TValue>(lazyable: AsyncLazyable<TValue>): lazyable is LazyPromise<TValue>;
/**
 * @internal
 */
export declare function isAsyncLazy<TValue>(lazyable: AsyncLazyable<TValue>): lazyable is AsyncLazy<TValue>;
/**
 * @internal
 */
export declare function resolveLazyable<TValue>(lazyable: Lazyable<TValue>): TValue;
/**
 * @internal
 */
export declare function resolveAsyncLazyable<TValue>(lazyable: AsyncLazyable<TValue>): Promise<TValue>;
