import { default as React } from 'react';

export interface LoginFormValues {
    email: string;
    password: string;
}
export interface resetFormValues {
    email: string;
}
export interface resetPasswordValues {
    token: string;
}
export interface changePasswordValues {
    password: string;
}
export interface changeUserPasswordValues {
    password: string;
}
interface ERPApiUser {
    id: string | number;
    first_name: string;
    last_name: string;
    middle_name: string;
    country_code: string;
    email: string;
    created_by: any;
    updated_by: any;
    created_at: string;
    updated_at: string;
    role_id: string;
    department_id: number;
    is_deleted: number;
    deleted_at: string | null;
    deleted_by: any;
    token: string;
    profile_image: string;
    company_id: number | string;
    currency_data?: {
        id: number;
        symbol: string;
        currency_name: string;
        number_format: string;
        position: string | null;
        fraction_unit: string | null;
    };
    accessCompanies?: any[];
}
interface ERPUser extends Omit<ERPApiUser, 'token'> {
    full_name: string;
}
export interface DefaultProviderProps {
    user: ERPUser | null;
    loading: boolean;
    authToken: string;
    setUser: React.Dispatch<React.SetStateAction<ERPUser | null>>;
    setLoading: React.Dispatch<React.SetStateAction<boolean>>;
    login: (params: LoginFormValues, callback: (err: string) => void) => Promise<void>;
    logout: () => Promise<void>;
    forgotPassword: (params: resetFormValues, callback: (err: string) => void) => Promise<void>;
    resetPassword: (params: resetPasswordValues, callback: (err: string) => void) => Promise<void>;
    changePassword: (params: changePasswordValues, callback: (err: string) => void) => Promise<void>;
    changeUserPassword: (params: changeUserPasswordValues, callback: (err: string) => void) => Promise<void>;
}
declare const AuthContext: React.Context<DefaultProviderProps>;
interface AuthProviderProps {
    children: React.ReactNode;
    publicRoutes?: string[];
}
declare const AuthProvider: React.FC<AuthProviderProps>;
export { AuthContext, AuthProvider };
