import Bringg from '@bringg/types';
import { CommonOptions } from '../Core/RouteGenerator';
import Session from '../Services/Identity/Session';
import { KeysetPaginationRequest } from '../utils/consts/keyset-pagination.consts';
import { UserGroupValue } from './Store/UsersStore';
import { AllDriversResponse, AllUsersKeysetPaginationResponse, AllUsersResponse } from './User.consts';
export interface GetAllDriversOptions {
    onlyOnlineDriver?: boolean;
    onlyCustomers?: boolean;
}
export default class Users {
    onListUpdate: any;
    onUpdate: any;
    onDelete: any;
    onCreate: any;
    unsubscribe: any;
    private usersStore;
    constructor(session: Session);
    create(user: Partial<Bringg.User>): Promise<Bringg.User>;
    getAllAdminsAndDispatchers({ limit, page_action, cursor }: KeysetPaginationRequest<AllUsersKeysetPaginationResponse>): Promise<AllUsersKeysetPaginationResponse>;
    getAllDrivers({ limit, page_action, cursor, options }: KeysetPaginationRequest<GetAllDriversOptions>): Promise<AllDriversResponse>;
    byUserType(userTypeId: number): Promise<Bringg.User[]>;
    makeAdmin(userId: number): Promise<Bringg.Admin>;
    totalEmployeesCount(): Promise<number>;
    totalDriversCount(): Promise<number>;
    getAdmin(adminId: number): Promise<Bringg.Admin>;
    getDriver(driverId: number): Promise<Bringg.Driver>;
    getDispatcher(dispatcherId: number): Promise<Bringg.Dispatcher>;
    getDriversByTeam(teamId: number): Promise<Bringg.Driver[]>;
    getAll(page?: number, limit?: number): Promise<AllUsersResponse>;
    getAllKeysetPagination({ limit, page_action, cursor }: KeysetPaginationRequest<null>): Promise<AllUsersKeysetPaginationResponse>;
    get(userId: number): Promise<Bringg.User>;
    getMany(usersIds: number[], commonOptions?: CommonOptions): Promise<Bringg.User[]>;
    getLocal(userId: number): Bringg.User;
    invite(userId: number): Promise<Bringg.User>;
    unlock(userId: number): Promise<boolean>;
    assignedTasksCount(userId: number): Promise<number>;
    inviteByEmail(userId: number): Promise<Bringg.User>;
    validatePhone(phone: string): Promise<boolean>;
    closedTasks(userId: number, page?: number): Promise<Bringg.Task[]>;
    update(userId: number, userDelta: Partial<Bringg.User>): Promise<Bringg.User>;
    private updateCurrentUserIfNeeded;
    delete(userId: number): Promise<boolean>;
    getProfileImage(userId: number): Promise<string>;
    subscribeToGroupUpdates(fn: (groupValues?: UserGroupValue) => void): void;
    getOfflineDrivers(): Set<Bringg.User>;
    getOnlineDrivers(): Set<Bringg.User>;
    getAllLocalDrivers(): Bringg.User[];
    getOnShiftDrivers(): Bringg.User[];
    getAdmins(): Bringg.User[];
    getDispatchers(): Bringg.User[];
    messageDriver(userId: number, message: string): Promise<number>;
    getDriverCost(userId: number): Promise<unknown>;
    generateResetPasswordToken(email: string): Promise<string>;
}
