import { Driver, User } from '@bringg/types';
import { KeysetPaginationResponse } from '../utils/consts/keyset-pagination.consts';
export type TotalCountResponseFormat = {
    count: number;
};
export type UsersListByType = {
    users: User[];
    success: boolean;
};
export type CreateOrUpdateUserResponseFormat = {
    user: User;
    success: boolean;
};
export type InviteUser = {
    user: User;
    success: boolean;
    message: string | null;
};
export type UnlockResponseFormat = {
    success: boolean;
};
export type ValidPhoneResponse = {
    success: boolean;
    phone_valid: boolean;
};
export type DeleteResponseFormat = {
    success: boolean;
    rc: number;
};
export type ProfileImageResponseFormat = {
    success: boolean;
    profile_image: string;
};
export type AnnouncementResponseFormat = {
    success: boolean;
    announcement_id: number;
};
export type DeleteUserMessage = {
    user_id: number;
};
export type MakeAdminResponceFormat = {
    success: boolean;
    user: User;
};
export type AllUsersResponse = {
    has_next_page: boolean;
    users: User[];
};
export declare enum UsersScopes {
    DRIVERS = "drivers",
    DISPATCHERS = "dispatchers",
    ADMINS = "admins",
    CUSTOMERS = "customers",
    MARKED_AS_ONLINE = "marked_as_online"
}
export type AllUsersKeysetPaginationResponse = KeysetPaginationResponse<'users', User[]>;
export type AllDriversResponse = KeysetPaginationResponse<'users', Driver[]>;
export declare const defaultExtractor: (response: any) => any;
export declare const userExtractor: (response: any) => any;
export declare const usersExtractor: (response: any) => any;
export declare const countExtractor: (response: any) => any;
export declare const successExtractor: (response: any) => any;
export declare const baseRoute = "/users";
export declare const ROUTES: {
    GET_ALL: string;
    GET_DRIVERS_BY_TEAM: string;
    UNLOCK: string;
    MESSAGE_DRIVER: string;
    VALIDATE_PHONE: string;
    DELETE_MANY: string;
    DRIVER_COST: string;
    GET_USERS_WITH_USER_TYPE: string;
    INVITE: string;
    CLOSED_TASKS: string;
    TOTAL_TASKS: string;
};
export declare enum UserEvents {
    CURRENT_USER_UPDATED = "currentUserUpdated"
}
export declare enum UserGroupTypes {
    Main = "main"
}
export declare enum GROUP_VALUES {
    OfflineDrivers = "OfflineDrivers",
    OnlineDrivers = "OnlineDrivers",
    OnShiftDrivers = "OnShiftDrivers",
    Customers = "Customers",
    Admins = "Admins",
    Dispatchers = "Dispatchers",
    Drivers = "Drivers"
}
export declare const groupFilter: Map<GROUP_VALUES, (user: User) => boolean>;
export declare const userToGroupsMapper: (user: User) => any[];
export declare enum RealtimeEvents {
    Update = "employee update",
    Create = "new employee",
    Delete = "delete employee"
}
export type DeleteManyResponse = {
    success: boolean;
    rc: number;
    deleted_count: number;
    deleted_users: number[];
    failed_count: number;
    errors?: {
        rc: number;
        message: string;
        user_ids: number[];
    }[];
};
