export declare type OptimisticWrapperFunction<T = (...args: any[]) => any> = T & {
    dirty: T;
};
export declare type OptimisticWrapOptions = {
    max?: number;
    disposable?: boolean;
    makeCacheKey?(...args: any[]): any;
};
declare const wrap: <T>(originalFunction: T, options?: OptimisticWrapOptions) => OptimisticWrapperFunction<T>;
export { wrap };
export declare class CacheKeyNode<KeyType = object> {
    private children;
    private key;
    lookup(...args: any[]): KeyType;
    lookupArray(array: any[]): KeyType;
    getOrCreate(value: any): CacheKeyNode<KeyType>;
}
//# sourceMappingURL=optimism.d.ts.map