import { Users } from "connectycube/types";
export declare const USERS_LOG_TAG = "[useChat][useUsers]";
export declare const LIMIT_ONLINE_USERS_INTERVAL = 60000;
export declare const LIMIT_FETCH_USER_INTERVAL = 30000;
export declare const MAX_REQUEST_LIMIT = 100;
export type FetchUsersLastRequestAt = {
    [userId: Users.User["id"]]: number;
};
export type OnlineUsersLastRequestAt = number;
export type UsersArray = Users.User[];
export type UsersObject = {
    [userId: Users.User["id"]]: Users.User;
};
export type UsersLastActivity = {
    [userId: number]: string;
};
export type UsersHookExports = {
    users: UsersObject;
    getAndStoreUsers: (params: Users.GetV2Params) => Promise<Users.User[]>;
    searchUsers: (term: string) => Promise<UsersArray>;
    fetchUserById: (id: Users.User["id"], force?: boolean) => Promise<Users.User>;
    listOnlineUsers: (force?: boolean) => Promise<UsersArray>;
    listOnlineUsersWithParams: (params: Users.ListOnlineParams) => Promise<UsersArray>;
    onlineUsers: UsersArray;
    getOnlineUsersCount: () => Promise<number>;
    onlineUsersCount: number;
    lastActivity: UsersLastActivity;
    getLastActivity: (userId: number) => Promise<string>;
    subscribeToUserLastActivityStatus: (userId: number) => void;
    unsubscribeFromUserLastActivityStatus: (userId: number) => void;
};
export type UsersHook = {
    exports: UsersHookExports;
    _retrieveAndStoreUsers: (usersIds: number[]) => Promise<void>;
};
declare function useUsers(currentUserId?: number): UsersHook;
export default useUsers;
//# sourceMappingURL=useUsers.d.ts.map