import { Driver, Task, User } from '@bringg/types';
import { CommonOptions } from '../../Core/RouteGenerator';
import Session from '../../Services/Identity/Session';
import { KeysetPaginationRequest } from '../../utils/consts/keyset-pagination.consts';
import { AllDriversResponse, AllUsersKeysetPaginationResponse, DeleteManyResponse } from '../User.consts';
import { GetAllDriversOptions } from '../Users';
export default class UsersService {
    private readonly service;
    constructor(session: Session);
    get session(): Session;
    delete(userId: number): Promise<import("../../Core/CrudService").DELETE_RESPONSE>;
    deleteMany(userIds: number[]): Promise<DeleteManyResponse>;
    closedTasks(userId: number, page?: number): Promise<Task[]>;
    assignedTasksCount(userId: number): Promise<number>;
    create(user: Partial<User>): Promise<User>;
    update(userId: number, userDelta: Partial<User>): Promise<User>;
    get(userId: number): Promise<User>;
    loadAll(request: KeysetPaginationRequest<null>, commonOptions?: CommonOptions): Promise<AllUsersKeysetPaginationResponse>;
    loadMany(query?: {
        ids?: number[];
        page?: number;
        limit?: number;
    }, commonOptions?: CommonOptions): Promise<User[]>;
    loadAllByTeams(teamId: number, commonOptions?: CommonOptions): Promise<Driver[]>;
    /**
     * Generic method for keyset pagination with optional scoping
     */
    private getAllUsersWithKeysetPagination;
    getAllDrivers(request: KeysetPaginationRequest<GetAllDriversOptions>): Promise<AllDriversResponse>;
    getAllAdminsAndDispatchers(request: KeysetPaginationRequest<null>): Promise<AllUsersKeysetPaginationResponse>;
    unlock(userId: number): Promise<boolean>;
    validatePhone(phone: string): Promise<boolean>;
    messageDriver(userId: number, message: string): Promise<number>;
    getDriverCost(userId: number): Promise<unknown>;
    byUserType(userTypeId: number): Promise<User[]>;
    invite(userId: number): Promise<User>;
}
