import { StorageCache } from '../storages/StorageCache.js';
import type { Clearable } from '../types/Clearable.js';
import { type CachePuller } from './CachableSource.js';
/**
 * An extension to the `ReadableStream` that queues items
 * only when a timed cache becomes invalid.
 *
 * @group Sources
 * @see {@link StorageCache}
 * @see {@link CachableSource:class}
 * @example
 * Caching for 30 minutes.
 *
 * ```
 * const cache = new StorageCache(
 *   localStorage,
 *   'my-cache',
 *   30 * 60_000
 * )
 *
 * let i = 0
 * const stream = new CachableStream<number>(
 *   cache,
 *   ['numbers'],
 *   () => ++i
 * )
 *
 * stream.pipeTo(write(console.info))
 * // 1
 *
 * await setTimeout(30 * 60_000))
 * // 2
 * ```
 * @example
 * Manually clearing cache.
 *
 * ```
 * const cache = new StorageCache(
 *   localStorage,
 *   'my-cache',
 *   30 * 60_000
 * )
 *
 * let i = 0
 * const stream = new CachableStream<number>(
 *   cache,
 *   ['numbers'],
 *   () => ++i
 * )
 *
 * stream.pipeTo(write(console.info))
 * // 1
 *
 * stream.clear()
 * // 2
 * ```
 */
export declare class CachableStream<T> extends ReadableStream<T> implements Clearable {
    #private;
    constructor(cache: StorageCache, path: string[], pullItem: CachePuller<T>, ms?: number);
    clear(): void;
    get sourceHasFinished(): boolean;
}
//# sourceMappingURL=CachableStream.d.ts.map