import { UseAsyncReturn } from 'react-async-hook';
import React, { Dispatch, SetStateAction } from 'react';
import { IUser } from '@shared/interfaces/model';
import { SelectionMode } from '@fluentui/react';
import { ModelState } from '@admin/helpers/hooks';
import ExtendedSelection, { ItemsOrKeys } from '@admin/helpers/selection';
export interface IUsersContext {
    list: UseAsyncReturn<IUser[], []>;
    get: UseAsyncReturn<IUser, [id: number]>;
    create: UseAsyncReturn<any, [Partial<IUser & {
        notify?: boolean;
    }>]>;
    deleteMany: UseAsyncReturn<any, [id: number[]]>;
    update: UseAsyncReturn<any, [id: number, params: Partial<IUser>]>;
    updateMany: UseAsyncReturn<Partial<IUser>[]>;
    resetPassword: UseAsyncReturn<{
        id: number;
        password: string;
        notify: boolean;
    }>;
    selectedUsers: IUser[];
    selection: ExtendedSelection<IUser>;
    users: IUser[];
    usersState: ModelState<IUser>;
    setListParams: Dispatch<SetStateAction<any>>;
    listParams: any;
}
export declare const UsersContext: React.Context<IUsersContext>;
export interface IUsersContextProviderProps {
    defaultSelectedUsers?: ItemsOrKeys<IUser>;
    selectionMode?: SelectionMode;
}
declare const UsersContextProvider: React.FC<IUsersContextProviderProps>;
declare const useUsers: () => IUsersContext;
declare const withUsers: <T extends object>(Component: React.FC<T>) => (props: T) => JSX.Element;
export { useUsers, withUsers, UsersContextProvider };
