"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.checkPasswordNeededResponseSchema = exports.ssoLinkResponseSchema = exports.passwordChangeResultSchema = exports.signupResultSchema = exports.authResponseSchema = exports.authTokensSchema = exports.refreshTokenRequestSchema = exports.checkPasswordNeededRequestSchema = exports.ssoLinkRequestSchema = exports.accountStatusRequestSchema = exports.updateAddressRequestSchema = exports.updateProfileRequestSchema = exports.updateCustomerProfileRequestSchema = exports.validateSignupRequestSchema = exports.linkWhmcsRequestSchema = exports.changePasswordRequestSchema = exports.setPasswordRequestSchema = exports.passwordResetSchema = exports.passwordResetRequestSchema = exports.signupRequestSchema = exports.signupInputSchema = exports.loginRequestSchema = void 0; const zod_1 = require("zod"); const schema_1 = require("../common/schema"); const schema_2 = require("../customer/schema"); const genderEnum = zod_1.z.enum(["male", "female", "other"]); exports.loginRequestSchema = zod_1.z.object({ email: schema_1.emailSchema, password: zod_1.z.string().min(1, "Password is required"), }); exports.signupInputSchema = zod_1.z.object({ email: schema_1.emailSchema, password: schema_1.passwordSchema, firstName: schema_1.nameSchema, lastName: schema_1.nameSchema, company: zod_1.z.string().optional(), phone: schema_1.phoneSchema, sfNumber: zod_1.z.string().min(6, "Customer number must be at least 6 characters"), address: schema_2.addressSchema.optional(), nationality: zod_1.z.string().optional(), dateOfBirth: zod_1.z.string().optional(), gender: genderEnum.optional(), acceptTerms: zod_1.z.boolean(), marketingConsent: zod_1.z.boolean().optional(), }); exports.signupRequestSchema = exports.signupInputSchema.transform(data => ({ ...data, firstname: data.firstName, lastname: data.lastName, companyname: data.company, phonenumber: data.phone, })); exports.passwordResetRequestSchema = zod_1.z.object({ email: schema_1.emailSchema }); exports.passwordResetSchema = zod_1.z.object({ token: zod_1.z.string().min(1, "Reset token is required"), password: schema_1.passwordSchema, }); exports.setPasswordRequestSchema = zod_1.z.object({ email: schema_1.emailSchema, password: schema_1.passwordSchema, }); exports.changePasswordRequestSchema = zod_1.z.object({ currentPassword: zod_1.z.string().min(1, "Current password is required"), newPassword: schema_1.passwordSchema, }); exports.linkWhmcsRequestSchema = zod_1.z.object({ email: schema_1.emailSchema, password: zod_1.z.string().min(1, "Password is required"), }); exports.validateSignupRequestSchema = zod_1.z.object({ sfNumber: zod_1.z.string().min(1, "Customer number is required"), }); exports.updateCustomerProfileRequestSchema = zod_1.z.object({ firstname: schema_1.nameSchema.optional(), lastname: schema_1.nameSchema.optional(), companyname: zod_1.z.string().max(100).optional(), phonenumber: schema_1.phoneSchema.optional(), address1: zod_1.z.string().max(200).optional(), address2: zod_1.z.string().max(200).optional(), city: zod_1.z.string().max(100).optional(), state: zod_1.z.string().max(100).optional(), postcode: zod_1.z.string().max(20).optional(), country: zod_1.z.string().length(2).optional(), language: zod_1.z.string().max(10).optional(), }); exports.updateProfileRequestSchema = exports.updateCustomerProfileRequestSchema; exports.updateAddressRequestSchema = exports.updateCustomerProfileRequestSchema; exports.accountStatusRequestSchema = zod_1.z.object({ email: schema_1.emailSchema, }); exports.ssoLinkRequestSchema = zod_1.z.object({ destination: zod_1.z.string().optional(), }); exports.checkPasswordNeededRequestSchema = zod_1.z.object({ email: schema_1.emailSchema, }); exports.refreshTokenRequestSchema = zod_1.z.object({ refreshToken: zod_1.z.string().min(1, "Refresh token is required").optional(), deviceId: zod_1.z.string().optional(), }); exports.authTokensSchema = zod_1.z.object({ accessToken: zod_1.z.string().min(1, "Access token is required"), refreshToken: zod_1.z.string().min(1, "Refresh token is required"), expiresAt: zod_1.z.string().min(1, "Access token expiry required"), refreshExpiresAt: zod_1.z.string().min(1, "Refresh token expiry required"), tokenType: zod_1.z.literal("Bearer"), }); exports.authResponseSchema = zod_1.z.object({ user: schema_2.userSchema, tokens: exports.authTokensSchema, }); exports.signupResultSchema = zod_1.z.object({ user: schema_2.userSchema, tokens: exports.authTokensSchema, }); exports.passwordChangeResultSchema = zod_1.z.object({ user: schema_2.userSchema, tokens: exports.authTokensSchema, }); exports.ssoLinkResponseSchema = zod_1.z.object({ url: zod_1.z.url(), expiresAt: zod_1.z.string(), }); exports.checkPasswordNeededResponseSchema = zod_1.z.object({ needsPasswordSet: zod_1.z.boolean(), userExists: zod_1.z.boolean(), email: zod_1.z.email().optional(), }); //# sourceMappingURL=schema.js.map