export type PromiseProvider = PromiseConstructorLike & {
    resolve: typeof Promise.resolve;
    reject: typeof Promise.reject;
    all(values: any[]): Promise<any[]>;
};
export type UnwrapPromise<P extends any> = P extends Promise<infer R> ? R : P;
export type UnwrapPromiseTuple<Tuple extends any[]> = {
    [K in keyof Tuple]: UnwrapPromise<Tuple[K]>;
};
export declare function isPromise(value: any): value is Promise<unknown>;
export declare function callDeferredFunctions<T>(name: string, fns: Array<() => void | Promise<void>> | null | undefined, result: T, source: Error, transactionError?: Error, throwError?: Error): T | Promise<T>;
export declare function callDeferredFunctionsStoppingOnError<T>(name: string, fns: Array<() => void | Promise<void>> | null | undefined, result: T, source: Error, transactionError?: Error, throwError?: Error): T | Promise<T>;
