///
import { AxiosRequestConfig, AxiosResponse } from 'axios';
import { CacheLayer } from '../../caches/CacheLayer';
import { MiddlewareContext, RequestConfig } from '../typings';
export declare const cacheKey: (config: AxiosRequestConfig) => string;
export declare function isLocallyCacheable(arg: RequestConfig, type: CacheType): arg is CacheableRequestConfig;
export declare enum CacheType {
None = 0,
Memory = 1,
Disk = 2,
Any = 3
}
export declare const enum CacheResult {
HIT = "HIT",
MISS = "MISS",
STALE = "STALE"
}
interface CacheOptions {
type: CacheType;
storage: CacheLayer;
asyncSet?: boolean;
}
export declare const cacheMiddleware: ({ type, storage, asyncSet }: CacheOptions) => (ctx: MiddlewareContext, next: () => Promise) => Promise;
export interface Cached {
etag: string;
expiration: number;
response: Partial;
responseType?: string;
responseEncoding?: BufferEncoding;
}
export type CacheableRequestConfig = RequestConfig & {
url: string;
cacheable: CacheType;
memoizable: boolean;
};
export {};