UNPKG

emr-types

Version:

Comprehensive TypeScript Types Library for Electronic Medical Record (EMR) Applications - Domain-Driven Design with Zod Validation

2,275 lines 75.6 kB
import { z } from 'zod';
import { UserRole, UserStatus } from '../domains/user';
export declare const UserIdSchema: z.ZodBranded<z.ZodString, "UserId">;
export declare const EmailSchema: z.ZodBranded<z.ZodString, "Email">;
export declare const PasswordSchema: z.ZodBranded<z.ZodString, "Password">;
export declare const UserRoleSchema: z.ZodNativeEnum<typeof UserRole>;
export declare const UserStatusSchema: z.ZodNativeEnum<typeof UserStatus>;
export declare const UserIdValueObjectSchema: z.ZodObject<{
    value: z.ZodBranded<z.ZodString, "UserId">;
    format: z.ZodEnum<["uuid", "auto-increment", "custom"]>;
    createdAt: z.ZodDate;
    metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    value: string & z.BRAND<"UserId">;
    createdAt: Date;
    format: "uuid" | "custom" | "auto-increment";
    metadata?: Record<string, unknown> | undefined;
}, {
    value: string;
    createdAt: Date;
    format: "uuid" | "custom" | "auto-increment";
    metadata?: Record<string, unknown> | undefined;
}>;
export declare const EmailValueObjectSchema: z.ZodObject<{
    value: z.ZodBranded<z.ZodString, "Email">;
    isVerified: z.ZodBoolean;
    verifiedAt: z.ZodOptional<z.ZodDate>;
    createdAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
    value: string & z.BRAND<"Email">;
    createdAt: Date;
    isVerified: boolean;
    verifiedAt?: Date | undefined;
}, {
    value: string;
    createdAt: Date;
    isVerified: boolean;
    verifiedAt?: Date | undefined;
}>;
export declare const PasswordValueObjectSchema: z.ZodObject<{
    value: z.ZodBranded<z.ZodString, "Password">;
    hashedValue: z.ZodString;
    salt: z.ZodString;
    algorithm: z.ZodEnum<["bcrypt", "argon2", "scrypt"]>;
    iterations: z.ZodNumber;
    createdAt: z.ZodDate;
    lastChangedAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
    value: string & z.BRAND<"Password">;
    createdAt: Date;
    hashedValue: string;
    salt: string;
    algorithm: "bcrypt" | "argon2" | "scrypt";
    iterations: number;
    lastChangedAt: Date;
}, {
    value: string;
    createdAt: Date;
    hashedValue: string;
    salt: string;
    algorithm: "bcrypt" | "argon2" | "scrypt";
    iterations: number;
    lastChangedAt: Date;
}>;
export declare const UserProfileSchema: z.ZodObject<{
    id: z.ZodBranded<z.ZodString, "UserId">;
    firstName: z.ZodString;
    lastName: z.ZodString;
    displayName: z.ZodOptional<z.ZodString>;
    avatar: z.ZodOptional<z.ZodString>;
    bio: z.ZodOptional<z.ZodString>;
    dateOfBirth: z.ZodOptional<z.ZodDate>;
    phoneNumber: z.ZodOptional<z.ZodString>;
    address: z.ZodOptional<z.ZodObject<{
        street: z.ZodString;
        city: z.ZodString;
        state: z.ZodString;
        postalCode: z.ZodString;
        country: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }>>;
    preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    createdAt: z.ZodDate;
    updatedAt: z.ZodDate;
    createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
    updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
}, "strip", z.ZodTypeAny, {
    id: string & z.BRAND<"UserId">;
    createdAt: Date;
    updatedAt: Date;
    firstName: string;
    lastName: string;
    createdBy?: (string & z.BRAND<"UserId">) | undefined;
    updatedBy?: (string & z.BRAND<"UserId">) | undefined;
    dateOfBirth?: Date | undefined;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    avatar?: string | undefined;
    bio?: string | undefined;
}, {
    id: string;
    createdAt: Date;
    updatedAt: Date;
    firstName: string;
    lastName: string;
    createdBy?: string | undefined;
    updatedBy?: string | undefined;
    dateOfBirth?: Date | undefined;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    avatar?: string | undefined;
    bio?: string | undefined;
}>;
export declare const UserSessionSchema: z.ZodObject<{
    id: z.ZodString;
    userId: z.ZodBranded<z.ZodString, "UserId">;
    token: z.ZodString;
    refreshToken: z.ZodOptional<z.ZodString>;
    deviceInfo: z.ZodOptional<z.ZodObject<{
        userAgent: z.ZodString;
        ipAddress: z.ZodString;
        deviceType: z.ZodEnum<["desktop", "mobile", "tablet"]>;
        os: z.ZodString;
        browser: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        userAgent: string;
        ipAddress: string;
        deviceType: "desktop" | "mobile" | "tablet";
        os: string;
        browser: string;
    }, {
        userAgent: string;
        ipAddress: string;
        deviceType: "desktop" | "mobile" | "tablet";
        os: string;
        browser: string;
    }>>;
    isActive: z.ZodBoolean;
    expiresAt: z.ZodDate;
    lastActivityAt: z.ZodDate;
    createdAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
    id: string;
    createdAt: Date;
    userId: string & z.BRAND<"UserId">;
    token: string;
    isActive: boolean;
    expiresAt: Date;
    lastActivityAt: Date;
    refreshToken?: string | undefined;
    deviceInfo?: {
        userAgent: string;
        ipAddress: string;
        deviceType: "desktop" | "mobile" | "tablet";
        os: string;
        browser: string;
    } | undefined;
}, {
    id: string;
    createdAt: Date;
    userId: string;
    token: string;
    isActive: boolean;
    expiresAt: Date;
    lastActivityAt: Date;
    refreshToken?: string | undefined;
    deviceInfo?: {
        userAgent: string;
        ipAddress: string;
        deviceType: "desktop" | "mobile" | "tablet";
        os: string;
        browser: string;
    } | undefined;
}>;
export declare const UserSchema: z.ZodObject<{
    id: z.ZodBranded<z.ZodString, "UserId">;
    email: z.ZodObject<{
        value: z.ZodBranded<z.ZodString, "Email">;
        isVerified: z.ZodBoolean;
        verifiedAt: z.ZodOptional<z.ZodDate>;
        createdAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        value: string & z.BRAND<"Email">;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    }, {
        value: string;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    }>;
    password: z.ZodObject<{
        value: z.ZodBranded<z.ZodString, "Password">;
        hashedValue: z.ZodString;
        salt: z.ZodString;
        algorithm: z.ZodEnum<["bcrypt", "argon2", "scrypt"]>;
        iterations: z.ZodNumber;
        createdAt: z.ZodDate;
        lastChangedAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        value: string & z.BRAND<"Password">;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    }, {
        value: string;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    }>;
    role: z.ZodNativeEnum<typeof UserRole>;
    status: z.ZodNativeEnum<typeof UserStatus>;
    profile: z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        firstName: z.ZodString;
        lastName: z.ZodString;
        displayName: z.ZodOptional<z.ZodString>;
        avatar: z.ZodOptional<z.ZodString>;
        bio: z.ZodOptional<z.ZodString>;
        dateOfBirth: z.ZodOptional<z.ZodDate>;
        phoneNumber: z.ZodOptional<z.ZodString>;
        address: z.ZodOptional<z.ZodObject<{
            street: z.ZodString;
            city: z.ZodString;
            state: z.ZodString;
            postalCode: z.ZodString;
            country: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }>>;
        preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
        createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
        updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
    }, "strip", z.ZodTypeAny, {
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: (string & z.BRAND<"UserId">) | undefined;
        updatedBy?: (string & z.BRAND<"UserId">) | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    }, {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: string | undefined;
        updatedBy?: string | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    }>;
    sessions: z.ZodOptional<z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        userId: z.ZodBranded<z.ZodString, "UserId">;
        token: z.ZodString;
        refreshToken: z.ZodOptional<z.ZodString>;
        deviceInfo: z.ZodOptional<z.ZodObject<{
            userAgent: z.ZodString;
            ipAddress: z.ZodString;
            deviceType: z.ZodEnum<["desktop", "mobile", "tablet"]>;
            os: z.ZodString;
            browser: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        }, {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        }>>;
        isActive: z.ZodBoolean;
        expiresAt: z.ZodDate;
        lastActivityAt: z.ZodDate;
        createdAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        id: string;
        createdAt: Date;
        userId: string & z.BRAND<"UserId">;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }, {
        id: string;
        createdAt: Date;
        userId: string;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }>, "many">>;
    permissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
    lastLoginAt: z.ZodOptional<z.ZodDate>;
    loginAttempts: z.ZodOptional<z.ZodNumber>;
    lockedUntil: z.ZodOptional<z.ZodDate>;
    emailVerifiedAt: z.ZodOptional<z.ZodDate>;
    twoFactorEnabled: z.ZodOptional<z.ZodBoolean>;
    twoFactorSecret: z.ZodOptional<z.ZodString>;
    createdAt: z.ZodDate;
    updatedAt: z.ZodDate;
    createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
    updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
    deletedAt: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
    email: {
        value: string & z.BRAND<"Email">;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    };
    id: string & z.BRAND<"UserId">;
    createdAt: Date;
    updatedAt: Date;
    status: UserStatus;
    password: {
        value: string & z.BRAND<"Password">;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    };
    role: UserRole;
    profile: {
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: (string & z.BRAND<"UserId">) | undefined;
        updatedBy?: (string & z.BRAND<"UserId">) | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    };
    createdBy?: (string & z.BRAND<"UserId">) | undefined;
    updatedBy?: (string & z.BRAND<"UserId">) | undefined;
    sessions?: {
        id: string;
        createdAt: Date;
        userId: string & z.BRAND<"UserId">;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }[] | undefined;
    permissions?: string[] | undefined;
    lastLoginAt?: Date | undefined;
    loginAttempts?: number | undefined;
    lockedUntil?: Date | undefined;
    emailVerifiedAt?: Date | undefined;
    twoFactorEnabled?: boolean | undefined;
    twoFactorSecret?: string | undefined;
    deletedAt?: Date | undefined;
}, {
    email: {
        value: string;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    };
    id: string;
    createdAt: Date;
    updatedAt: Date;
    status: UserStatus;
    password: {
        value: string;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    };
    role: UserRole;
    profile: {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: string | undefined;
        updatedBy?: string | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    };
    createdBy?: string | undefined;
    updatedBy?: string | undefined;
    sessions?: {
        id: string;
        createdAt: Date;
        userId: string;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }[] | undefined;
    permissions?: string[] | undefined;
    lastLoginAt?: Date | undefined;
    loginAttempts?: number | undefined;
    lockedUntil?: Date | undefined;
    emailVerifiedAt?: Date | undefined;
    twoFactorEnabled?: boolean | undefined;
    twoFactorSecret?: string | undefined;
    deletedAt?: Date | undefined;
}>;
export declare const CreateUserRequestSchema: z.ZodObject<{
    email: z.ZodBranded<z.ZodString, "Email">;
    password: z.ZodBranded<z.ZodString, "Password">;
    firstName: z.ZodString;
    lastName: z.ZodString;
    role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
    displayName: z.ZodOptional<z.ZodString>;
    phoneNumber: z.ZodOptional<z.ZodString>;
    address: z.ZodOptional<z.ZodObject<{
        street: z.ZodString;
        city: z.ZodString;
        state: z.ZodString;
        postalCode: z.ZodString;
        country: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }>>;
    preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
}, "strip", z.ZodTypeAny, {
    email: string & z.BRAND<"Email">;
    firstName: string;
    lastName: string;
    password: string & z.BRAND<"Password">;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    role?: UserRole | undefined;
}, {
    email: string;
    firstName: string;
    lastName: string;
    password: string;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    role?: UserRole | undefined;
}>;
export declare const UpdateUserRequestSchema: z.ZodObject<{
    firstName: z.ZodOptional<z.ZodString>;
    lastName: z.ZodOptional<z.ZodString>;
    displayName: z.ZodOptional<z.ZodString>;
    phoneNumber: z.ZodOptional<z.ZodString>;
    address: z.ZodOptional<z.ZodObject<{
        street: z.ZodString;
        city: z.ZodString;
        state: z.ZodString;
        postalCode: z.ZodString;
        country: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }, {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    }>>;
    preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
    status: z.ZodOptional<z.ZodNativeEnum<typeof UserStatus>>;
}, "strip", z.ZodTypeAny, {
    status?: UserStatus | undefined;
    firstName?: string | undefined;
    lastName?: string | undefined;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    role?: UserRole | undefined;
}, {
    status?: UserStatus | undefined;
    firstName?: string | undefined;
    lastName?: string | undefined;
    phoneNumber?: string | undefined;
    address?: {
        street: string;
        city: string;
        country: string;
        state: string;
        postalCode: string;
    } | undefined;
    preferences?: Record<string, unknown> | undefined;
    displayName?: string | undefined;
    role?: UserRole | undefined;
}>;
export declare const ChangePasswordRequestSchema: z.ZodEffects<z.ZodObject<{
    currentPassword: z.ZodString;
    newPassword: z.ZodBranded<z.ZodString, "Password">;
    confirmPassword: z.ZodString;
}, "strip", z.ZodTypeAny, {
    currentPassword: string;
    newPassword: string & z.BRAND<"Password">;
    confirmPassword: string;
}, {
    currentPassword: string;
    newPassword: string;
    confirmPassword: string;
}>, {
    currentPassword: string;
    newPassword: string & z.BRAND<"Password">;
    confirmPassword: string;
}, {
    currentPassword: string;
    newPassword: string;
    confirmPassword: string;
}>;
export declare const LoginRequestSchema: z.ZodObject<{
    email: z.ZodBranded<z.ZodString, "Email">;
    password: z.ZodString;
    rememberMe: z.ZodOptional<z.ZodBoolean>;
    deviceInfo: z.ZodOptional<z.ZodObject<{
        userAgent: z.ZodString;
        ipAddress: z.ZodString;
        deviceType: z.ZodOptional<z.ZodEnum<["desktop", "mobile", "tablet"]>>;
        os: z.ZodOptional<z.ZodString>;
        browser: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        userAgent: string;
        ipAddress: string;
        deviceType?: "desktop" | "mobile" | "tablet" | undefined;
        os?: string | undefined;
        browser?: string | undefined;
    }, {
        userAgent: string;
        ipAddress: string;
        deviceType?: "desktop" | "mobile" | "tablet" | undefined;
        os?: string | undefined;
        browser?: string | undefined;
    }>>;
}, "strip", z.ZodTypeAny, {
    email: string & z.BRAND<"Email">;
    password: string;
    deviceInfo?: {
        userAgent: string;
        ipAddress: string;
        deviceType?: "desktop" | "mobile" | "tablet" | undefined;
        os?: string | undefined;
        browser?: string | undefined;
    } | undefined;
    rememberMe?: boolean | undefined;
}, {
    email: string;
    password: string;
    deviceInfo?: {
        userAgent: string;
        ipAddress: string;
        deviceType?: "desktop" | "mobile" | "tablet" | undefined;
        os?: string | undefined;
        browser?: string | undefined;
    } | undefined;
    rememberMe?: boolean | undefined;
}>;
export declare const ResetPasswordRequestSchema: z.ZodObject<{
    email: z.ZodBranded<z.ZodString, "Email">;
}, "strip", z.ZodTypeAny, {
    email: string & z.BRAND<"Email">;
}, {
    email: string;
}>;
export declare const VerifyEmailRequestSchema: z.ZodObject<{
    token: z.ZodString;
}, "strip", z.ZodTypeAny, {
    token: string;
}, {
    token: string;
}>;
export declare const EnableTwoFactorRequestSchema: z.ZodObject<{
    secret: z.ZodString;
    code: z.ZodString;
}, "strip", z.ZodTypeAny, {
    code: string;
    secret: string;
}, {
    code: string;
    secret: string;
}>;
export declare const DisableTwoFactorRequestSchema: z.ZodObject<{
    password: z.ZodString;
    code: z.ZodString;
}, "strip", z.ZodTypeAny, {
    code: string;
    password: string;
}, {
    code: string;
    password: string;
}>;
export declare const UserResponseSchema: z.ZodObject<{
    id: z.ZodBranded<z.ZodString, "UserId">;
    email: z.ZodString;
    role: z.ZodNativeEnum<typeof UserRole>;
    status: z.ZodNativeEnum<typeof UserStatus>;
    profile: z.ZodObject<{
        firstName: z.ZodString;
        lastName: z.ZodString;
        displayName: z.ZodOptional<z.ZodString>;
        avatar: z.ZodOptional<z.ZodString>;
        phoneNumber: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        firstName: string;
        lastName: string;
        phoneNumber?: string | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
    }, {
        firstName: string;
        lastName: string;
        phoneNumber?: string | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
    }>;
    lastLoginAt: z.ZodOptional<z.ZodDate>;
    emailVerifiedAt: z.ZodOptional<z.ZodDate>;
    twoFactorEnabled: z.ZodBoolean;
    createdAt: z.ZodDate;
    updatedAt: z.ZodDate;
}, "strip", z.ZodTypeAny, {
    email: string;
    id: string & z.BRAND<"UserId">;
    createdAt: Date;
    updatedAt: Date;
    status: UserStatus;
    role: UserRole;
    profile: {
        firstName: string;
        lastName: string;
        phoneNumber?: string | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
    };
    twoFactorEnabled: boolean;
    lastLoginAt?: Date | undefined;
    emailVerifiedAt?: Date | undefined;
}, {
    email: string;
    id: string;
    createdAt: Date;
    updatedAt: Date;
    status: UserStatus;
    role: UserRole;
    profile: {
        firstName: string;
        lastName: string;
        phoneNumber?: string | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
    };
    twoFactorEnabled: boolean;
    lastLoginAt?: Date | undefined;
    emailVerifiedAt?: Date | undefined;
}>;
export declare const UserListResponseSchema: z.ZodObject<{
    users: z.ZodArray<z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        email: z.ZodString;
        role: z.ZodNativeEnum<typeof UserRole>;
        status: z.ZodNativeEnum<typeof UserStatus>;
        profile: z.ZodObject<{
            firstName: z.ZodString;
            lastName: z.ZodString;
            displayName: z.ZodOptional<z.ZodString>;
            avatar: z.ZodOptional<z.ZodString>;
            phoneNumber: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }>;
        lastLoginAt: z.ZodOptional<z.ZodDate>;
        emailVerifiedAt: z.ZodOptional<z.ZodDate>;
        twoFactorEnabled: z.ZodBoolean;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        email: string;
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }, {
        email: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }>, "many">;
    pagination: z.ZodObject<{
        page: z.ZodNumber;
        limit: z.ZodNumber;
        total: z.ZodNumber;
        totalPages: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    }, {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    }>;
}, "strip", z.ZodTypeAny, {
    users: {
        email: string;
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }[];
    pagination: {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    };
}, {
    users: {
        email: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }[];
    pagination: {
        page: number;
        limit: number;
        total: number;
        totalPages: number;
    };
}>;
export declare const LoginResponseSchema: z.ZodObject<{
    user: z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        email: z.ZodString;
        role: z.ZodNativeEnum<typeof UserRole>;
        status: z.ZodNativeEnum<typeof UserStatus>;
        profile: z.ZodObject<{
            firstName: z.ZodString;
            lastName: z.ZodString;
            displayName: z.ZodOptional<z.ZodString>;
            avatar: z.ZodOptional<z.ZodString>;
            phoneNumber: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }>;
        lastLoginAt: z.ZodOptional<z.ZodDate>;
        emailVerifiedAt: z.ZodOptional<z.ZodDate>;
        twoFactorEnabled: z.ZodBoolean;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        email: string;
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }, {
        email: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }>;
    session: z.ZodObject<{
        token: z.ZodString;
        refreshToken: z.ZodString;
        expiresAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        token: string;
        refreshToken: string;
        expiresAt: Date;
    }, {
        token: string;
        refreshToken: string;
        expiresAt: Date;
    }>;
}, "strip", z.ZodTypeAny, {
    user: {
        email: string;
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    };
    session: {
        token: string;
        refreshToken: string;
        expiresAt: Date;
    };
}, {
    user: {
        email: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    };
    session: {
        token: string;
        refreshToken: string;
        expiresAt: Date;
    };
}>;
export declare const PasswordResetResponseSchema: z.ZodObject<{
    message: z.ZodString;
    resetToken: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    message: string;
    resetToken?: string | undefined;
}, {
    message: string;
    resetToken?: string | undefined;
}>;
export declare const UserSearchFiltersSchema: z.ZodObject<{
    query: z.ZodOptional<z.ZodString>;
    role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
    status: z.ZodOptional<z.ZodNativeEnum<typeof UserStatus>>;
    emailVerified: z.ZodOptional<z.ZodBoolean>;
    twoFactorEnabled: z.ZodOptional<z.ZodBoolean>;
    createdAfter: z.ZodOptional<z.ZodDate>;
    createdBefore: z.ZodOptional<z.ZodDate>;
    lastLoginAfter: z.ZodOptional<z.ZodDate>;
    lastLoginBefore: z.ZodOptional<z.ZodDate>;
}, "strip", z.ZodTypeAny, {
    status?: UserStatus | undefined;
    role?: UserRole | undefined;
    twoFactorEnabled?: boolean | undefined;
    query?: string | undefined;
    emailVerified?: boolean | undefined;
    createdAfter?: Date | undefined;
    createdBefore?: Date | undefined;
    lastLoginAfter?: Date | undefined;
    lastLoginBefore?: Date | undefined;
}, {
    status?: UserStatus | undefined;
    role?: UserRole | undefined;
    twoFactorEnabled?: boolean | undefined;
    query?: string | undefined;
    emailVerified?: boolean | undefined;
    createdAfter?: Date | undefined;
    createdBefore?: Date | undefined;
    lastLoginAfter?: Date | undefined;
    lastLoginBefore?: Date | undefined;
}>;
export declare const UserSortOptionsSchema: z.ZodEnum<["createdAt", "updatedAt", "lastLoginAt", "firstName", "lastName", "email", "role", "status"]>;
export declare const UserValidationUtils: {
    isStrongPassword: (password: string) => boolean;
    isValidEmail: (email: string) => boolean;
    isPhoneNumber: (phone: string) => boolean;
    validatePasswordStrength: (password: string) => {
        isValid: boolean;
        errors: string[];
    };
};
export type CreateUserRequest = z.infer<typeof CreateUserRequestSchema>;
export type UpdateUserRequest = z.infer<typeof UpdateUserRequestSchema>;
export type ChangePasswordRequest = z.infer<typeof ChangePasswordRequestSchema>;
export type LoginRequest = z.infer<typeof LoginRequestSchema>;
export type ResetPasswordRequest = z.infer<typeof ResetPasswordRequestSchema>;
export type VerifyEmailRequest = z.infer<typeof VerifyEmailRequestSchema>;
export type EnableTwoFactorRequest = z.infer<typeof EnableTwoFactorRequestSchema>;
export type DisableTwoFactorRequest = z.infer<typeof DisableTwoFactorRequestSchema>;
export type UserResponse = z.infer<typeof UserResponseSchema>;
export type UserListResponse = z.infer<typeof UserListResponseSchema>;
export type LoginResponse = z.infer<typeof LoginResponseSchema>;
export type PasswordResetResponse = z.infer<typeof PasswordResetResponseSchema>;
export type UserSearchFilters = z.infer<typeof UserSearchFiltersSchema>;
export type UserSortOptions = z.infer<typeof UserSortOptionsSchema>;
export declare const UserSchemas: {
    readonly UserId: z.ZodBranded<z.ZodString, "UserId">;
    readonly Email: z.ZodBranded<z.ZodString, "Email">;
    readonly Password: z.ZodBranded<z.ZodString, "Password">;
    readonly UserRole: z.ZodNativeEnum<typeof UserRole>;
    readonly UserStatus: z.ZodNativeEnum<typeof UserStatus>;
    readonly UserIdValueObject: z.ZodObject<{
        value: z.ZodBranded<z.ZodString, "UserId">;
        format: z.ZodEnum<["uuid", "auto-increment", "custom"]>;
        createdAt: z.ZodDate;
        metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        value: string & z.BRAND<"UserId">;
        createdAt: Date;
        format: "uuid" | "custom" | "auto-increment";
        metadata?: Record<string, unknown> | undefined;
    }, {
        value: string;
        createdAt: Date;
        format: "uuid" | "custom" | "auto-increment";
        metadata?: Record<string, unknown> | undefined;
    }>;
    readonly EmailValueObject: z.ZodObject<{
        value: z.ZodBranded<z.ZodString, "Email">;
        isVerified: z.ZodBoolean;
        verifiedAt: z.ZodOptional<z.ZodDate>;
        createdAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        value: string & z.BRAND<"Email">;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    }, {
        value: string;
        createdAt: Date;
        isVerified: boolean;
        verifiedAt?: Date | undefined;
    }>;
    readonly PasswordValueObject: z.ZodObject<{
        value: z.ZodBranded<z.ZodString, "Password">;
        hashedValue: z.ZodString;
        salt: z.ZodString;
        algorithm: z.ZodEnum<["bcrypt", "argon2", "scrypt"]>;
        iterations: z.ZodNumber;
        createdAt: z.ZodDate;
        lastChangedAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        value: string & z.BRAND<"Password">;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    }, {
        value: string;
        createdAt: Date;
        hashedValue: string;
        salt: string;
        algorithm: "bcrypt" | "argon2" | "scrypt";
        iterations: number;
        lastChangedAt: Date;
    }>;
    readonly User: z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        email: z.ZodObject<{
            value: z.ZodBranded<z.ZodString, "Email">;
            isVerified: z.ZodBoolean;
            verifiedAt: z.ZodOptional<z.ZodDate>;
            createdAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            value: string & z.BRAND<"Email">;
            createdAt: Date;
            isVerified: boolean;
            verifiedAt?: Date | undefined;
        }, {
            value: string;
            createdAt: Date;
            isVerified: boolean;
            verifiedAt?: Date | undefined;
        }>;
        password: z.ZodObject<{
            value: z.ZodBranded<z.ZodString, "Password">;
            hashedValue: z.ZodString;
            salt: z.ZodString;
            algorithm: z.ZodEnum<["bcrypt", "argon2", "scrypt"]>;
            iterations: z.ZodNumber;
            createdAt: z.ZodDate;
            lastChangedAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            value: string & z.BRAND<"Password">;
            createdAt: Date;
            hashedValue: string;
            salt: string;
            algorithm: "bcrypt" | "argon2" | "scrypt";
            iterations: number;
            lastChangedAt: Date;
        }, {
            value: string;
            createdAt: Date;
            hashedValue: string;
            salt: string;
            algorithm: "bcrypt" | "argon2" | "scrypt";
            iterations: number;
            lastChangedAt: Date;
        }>;
        role: z.ZodNativeEnum<typeof UserRole>;
        status: z.ZodNativeEnum<typeof UserStatus>;
        profile: z.ZodObject<{
            id: z.ZodBranded<z.ZodString, "UserId">;
            firstName: z.ZodString;
            lastName: z.ZodString;
            displayName: z.ZodOptional<z.ZodString>;
            avatar: z.ZodOptional<z.ZodString>;
            bio: z.ZodOptional<z.ZodString>;
            dateOfBirth: z.ZodOptional<z.ZodDate>;
            phoneNumber: z.ZodOptional<z.ZodString>;
            address: z.ZodOptional<z.ZodObject<{
                street: z.ZodString;
                city: z.ZodString;
                state: z.ZodString;
                postalCode: z.ZodString;
                country: z.ZodString;
            }, "strip", z.ZodTypeAny, {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            }, {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            }>>;
            preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
            createdAt: z.ZodDate;
            updatedAt: z.ZodDate;
            createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
            updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
        }, "strip", z.ZodTypeAny, {
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            firstName: string;
            lastName: string;
            createdBy?: (string & z.BRAND<"UserId">) | undefined;
            updatedBy?: (string & z.BRAND<"UserId">) | undefined;
            dateOfBirth?: Date | undefined;
            phoneNumber?: string | undefined;
            address?: {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            } | undefined;
            preferences?: Record<string, unknown> | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
            bio?: string | undefined;
        }, {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            firstName: string;
            lastName: string;
            createdBy?: string | undefined;
            updatedBy?: string | undefined;
            dateOfBirth?: Date | undefined;
            phoneNumber?: string | undefined;
            address?: {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            } | undefined;
            preferences?: Record<string, unknown> | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
            bio?: string | undefined;
        }>;
        sessions: z.ZodOptional<z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            userId: z.ZodBranded<z.ZodString, "UserId">;
            token: z.ZodString;
            refreshToken: z.ZodOptional<z.ZodString>;
            deviceInfo: z.ZodOptional<z.ZodObject<{
                userAgent: z.ZodString;
                ipAddress: z.ZodString;
                deviceType: z.ZodEnum<["desktop", "mobile", "tablet"]>;
                os: z.ZodString;
                browser: z.ZodString;
            }, "strip", z.ZodTypeAny, {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            }, {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            }>>;
            isActive: z.ZodBoolean;
            expiresAt: z.ZodDate;
            lastActivityAt: z.ZodDate;
            createdAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            id: string;
            createdAt: Date;
            userId: string & z.BRAND<"UserId">;
            token: string;
            isActive: boolean;
            expiresAt: Date;
            lastActivityAt: Date;
            refreshToken?: string | undefined;
            deviceInfo?: {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            } | undefined;
        }, {
            id: string;
            createdAt: Date;
            userId: string;
            token: string;
            isActive: boolean;
            expiresAt: Date;
            lastActivityAt: Date;
            refreshToken?: string | undefined;
            deviceInfo?: {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            } | undefined;
        }>, "many">>;
        permissions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
        lastLoginAt: z.ZodOptional<z.ZodDate>;
        loginAttempts: z.ZodOptional<z.ZodNumber>;
        lockedUntil: z.ZodOptional<z.ZodDate>;
        emailVerifiedAt: z.ZodOptional<z.ZodDate>;
        twoFactorEnabled: z.ZodOptional<z.ZodBoolean>;
        twoFactorSecret: z.ZodOptional<z.ZodString>;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
        createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
        updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
        deletedAt: z.ZodOptional<z.ZodDate>;
    }, "strip", z.ZodTypeAny, {
        email: {
            value: string & z.BRAND<"Email">;
            createdAt: Date;
            isVerified: boolean;
            verifiedAt?: Date | undefined;
        };
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        password: {
            value: string & z.BRAND<"Password">;
            createdAt: Date;
            hashedValue: string;
            salt: string;
            algorithm: "bcrypt" | "argon2" | "scrypt";
            iterations: number;
            lastChangedAt: Date;
        };
        role: UserRole;
        profile: {
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            firstName: string;
            lastName: string;
            createdBy?: (string & z.BRAND<"UserId">) | undefined;
            updatedBy?: (string & z.BRAND<"UserId">) | undefined;
            dateOfBirth?: Date | undefined;
            phoneNumber?: string | undefined;
            address?: {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            } | undefined;
            preferences?: Record<string, unknown> | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
            bio?: string | undefined;
        };
        createdBy?: (string & z.BRAND<"UserId">) | undefined;
        updatedBy?: (string & z.BRAND<"UserId">) | undefined;
        sessions?: {
            id: string;
            createdAt: Date;
            userId: string & z.BRAND<"UserId">;
            token: string;
            isActive: boolean;
            expiresAt: Date;
            lastActivityAt: Date;
            refreshToken?: string | undefined;
            deviceInfo?: {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            } | undefined;
        }[] | undefined;
        permissions?: string[] | undefined;
        lastLoginAt?: Date | undefined;
        loginAttempts?: number | undefined;
        lockedUntil?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
        twoFactorEnabled?: boolean | undefined;
        twoFactorSecret?: string | undefined;
        deletedAt?: Date | undefined;
    }, {
        email: {
            value: string;
            createdAt: Date;
            isVerified: boolean;
            verifiedAt?: Date | undefined;
        };
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        password: {
            value: string;
            createdAt: Date;
            hashedValue: string;
            salt: string;
            algorithm: "bcrypt" | "argon2" | "scrypt";
            iterations: number;
            lastChangedAt: Date;
        };
        role: UserRole;
        profile: {
            id: string;
            createdAt: Date;
            updatedAt: Date;
            firstName: string;
            lastName: string;
            createdBy?: string | undefined;
            updatedBy?: string | undefined;
            dateOfBirth?: Date | undefined;
            phoneNumber?: string | undefined;
            address?: {
                street: string;
                city: string;
                country: string;
                state: string;
                postalCode: string;
            } | undefined;
            preferences?: Record<string, unknown> | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
            bio?: string | undefined;
        };
        createdBy?: string | undefined;
        updatedBy?: string | undefined;
        sessions?: {
            id: string;
            createdAt: Date;
            userId: string;
            token: string;
            isActive: boolean;
            expiresAt: Date;
            lastActivityAt: Date;
            refreshToken?: string | undefined;
            deviceInfo?: {
                userAgent: string;
                ipAddress: string;
                deviceType: "desktop" | "mobile" | "tablet";
                os: string;
                browser: string;
            } | undefined;
        }[] | undefined;
        permissions?: string[] | undefined;
        lastLoginAt?: Date | undefined;
        loginAttempts?: number | undefined;
        lockedUntil?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
        twoFactorEnabled?: boolean | undefined;
        twoFactorSecret?: string | undefined;
        deletedAt?: Date | undefined;
    }>;
    readonly UserProfile: z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        firstName: z.ZodString;
        lastName: z.ZodString;
        displayName: z.ZodOptional<z.ZodString>;
        avatar: z.ZodOptional<z.ZodString>;
        bio: z.ZodOptional<z.ZodString>;
        dateOfBirth: z.ZodOptional<z.ZodDate>;
        phoneNumber: z.ZodOptional<z.ZodString>;
        address: z.ZodOptional<z.ZodObject<{
            street: z.ZodString;
            city: z.ZodString;
            state: z.ZodString;
            postalCode: z.ZodString;
            country: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }>>;
        preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
        createdBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
        updatedBy: z.ZodOptional<z.ZodBranded<z.ZodString, "UserId">>;
    }, "strip", z.ZodTypeAny, {
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: (string & z.BRAND<"UserId">) | undefined;
        updatedBy?: (string & z.BRAND<"UserId">) | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    }, {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        firstName: string;
        lastName: string;
        createdBy?: string | undefined;
        updatedBy?: string | undefined;
        dateOfBirth?: Date | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        avatar?: string | undefined;
        bio?: string | undefined;
    }>;
    readonly UserSession: z.ZodObject<{
        id: z.ZodString;
        userId: z.ZodBranded<z.ZodString, "UserId">;
        token: z.ZodString;
        refreshToken: z.ZodOptional<z.ZodString>;
        deviceInfo: z.ZodOptional<z.ZodObject<{
            userAgent: z.ZodString;
            ipAddress: z.ZodString;
            deviceType: z.ZodEnum<["desktop", "mobile", "tablet"]>;
            os: z.ZodString;
            browser: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        }, {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        }>>;
        isActive: z.ZodBoolean;
        expiresAt: z.ZodDate;
        lastActivityAt: z.ZodDate;
        createdAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        id: string;
        createdAt: Date;
        userId: string & z.BRAND<"UserId">;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }, {
        id: string;
        createdAt: Date;
        userId: string;
        token: string;
        isActive: boolean;
        expiresAt: Date;
        lastActivityAt: Date;
        refreshToken?: string | undefined;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType: "desktop" | "mobile" | "tablet";
            os: string;
            browser: string;
        } | undefined;
    }>;
    readonly CreateUserRequest: z.ZodObject<{
        email: z.ZodBranded<z.ZodString, "Email">;
        password: z.ZodBranded<z.ZodString, "Password">;
        firstName: z.ZodString;
        lastName: z.ZodString;
        role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
        displayName: z.ZodOptional<z.ZodString>;
        phoneNumber: z.ZodOptional<z.ZodString>;
        address: z.ZodOptional<z.ZodObject<{
            street: z.ZodString;
            city: z.ZodString;
            state: z.ZodString;
            postalCode: z.ZodString;
            country: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }>>;
        preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
    }, "strip", z.ZodTypeAny, {
        email: string & z.BRAND<"Email">;
        firstName: string;
        lastName: string;
        password: string & z.BRAND<"Password">;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        role?: UserRole | undefined;
    }, {
        email: string;
        firstName: string;
        lastName: string;
        password: string;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        role?: UserRole | undefined;
    }>;
    readonly UpdateUserRequest: z.ZodObject<{
        firstName: z.ZodOptional<z.ZodString>;
        lastName: z.ZodOptional<z.ZodString>;
        displayName: z.ZodOptional<z.ZodString>;
        phoneNumber: z.ZodOptional<z.ZodString>;
        address: z.ZodOptional<z.ZodObject<{
            street: z.ZodString;
            city: z.ZodString;
            state: z.ZodString;
            postalCode: z.ZodString;
            country: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }, {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        }>>;
        preferences: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
        role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
        status: z.ZodOptional<z.ZodNativeEnum<typeof UserStatus>>;
    }, "strip", z.ZodTypeAny, {
        status?: UserStatus | undefined;
        firstName?: string | undefined;
        lastName?: string | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        role?: UserRole | undefined;
    }, {
        status?: UserStatus | undefined;
        firstName?: string | undefined;
        lastName?: string | undefined;
        phoneNumber?: string | undefined;
        address?: {
            street: string;
            city: string;
            country: string;
            state: string;
            postalCode: string;
        } | undefined;
        preferences?: Record<string, unknown> | undefined;
        displayName?: string | undefined;
        role?: UserRole | undefined;
    }>;
    readonly ChangePasswordRequest: z.ZodEffects<z.ZodObject<{
        currentPassword: z.ZodString;
        newPassword: z.ZodBranded<z.ZodString, "Password">;
        confirmPassword: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        currentPassword: string;
        newPassword: string & z.BRAND<"Password">;
        confirmPassword: string;
    }, {
        currentPassword: string;
        newPassword: string;
        confirmPassword: string;
    }>, {
        currentPassword: string;
        newPassword: string & z.BRAND<"Password">;
        confirmPassword: string;
    }, {
        currentPassword: string;
        newPassword: string;
        confirmPassword: string;
    }>;
    readonly LoginRequest: z.ZodObject<{
        email: z.ZodBranded<z.ZodString, "Email">;
        password: z.ZodString;
        rememberMe: z.ZodOptional<z.ZodBoolean>;
        deviceInfo: z.ZodOptional<z.ZodObject<{
            userAgent: z.ZodString;
            ipAddress: z.ZodString;
            deviceType: z.ZodOptional<z.ZodEnum<["desktop", "mobile", "tablet"]>>;
            os: z.ZodOptional<z.ZodString>;
            browser: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            userAgent: string;
            ipAddress: string;
            deviceType?: "desktop" | "mobile" | "tablet" | undefined;
            os?: string | undefined;
            browser?: string | undefined;
        }, {
            userAgent: string;
            ipAddress: string;
            deviceType?: "desktop" | "mobile" | "tablet" | undefined;
            os?: string | undefined;
            browser?: string | undefined;
        }>>;
    }, "strip", z.ZodTypeAny, {
        email: string & z.BRAND<"Email">;
        password: string;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType?: "desktop" | "mobile" | "tablet" | undefined;
            os?: string | undefined;
            browser?: string | undefined;
        } | undefined;
        rememberMe?: boolean | undefined;
    }, {
        email: string;
        password: string;
        deviceInfo?: {
            userAgent: string;
            ipAddress: string;
            deviceType?: "desktop" | "mobile" | "tablet" | undefined;
            os?: string | undefined;
            browser?: string | undefined;
        } | undefined;
        rememberMe?: boolean | undefined;
    }>;
    readonly ResetPasswordRequest: z.ZodObject<{
        email: z.ZodBranded<z.ZodString, "Email">;
    }, "strip", z.ZodTypeAny, {
        email: string & z.BRAND<"Email">;
    }, {
        email: string;
    }>;
    readonly VerifyEmailRequest: z.ZodObject<{
        token: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        token: string;
    }, {
        token: string;
    }>;
    readonly EnableTwoFactorRequest: z.ZodObject<{
        secret: z.ZodString;
        code: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        code: string;
        secret: string;
    }, {
        code: string;
        secret: string;
    }>;
    readonly DisableTwoFactorRequest: z.ZodObject<{
        password: z.ZodString;
        code: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        code: string;
        password: string;
    }, {
        code: string;
        password: string;
    }>;
    readonly UserResponse: z.ZodObject<{
        id: z.ZodBranded<z.ZodString, "UserId">;
        email: z.ZodString;
        role: z.ZodNativeEnum<typeof UserRole>;
        status: z.ZodNativeEnum<typeof UserStatus>;
        profile: z.ZodObject<{
            firstName: z.ZodString;
            lastName: z.ZodString;
            displayName: z.ZodOptional<z.ZodString>;
            avatar: z.ZodOptional<z.ZodString>;
            phoneNumber: z.ZodOptional<z.ZodString>;
        }, "strip", z.ZodTypeAny, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }, {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        }>;
        lastLoginAt: z.ZodOptional<z.ZodDate>;
        emailVerifiedAt: z.ZodOptional<z.ZodDate>;
        twoFactorEnabled: z.ZodBoolean;
        createdAt: z.ZodDate;
        updatedAt: z.ZodDate;
    }, "strip", z.ZodTypeAny, {
        email: string;
        id: string & z.BRAND<"UserId">;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }, {
        email: string;
        id: string;
        createdAt: Date;
        updatedAt: Date;
        status: UserStatus;
        role: UserRole;
        profile: {
            firstName: string;
            lastName: string;
            phoneNumber?: string | undefined;
            displayName?: string | undefined;
            avatar?: string | undefined;
        };
        twoFactorEnabled: boolean;
        lastLoginAt?: Date | undefined;
        emailVerifiedAt?: Date | undefined;
    }>;
    readonly UserListResponse: z.ZodObject<{
        users: z.ZodArray<z.ZodObject<{
            id: z.ZodBranded<z.ZodString, "UserId">;
            email: z.ZodString;
            role: z.ZodNativeEnum<typeof UserRole>;
            status: z.ZodNativeEnum<typeof UserStatus>;
            profile: z.ZodObject<{
                firstName: z.ZodString;
                lastName: z.ZodString;
                displayName: z.ZodOptional<z.ZodString>;
                avatar: z.ZodOptional<z.ZodString>;
                phoneNumber: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            }, {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            }>;
            lastLoginAt: z.ZodOptional<z.ZodDate>;
            emailVerifiedAt: z.ZodOptional<z.ZodDate>;
            twoFactorEnabled: z.ZodBoolean;
            createdAt: z.ZodDate;
            updatedAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            email: string;
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }, {
            email: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }>, "many">;
        pagination: z.ZodObject<{
            page: z.ZodNumber;
            limit: z.ZodNumber;
            total: z.ZodNumber;
            totalPages: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        }, {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        }>;
    }, "strip", z.ZodTypeAny, {
        users: {
            email: string;
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }, {
        users: {
            email: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }[];
        pagination: {
            page: number;
            limit: number;
            total: number;
            totalPages: number;
        };
    }>;
    readonly LoginResponse: z.ZodObject<{
        user: z.ZodObject<{
            id: z.ZodBranded<z.ZodString, "UserId">;
            email: z.ZodString;
            role: z.ZodNativeEnum<typeof UserRole>;
            status: z.ZodNativeEnum<typeof UserStatus>;
            profile: z.ZodObject<{
                firstName: z.ZodString;
                lastName: z.ZodString;
                displayName: z.ZodOptional<z.ZodString>;
                avatar: z.ZodOptional<z.ZodString>;
                phoneNumber: z.ZodOptional<z.ZodString>;
            }, "strip", z.ZodTypeAny, {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            }, {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            }>;
            lastLoginAt: z.ZodOptional<z.ZodDate>;
            emailVerifiedAt: z.ZodOptional<z.ZodDate>;
            twoFactorEnabled: z.ZodBoolean;
            createdAt: z.ZodDate;
            updatedAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            email: string;
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }, {
            email: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        }>;
        session: z.ZodObject<{
            token: z.ZodString;
            refreshToken: z.ZodString;
            expiresAt: z.ZodDate;
        }, "strip", z.ZodTypeAny, {
            token: string;
            refreshToken: string;
            expiresAt: Date;
        }, {
            token: string;
            refreshToken: string;
            expiresAt: Date;
        }>;
    }, "strip", z.ZodTypeAny, {
        user: {
            email: string;
            id: string & z.BRAND<"UserId">;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        };
        session: {
            token: string;
            refreshToken: string;
            expiresAt: Date;
        };
    }, {
        user: {
            email: string;
            id: string;
            createdAt: Date;
            updatedAt: Date;
            status: UserStatus;
            role: UserRole;
            profile: {
                firstName: string;
                lastName: string;
                phoneNumber?: string | undefined;
                displayName?: string | undefined;
                avatar?: string | undefined;
            };
            twoFactorEnabled: boolean;
            lastLoginAt?: Date | undefined;
            emailVerifiedAt?: Date | undefined;
        };
        session: {
            token: string;
            refreshToken: string;
            expiresAt: Date;
        };
    }>;
    readonly PasswordResetResponse: z.ZodObject<{
        message: z.ZodString;
        resetToken: z.ZodOptional<z.ZodString>;
    }, "strip", z.ZodTypeAny, {
        message: string;
        resetToken?: string | undefined;
    }, {
        message: string;
        resetToken?: string | undefined;
    }>;
    readonly UserSearchFilters: z.ZodObject<{
        query: z.ZodOptional<z.ZodString>;
        role: z.ZodOptional<z.ZodNativeEnum<typeof UserRole>>;
        status: z.ZodOptional<z.ZodNativeEnum<typeof UserStatus>>;
        emailVerified: z.ZodOptional<z.ZodBoolean>;
        twoFactorEnabled: z.ZodOptional<z.ZodBoolean>;
        createdAfter: z.ZodOptional<z.ZodDate>;
        createdBefore: z.ZodOptional<z.ZodDate>;
        lastLoginAfter: z.ZodOptional<z.ZodDate>;
        lastLoginBefore: z.ZodOptional<z.ZodDate>;
    }, "strip", z.ZodTypeAny, {
        status?: UserStatus | undefined;
        role?: UserRole | undefined;
        twoFactorEnabled?: boolean | undefined;
        query?: string | undefined;
        emailVerified?: boolean | undefined;
        createdAfter?: Date | undefined;
        createdBefore?: Date | undefined;
        lastLoginAfter?: Date | undefined;
        lastLoginBefore?: Date | undefined;
    }, {
        status?: UserStatus | undefined;
        role?: UserRole | undefined;
        twoFactorEnabled?: boolean | undefined;
        query?: string | undefined;
        emailVerified?: boolean | undefined;
        createdAfter?: Date | undefined;
        createdBefore?: Date | undefined;
        lastLoginAfter?: Date | undefined;
        lastLoginBefore?: Date | undefined;
    }>;
    readonly UserSortOptions: z.ZodEnum<["createdAt", "updatedAt", "lastLoginAt", "firstName", "lastName", "email", "role", "status"]>;
    readonly ValidationUtils: {
        isStrongPassword: (password: string) => boolean;
        isValidEmail: (email: string) => boolean;
        isPhoneNumber: (phone: string) => boolean;
        validatePasswordStrength: (password: string) => {
            isValid: boolean;
            errors: string[];
        };
    };
};
//# sourceMappingURL=user-schemas.d.ts.map