export type UserRole = 'CUSTOMER' | 'ADMIN';
export declare enum UserStatus {
    ACTIVE = "ACTIVE",
    INACTIVE = "INACTIVE",
    SUSPENDED = "SUSPENDED"
}
export declare enum AddressType {
    SHIPPING = "SHIPPING",
    BILLING = "BILLING",
    BOTH = "BOTH"
}
export interface IUserAddress {
    id: string;
    userId: string;
    addressLine1: string;
    addressLine2?: string;
    city: string;
    state: string;
    country: string;
    postalCode: string;
    isDefault: boolean;
    type: AddressType;
    createdAt: string;
    updatedAt: string;
}
export interface IUser {
    id: string;
    email: string;
    firstName: string;
    lastName: string;
    role: UserRole;
    phoneNumber?: string;
    isEmailVerified: boolean;
    avatarUrl?: string;
    status: UserStatus;
    addresses?: IUserAddress[];
    createdAt: string;
    updatedAt: string;
}
export interface IAuthUser {
    id: string;
    email: string;
    firstName: string;
    lastName: string;
    role: UserRole;
}
export interface ILoginRequest {
    email: string;
    password_hash?: string;
    password?: string;
}
export interface IRegisterRequest {
    email: string;
    password: string;
    firstName: string;
    lastName: string;
    phoneNumber?: string;
}
export interface IAuthResponse {
    user: IAuthUser;
    accessToken: string;
    refreshToken: string;
    expiresIn: number;
}
export interface IUpdateUserProfileRequest {
    firstName?: string;
    lastName?: string;
    phoneNumber?: string;
    avatarUrl?: string;
}
export interface ICreateAddressRequest {
    addressLine1: string;
    addressLine2?: string;
    city: string;
    state: string;
    country?: string;
    postalCode: string;
    isDefault?: boolean;
    type?: AddressType;
}
//# sourceMappingURL=user.types.d.ts.map