export interface ExpirableResult<R> {
    signal: AbortSignal;
    result: R;
}
/**
 * Caches the call to an async {@link Function}, which returns a result and a {@link AbortSignal}.
 *
 * When the signal is aborted, the result is cleared and new calls trigger the underlying function
 * again.
 */
export declare function buildAsyncExpirable<R>(fn: () => Promise<ExpirableResult<R>>): () => Promise<ExpirableResult<R>>;
export declare function buildExpirable<R>(fn: () => ExpirableResult<R>): () => ExpirableResult<R>;
