import { Container, ContainerConfig, ContainerEngine } from '../../ContainerEngine.js';
import { FileId } from '../../model/model.js';
import { FileContentService } from '../../utils/FileContentService.js';
export type JobType = 'sync' | 'sync_all' | 'transform' | 'git_fetch' | 'git_pull' | 'git_push' | 'git_reset' | 'git_commit' | 'run_action' | 'upload';
export type JobState = 'waiting' | 'running' | 'failed' | 'done';
export declare function initJob(): {
    id: string;
    state: JobState;
};
export interface Job {
    id: string;
    state: JobState;
    progress?: {
        total: number;
        completed: number;
        warnings: number;
        failed?: number;
    };
    type: JobType;
    title: string;
    trigger?: string;
    action_id?: string;
    payload?: string;
    access_token?: string;
    ts?: number;
    started?: number;
    finished?: number;
    startAfter?: number;
    user?: {
        name: string;
        email: string;
    };
}
export interface Toast {
    title: string;
    message: string;
}
export interface DriveJobs {
    driveId: FileId;
    jobs: Job[];
    archive: Job[];
}
export interface DriveJobsMap {
    [driveId: FileId]: DriveJobs;
}
export declare function clearCachedChanges(googleFileSystem: FileContentService): Promise<void>;
export declare class JobManagerContainer extends Container {
    readonly params: ContainerConfig;
    private driveJobsMap;
    private workerPool;
    constructor(params: ContainerConfig);
    init(engine: ContainerEngine): Promise<void>;
    getDriveJobs(driveId: FileId): Promise<DriveJobs>;
    setDriveJobs(driveId: FileId, driveJobs: DriveJobs): Promise<void>;
    scheduleWorker(type: string, payload: unknown): Promise<unknown>;
    schedule(driveId: FileId, job: Job): Promise<void>;
    ps(): Promise<DriveJobsMap>;
    inspect(driveId: FileId): Promise<DriveJobs>;
    run(): Promise<void>;
    private upload;
    private sync;
    private runAction;
    private gitFetch;
    private gitPull;
    private gitPush;
    private gitCommit;
    private gitReset;
    private scheduleRetry;
    private runJob;
    clearGitCache(driveId: FileId): Promise<void>;
    destroy(): Promise<void>;
    progressJob(folderId: FileId, jobId: string, { completed, total, warnings, failed }: {
        completed: any;
        total: any;
        warnings: any;
        failed: any;
    }): void;
}
//# sourceMappingURL=JobManagerContainer.d.ts.map