import { ChangePasswordRequest, User, UserProfileUpdateRequest } from '@frank-auth/client';
import { AuthError } from '../provider/types';
export interface UseUserReturn {
    user: User | null;
    isLoaded: boolean;
    isLoading: boolean;
    error: AuthError | null;
    updateProfile: (data: UserProfileUpdateRequest) => Promise<User>;
    changePassword: (data: ChangePasswordRequest) => Promise<void>;
    deleteAccount: () => Promise<void>;
    updateEmail: (email: string) => Promise<void>;
    verifyEmail: (code: string) => Promise<void>;
    resendEmailVerification: () => Promise<void>;
    updatePhone: (phone: string) => Promise<void>;
    verifyPhone: (code: string) => Promise<void>;
    resendPhoneVerification: () => Promise<void>;
    updateProfileImage: (imageUrl: string) => Promise<User>;
    removeProfileImage: () => Promise<User>;
    updateMetadata: (metadata: Record<string, any>) => Promise<User>;
    firstName: string | null;
    lastName: string | null;
    fullName: string | null;
    email: string | null;
    phone: string | null;
    profileImageUrl: string | null;
    username: string | null;
    isEmailVerified: boolean;
    isPhoneVerified: boolean;
    needsEmailVerification: boolean;
    needsPhoneVerification: boolean;
    isActive: boolean;
    isBlocked: boolean;
    createdAt: Date | null;
    lastSignInAt: Date | null;
}
/**
 * User management hook providing access to user profile and account operations
 *
 * @example Basic profile management
 * ```tsx
 * import { useUser } from '@frank-auth/react';
 *
 * function UserProfile() {
 *   const { user, updateProfile, isLoading } = useUser();
 *
 *   const handleUpdate = async (data) => {
 *     try {
 *       await updateProfile(data);
 *       toast.success('Profile updated!');
 *     } catch (error) {
 *       toast.error('Failed to update profile');
 *     }
 *   };
 *
 *   if (!user) return <div>Please sign in</div>;
 *
 *   return (
 *     <form onSubmit={(e) => {
 *       e.preventDefault();
 *       const formData = new FormData(e.target);
 *       handleUpdate({
 *         firstName: formData.get('firstName'),
 *         lastName: formData.get('lastName'),
 *       });
 *     }}>
 *       <input name="firstName" defaultValue={user.firstName} />
 *       <input name="lastName" defaultValue={user.lastName} />
 *       <button type="submit" disabled={isLoading}>
 *         Update Profile
 *       </button>
 *     </form>
 *   );
 * }
 * ```
 *
 * @example Email verification
 * ```tsx
 * function EmailVerification() {
 *   const { needsEmailVerification, verifyEmail, resendEmailVerification } = useUser();
 *   const [code, setCode] = useState('');
 *
 *   if (!needsEmailVerification) return null;
 *
 *   return (
 *     <div>
 *       <p>Please verify your email address</p>
 *       <input
 *         value={code}
 *         onChange={(e) => setCode(e.target.value)}
 *         placeholder="Enter verification code"
 *       />
 *       <button onClick={() => verifyEmail(code)}>
 *         Verify
 *       </button>
 *       <button onClick={resendEmailVerification}>
 *         Resend Code
 *       </button>
 *     </div>
 *   );
 * }
 * ```
 */
export declare function useUser(): UseUserReturn;
/**
 * Hook for user profile data only (no methods)
 */
export declare function useUserProfile(): {
    user: User | null;
    firstName: string | null;
    lastName: string | null;
    fullName: string | null;
    email: string | null;
    phone: string | null;
    profileImageUrl: string | null;
    username: string | null;
    isEmailVerified: boolean;
    isPhoneVerified: boolean;
    isActive: boolean;
    isBlocked: boolean;
    createdAt: Date | null;
    lastSignInAt: Date | null;
};
/**
 * Hook for user verification operations
 */
export declare function useUserVerification(): {
    isEmailVerified: boolean;
    isPhoneVerified: boolean;
    needsEmailVerification: boolean;
    needsPhoneVerification: boolean;
    verifyEmail: (code: string) => Promise<void>;
    verifyPhone: (code: string) => Promise<void>;
    resendEmailVerification: () => Promise<void>;
    resendPhoneVerification: () => Promise<void>;
    isLoading: boolean;
    error: AuthError | null;
    needsVerification: boolean;
};
/**
 * Hook for user profile management operations
 */
export declare function useUserActions(): {
    updateProfile: (data: UserProfileUpdateRequest) => Promise<User>;
    changePassword: (data: ChangePasswordRequest) => Promise<void>;
    deleteAccount: () => Promise<void>;
    updateEmail: (email: string) => Promise<void>;
    updatePhone: (phone: string) => Promise<void>;
    updateProfileImage: (imageUrl: string) => Promise<User>;
    removeProfileImage: () => Promise<User>;
    updateMetadata: (metadata: Record<string, any>) => Promise<User>;
    isLoading: boolean;
    error: AuthError | null;
};
//# sourceMappingURL=use-user.d.ts.map