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),
    selectPackage: z.string().min(1),
    booking: 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),
    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),
  }),
});

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',
    personalAccountSettings: '/home/settings',
    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',
    orderAnalysisPackage: '/home/order-analysis-package',
    // these routes are added as placeholders and can be changed when the pages are added
    myOrders: '/my-orders',
    analysisResults: '/analysis-results',
    orderAnalysis: '/order-analysis',
    orderHealthAnalysis: '/order-health-analysis',
  },
} satisfies z.infer<typeof PathsSchema>);

export default pathsConfig;
