import { Getter } from "./Getter";
export declare function isPromiseLike<T>(result: PromiseLike<T> | T): result is PromiseLike<T>;
/**
 * PromisedComputedValue
 */
export interface PromisedComputedValue<T> extends Getter<T> {
    /** True if the promise is currently resolving */
    readonly busy: boolean;
    refresh(): void;
    getNonReactive(): T;
}
/**
 * Similar to the standard computed, except that it converts promises into
 * plain values, unwrapping them when they resolve and updating to the new
 * value. The supplied function may return a plain value in which case the
 * update is entirely synchronous like standard computed.
 *
 * As with the standard computed, exceptions (and rejected promises) are
 * propagated as re-thrown exceptions. To avoid this, perform your own
 * error handling in your supplied function.
 *
 * @param init Value to assume until the promise first resolves
 * @param compute Evaluates to a promised or plain value
 */
export declare function promisedComputed<T>(init: T, compute: () => PromiseLike<T> | T): PromisedComputedValue<T>;
export declare function promisedComputedInternal<T>(init: T, compute: () => PromiseLike<T> | T): PromisedComputedValue<T>;
