import { ChildTask, PreparationStatus, Quote, Run, Task, TaskAutomaticallyCancelled, TaskHistory, TaskNote } from '@bringg/types';
import { DataOptions, ItemFields, MappedStorableItem } from '../../data-entity';
import Session from '../../Services/Identity/Session';
import { GROUP_VALUES, HasDefectiveGeocodeResponse, ItemsKeySetPaginationResponse, TaskDataOptions, TaskGeneralResponse, TaskGroupTypes, TaskLocation, TasksCsvImportResponse, WayPointDeleteResponse } from '../Tasks.consts';
export default class TasksApi {
    private readonly tasksStore;
    private readonly tasksService;
    private readonly storableDataService;
    private readonly taskRealtimeSubscriptions;
    constructor(session: Session);
    updateStoreOnEvents(): void;
    onUpdate(callback: (mappedStorableItem: MappedStorableItem<Task>) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
    onCreate(callback: (mappedStorableItem: MappedStorableItem<Task>) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
    onDelete(callback: (mappedStorableItem: MappedStorableItem<Task>) => void): import("../../Data/storable-types").StorableEventUnsubscribe;
    onWayPointUpdate(callback: any): import("../../Data/storable-types").StorableEventUnsubscribe;
    onWayPointDelete(callback: any): import("../../Data/storable-types").StorableEventUnsubscribe;
    get(id: number, fields?: ItemFields): Task;
    getMany(ids: number[], fields?: ItemFields): Task[];
    getGroup(groupType: TaskGroupTypes, groupValue: GROUP_VALUES): Task[];
    isInGroup(taskId: number, groupType: TaskGroupTypes, groupValue: GROUP_VALUES): boolean;
    getAllById(): Record<number, Task>;
    load(id: number, options?: DataOptions): Promise<Task>;
    loadMany(ids: number[], fields?: ItemFields, options?: DataOptions): Promise<Task[]>;
    loadPlanning(columns: string[], options?: TaskDataOptions): Promise<ItemsKeySetPaginationResponse>;
    loadOpen(columns: string[], options?: TaskDataOptions): Promise<ItemsKeySetPaginationResponse>;
    private loadKeySet;
    massAssign(userId: number, taskIds: number[], options: {}, targetRun?: Partial<Run>): Promise<TaskGeneralResponse>;
    massUnassign(taskIds: number[], options: {}): Promise<TaskGeneralResponse>;
    massCancel(taskIds: number[], reasonId: number, text?: string, automaticallyCancelled?: TaskAutomaticallyCancelled): Promise<boolean>;
    loadInvalid({ columns, ...options }?: Partial<DataOptions> & {
        columns?: string[];
    }): Promise<Task[]>;
    broadcastToDrivers(id: number, userIds: number[], message: string): Promise<import("../Tasks.consts").BroadcastToDriversResponse>;
    acknowledgeTask(id: number): Promise<Task>;
    releaseToDrivers(ids: number[]): Promise<any>;
    moveToPlanning(ids: number[]): Promise<any>;
    update(task: Partial<Task>): Promise<Task>;
    updatePreparationStatus(taskId: number, preparationStatus: PreparationStatus): Promise<Task>;
    rescheduleVirtualTasks(taskIds: number[], noLaterThan: string, noEarlierThan: string): Promise<number[]>;
    duplicate(taskId: number): Promise<Task>;
    cancel(id: number): Promise<Task>;
    getChildTasks(taskId: number): Promise<ChildTask[]>;
    lock(taskIds: number[]): Promise<boolean>;
    unlock(taskIds: number[]): Promise<boolean>;
    finish(id: number): Promise<Task>;
    rescheduleCancelled(taskId: number): Promise<boolean>;
    getRescheduleQuote(taskId: number): Promise<Quote[]>;
    addTaskNote(taskId: number, wayPointId: number, note?: string, type?: string, image?: string, hiddenFromDrivers?: boolean): Promise<TaskNote>;
    getLocations(taskId: number): Promise<TaskLocation[]>;
    deleteWayPoint(taskId: number, wayPointId: number): Promise<WayPointDeleteResponse>;
    importTasksCsv(file: Blob): Promise<TasksCsvImportResponse>;
    activityLog(taskId: number): Promise<TaskHistory[]>;
    massDeleteGroups(groupLeaderTaskIds: number[]): Promise<boolean>;
    hasDefectiveGeocode(): Promise<HasDefectiveGeocodeResponse>;
    private getFieldsToLoad;
}
