import { DispositionalCachelike } from "./cache";
import { MultiPowerStorelike, FetchPolicy, ListenMessage } from "../operations";
export interface MultiCachelike extends DispositionalCachelike, MultiPowerStorelike {
pushCache(...cache: DispositionalCachelike[]): void;
popCache(): DispositionalCachelike | undefined;
getThrough(path: A): Promise;
setThrough(path: A, value: T): Promise;
}
export declare class MultiCache implements MultiCachelike {
private cacheOrder;
private monitors;
private safeKey;
/**
*
* @param cacheOrder
*/
constructor(cacheOrder?: DispositionalCachelike[]);
/**
*
* @param cache
*/
pushCache(...cache: DispositionalCachelike[]): void;
/**
*
* @returns
*/
popCache(): DispositionalCachelike | undefined;
/**
*
* @param path
* @param cb
* @returns
*/
dispositionalRaceGet(path: A, cb: ((data: T | undefined, msg: ListenMessage) => void | Promise)): Promise;
/**
*
* @param path
* @param cb
* @returns
*/
dispositionalFifoGet(path: A, cb: ((data: T | undefined, msg: ListenMessage) => void | Promise)): Promise;
/**
*
* @param path
* @param cb
* @returns
*/
eagerGet(path: A, cb: ((data: T | undefined, msg: ListenMessage) => void | Promise)): Promise;
/**
*
* @param path
* @param cb
* @param policy
*/
listen(path: A, cb: ((data: T | undefined, msg: ListenMessage) => void | Promise), policy?: FetchPolicy): void;
/**
*
* @param path
* @returns
*/
getThrough(path: A): Promise;
/**
*
* @param path
* @returns
*/
get(path: A): Promise;
/**
*
* @param path
* @param value
* @returns
*/
setThrough(path: A, value: T): Promise;
/**
*
* @param path
* @param value
* @returns
*/
set(path: A, value: T): Promise;
}