import { Admin, Driver, Task, User } from '@bringg/types';
import BaseStore from '../../Core/BaseStore';
import { CommonOptions } from '../../Core/RouteGenerator';
import Session from '../../Services/Identity/Session';
import { KeysetPaginationRequest } from '../../utils/consts/keyset-pagination.consts';
import UsersService from '../Service/UsersService';
import { AllDriversResponse, AllUsersKeysetPaginationResponse, AllUsersResponse, GROUP_VALUES } from '../User.consts';
import { GetAllDriversOptions } from '../Users';
export declare const DEFAULT_CHUNK_SIZE = 50;
export declare const MAX_CONCURRENT_CHUNKED_REQUESTS = 4;
export type UserGroupValue = Map<GROUP_VALUES, Set<User>>;
export default class UsersStore extends BaseStore<User> {
    private groupUpdateEvents;
    private groupedValues;
    private drivers;
    private onlineDriversCounterByTeam;
    usersService: UsersService;
    fetchedStatus: {
        drivers: boolean;
        customers: boolean;
        adminsAndDispatchers: boolean;
    };
    constructor(session: Session, throttleTimeValue?: number);
    private getRelevantDrivers;
    private initGroups;
    create(user: Partial<User>): Promise<User>;
    getDriversByTeam(teamId: number): Promise<Driver[]>;
    getAll(page?: number, limit?: number): Promise<AllUsersResponse>;
    getAllKeysetPagination(request: KeysetPaginationRequest<null>): Promise<AllUsersKeysetPaginationResponse>;
    invite(userId: number): Promise<User>;
    inviteByEmail(userId: number): Promise<User>;
    getAllAdminsAndDispatchers(request: KeysetPaginationRequest<null>): Promise<AllUsersKeysetPaginationResponse>;
    getAllDrivers(request: KeysetPaginationRequest<GetAllDriversOptions>): Promise<AllDriversResponse>;
    private getOrFetchUsers;
    byUserType(userTypeId: number): Promise<Driver[]>;
    makeAdmin(userId: number): Promise<Admin>;
    update(userId: number, userDelta: Partial<User>): Promise<User>;
    delete(userId: number): Promise<boolean>;
    get(id: number): Promise<User>;
    getMany(ids: number[], commonOptions?: CommonOptions): Promise<User[]>;
    unlock(userId: number): Promise<boolean>;
    assignedTasksCount(userId: number): Promise<number>;
    totalEmployeesCount(): Promise<number>;
    totalDriversCount(): Promise<number>;
    getProfileImage(userId: number): Promise<string>;
    validatePhone(phone: string): Promise<boolean>;
    closedTasks(userId: number, page?: number): Promise<Task[]>;
    messageDriver(userId: number, message: string): Promise<number>;
    subscribeToGroupUpdates(fn: (groupValues?: UserGroupValue) => void): void;
    getOfflineDrivers(): Set<User>;
    getOnlineDrivers(): Set<User>;
    getOnShiftDrivers(): User[];
    getCustomers(): User[];
    getAdmins(): User[];
    getDispatchers(): User[];
    private emitGroupEvents;
    getAllLocalDrivers(): User[];
    getOnlineDriversCountByTeam(teamId: number): number;
    private getAllLocalAdminsAndDispatchers;
}
