export interface IUnloadable {
    id?: number;
    keepAliveTime?: number;
    lastUsedTime: number;
    canUnload: boolean;
    unload(): void;
    apply?(...args: any[]): void;
}
export interface IManagerOptions {
    name?: string;
    keepAliveTime?: number;
    exectionPeriod?: number;
    maxUnloadTasks?: number;
    priority?: number;
}
export declare class UnloadService {
    static tick: number;
    private static managers;
    static createManager<T extends IUnloadable>(options?: IManagerOptions): UnloadManager<T>;
    static executeAll(): void;
    static clearAll(): void;
}
export declare class UnloadManager<T extends IUnloadable> {
    static MIN_QUANT: number;
    _tasks: Set<T>;
    name: string;
    priority: number;
    keepAliveTime: number;
    exectuionTimeout: number;
    unloadTaskShift: number;
    maxUnloadTask: number;
    constructor(options?: IManagerOptions);
    private _lastExecutionTime;
    private _lastCorrectedTime;
    get correctedTime(): number;
    addTask(task: T): boolean;
    removeTask(task: T): boolean;
    execute(force?: boolean): number;
    clear(): void;
}
//# sourceMappingURL=UnloadManager.d.ts.map