import { z } from 'zod';

const PathsSchema = z.object({
  auth: z.object({
    signIn: z.string().min(1),
    signUp: z.string().min(1),
    verifyMfa: z.string().min(1),
    callback: z.string().min(1),
    passwordReset: z.string().min(1),
    passwordUpdate: z.string().min(1),
    updateAccount: z.string().min(1),
    updateAccountSuccess: z.string().min(1),
    membershipConfirmation: z.string().min(1),
  }),
  app: z.object({
    home: z.string().min(1),
    cart: z.string().min(1),
    selectPackage: z.string().min(1),
    booking: z.string().min(1),
    bookingHandle: z.string().min(1),
    myOrders: z.string().min(1),
    analysisResults: z.string().min(1),
    orderAnalysisPackage: z.string().min(1),
    orderAnalysis: z.string().min(1),
    orderHealthAnalysis: z.string().min(1),
    personalAccountSettings: z.string().min(1),
    personalAccountPreferences: z.string().min(1),
    personalAccountSecurity: z.string().min(1),
    personalAccountBilling: z.string().min(1),
    personalAccountBillingReturn: z.string().min(1),
    accountHome: z.string().min(1),
    accountSettings: z.string().min(1),
    accountBilling: z.string().min(1),
    accountMembers: z.string().min(1),
    accountBillingReturn: z.string().min(1),
    joinTeam: z.string().min(1),
    admin: z.string().min(1),
    doctor: z.string().min(1),
    myJobs: z.string().min(1),
    completedJobs: z.string().min(1),
    openJobs: z.string().min(1),
    analysisDetails: z.string().min(1),
  }),
});

const pathsConfig = PathsSchema.parse({
  auth: {
    signIn: '/auth/sign-in',
    signUp: '/auth/sign-up',
    verifyMfa: '/auth/verify',
    callback: '/auth/callback',
    passwordReset: '/auth/password-reset',
    passwordUpdate: '/update-password',
    updateAccount: '/auth/update-account',
    updateAccountSuccess: '/auth/update-account/success',
    membershipConfirmation: '/auth/membership-confirmation',
  },
  app: {
    home: '/home',
    cart: '/home/cart',
    personalAccountSettings: '/home/settings',
    personalAccountPreferences: '/home/settings/preferences',
    personalAccountSecurity: '/home/settings/security',
    personalAccountBilling: '/home/billing',
    personalAccountBillingReturn: '/home/billing/return',
    accountHome: '/home/[account]',
    accountSettings: `/home/[account]/settings`,
    accountBilling: `/home/[account]/billing`,
    accountMembers: `/home/[account]/members`,
    accountBillingReturn: `/home/[account]/billing/return`,
    joinTeam: '/join',
    selectPackage: '/select-package',
    booking: '/home/booking',
    bookingHandle: '/home/booking/[handle]',
    orderAnalysisPackage: '/home/order-analysis-package',
    myOrders: '/home/order',
    analysisResults: '/home/analysis-results',
    orderAnalysis: '/home/order-analysis',
    orderHealthAnalysis: '/home/order-health-analysis',
    doctor: '/doctor',
    admin: '/admin',
    myJobs: '/doctor/my-jobs',
    completedJobs: '/doctor/completed-jobs',
    openJobs: '/doctor/open-jobs',
    analysisDetails: 'doctor/analysis',
  },
} satisfies z.infer<typeof PathsSchema>);

export default pathsConfig;
