/**
 * @module Utilities
 */
import { type NoneFunc } from "../../utilities/types/none-func.type.js";
import { type Promisable } from "../../utilities/types/promiseable.type.js";
/**
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type InvokableFn<TArgs extends Array<unknown> = Array<unknown>, TReturn = unknown> = (...args: TArgs) => TReturn;
/**
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type IInvokableObject<TArgs extends Array<unknown> = Array<unknown>, TReturn = unknown> = {
    invoke(...args: TArgs): TReturn;
};
/**
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type Invokable<TArgs extends Array<unknown> = Array<unknown>, TReturn = unknown> = InvokableFn<TArgs, TReturn> | IInvokableObject<TArgs, TReturn>;
/**
 * IMPORT_PATH: `"@daiso-tech/core/utilities"`
 */
export type IAsyncFactoryObject<TInput, TOutput> = IInvokableObject<[
    value: TInput
], Promisable<NoneFunc<TOutput>>>;
/**
 * @internal
 */
export declare function isInvokableObject<TValue, TParameters extends Array<unknown>, TReturn>(invokable: TValue | Invokable<TParameters, TReturn>): invokable is IInvokableObject<TParameters, TReturn>;
/**
 * @internal
 */
export declare function isInvokableFn<TValue, TParameters extends Array<unknown>, TReturn>(invokable: TValue | Invokable<TParameters, TReturn>): invokable is InvokableFn<TParameters, TReturn>;
/**
 * @internal
 */
export declare function isInvokable<TValue, TParameters extends Array<unknown>, TReturn>(invokable: TValue | Invokable<TParameters, TReturn>): invokable is Invokable<TParameters, TReturn>;
/**
 * @internal
 */
export declare function resolveInvokable<TParameters extends Array<unknown>, TReturn>(invokable: Invokable<TParameters, TReturn>): InvokableFn<TParameters, TReturn>;
/**
 * @internal
 */
export declare function callInvokable<TParameters extends Array<unknown>, TReturn>(invokable: Invokable<TParameters, TReturn>, ...args: TParameters): TReturn;
/**
 * @internal
 */
export declare function getInvokableName<TParameters extends Array<unknown>, TReturn>(invokable: Invokable<TParameters, TReturn>): string;
