import { Awaitable } from '@rhao/types-base';
import { MaybeRefOrGetter } from 'vue';
import { LoadableRoute } from '../../utils';
import { AppSDKInternalInstance, Plugin, PluginID } from '../..';
export interface KeepAliveOptions {
    /**
     * 是否自动在路由前进时收集，后退时清理缓存，可用于模拟移动端缓存处理
     * @default true
     */
    autoCollectAndClean?: MaybeRefOrGetter<boolean>;
    /**
     * 添加路由缓存前执行，返回假值将阻止添加
     */
    beforeRouteAdd?: (route: LoadableRoute) => Awaitable<void | boolean>;
    /**
     * 删除路由缓存前执行，返回假值将阻止删除
     */
    beforeRouteRemove?: (route: LoadableRoute) => Awaitable<void | boolean>;
    /**
     * 缓存保鲜时间，设置大于 `0` 后将开启定时器清理过期缓存
     */
    staleTime?: number;
}
/**
 * KeepAlive Plugin ID
 */
export declare const KEEP_ALIVE_ID: PluginID<KeepAlive>;
/**
 * 页面缓存管理插件
 */
export declare class KeepAlive implements Plugin {
    /**
     * 配置项
     */
    options: KeepAliveOptions;
    constructor(
    /**
     * 配置项
     */
    options?: KeepAliveOptions);
    id: PluginID<KeepAlive>;
    /**
     * 缓存的组件名称列表
     */
    private _values;
    /**
     * 缓存的组件名称列表
     * @readonly
     */
    get values(): string[];
    /**
     * 是否自动模式
     */
    private _isAuto;
    /**
     * 是否自动模式
     * @readonly
     */
    get isAuto(): boolean;
    /**
     * 缓存保鲜定时器
     */
    private _staleTimer;
    /**
     * 缓存时间记录
     */
    private _timeRecord;
    /**
     * 更新缓存记录时间
     */
    private _updateTime;
    /**
     * 移除缓存时间记录
     */
    private _removeTime;
    /**
     * 启动缓存保鲜定时器
     */
    startStaleTimer: () => void;
    /**
     * 停止缓存保鲜定时器
     */
    stopStaleTimer: () => void;
    /**
     * 清理过期缓存，设置 `options.staleTime > 0` 后有效
     */
    clearExpired: () => void;
    /**
     * 切换自动模式
     * @param value 状态值
     */
    toggleAuto: (value?: boolean) => boolean;
    /**
     * 启用自动模式
     */
    enableAuto: () => boolean;
    /**
     * 禁用自动模式
     */
    disableAuto: () => boolean;
    /**
     * 添加路由缓存
     * @param name 需要缓存的路由组件名称
     */
    add(name: string): void;
    /**
     * 添加路由缓存
     * @param route 需要缓存的路由对象
     */
    add(route: LoadableRoute): Promise<void>;
    /**
     * 移除路由缓存
     * @param name 需要移除的路由组件名称
     */
    remove(name: string): void;
    /**
     * 移除路由缓存
     * @param route 需要移除的路由对象
     */
    remove(route: LoadableRoute): Promise<void>;
    /**
     * 刷新路由缓存
     * @param name 需要刷新的路由组件名称
     */
    refresh(name: string): void;
    /**
     * 刷新路由缓存
     * @param route 需要刷新的路由对象
     */
    refresh(route: LoadableRoute): Promise<void>;
    /**
     * 清空缓存列表
     */
    clear: () => void;
    /**
     * 设置缓存的名称列表，会覆盖旧列表
     * @param values 缓存名称列表
     */
    set: (values: string[]) => void;
    install: (sdk: AppSDKInternalInstance) => () => void;
}
