import type { Task } from '../../../models';
import { AbstractMock } from './utils.mock';
/**
 * Extends Partial to make all own properties also Partial
 */
export type RecursivePartial<T> = {
    [P in keyof T]?: RecursivePartial<T[P]> | T[P];
};
/**
 * Generate a Task
 * @todo: move from faker to a three-shakable smaller lib
 */
export declare const generateTask: (_task?: RecursivePartial<Task>) => Task;
type TaskEntities = Record<string, Task>;
export declare class TaskMock extends AbstractMock<TaskEntities> {
    readonly key = "synology.mock.task";
    constructor(entities?: TaskEntities);
    get ids(): string[];
    get tasks(): Task[];
    get length(): number;
    add(task?: Task): TaskEntities;
    remove(id: Task['id']): boolean;
    resume(id: Task['id']): void;
    pause(id: Task['id']): void;
}
export declare const activateTaskDemo: (task: TaskMock, interval?: number) => NodeJS.Timer;
export declare const patchTasks: (_global?: Window & typeof globalThis) => TaskMock;
export {};
