import { Driver, Task, User } from '@bringg/types';
import { DELETE_RESPONSE } from '../../Core/CrudService';
import { EventCallbackOptions, StorableEventUnsubscribe } from '../../Data/storable-types';
import { DataOptions, MappedStorableItem } from '../../data-entity';
import Session from '../../Services/Identity/Session';
import { KeysetPaginationRequest } from '../../utils/consts/keyset-pagination.consts';
import { AllDriversResponse, AllUsersKeysetPaginationResponse, DeleteManyResponse, GROUP_VALUES } from '../User.consts';
import { GetAllDriversOptions } from '../Users';
export default class UsersApi {
    private readonly userStore;
    private readonly usersService;
    private readonly storableDataService;
    private readonly storableRealtimeSubscriptions;
    constructor(session: Session);
    delete(userId: number): Promise<DELETE_RESPONSE>;
    deleteMany(userIds: number[]): Promise<DeleteManyResponse>;
    create(user: Partial<User>): Promise<User>;
    update(userId: number, userDelta: Partial<User>): Promise<User>;
    load(userId: number, options?: DataOptions): Promise<User>;
    loadMany(ids: number[], options?: DataOptions): Promise<User[]>;
    loadAllByTeam(teamId: number, options?: DataOptions): Promise<Driver[]>;
    loadAll({ limit, page, page_action, cursor, options }?: KeysetPaginationRequest<DataOptions>): Promise<AllUsersKeysetPaginationResponse>;
    getAllDrivers({ limit, page_action, cursor, options }: KeysetPaginationRequest<GetAllDriversOptions>): Promise<AllDriversResponse>;
    getAllAdminsAndDispatchers({ limit, page_action, cursor, options }: KeysetPaginationRequest<null>): Promise<AllUsersKeysetPaginationResponse>;
    messageDriver(userId: number, message: string): Promise<number>;
    unlock(userId: number): Promise<boolean>;
    validatePhone(phone: string): Promise<boolean>;
    getDriverCost(userId: number): Promise<unknown>;
    invite(userId: number): Promise<User>;
    closedTasks(userId: number, page?: number): Promise<Task[]>;
    assignedTasksCount(userId: number): Promise<number>;
    byUserType(userTypeId: number): Promise<User[]>;
    getGroup(group: GROUP_VALUES): User[];
    getTeamGroup(teamId: number): User[] | undefined;
    get(id: number): User;
    getMany(ids: number[]): Record<number, User>;
    getAll(): User[];
    getOfflineDrivers(): User[];
    getOnlineDrivers(): User[];
    getAllLocalDrivers(): User[];
    getOnShiftDrivers(): User[];
    onCreate(callback: (user: MappedStorableItem<User>) => void): StorableEventUnsubscribe;
    onUpdate(callback: (user: MappedStorableItem<User>) => void, options?: EventCallbackOptions): StorableEventUnsubscribe;
    onDelete(callback: (user: MappedStorableItem<User>) => void): StorableEventUnsubscribe;
}
