import type { EntityActionResult, EntityActionVoidResult } from './types';
/**
 * Profile update data that can be passed to updateProfile
 */
export interface UpdateProfileData {
    firstName?: string;
    lastName?: string;
    name?: string;
    country?: string;
    timezone?: string;
    language?: string;
}
/**
 * Result of profile update with user data
 */
export interface ProfileUpdateResult {
    id: string;
    email: string;
    name?: string;
    firstName?: string;
    lastName?: string;
    image?: string;
    country?: string;
    timezone?: string;
    language?: string;
}
/**
 * Update the current user's profile information
 *
 * Auth is automatically obtained from session - users can only update their own profile.
 *
 * @param data - Profile fields to update
 * @returns Updated user data wrapped in EntityActionResult
 *
 * @example
 * ```typescript
 * const result = await updateProfile({
 *   firstName: 'John',
 *   lastName: 'Doe',
 *   timezone: 'America/New_York'
 * })
 *
 * if (result.success) {
 *   console.log('Profile updated:', result.data)
 * } else {
 *   console.error('Error:', result.error)
 * }
 * ```
 */
export declare function updateProfile(data: UpdateProfileData): Promise<EntityActionResult<ProfileUpdateResult>>;
/**
 * Update the current user's avatar image
 *
 * Accepts FormData with an 'avatar' or 'image' field containing the image URL or file path.
 * For actual file uploads, the file should be uploaded to storage first and the URL passed here.
 *
 * @param formData - FormData with 'avatar' or 'image' field containing the image URL
 * @returns Updated user data wrapped in EntityActionResult
 *
 * @example
 * ```typescript
 * // After uploading file to storage
 * const formData = new FormData()
 * formData.append('avatar', imageUrl)
 * const result = await updateAvatar(formData)
 *
 * if (result.success) {
 *   console.log('Avatar updated:', result.data.image)
 * }
 * ```
 */
export declare function updateAvatar(formData: FormData): Promise<EntityActionResult<ProfileUpdateResult>>;
/**
 * Delete the current user's account
 *
 * This is a destructive operation that:
 * - Removes the user from all teams
 * - Deletes user metadata
 * - Deletes the user account
 *
 * Teams owned by the user must have ownership transferred first or be deleted.
 *
 * @returns Success status
 *
 * @example
 * ```typescript
 * // Show confirmation dialog first!
 * const confirmed = window.confirm('Are you sure? This cannot be undone.')
 * if (confirmed) {
 *   const result = await deleteAccount()
 *   if (result.success) {
 *     // Redirect to goodbye page or login
 *     router.push('/goodbye')
 *   }
 * }
 * ```
 */
export declare function deleteAccount(): Promise<EntityActionVoidResult>;
//# sourceMappingURL=user.actions.d.ts.map