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
TypeScript
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