{"version":3,"sources":["../src/index.ts","../src/schemas/common.schemas.ts","../src/schemas/shopkeeper.schemas.ts","../src/schemas/storefront.schemas.ts","../src/schemas/shopkeeper-sync.schemas.ts","../src/schemas/shopkeeper-whatsapp.schemas.ts","../src/schemas/shopkeeper-backup.schemas.ts","../src/schemas/shopkeeper-billing.schemas.ts","../src/schemas/shopkeeper-installer.schemas.ts","../src/schemas/shopkeeper-wallet.schemas.ts","../src/schemas/shopkeeper-telephony.schemas.ts","../src/schemas/shopkeeper-vision.schemas.ts","../src/schemas/shopkeeper-insights.schemas.ts","../src/routes/shopkeeper-device.routes.ts","../src/routes/shopkeeper.routes.ts","../src/routes/shopkeeper-sync.routes.ts","../src/routes/shopkeeper-backup.routes.ts","../src/routes/shopkeeper-whatsapp.routes.ts","../src/routes/shopkeeper-billing.routes.ts","../src/routes/shopkeeper-reports.routes.ts","../src/routes/shopkeeper-installer.routes.ts","../src/routes/shopkeeper-barcodes.routes.ts","../src/routes/shopkeeper-wallet.routes.ts","../src/routes/shopkeeper-analytics.routes.ts","../src/routes/shopkeeper-telephony.routes.ts","../src/routes/shopkeeper-vision.routes.ts","../src/routes/shopkeeper-insights.routes.ts","../src/routes/shopkeeper-audit.routes.ts","../src/routes/shopkeeper-voice.routes.ts","../src/routes/shopkeeper-mobile-llm.routes.ts","../src/routes/shopkeeper-reservations.routes.ts","../src/routes/shopkeeper-intelligence.routes.ts","../src/routes/shopkeeper-settings.routes.ts","../src/schemas/shopkeeper-settings.schemas.ts","../src/routes/storefront.routes.ts","../src/schemas/shopkeeper-payments.schemas.ts","../src/routes/shopkeeper-payments.routes.ts","../src/schemas/shopkeeper-group-buy.schemas.ts","../src/routes/shopkeeper-group-buy.routes.ts","../src/schemas/platform-market-intelligence.schemas.ts","../src/routes/platform-market-intelligence.routes.ts","../src/routes/shopkeeper-trade-agent.routes.ts","../src/schemas/shopkeeper-trade-agent.schemas.ts"],"sourcesContent":["/**\n * Digital Shopkeeper API Contracts v2.0\n * Full spec from backend-api-design.md — Zod schemas and ts-rest routes.\n */\n\nimport { initContract } from '@ts-rest/core';\n\nexport * from './schemas/common.schemas';\nexport * from './schemas/shopkeeper.schemas';\nexport * from './schemas/shopkeeper-sync.schemas';\nexport * from './schemas/shopkeeper-whatsapp.schemas';\nexport * from './schemas/shopkeeper-backup.schemas';\nexport * from './schemas/shopkeeper-billing.schemas';\nexport * from './schemas/shopkeeper-installer.schemas';\nexport * from './schemas/shopkeeper-wallet.schemas';\nexport * from './schemas/shopkeeper-telephony.schemas';\nexport * from './schemas/shopkeeper-vision.schemas';\nexport * from './schemas/shopkeeper-insights.schemas';\n\nexport * from './routes/shopkeeper-device.routes';\nexport * from './routes/shopkeeper.routes';\nexport * from './routes/shopkeeper-sync.routes';\nexport * from './routes/shopkeeper-backup.routes';\nexport * from './routes/shopkeeper-whatsapp.routes';\nexport * from './routes/shopkeeper-billing.routes';\nexport * from './routes/shopkeeper-reports.routes';\nexport * from './routes/shopkeeper-installer.routes';\nexport * from './routes/shopkeeper-barcodes.routes';\nexport * from './routes/shopkeeper-wallet.routes';\nexport * from './routes/shopkeeper-analytics.routes';\nexport * from './routes/shopkeeper-telephony.routes';\nexport * from './routes/shopkeeper-vision.routes';\nexport * from './routes/shopkeeper-insights.routes';\nexport * from './routes/shopkeeper-audit.routes';\nexport * from './routes/shopkeeper-voice.routes';\nexport * from './routes/shopkeeper-mobile-llm.routes';\nexport * from './routes/shopkeeper-reservations.routes';\nexport * from './routes/shopkeeper-intelligence.routes';\nexport * from './routes/shopkeeper-settings.routes';\nexport * from './schemas/shopkeeper-settings.schemas';\nexport * from './schemas/storefront.schemas';\nexport * from './routes/storefront.routes';\nexport * from './schemas/shopkeeper-payments.schemas';\nexport * from './routes/shopkeeper-payments.routes';\nexport * from './schemas/shopkeeper-group-buy.schemas';\nexport * from './routes/shopkeeper-group-buy.routes';\nexport * from './schemas/platform-market-intelligence.schemas';\nexport * from './routes/platform-market-intelligence.routes';\n\nimport { shopkeeperDeviceContract } from './routes/shopkeeper-device.routes';\nimport { shopkeeperContract } from './routes/shopkeeper.routes';\nimport { shopkeeperSyncContract } from './routes/shopkeeper-sync.routes';\nimport { shopkeeperBackupContract } from './routes/shopkeeper-backup.routes';\nimport { shopkeeperWhatsappContract } from './routes/shopkeeper-whatsapp.routes';\nimport { shopkeeperBillingContract } from './routes/shopkeeper-billing.routes';\nimport { shopkeeperReportsContract } from './routes/shopkeeper-reports.routes';\nimport { shopkeeperInstallerContract } from './routes/shopkeeper-installer.routes';\nimport { shopkeeperBarcodesContract } from './routes/shopkeeper-barcodes.routes';\nimport { shopkeeperWalletContract } from './routes/shopkeeper-wallet.routes';\nimport { shopkeeperAnalyticsContract } from './routes/shopkeeper-analytics.routes';\nimport { shopkeeperTelephonyContract } from './routes/shopkeeper-telephony.routes';\nimport { shopkeeperVisionContract } from './routes/shopkeeper-vision.routes';\nimport { shopkeeperInsightsContract } from './routes/shopkeeper-insights.routes';\nimport { shopkeeperAuditContract } from './routes/shopkeeper-audit.routes';\nimport { shopkeeperVoiceContract } from './routes/shopkeeper-voice.routes';\nimport { shopkeeperTradeAgentContract } from './routes/shopkeeper-trade-agent.routes';\nimport { shopkeeperMobileLlmContract } from './routes/shopkeeper-mobile-llm.routes';\nimport { shopkeeperReservationsContract } from './routes/shopkeeper-reservations.routes';\nimport { shopkeeperIntelligenceContract } from './routes/shopkeeper-intelligence.routes';\nimport { shopkeeperSettingsContract } from './routes/shopkeeper-settings.routes';\nimport { storefrontContract } from './routes/storefront.routes';\nimport { shopkeeperPaymentsContract } from './routes/shopkeeper-payments.routes';\nimport { shopkeeperGroupBuyContract } from './routes/shopkeeper-group-buy.routes';\nimport { platformMarketIntelligenceContract } from './routes/platform-market-intelligence.routes';\n\nexport * from './schemas/shopkeeper-trade-agent.schemas';\nexport * from './routes/shopkeeper-trade-agent.routes';\n\nconst c = initContract();\n\nexport const apiContract = c.router(\n  {\n    shopkeeperDevice: shopkeeperDeviceContract,\n    shopkeeper: shopkeeperContract,\n    shopkeeperSync: shopkeeperSyncContract,\n    shopkeeperBackup: shopkeeperBackupContract,\n    shopkeeperWhatsapp: shopkeeperWhatsappContract,\n    shopkeeperBilling: shopkeeperBillingContract,\n    shopkeeperWallet: shopkeeperWalletContract,\n    shopkeeperReports: shopkeeperReportsContract,\n    shopkeeperAnalytics: shopkeeperAnalyticsContract,\n    shopkeeperInstaller: shopkeeperInstallerContract,\n    shopkeeperBarcodes: shopkeeperBarcodesContract,\n    shopkeeperTelephony: shopkeeperTelephonyContract,\n    shopkeeperVision: shopkeeperVisionContract,\n    shopkeeperInsights: shopkeeperInsightsContract,\n    shopkeeperAudit: shopkeeperAuditContract,\n    shopkeeperVoice: shopkeeperVoiceContract,\n    shopkeeperTradeAgent: shopkeeperTradeAgentContract,\n    shopkeeperMobileLlm: shopkeeperMobileLlmContract,\n    shopkeeperReservations: shopkeeperReservationsContract,\n    shopkeeperIntelligence: shopkeeperIntelligenceContract,\n    shopkeeperSettings: shopkeeperSettingsContract,\n    storefront: storefrontContract,\n    shopkeeperPayments: shopkeeperPaymentsContract,\n    shopkeeperGroupBuy: shopkeeperGroupBuyContract,\n    platformMarketIntelligence: platformMarketIntelligenceContract,\n  },\n  { pathPrefix: '/api/v1' },\n);\n\nexport type ApiContract = typeof apiContract;\n","import { z } from 'zod';\n\nexport const timestampSchema = z.object({\n  createdAt: z.coerce.date(),\n  updatedAt: z.coerce.date(),\n});\n\nexport const paginationQuerySchema = z.object({\n  page: z.coerce.number().int().positive().default(1),\n  limit: z.coerce.number().int().positive().max(100).default(20),\n});\n\nexport const paginationResponseSchema = z.object({\n  page: z.number().int().positive(),\n  limit: z.number().int().positive(),\n  total: z.number().int().nonnegative(),\n  totalPages: z.number().int().nonnegative(),\n});\n\nexport const errorResponseSchema = z.object({\n  message: z.string(),\n  code: z.string().optional(),\n  details: z.record(z.unknown()).optional(),\n});\n\n/** Standard body for HTTP 402 — clients branch on `code === 'INSUFFICIENT_TOKENS'`. */\nexport const insufficientTokensErrorSchema = z.object({\n  message: z.string(),\n  code: z.literal('INSUFFICIENT_TOKENS'),\n  requiredTokens: z.number().int().nonnegative(),\n  balance: z.number().int().nonnegative(),\n});\n\nexport const successResponseSchema = z.object({\n  message: z.string(),\n});\n\nexport type TimestampFields = z.infer<typeof timestampSchema>;\nexport type PaginationQuery = z.infer<typeof paginationQuerySchema>;\nexport type PaginationResponse = z.infer<typeof paginationResponseSchema>;\nexport type ErrorResponse = z.infer<typeof errorResponseSchema>;\nexport type InsufficientTokensError = z.infer<typeof insufficientTokensErrorSchema>;\nexport type SuccessResponse = z.infer<typeof successResponseSchema>;\n","import { z } from 'zod';\nimport { timestampSchema } from './common.schemas';\nimport { shopOnlineOrderStatusEnum } from './storefront.schemas';\n\nexport const saleTransactionTypeEnum = z.enum(['sale', 'refund']);\nexport const agentLanguageEnum = z.enum(['en', 'pcm', 'ha', 'yo', 'ig']);\nexport const paymentMethodEnum = z.enum([\n  'cash',\n  'transfer',\n  'credit',\n  'momo',\n  'opay',\n  'online_paystack',\n]);\n\nexport const paymentSplitSchema = z.object({\n  method: paymentMethodEnum,\n  amount: z.number().positive(),\n});\n\nexport const paymentSplitsSchema = z.array(paymentSplitSchema).min(1);\nexport const inputMethodEnum = z.enum([\n  'litepos',\n  'litepos_barcode',\n  'voice_ptt',\n  'voice_kiosk',\n  'voice_whatsapp',\n  'voice_call',\n  'telephony',\n  'vision',\n  'storefront_web',\n]);\nexport const subscriptionTierEnum = z.enum(['free', 'standard', 'pro']);\nexport const shopStatusEnum = z.enum(['active', 'suspended', 'churned']);\nexport const movementTypeEnum = z.enum(['sale', 'restock', 'adjustment', 'return']);\nexport const deviceRoleEnum = z.enum(['owner', 'assistant']);\n\nexport const shopOwnerSchema = z\n  .object({\n    id: z.string().uuid(),\n    name: z.string(),\n    phone: z.string(),\n    email: z.string().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const shopSchema = z\n  .object({\n    id: z.string().uuid(),\n    ownerId: z.string().uuid(),\n    shopName: z.string(),\n    agentName: z.string(),\n    agentLanguage: agentLanguageEnum,\n    whatsappPaired: z.boolean(),\n    country: z.string(),\n    currency: z.string(),\n    timezone: z.string(),\n    businessType: z.string().nullable(),\n    location: z\n      .object({\n        lat: z.number().optional(),\n        lng: z.number().optional(),\n        address: z.string().optional(),\n        market: z.string().optional(),\n        city: z.string().optional(),\n        state: z.string().optional(),\n        pickupHours: z.string().optional(),\n      })\n      .nullable(),\n    status: shopStatusEnum,\n    subscriptionTier: subscriptionTierEnum,\n    lastSyncAt: z.coerce.date().nullable(),\n    lastActiveAt: z.coerce.date().nullable(),\n    storefrontSlug: z.string().nullable(),\n    storefrontEnabled: z.boolean(),\n    paystackSubaccountCode: z.string().nullable(),\n    storefrontDirectTransferEnabled: z.boolean(),\n    storefrontPaymentInstructions: z.string().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const shopListItemSchema = z.object({\n  id: z.string().uuid(),\n  shopName: z.string(),\n  agentName: z.string(),\n  businessType: z.string().nullable(),\n  status: shopStatusEnum,\n});\n\nexport const registerOwnerAndShopSchema = z.object({\n  ownerName: z.string().min(1).max(100),\n  phone: z.string().min(10).max(15),\n  pin: z.string().min(4).max(6),\n  otpCode: z.string().length(6),\n  shopName: z.string().min(1).max(200),\n  agentName: z.string().min(1).max(50),\n  agentLanguage: agentLanguageEnum.default('en'),\n  country: z.string().length(2).default('NG'),\n  currency: z.string().length(3).default('NGN'),\n  timezone: z.string().default('Africa/Lagos'),\n  businessType: z.string().max(50).optional(),\n  location: z\n    .object({\n      lat: z.number().optional(),\n      lng: z.number().optional(),\n      address: z.string().optional(),\n      market: z.string().optional(),\n      city: z.string().optional(),\n      state: z.string().optional(),\n      pickupHours: z.string().optional(),\n    })\n    .optional(),\n  deviceId: z.string(),\n  deviceName: z.string().optional(),\n  osVersion: z.string().optional(),\n  appVersion: z.string().optional(),\n  installerCode: z.string().optional(),\n});\n\nexport const addShopSchema = z.object({\n  shopName: z.string().min(1).max(200),\n  agentName: z.string().min(1).max(50),\n  agentLanguage: agentLanguageEnum.default('en'),\n  country: z.string().length(2).default('NG'),\n  currency: z.string().length(3).default('NGN'),\n  businessType: z.string().max(50).optional(),\n  location: z\n    .object({\n      lat: z.number().optional(),\n      lng: z.number().optional(),\n      address: z.string().optional(),\n      market: z.string().optional(),\n      city: z.string().optional(),\n      state: z.string().optional(),\n      pickupHours: z.string().optional(),\n    })\n    .optional(),\n});\n\nexport const updateShopSchema = z.object({\n  ownerName: z.string().min(1).max(100).optional(),\n  shopName: z.string().min(1).max(200).optional(),\n  agentName: z.string().min(1).max(50).optional(),\n  agentLanguage: agentLanguageEnum.optional(),\n  agentPersonality: z.record(z.unknown()).optional(),\n  businessType: z.string().max(50).optional(),\n  location: z\n    .object({\n      lat: z.number().optional(),\n      lng: z.number().optional(),\n      address: z.string().optional(),\n      market: z.string().optional(),\n      city: z.string().optional(),\n      state: z.string().optional(),\n      pickupHours: z.string().optional(),\n    })\n    .optional(),\n  storefrontSlug: z.union([z.string().max(80), z.null()]).optional(),\n  storefrontEnabled: z.boolean().optional(),\n  paystackSubaccountCode: z.string().max(100).nullable().optional(),\n  storefrontDirectTransferEnabled: z.boolean().optional(),\n  storefrontPaymentInstructions: z\n    .union([z.string().max(2000), z.null()])\n    .optional(),\n});\n\nexport const shopProductSchema = z\n  .object({\n    id: z.string().uuid(),\n    name: z.string(),\n    nameVariants: z.string().nullable(),\n    category: z.string().nullable(),\n    unit: z.string().nullable(),\n    currentStock: z.number(),\n    costPrice: z.number().nullable(),\n    sellingPrice: z.number().nullable(),\n    targetMarginPct: z.number().nullable(),\n    autoReorderEnabled: z.boolean(),\n    autoReorderMaxAmount: z.number().nullable(),\n    preferredSupplierId: z.string().nullable(),\n    reorderThreshold: z.number().nullable(),\n    barcode: z.string().nullable(),\n    iconPhotoUrl: z.string().nullable(),\n    gridPosition: z.number().int().nullable(),\n    gridColor: z.string().nullable(),\n    isActive: z.boolean(),\n    visibleOnline: z.boolean(),\n  })\n  .merge(timestampSchema);\n\nexport const createProductSchema = z.object({\n  name: z.string().min(1).max(200),\n  nameVariants: z.string().optional(),\n  category: z.string().optional(),\n  unit: z.string().optional(),\n  currentStock: z.number().min(0).default(0),\n  costPrice: z.number().min(0).optional(),\n  sellingPrice: z.number().min(0).optional(),\n  targetMarginPct: z.number().min(0).max(100).optional(),\n  autoReorderEnabled: z.boolean().optional(),\n  autoReorderMaxAmount: z.number().min(0).optional(),\n  preferredSupplierId: z.string().optional(),\n  reorderThreshold: z.number().min(0).optional(),\n  barcode: z.string().optional(),\n  gridPosition: z.number().int().optional(),\n  gridColor: z.string().optional(),\n});\n\nexport const updateProductSchema = createProductSchema.partial().extend({\n  iconPhotoUrl: z.string().url().optional(),\n  visibleOnline: z.boolean().optional(),\n});\n\nexport const shopSaleSchema = z.object({\n  id: z.string().uuid(),\n  productId: z.string().uuid(),\n  quantity: z.number(),\n  unitPrice: z.number(),\n  totalAmount: z.number(),\n  paymentMethod: paymentMethodEnum,\n  paymentSplits: paymentSplitsSchema.nullable().optional(),\n  inputMethod: inputMethodEnum,\n  recordedBy: z.string(),\n  transcription: z.string().nullable(),\n  confidenceScore: z.number().nullable(),\n  approved: z.boolean(),\n  receiptPrinted: z.boolean(),\n  recordedAt: z.coerce.date(),\n  customerId: z.string().uuid().nullable(),\n  callSessionId: z.string().uuid().nullable(),\n  onlineOrderId: z.string().uuid().nullable(),\n  transactionType: saleTransactionTypeEnum.default('sale'),\n  originalSaleId: z.string().uuid().nullable(),\n  staffProfileId: z.string().uuid().nullable(),\n});\n\nexport const shopCustomerSchema = z\n  .object({\n    id: z.string().uuid(),\n    name: z.string(),\n    phone: z.string().nullable(),\n    creditBalance: z.number(),\n    totalSpent: z.number(),\n    lastVisitAt: z.coerce.date().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const createCustomerSchema = z.object({\n  name: z.string().min(1).max(200),\n  phone: z.string().optional(),\n});\n\nexport const updateCustomerSchema = z.object({\n  name: z.string().min(1).max(200).optional(),\n  phone: z.string().optional(),\n});\n\nexport const creditHistoryEventTypeEnum = z.enum(['credit_sale', 'repayment']);\n\nexport const creditHistoryEventSchema = z.object({\n  id: z.string().uuid(),\n  type: creditHistoryEventTypeEnum,\n  amount: z.number(),\n  occurredAt: z.coerce.date(),\n  paymentMethod: z.string().nullable(),\n  note: z.string().nullable(),\n  saleId: z.string().uuid().nullable(),\n  productId: z.string().uuid().nullable(),\n});\n\nexport const createCreditPaymentSchema = z.object({\n  amount: z.number().positive(),\n  paymentMethod: z.string().max(50).optional(),\n  note: z.string().max(500).optional(),\n});\n\nexport const debtReminderChannelEnum = z.enum(['whatsapp', 'sms']);\n\nexport const sendCustomerReminderSchema = z.object({\n  channel: debtReminderChannelEnum,\n});\n\nexport const sendCustomerReminderResponseSchema = z.object({\n  message: z.string(),\n  channel: debtReminderChannelEnum,\n});\n\nexport const reEngageCustomerSchema = z.object({\n  /** Skip at_risk tag check when owner explicitly approves. */\n  ownerOverride: z.boolean().optional(),\n});\n\nexport const reEngageCustomerResponseSchema = z.object({\n  message: z.string(),\n  messageId: z.string().uuid().optional(),\n});\n\nexport const createSaleSchema = z\n  .object({\n    productId: z.string().uuid(),\n    quantity: z.number().positive(),\n    unitPrice: z.number().min(0).optional(),\n    paymentMethod: paymentMethodEnum.default('cash'),\n    paymentSplits: paymentSplitsSchema.optional(),\n    inputMethod: inputMethodEnum.default('litepos'),\n    customerId: z.string().uuid().optional(),\n    staffProfileId: z.string().uuid().optional(),\n    recordedAt: z.coerce.date().optional(),\n  })\n  .superRefine((data, ctx) => {\n    const hasCreditSplit =\n      data.paymentSplits?.some((split) => split.method === 'credit') ?? false;\n    if (hasCreditSplit && !data.customerId) {\n      ctx.addIssue({\n        code: z.ZodIssueCode.custom,\n        message: 'customerId is required when payment includes credit',\n        path: ['customerId'],\n      });\n    }\n  });\n\nexport const stockMovementSchema = z.object({\n  id: z.string().uuid(),\n  productId: z.string().uuid(),\n  movementType: movementTypeEnum,\n  quantity: z.number(),\n  balanceAfter: z.number(),\n  source: z.string().nullable(),\n  notes: z.string().nullable(),\n  callSessionId: z.string().uuid().nullable(),\n  createdAt: z.coerce.date(),\n});\n\nexport const storefrontOrderStatusFilterEnum = z.enum([\n  'all',\n  'awaiting_payment',\n  'awaiting_approval',\n  'paid',\n  'reserved',\n  'ready',\n  'collected',\n  'cancelled',\n]);\n\nexport const storefrontOrderSchema = z.object({\n  id: z.string().uuid(),\n  status: shopOnlineOrderStatusEnum,\n  currency: z.string(),\n  totalAmount: z.number(),\n  buyerEmail: z.string(),\n  buyerPhone: z.string().nullable(),\n  buyerName: z.string().nullable(),\n  itemCount: z.number(),\n  itemsPreview: z.array(z.string()),\n  trackingUrl: z.string().url(),\n  createdAt: z.coerce.date(),\n  updatedAt: z.coerce.date(),\n});\n\n/** @deprecated Use storefrontOrderSchema */\nexport const storefrontManualOrderSchema = storefrontOrderSchema;\n\nexport const updateStorefrontOrderStatusBodySchema = z.object({\n  action: z.enum(['approve', 'ready', 'collected', 'cancel']),\n});\n\nexport const updateStorefrontOrderStatusResponseSchema = z.object({\n  id: z.string().uuid(),\n  status: shopOnlineOrderStatusEnum,\n});\n\nexport const dailyReportSchema = z.object({\n  id: z.string().uuid(),\n  reportDate: z.coerce.date(),\n  totalSales: z.number(),\n  totalTransactions: z.number(),\n  salesByMethod: z.object({\n    litepos: z.number(),\n    litepos_barcode: z.number(),\n    voice_ptt: z.number(),\n    voice_kiosk: z.number(),\n    voice_whatsapp: z.number(),\n    voice_call: z.number(),\n    telephony: z.number(),\n    vision: z.number(),\n  }),\n  salesByPayment: z.object({\n    cash: z.number(),\n    transfer: z.number(),\n    credit: z.number(),\n    momo: z.number(),\n    opay: z.number(),\n  }),\n  topProducts: z.array(\n    z.object({\n      productId: z.string().uuid(),\n      name: z.string(),\n      qty: z.number(),\n      revenue: z.number(),\n    }),\n  ),\n  lowStockItems: z.array(\n    z.object({\n      productId: z.string().uuid(),\n      name: z.string(),\n      currentStock: z.number(),\n    }),\n  ),\n  callSummary: z\n    .object({\n      totalCalls: z.number(),\n      totalDuration: z.number(),\n      proactiveCalls: z.number(),\n      actionsFromCalls: z.number(),\n    })\n    .nullable(),\n  tokensUsed: z.number().int().nullable(),\n  sentViaWhatsapp: z.boolean(),\n  generatedAt: z.coerce.date(),\n});\n\nexport type ShopOwner = z.infer<typeof shopOwnerSchema>;\nexport type Shop = z.infer<typeof shopSchema>;\nexport type ShopListItem = z.infer<typeof shopListItemSchema>;\nexport type RegisterOwnerAndShopInput = z.infer<typeof registerOwnerAndShopSchema>;\nexport type AddShopInput = z.infer<typeof addShopSchema>;\nexport type UpdateShopInput = z.infer<typeof updateShopSchema>;\nexport type ShopProduct = z.infer<typeof shopProductSchema>;\nexport type CreateProductInput = z.infer<typeof createProductSchema>;\nexport type UpdateProductInput = z.infer<typeof updateProductSchema>;\nexport type ShopSale = z.infer<typeof shopSaleSchema>;\nexport type ShopCustomer = z.infer<typeof shopCustomerSchema>;\nexport type CreateCustomerInput = z.infer<typeof createCustomerSchema>;\nexport type UpdateCustomerInput = z.infer<typeof updateCustomerSchema>;\nexport type CreditHistoryEvent = z.infer<typeof creditHistoryEventSchema>;\nexport type CreateCreditPaymentInput = z.infer<typeof createCreditPaymentSchema>;\nexport type DebtReminderChannel = z.infer<typeof debtReminderChannelEnum>;\nexport type SendCustomerReminderInput = z.infer<typeof sendCustomerReminderSchema>;\nexport type PaymentSplit = z.infer<typeof paymentSplitSchema>;\nexport type CreateSaleInput = z.infer<typeof createSaleSchema>;\nexport type StockMovement = z.infer<typeof stockMovementSchema>;\nexport type StorefrontOrder = z.infer<typeof storefrontOrderSchema>;\nexport type StorefrontManualOrder = StorefrontOrder;\nexport type UpdateStorefrontOrderStatusInput = z.infer<\n  typeof updateStorefrontOrderStatusBodySchema\n>;\nexport type DailyReport = z.infer<typeof dailyReportSchema>;\n","import { z } from 'zod';\n\nexport const shopLocationSchema = z.object({\n  lat: z.number().optional(),\n  lng: z.number().optional(),\n  address: z.string().optional(),\n  market: z.string().optional(),\n  city: z.string().optional(),\n  state: z.string().optional(),\n  pickupHours: z.string().optional(),\n});\n\nexport const shopOnlineOrderStatusEnum = z.enum([\n  'pending_payment',\n  'awaiting_manual_payment',\n  'paid',\n  'reserved',\n  'ready_for_pickup',\n  'collected',\n  'cancelled',\n  'failed',\n  'expired',\n]);\n\nexport const storefrontPublicProductSchema = z.object({\n  id: z.string().uuid(),\n  name: z.string(),\n  sellingPrice: z.number().nullable(),\n  iconPhotoUrl: z.string().nullable(),\n  category: z.string().nullable(),\n  unit: z.string().nullable(),\n  currentStock: z.number(),\n});\n\nexport const storefrontPublicShopSchema = z.object({\n  slug: z.string(),\n  shopName: z.string(),\n  currency: z.string(),\n  acceptsPaystack: z.boolean(),\n  acceptsDirectTransfer: z.boolean(),\n  paymentInstructions: z.string().nullable(),\n  location: shopLocationSchema.nullable(),\n});\n\nexport const storefrontGetShopResponseSchema = z.object({\n  shop: storefrontPublicShopSchema,\n  products: z.array(storefrontPublicProductSchema),\n});\n\nexport const storefrontCheckoutLineSchema = z.object({\n  productId: z.string().uuid(),\n  quantity: z.number().positive(),\n});\n\nexport const storefrontCheckoutBodySchema = z.object({\n  items: z.array(storefrontCheckoutLineSchema).min(1),\n  buyerEmail: z.string().email(),\n  buyerPhone: z.string().min(1).max(20),\n  buyerName: z.string().max(200).optional(),\n  paymentMethod: z.enum(['paystack', 'direct_transfer']).default('paystack'),\n  paymentPath: z.enum(['pay_now', 'reserve']).default('pay_now'),\n});\n\nexport const storefrontCheckoutResponseSchema = z.object({\n  checkoutType: z.enum(['paystack_redirect', 'manual_transfer', 'reserved']),\n  paymentUrl: z.string().url().optional(),\n  reference: z.string().optional(),\n  orderId: z.string().uuid(),\n  instructions: z.string().optional(),\n  trackingUrl: z.string().url(),\n});\n\nexport const storefrontVerifyPaymentBodySchema = z.object({\n  reference: z.string().min(10),\n});\n\nexport const storefrontVerifyPaymentResponseSchema = z.object({\n  verified: z.boolean(),\n  orderId: z.string().uuid().optional(),\n});\n\nexport const storefrontOrderTimelineStepSchema = z.object({\n  key: z.string(),\n  label: z.string(),\n  completed: z.boolean(),\n  current: z.boolean(),\n});\n\nexport const storefrontPublicOrderLineSchema = z.object({\n  productName: z.string(),\n  quantity: z.number(),\n  unitPrice: z.number(),\n  lineTotal: z.number(),\n});\n\nexport const storefrontPublicOrderSchema = z.object({\n  id: z.string().uuid(),\n  shopName: z.string(),\n  status: shopOnlineOrderStatusEnum,\n  currency: z.string(),\n  totalAmount: z.number(),\n  items: z.array(storefrontPublicOrderLineSchema),\n  pickupLocation: shopLocationSchema.nullable(),\n  timeline: z.array(storefrontOrderTimelineStepSchema),\n  createdAt: z.coerce.date(),\n  updatedAt: z.coerce.date(),\n});\n\nexport const storefrontLocationSchema = z.object({\n  market: z.string().optional(),\n  city: z.string().optional(),\n});\n\nexport const storefrontFeaturedShopSchema = z.object({\n  slug: z.string(),\n  shopName: z.string(),\n  location: storefrontLocationSchema.nullable(),\n  productCount: z.number().int().nonnegative(),\n});\n\nexport const storefrontMarketQuerySchema = z.object({\n  city: z.string().optional(),\n  market: z.string().optional(),\n});\n\nexport const storefrontMarketResponseSchema = z.object({\n  featuredShops: z.array(storefrontFeaturedShopSchema),\n  categories: z.array(z.string()),\n  city: z.string().optional(),\n});\n\nexport const storefrontDirectoryQuerySchema = z.object({\n  city: z.string().optional(),\n  market: z.string().optional(),\n  category: z.string().optional(),\n  limit: z.coerce.number().int().positive().max(100).default(20),\n  offset: z.coerce.number().int().nonnegative().default(0),\n});\n\nexport const storefrontDirectoryShopSchema = z.object({\n  slug: z.string(),\n  shopName: z.string(),\n  location: storefrontLocationSchema.nullable(),\n  categoryTags: z.array(z.string()),\n  productCount: z.number().int().nonnegative(),\n});\n\nexport const storefrontListShopsResponseSchema = z.object({\n  shops: z.array(storefrontDirectoryShopSchema),\n  total: z.number().int().nonnegative(),\n  limit: z.number().int().positive(),\n  offset: z.number().int().nonnegative(),\n});\n\nexport const storefrontMarketSearchQuerySchema = z.object({\n  q: z.string().min(1),\n  city: z.string().optional(),\n  market: z.string().optional(),\n  category: z.string().optional(),\n  inStockOnly: z\n    .union([z.boolean(), z.enum(['true', 'false', '1', '0'])])\n    .transform((value) => {\n      if (typeof value === 'boolean') return value;\n      return value === 'true' || value === '1';\n    })\n    .default(true),\n});\n\nexport const storefrontSearchProductSchema = z.object({\n  id: z.string().uuid(),\n  name: z.string(),\n  sellingPrice: z.number().nullable(),\n  currentStock: z.number(),\n  unit: z.string().nullable(),\n});\n\nexport const storefrontSearchShopGroupSchema = z.object({\n  slug: z.string(),\n  shopName: z.string(),\n  location: storefrontLocationSchema.nullable(),\n  products: z.array(storefrontSearchProductSchema),\n});\n\nexport const storefrontMarketSearchResponseSchema = z.object({\n  results: z.array(storefrontSearchShopGroupSchema),\n});\n","import { z } from 'zod';\nimport { paymentSplitsSchema, saleTransactionTypeEnum } from './shopkeeper.schemas';\n\nexport { saleTransactionTypeEnum };\n\n/** Payload shape for `changes[].data` when `table` is `sales` (mobile Sale.toJson). */\nexport const syncSaleDataSchema = z.object({\n  productId: z.string().uuid(),\n  quantity: z.number(),\n  unitPrice: z.number(),\n  totalAmount: z.number(),\n  paymentMethod: z.string(),\n  paymentSplits: paymentSplitsSchema.optional(),\n  inputMethod: z.string(),\n  recordedBy: z.string().optional(),\n  recordedAt: z.union([z.number(), z.string()]).optional(),\n  transcription: z.string().nullable().optional(),\n  confidenceScore: z.number().nullable().optional(),\n  approved: z.boolean().optional(),\n  receiptPrinted: z.boolean().optional(),\n  customerId: z.string().uuid().nullable().optional(),\n  staffProfileId: z.string().uuid().optional(),\n  transactionType: saleTransactionTypeEnum.optional(),\n  originalSaleId: z.string().uuid().optional(),\n});\n\nexport const syncChangeSchema = z.object({\n  table: z.enum(['products', 'sales', 'customers', 'stock_movements', 'reservations']),\n  id: z.string().uuid(),\n  action: z.enum(['insert', 'update', 'delete']),\n  data: z.record(z.unknown()),\n  timestamp: z.number(),\n  deviceId: z.string(),\n  generationId: z.number().int(),\n});\n\nexport const syncPushRequestSchema = z.object({\n  shopId: z.string().uuid(),\n  deviceId: z.string().optional(),\n  changes: z.array(syncChangeSchema).max(500),\n  lastSyncTimestamp: z.number().optional(),\n});\n\nexport const syncPushResponseSchema = z.object({\n  accepted: z.array(z.string().uuid()),\n  conflicts: z.array(\n    z.object({\n      id: z.string().uuid(),\n      table: z.string(),\n      serverVersion: z.record(z.unknown()),\n      resolution: z.enum(['server_wins', 'device_wins', 'merged']),\n    }),\n  ),\n  serverTimestamp: z.number(),\n  newGenerationId: z.number().int(),\n});\n\nexport const syncPullTablesEnum = z.enum([\n  'products',\n  'sales',\n  'customers',\n  'stock_movements',\n  'insights',\n  'trade_facts',\n  'reservations',\n]);\nexport type SyncPullTable = z.infer<typeof syncPullTablesEnum>;\n\nexport const syncPullQuerySchema = z.object({\n  shopId: z.string().uuid(),\n  deviceId: z.string().optional(),\n  lastSyncTimestamp: z.coerce.number().optional(),\n  /** If set, only pull these tables. If omitted, pull all. */\n  tables: z.array(syncPullTablesEnum).optional(),\n});\n\nconst syncPullChangeSchema = z.object({\n  table: z.string(),\n  id: z.string().uuid(),\n  action: z.enum(['insert', 'update', 'delete']),\n  data: z.record(z.unknown()),\n  timestamp: z.number(),\n  generationId: z.number().int(),\n});\n\nexport const syncPullResponseSchema = z.object({\n  changes: z.array(syncPullChangeSchema),\n  hasMore: z.boolean(),\n  serverTimestamp: z.number(),\n  /** When hasMore is true, client should call pull again with lastSyncTimestamp = this value to get the next page. */\n  nextLastSyncTimestamp: z.number().optional(),\n});\n\nexport type SyncSaleData = z.infer<typeof syncSaleDataSchema>;\nexport type SyncChange = z.infer<typeof syncChangeSchema>;\nexport type SyncPushRequest = z.infer<typeof syncPushRequestSchema>;\nexport type SyncPushResponse = z.infer<typeof syncPushResponseSchema>;\nexport type SyncPullQuery = z.infer<typeof syncPullQuerySchema>;\nexport type SyncPullResponse = z.infer<typeof syncPullResponseSchema>;\n","import { z } from 'zod';\n\nexport const whatsappMessageTypeEnum = z.enum([\n  'text',\n  'image',\n  'audio',\n  'interactive',\n  'sale_alert',\n  'daily_report',\n  'low_stock',\n  'customer_reply',\n  'remote_command',\n  'reservation',\n  'subscription_alert',\n  'custom',\n]);\n\nexport const interactiveActionSchema = z.object({\n  type: z.enum(['button', 'list']),\n  buttons: z\n    .array(\n      z.object({\n        id: z.string(),\n        title: z.string(),\n      }),\n    )\n    .optional(),\n  sections: z\n    .array(\n      z.object({\n        title: z.string(),\n        rows: z.array(\n          z.object({\n            id: z.string(),\n            title: z.string(),\n            description: z.string().optional(),\n          }),\n        ),\n      }),\n    )\n    .optional(),\n});\n\nexport const sendWhatsappSchema = z.object({\n  messageType: whatsappMessageTypeEnum,\n  recipient: z.string(),\n  content: z.string().optional(),\n  interactive: interactiveActionSchema.optional(),\n  mediaUrl: z.string().optional(),\n  metadata: z.record(z.unknown()).optional(),\n  /** WhatsApp template (pre-approved). When set, use ContentSid + ContentVariables instead of content. */\n  templateName: z.string().optional(),\n  templateParams: z.array(z.string()).optional(),\n});\n\n/** Mobile-friendly: body with only { text } — recipient defaults to shop paired WhatsApp */\nexport const sendWhatsappSimpleSchema = z.object({ text: z.string() });\n\nexport const sendWhatsappBodySchema = z.union([sendWhatsappSchema, sendWhatsappSimpleSchema]);\n\nexport const whatsappPairSchema = z.object({\n  phone: z.string().min(10).max(15),\n  verificationCode: z.string().optional(),\n});\n\nexport const whatsappMessageSchema = z.object({\n  id: z.string().uuid(),\n  direction: z.enum(['inbound', 'outbound']),\n  messageType: whatsappMessageTypeEnum,\n  recipient: z.string(),\n  content: z.string(),\n  status: z.enum(['queued', 'sent', 'delivered', 'failed']),\n  metadata: z.record(z.unknown()).nullable(),\n  sentAt: z.coerce.date().nullable(),\n  createdAt: z.coerce.date(),\n});\n\n/** Canonical JSON body (WAPI.js-style). Twilio sends From/Body/MessageSid and omits unix timestamp — we normalize via preprocess. */\nexport const incomingWhatsappSchema = z.preprocess((raw: unknown) => {\n  if (!raw || typeof raw !== 'object') return raw;\n  const r = raw as Record<string, unknown>;\n  if (typeof r.From === 'string') {\n    const numMediaRaw = r.NumMedia;\n    const numMedia =\n      typeof numMediaRaw === 'number'\n        ? numMediaRaw\n        : parseInt(String(numMediaRaw ?? '0'), 10) || 0;\n    const ct = String(r.MediaContentType0 ?? '').toLowerCase();\n    let type: string | undefined;\n    if (numMedia > 0) {\n      if (ct.startsWith('audio/')) type = 'audio';\n      else if (ct.startsWith('image/')) type = 'image';\n      else if (ct.startsWith('video/')) type = 'video';\n    }\n    return {\n      from: r.From,\n      to: r.To,\n      message: typeof r.Body === 'string' ? r.Body : '',\n      timestamp: Math.floor(Date.now() / 1000),\n      messageId: r.MessageSid,\n      type,\n      mediaUrl: typeof r.MediaUrl0 === 'string' ? r.MediaUrl0 : undefined,\n    };\n  }\n  return raw;\n}, z.object({\n  from: z.string(),\n  to: z.string().optional(),\n  message: z.string().optional(),\n  timestamp: z.coerce.number().optional(),\n  messageId: z.string().optional(),\n  type: z.string().optional(),\n  mediaUrl: z.string().optional(),\n})).transform((v) => ({\n  ...v,\n  timestamp: v.timestamp ?? Math.floor(Date.now() / 1000),\n}));\n\n/** Provider delivery status callback (Gap 1). messageId = our id; externalId = provider SID (e.g. Twilio) for lookups. */\nexport const deliveryStatusWebhookSchema = z.object({\n  messageId: z.string().uuid().optional(),\n  externalId: z.string().optional(),\n  status: z.enum(['sent', 'delivered', 'failed', 'read']),\n}).refine((d) => d.messageId ?? d.externalId, { message: 'One of messageId or externalId required' });\n\nexport type WhatsappMessageType = z.infer<typeof whatsappMessageTypeEnum>;\nexport type InteractiveAction = z.infer<typeof interactiveActionSchema>;\nexport type SendWhatsappInput = z.infer<typeof sendWhatsappSchema>;\nexport type WhatsappPairInput = z.infer<typeof whatsappPairSchema>;\nexport type WhatsappMessage = z.infer<typeof whatsappMessageSchema>;\nexport type IncomingWhatsapp = z.infer<typeof incomingWhatsappSchema>;\n","import { z } from 'zod';\n\nexport const restoreBackupResponseSchema = z.object({\n  url: z.string(),\n  identity: z.object({\n    agentName: z.string(),\n    personality: z.record(z.unknown()),\n  }),\n  checksum: z.string(),\n});\n\nexport const restoreBackupRequestSchema = z.object({\n  shopId: z.string().uuid(),\n  deviceId: z.string(),\n  backupId: z.string().uuid().optional(),\n});\n\nexport type RestoreBackupResponse = z.infer<typeof restoreBackupResponseSchema>;\nexport type RestoreBackupRequest = z.infer<typeof restoreBackupRequestSchema>;\n","import { z } from 'zod';\nimport { timestampSchema } from './common.schemas';\nimport { subscriptionTierEnum } from './shopkeeper.schemas';\n\nexport const subscriptionSchema = z\n  .object({\n    id: z.string().uuid(),\n    tier: subscriptionTierEnum,\n    status: z.enum(['active', 'past_due', 'cancelled', 'expired']),\n    billingCycle: z.enum(['daily', 'weekly', 'monthly', 'annual']),\n    amount: z.number(),\n    currency: z.string(),\n    paymentMethod: z.string().nullable(),\n    currentPeriodStart: z.coerce.date(),\n    currentPeriodEnd: z.coerce.date(),\n    cancelledAt: z.coerce.date().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const createSubscriptionSchema = z.object({\n  tier: subscriptionTierEnum,\n  billingCycle: z.enum(['daily', 'weekly', 'monthly', 'annual']),\n  paymentMethod: z\n    .enum(['paystack', 'card', 'bank', 'mobile_money', 'momo', 'opay'])\n    .optional(),\n  paymentRef: z.string().optional(),\n});\n\nexport const paymentSchema = z.object({\n  id: z.string().uuid(),\n  amount: z.number(),\n  currency: z.string(),\n  provider: z.string(),\n  providerRef: z.string().nullable(),\n  status: z.enum(['pending', 'success', 'failed']),\n  paidAt: z.coerce.date().nullable(),\n  createdAt: z.coerce.date(),\n});\n\nexport const verifyPaymentSchema = z.object({\n  provider: z.enum(['paystack']),\n  transactionRef: z.string(),\n});\n\nexport type Subscription = z.infer<typeof subscriptionSchema>;\nexport type CreateSubscriptionInput = z.infer<typeof createSubscriptionSchema>;\nexport type Payment = z.infer<typeof paymentSchema>;\nexport type VerifyPaymentInput = z.infer<typeof verifyPaymentSchema>;\n","import { z } from 'zod';\nimport { timestampSchema } from './common.schemas';\n\nexport const installerSchema = z\n  .object({\n    id: z.string().uuid(),\n    name: z.string(),\n    phone: z.string(),\n    email: z.string().nullable(),\n    city: z.string(),\n    market: z.string().nullable(),\n    status: z.enum(['active', 'suspended', 'inactive']),\n    rating: z.number(),\n    totalOnboardings: z.number(),\n    totalEarnings: z.number(),\n  })\n  .merge(timestampSchema);\n\nexport const registerInstallerSchema = z.object({\n  name: z.string().min(1).max(100),\n  phone: z.string().min(10).max(15),\n  password: z.string().min(6).max(128),\n  email: z.string().email().optional(),\n  city: z.string().min(1).max(100),\n  market: z.string().optional(),\n});\n\nexport const onboardingSchema = z\n  .object({\n    id: z.string().uuid(),\n    installerId: z.string().uuid(),\n    shopPhone: z.string(),\n    shopId: z.string().uuid().nullable(),\n    setupCompleted: z.boolean(),\n    tierConverted: z.string().nullable(),\n    convertedAt: z.coerce.date().nullable(),\n    commissionPaid: z.number(),\n    satisfactionScore: z.number().int().nullable(),\n    followUpDay3: z.boolean(),\n    followUpDay7: z.boolean(),\n    followUpDay14: z.boolean(),\n  })\n  .merge(timestampSchema);\n\nexport const logOnboardingSchema = z.object({\n  shopPhone: z.string().min(10).max(15),\n  setupCompleted: z.boolean().default(false),\n});\n\nexport const logFollowUpSchema = z.object({\n  onboardingId: z.string().uuid(),\n  day: z.enum(['3', '7', '14']),\n  satisfactionScore: z.number().int().min(1).max(5).optional(),\n});\n\nexport type Installer = z.infer<typeof installerSchema>;\nexport type RegisterInstallerInput = z.infer<typeof registerInstallerSchema>;\nexport type Onboarding = z.infer<typeof onboardingSchema>;\nexport type LogOnboardingInput = z.infer<typeof logOnboardingSchema>;\nexport type LogFollowUpInput = z.infer<typeof logFollowUpSchema>;\n","import { z } from 'zod';\nimport { timestampSchema } from './common.schemas';\n\nexport const tokenTransactionTypeEnum = z.enum([\n  'purchase',\n  'consumption',\n  'grant',\n  'bonus',\n  'refund',\n]);\n\nexport const tokenFeatureEnum = z.enum([\n  'voice_command',\n  'cloud_analytics',\n  'voice_call',\n  'proactive_call',\n  'dashboard_access',\n]);\n\nexport const walletSchema = z\n  .object({\n    id: z.string().uuid(),\n    shopId: z.string().uuid(),\n    balance: z.number().int(),\n    lifetimeEarned: z.number().int(),\n    lifetimeSpent: z.number().int(),\n    lastGrantAt: z.coerce.date().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const tokenTransactionSchema = z.object({\n  id: z.string().uuid(),\n  walletId: z.string().uuid(),\n  type: tokenTransactionTypeEnum,\n  amount: z.number().int(),\n  feature: tokenFeatureEnum.nullable(),\n  description: z.string().nullable(),\n  referenceId: z.string().nullable(),\n  createdAt: z.coerce.date(),\n});\n\nexport const tokenBundleSchema = z.object({\n  id: z.string().uuid(),\n  name: z.string(),\n  price: z.number(),\n  currency: z.string(),\n  tokenAmount: z.number().int(),\n  bonusTokens: z.number().int(),\n  isActive: z.boolean(),\n});\n\nexport const purchaseTokensSchema = z.object({\n  bundleId: z.string().uuid(),\n  paymentRef: z.string().optional(),\n  paymentMethod: z.literal('paystack'),\n});\n\nexport const verifyTokenPaymentSchema = z.object({\n  provider: z.literal('paystack'),\n  transactionRef: z.string(),\n});\n\nexport type Wallet = z.infer<typeof walletSchema>;\nexport type TokenTransaction = z.infer<typeof tokenTransactionSchema>;\nexport type TokenBundle = z.infer<typeof tokenBundleSchema>;\nexport type PurchaseTokensInput = z.infer<typeof purchaseTokensSchema>;\nexport type VerifyTokenPaymentInput = z.infer<typeof verifyTokenPaymentSchema>;\n","import { z } from 'zod';\n\nexport const callDirectionEnum = z.enum(['inbound', 'outbound']);\nexport const callTriggerReasonEnum = z.enum([\n  'critical_stock',\n  'large_sale',\n  'anomaly',\n  'daily_summary',\n]);\nexport const callGatewayEnum = z.enum(['africas_talking', 'webrtc_voip']);\n\nexport const callSessionSchema = z.object({\n  id: z.string().uuid(),\n  shopId: z.string().uuid(),\n  direction: callDirectionEnum,\n  callerPhone: z.string(),\n  startedAt: z.coerce.date(),\n  endedAt: z.coerce.date().nullable(),\n  durationSeconds: z.number().int().nullable(),\n  triggerReason: callTriggerReasonEnum.nullable(),\n  transcriptSummary: z.string().nullable(),\n  actionsTaken: z\n    .array(\n      z.object({\n        type: z.string(),\n        product: z.string().optional(),\n        amount: z.number().optional(),\n      }),\n    )\n    .nullable(),\n  callCost: z.number().nullable(),\n  ownerSatisfaction: z.enum(['helpful', 'not_helpful']).nullable(),\n  gateway: callGatewayEnum,\n  createdAt: z.coerce.date(),\n});\n\nexport const initiateCallSchema = z.object({\n  targetPhone: z.string(),\n  triggerReason: callTriggerReasonEnum,\n  shopContext: z\n    .object({\n      criticalItems: z.array(z.string()).optional(),\n      alertMessage: z.string().optional(),\n    })\n    .optional(),\n});\n\nexport const callStatusSchema = z.object({\n  sessionId: z.string(),\n  callSessionId: z.string().optional(),\n  isActive: z.boolean(),\n  direction: callDirectionEnum,\n  callerNumber: z.string(),\n  destinationNumber: z.string(),\n  durationInSeconds: z.number().int(),\n  currencyCode: z.string().optional(),\n  amount: z.number().optional(),\n  status: z.enum([\n    'ringing',\n    'in_progress',\n    'completed',\n    'failed',\n    'busy',\n    'no_answer',\n  ]),\n});\n\nexport const callLogQuerySchema = z.object({\n  from: z.coerce.date().optional(),\n  to: z.coerce.date().optional(),\n  direction: callDirectionEnum.optional(),\n  page: z.coerce.number().int().min(1).default(1),\n  limit: z.coerce.number().int().min(1).max(100).default(20),\n});\n\nexport type CallSession = z.infer<typeof callSessionSchema>;\nexport type InitiateCallInput = z.infer<typeof initiateCallSchema>;\nexport type CallStatus = z.infer<typeof callStatusSchema>;\nexport type CallLogQuery = z.infer<typeof callLogQuerySchema>;\n","import { z } from 'zod';\n\nexport const invoiceLineItemSchema = z.object({\n  productName: z.string(),\n  quantity: z.number(),\n  unitPrice: z.number().optional(),\n  totalAmount: z.number().optional(),\n  barcode: z.string().optional(),\n  /** Matched ShopProduct id when OCR name matches. */\n  productId: z.string().uuid().optional(),\n  /** Per-item confidence 0–1 for manual verification (Gap 9). */\n  confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const analyzeInvoiceResponseSchema = z.object({\n  items: z.array(invoiceLineItemSchema),\n  supplierName: z.string().optional(),\n  totalAmount: z.number().optional(),\n  confidence: z.number().min(0).max(1).optional(),\n});\n\nexport const confirmRestockSchema = z.object({\n  items: z.array(\n    z.object({\n      productId: z.string().uuid().optional(),\n      productName: z.string(),\n      quantity: z.number(),\n      unitPrice: z.number().optional(),\n    }),\n  ),\n  supplierName: z.string().optional(),\n  totalAmount: z.number().optional(),\n});\n\nexport type InvoiceLineItem = z.infer<typeof invoiceLineItemSchema>;\nexport type AnalyzeInvoiceResponse = z.infer<typeof analyzeInvoiceResponseSchema>;\nexport type ConfirmRestockInput = z.infer<typeof confirmRestockSchema>;\n","import { z } from 'zod';\n\n/**\n * Cloud-generated insights synced to device (strategy P3: Insight sync).\n * Example: \"Your margin on biscuits dropped 8% this week. Consider switching to Supplier B.\"\n */\n\nexport const insightTypeEnum = z.enum([\n  'margin_alert',\n  'restock_suggestion',\n  'weekly_summary',\n  'supplier_tip',\n  'expiry_alert',\n  'anomaly',\n  'bestseller_shift',\n  'custom',\n]);\n\nexport const insightEngagementTypeEnum = z.enum(['acted_on', 'dismissed', 'ignored']);\n\nexport const shopInsightSchema = z.object({\n  id: z.string().uuid(),\n  type: insightTypeEnum,\n  title: z.string(),\n  body: z.string(),\n  payload: z.record(z.unknown()).nullable(),\n  readAt: z.coerce.date().nullable(),\n  engagementType: insightEngagementTypeEnum.nullable(),\n  engagedAt: z.coerce.date().nullable(),\n  createdAt: z.coerce.date(),\n});\n\nexport type ShopInsight = z.infer<typeof shopInsightSchema>;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  registerOwnerAndShopSchema,\n  shopOwnerSchema,\n  shopSchema,\n  shopListItemSchema,\n  addShopSchema,\n  deviceRoleEnum,\n} from '../schemas/shopkeeper.schemas';\nimport { errorResponseSchema, successResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperDeviceContract = c.router({\n  register: {\n    method: 'POST',\n    path: '/shopkeeper/device/register',\n    body: registerOwnerAndShopSchema,\n    responses: {\n      201: z.object({\n        owner: shopOwnerSchema,\n        shop: shopSchema,\n        shops: z.array(shopListItemSchema),\n        ownerToken: z.string(),\n        shopToken: z.string(),\n        refreshToken: z.string(),\n        expiresIn: z.number(),\n      }),\n      400: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Register new owner, shop, and device',\n  },\n  login: {\n    method: 'POST',\n    path: '/shopkeeper/device/login',\n    body: z.object({\n      phone: z.string(),\n      pin: z.string().min(4).max(6),\n      deviceId: z.string(),\n      deviceName: z.string().optional(),\n      role: deviceRoleEnum.default('owner'),\n      osVersion: z.string().optional(),\n      appVersion: z.string().optional(),\n    }),\n    responses: {\n      200: z.object({\n        owner: shopOwnerSchema,\n        shops: z.array(shopListItemSchema),\n        ownerToken: z.string(),\n        refreshToken: z.string(),\n        expiresIn: z.number(),\n      }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Authenticate owner with phone + PIN',\n  },\n  selectShop: {\n    method: 'POST',\n    path: '/shopkeeper/device/select-shop',\n    body: z.object({ shopId: z.string().uuid() }),\n    responses: {\n      200: z.object({\n        shop: shopSchema,\n        shopToken: z.string(),\n        expiresIn: z.number(),\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Select active shop and get shop-scoped token',\n  },\n  addShop: {\n    method: 'POST',\n    path: '/shopkeeper/device/shops',\n    body: addShopSchema,\n    responses: {\n      201: z.object({\n        shop: shopSchema,\n        shopToken: z.string(),\n        expiresIn: z.number(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Add a new shop to owner account',\n  },\n  listShops: {\n    method: 'GET',\n    path: '/shopkeeper/device/shops',\n    responses: {\n      200: z.object({ shops: z.array(shopListItemSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List all shops for authenticated owner',\n  },\n  refresh: {\n    method: 'POST',\n    path: '/shopkeeper/device/refresh',\n    body: z.object({ refreshToken: z.string() }),\n    responses: {\n      200: z.object({ ownerToken: z.string(), expiresIn: z.number() }),\n      401: errorResponseSchema,\n    },\n    summary: 'Refresh owner access token',\n  },\n  updateDevice: {\n    method: 'PATCH',\n    path: '/shopkeeper/device',\n    body: z.object({\n      appVersion: z.string().optional(),\n      fcmToken: z.string().optional(),\n      osVersion: z.string().optional(),\n    }),\n    responses: {\n      200: successResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Update device metadata',\n  },\n  sendOtp: {\n    method: 'POST',\n    path: '/shopkeeper/device/send-otp',\n    body: z.object({ phone: z.string() }),\n    responses: {\n      200: z.object({ message: z.string(), expiresIn: z.number() }),\n      429: errorResponseSchema,\n    },\n    summary: 'Send OTP to phone number',\n  },\n  verifyOtp: {\n    method: 'POST',\n    path: '/shopkeeper/device/verify-otp',\n    body: z.object({ phone: z.string(), code: z.string().length(6) }),\n    responses: {\n      200: z.object({ verified: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Verify OTP code',\n  },\n  resetPin: {\n    method: 'POST',\n    path: '/shopkeeper/device/reset-pin',\n    body: z.object({\n      phone: z.string(),\n      otpCode: z.string().length(6),\n      newPin: z.string().min(4).max(6),\n    }),\n    responses: {\n      200: successResponseSchema,\n      400: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Reset owner PIN using OTP',\n  },\n  registerStaffProfile: {\n    method: 'POST',\n    path: '/shopkeeper/device/staff/register',\n    body: z.object({ displayName: z.string().min(1).max(80) }),\n    responses: {\n      201: z.object({\n        id: z.string().uuid(),\n        displayName: z.string(),\n        isActive: z.boolean(),\n        createdAt: z.coerce.date(),\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n    },\n    summary: 'Register a named staff profile on the authenticated device',\n  },\n  listStaffProfiles: {\n    method: 'GET',\n    path: '/shopkeeper/device/staff',\n    responses: {\n      200: z.object({\n        profiles: z.array(\n          z.object({\n            id: z.string().uuid(),\n            displayName: z.string(),\n            createdAt: z.coerce.date(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'List staff profiles for the authenticated device',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  shopSchema,\n  updateShopSchema,\n  shopProductSchema,\n  createProductSchema,\n  updateProductSchema,\n  shopSaleSchema,\n  shopCustomerSchema,\n  createCustomerSchema,\n  updateCustomerSchema,\n  creditHistoryEventSchema,\n  createCreditPaymentSchema,\n  createSaleSchema,\n  stockMovementSchema,\n  storefrontOrderSchema,\n  updateStorefrontOrderStatusBodySchema,\n  updateStorefrontOrderStatusResponseSchema,\n  sendCustomerReminderSchema,\n  sendCustomerReminderResponseSchema,\n  reEngageCustomerSchema,\n  reEngageCustomerResponseSchema,\n} from '../schemas/shopkeeper.schemas';\nimport {\n  errorResponseSchema,\n  successResponseSchema,\n  paginationQuerySchema,\n  paginationResponseSchema,\n} from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperContract = c.router({\n  getShop: {\n    method: 'GET',\n    path: '/shopkeeper/shop',\n    responses: { 200: shopSchema, 401: errorResponseSchema },\n    summary: 'Get current shop details',\n  },\n  updateShop: {\n    method: 'PATCH',\n    path: '/shopkeeper/shop',\n    body: updateShopSchema,\n    responses: {\n      200: shopSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Update shop details',\n  },\n  listProducts: {\n    method: 'GET',\n    path: '/shopkeeper/products',\n    query: z\n      .object({\n        active: z.coerce.boolean().optional(),\n        category: z.string().optional(),\n        search: z.string().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({ products: z.array(shopProductSchema), pagination: paginationResponseSchema }),\n      401: errorResponseSchema,\n    },\n    summary: 'List shop products',\n  },\n  getProduct: {\n    method: 'GET',\n    path: '/shopkeeper/products/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    responses: { 200: shopProductSchema, 404: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Get product by ID',\n  },\n  createProduct: {\n    method: 'POST',\n    path: '/shopkeeper/products',\n    body: createProductSchema,\n    responses: { 201: shopProductSchema, 400: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Create a new product',\n  },\n  updateProduct: {\n    method: 'PATCH',\n    path: '/shopkeeper/products/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: updateProductSchema,\n    responses: { 200: shopProductSchema, 404: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Update a product',\n  },\n  deleteProduct: {\n    method: 'DELETE',\n    path: '/shopkeeper/products/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({}),\n    responses: { 200: successResponseSchema, 404: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Delete a product (soft delete)',\n  },\n  uploadProductIcon: {\n    method: 'POST',\n    path: '/shopkeeper/products/:id/icon',\n    pathParams: z.object({ id: z.string().uuid() }),\n    contentType: 'multipart/form-data',\n    body: z.object({ file: z.any() }),\n    responses: {\n      200: z.object({ iconUrl: z.string() }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Upload product icon photo',\n  },\n  listSales: {\n    method: 'GET',\n    path: '/shopkeeper/sales',\n    query: z\n      .object({\n        from: z.coerce.date().optional(),\n        to: z.coerce.date().optional(),\n        productId: z.string().uuid().optional(),\n        inputMethod: z.string().optional(),\n        paymentMethod: z.string().optional(),\n        staffProfileId: z.string().uuid().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        sales: z.array(shopSaleSchema),\n        pagination: paginationResponseSchema,\n        summary: z.object({ totalRevenue: z.number(), totalTransactions: z.number() }),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List sales with filters',\n  },\n  createSale: {\n    method: 'POST',\n    path: '/shopkeeper/sales',\n    body: createSaleSchema,\n    responses: {\n      201: shopSaleSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Record a manual sale and update stock',\n  },\n  listCustomers: {\n    method: 'GET',\n    path: '/shopkeeper/customers',\n    query: z\n      .object({\n        search: z.string().optional(),\n        hasCredit: z.coerce.boolean().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({ customers: z.array(shopCustomerSchema), pagination: paginationResponseSchema }),\n      401: errorResponseSchema,\n    },\n    summary: 'List shop customers',\n  },\n  createCustomer: {\n    method: 'POST',\n    path: '/shopkeeper/customers',\n    body: createCustomerSchema,\n    responses: { 201: shopCustomerSchema, 400: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Create a new customer',\n  },\n  getCustomer: {\n    method: 'GET',\n    path: '/shopkeeper/customers/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    responses: {\n      200: shopCustomerSchema,\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Get customer by ID',\n  },\n  updateCustomer: {\n    method: 'PATCH',\n    path: '/shopkeeper/customers/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: updateCustomerSchema,\n    responses: {\n      200: shopCustomerSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Update customer name or phone',\n  },\n  getCustomerCreditHistory: {\n    method: 'GET',\n    path: '/shopkeeper/customers/:id/credit-history',\n    pathParams: z.object({ id: z.string().uuid() }),\n    query: paginationQuerySchema,\n    responses: {\n      200: z.object({\n        events: z.array(creditHistoryEventSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'List credit sales and repayments for a customer',\n  },\n  createCreditPayment: {\n    method: 'POST',\n    path: '/shopkeeper/customers/:id/credit-payments',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: createCreditPaymentSchema,\n    responses: {\n      200: shopCustomerSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Record a credit repayment and decrement balance',\n  },\n  sendCustomerReminder: {\n    method: 'POST',\n    path: '/shopkeeper/customers/:id/send-reminder',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: sendCustomerReminderSchema,\n    responses: {\n      200: sendCustomerReminderResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n      409: errorResponseSchema,\n      429: errorResponseSchema,\n    },\n    summary: 'Send debt reminder to customer via WhatsApp or SMS',\n  },\n  reEngageCustomer: {\n    method: 'POST',\n    path: '/shopkeeper/customers/:id/re-engage',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: reEngageCustomerSchema,\n    responses: {\n      200: reEngageCustomerResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n      404: errorResponseSchema,\n      409: errorResponseSchema,\n      429: errorResponseSchema,\n    },\n    summary: 'Send owner-approved WhatsApp re-engagement to at-risk customer',\n  },\n  listStockMovements: {\n    method: 'GET',\n    path: '/shopkeeper/stock-movements',\n    query: z\n      .object({\n        productId: z.string().uuid().optional(),\n        type: z.string().optional(),\n        from: z.coerce.date().optional(),\n        to: z.coerce.date().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        movements: z.array(stockMovementSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List stock movements',\n  },\n  listStorefrontOrders: {\n    method: 'GET',\n    path: '/shopkeeper/storefront/orders',\n    query: z.object({\n      status: z\n        .enum([\n          'all',\n          'awaiting_payment',\n          'awaiting_approval',\n          'paid',\n          'reserved',\n          'ready',\n          'collected',\n          'cancelled',\n        ])\n        .default('awaiting_approval'),\n      limit: z.coerce.number().int().min(1).max(100).default(30),\n    }),\n    responses: {\n      200: z.object({ orders: z.array(storefrontOrderSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List storefront online orders with status filters',\n  },\n  updateStorefrontOrderStatus: {\n    method: 'PATCH',\n    path: '/shopkeeper/storefront/orders/:id/status',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: updateStorefrontOrderStatusBodySchema,\n    responses: {\n      200: updateStorefrontOrderStatusResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Advance storefront order status (approve, ready, collected, cancel)',\n  },\n  approveStorefrontManualPayment: {\n    method: 'POST',\n    path: '/shopkeeper/storefront/orders/:id/approve-manual-payment',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({}),\n    responses: {\n      200: z.object({\n        id: z.string().uuid(),\n        status: z.string(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Approve storefront manual transfer order and record sale',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  syncPushRequestSchema,\n  syncPushResponseSchema,\n  syncPullQuerySchema,\n  syncPullResponseSchema,\n} from '../schemas/shopkeeper-sync.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperSyncContract = c.router({\n  pushChanges: {\n    method: 'POST',\n    path: '/shopkeeper/sync/push',\n    body: syncPushRequestSchema,\n    responses: {\n      200: syncPushResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Device pushes local changes to server',\n  },\n  pullChanges: {\n    method: 'GET',\n    path: '/shopkeeper/sync/pull',\n    query: syncPullQuerySchema,\n    responses: {\n      200: syncPullResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Device pulls server changes since timestamp',\n  },\n  getSyncStatus: {\n    method: 'GET',\n    path: '/shopkeeper/sync/status',\n    query: z.object({ shopId: z.string().uuid(), deviceId: z.string() }),\n    responses: {\n      200: z.object({\n        lastSyncTimestamp: z.number().nullable(),\n        pendingCount: z.number().int(),\n        generationId: z.number().int(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Check last sync timestamp and pending count',\n  },\n  listConflicts: {\n    method: 'GET',\n    path: '/shopkeeper/sync/conflicts',\n    query: z.object({\n      resolved: z.enum(['true', 'false']).optional(),\n      limit: z.coerce.number().int().min(1).max(100).optional(),\n    }),\n    responses: {\n      200: z.object({\n        conflicts: z.array(\n          z.object({\n            id: z.string().uuid(),\n            recordId: z.string().uuid(),\n            table: z.string(),\n            serverVersion: z.record(z.unknown()),\n            resolution: z.string(),\n            deviceId: z.string().nullable(),\n            resolvedAt: z.coerce.date().nullable(),\n            createdAt: z.coerce.date(),\n          }),\n        ),\n        total: z.number().int(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List sync conflicts for the shop (unresolved or all)',\n  },\n  resolveConflict: {\n    method: 'PATCH',\n    path: '/shopkeeper/sync/conflicts/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({\n      resolution: z.enum(['keep_local', 'use_cloud']),\n    }),\n    responses: {\n      200: z.object({ ok: z.literal(true) }),\n      404: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Mark a sync conflict as resolved (keep_local or use_cloud)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { restoreBackupResponseSchema } from '../schemas/shopkeeper-backup.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nconst backupMetadataSchema = z.object({\n  id: z.string().uuid(),\n  shopId: z.string().uuid(),\n  sizeBytes: z.number(),\n  checksum: z.string(),\n  createdAt: z.coerce.date(),\n});\n\nexport const shopkeeperBackupContract = c.router({\n  uploadBackup: {\n    method: 'POST',\n    path: '/shopkeeper/backup/upload',\n    contentType: 'multipart/form-data',\n    body: z.object({ file: z.any() }),\n    responses: {\n      200: backupMetadataSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Upload encrypted SQLite backup to R2',\n  },\n  getLatestBackup: {\n    method: 'GET',\n    path: '/shopkeeper/backup/latest',\n    query: z.object({ shopId: z.string().uuid() }),\n    responses: {\n      200: backupMetadataSchema.nullable(),\n      401: errorResponseSchema,\n    },\n    summary: 'Get latest backup metadata',\n  },\n  downloadBackup: {\n    method: 'GET',\n    path: '/shopkeeper/backup/download',\n    query: z.object({ shopId: z.string().uuid(), backupId: z.string().uuid().optional() }),\n    responses: {\n      200: restoreBackupResponseSchema,\n      404: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Download encrypted backup for restore',\n  },\n  listBackups: {\n    method: 'GET',\n    path: '/shopkeeper/backup/list',\n    query: z.object({ shopId: z.string().uuid() }).merge(z.object({ limit: z.coerce.number().int().min(1).max(100).optional() })),\n    responses: {\n      200: z.object({ backups: z.array(backupMetadataSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List all backups with dates',\n  },\n  requestBackup: {\n    method: 'POST',\n    path: '/shopkeeper/backup/request',\n    body: z.object({}),\n    responses: {\n      200: backupMetadataSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Create server-side backup (export shop data and upload to storage)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  sendWhatsappBodySchema,\n  whatsappPairSchema,\n  whatsappMessageSchema,\n  incomingWhatsappSchema,\n  deliveryStatusWebhookSchema,\n} from '../schemas/shopkeeper-whatsapp.schemas';\nimport {\n  errorResponseSchema,\n  successResponseSchema,\n  paginationQuerySchema,\n  paginationResponseSchema,\n} from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperWhatsappContract = c.router({\n  pairWhatsapp: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/pair',\n    body: whatsappPairSchema,\n    responses: {\n      200: z.object({ paired: z.boolean(), message: z.string().optional() }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Link owner WhatsApp number',\n  },\n  unpairWhatsapp: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/unpair',\n    body: z.object({}),\n    responses: { 200: successResponseSchema, 401: errorResponseSchema },\n    summary: 'Unlink WhatsApp',\n  },\n  sendMessage: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/send',\n    body: sendWhatsappBodySchema,\n    responses: { 200: successResponseSchema, 400: errorResponseSchema, 401: errorResponseSchema },\n    summary: 'Queue outbound message',\n  },\n  listMessages: {\n    method: 'GET',\n    path: '/shopkeeper/whatsapp/messages',\n    query: z\n      .object({ messageType: z.string().optional(), direction: z.string().optional() })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        messages: z.array(whatsappMessageSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get message history',\n  },\n  incomingWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/webhook',\n    body: incomingWhatsappSchema,\n    responses: { 200: z.object({ received: z.boolean() }), 400: errorResponseSchema },\n    summary: 'WAPI.js incoming webhook',\n  },\n  deliveryStatusWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/webhook/status',\n    body: deliveryStatusWebhookSchema,\n    responses: { 200: z.object({ updated: z.boolean() }), 400: errorResponseSchema },\n    summary: 'Provider delivery status callback',\n  },\n  updateAutoReply: {\n    method: 'PATCH',\n    path: '/shopkeeper/whatsapp/auto-reply',\n    body: z.object({\n      enabled: z.boolean().optional(),\n      afterHoursMessage: z.string().optional(),\n    }),\n    responses: { 200: successResponseSchema, 401: errorResponseSchema },\n    summary: 'Configure auto-reply settings',\n  },\n  updateAutoReplyPost: {\n    method: 'POST',\n    path: '/shopkeeper/whatsapp/auto-reply',\n    body: z.object({\n      enabled: z.boolean().optional(),\n      afterHoursMessage: z.string().optional(),\n    }),\n    responses: { 200: successResponseSchema, 401: errorResponseSchema },\n    summary: 'Configure auto-reply settings (POST for mobile compatibility)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  subscriptionSchema,\n  createSubscriptionSchema,\n  paymentSchema,\n  verifyPaymentSchema,\n} from '../schemas/shopkeeper-billing.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperBillingContract = c.router({\n  getSubscription: {\n    method: 'GET',\n    path: '/shopkeeper/subscription',\n    responses: {\n      200: subscriptionSchema.nullable(),\n      401: errorResponseSchema,\n    },\n    summary: 'Get current subscription',\n  },\n  createSubscription: {\n    method: 'POST',\n    path: '/shopkeeper/subscription',\n    body: createSubscriptionSchema,\n    responses: {\n      201: z.object({ subscription: subscriptionSchema, paymentUrl: z.string().optional() }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Subscribe to a plan',\n  },\n  cancelSubscription: {\n    method: 'POST',\n    path: '/shopkeeper/subscription/cancel',\n    body: z.object({}),\n    responses: {\n      200: subscriptionSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Cancel subscription',\n  },\n  verifyPayment: {\n    method: 'POST',\n    path: '/shopkeeper/subscription/verify-payment',\n    body: verifyPaymentSchema,\n    responses: {\n      200: z.object({ verified: z.boolean(), subscription: subscriptionSchema.optional() }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Verify mobile money payment',\n  },\n  listPayments: {\n    method: 'GET',\n    path: '/shopkeeper/subscription/payments',\n    query: z.object({ limit: z.coerce.number().int().min(1).max(100).optional() }),\n    responses: {\n      200: z.object({ payments: z.array(paymentSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'Payment history',\n  },\n  paystackWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/billing/webhook/paystack',\n    body: z.record(z.unknown()),\n    responses: { 200: z.object({ received: z.boolean() }) },\n    summary: 'Paystack payment webhook',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { dailyReportSchema } from '../schemas/shopkeeper.schemas';\nimport { errorResponseSchema, successResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperReportsContract = c.router({\n  getDailyReport: {\n    method: 'GET',\n    path: '/shopkeeper/reports/daily',\n    query: z.object({ date: z.coerce.date() }),\n    responses: {\n      200: dailyReportSchema.nullable(),\n      401: errorResponseSchema,\n    },\n    summary: 'Get report for specific date',\n  },\n  getReportRange: {\n    method: 'GET',\n    path: '/shopkeeper/reports/range',\n    query: z.object({\n      from: z.coerce.date(),\n      to: z.coerce.date(),\n    }),\n    responses: {\n      200: z.object({\n        reports: z.array(dailyReportSchema),\n        summary: z.object({\n          totalSales: z.number(),\n          totalTransactions: z.number(),\n        }),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get report data for date range',\n  },\n  downloadPdf: {\n    method: 'GET',\n    path: '/shopkeeper/reports/pdf',\n    query: z.object({ from: z.coerce.date(), to: z.coerce.date() }),\n    responses: {\n      200: z.any(),\n      401: errorResponseSchema,\n    },\n    summary: 'Generate and download PDF report',\n  },\n  triggerDailyReport: {\n    method: 'POST',\n    path: '/shopkeeper/reports/trigger',\n    body: z.object({ date: z.coerce.date().optional() }),\n    responses: {\n      200: z.object({ report: dailyReportSchema }),\n      401: errorResponseSchema,\n    },\n    summary: 'Manually trigger daily report generation',\n  },\n  sendDailyReport: {\n    method: 'POST',\n    path: '/shopkeeper/reports/daily/send',\n    body: z.object({}),\n    query: z.object({ date: z.coerce.date() }),\n    responses: {\n      200: successResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Generate daily report and send to owner WhatsApp',\n  },\n  getFinancialStatement: {\n    method: 'GET',\n    path: '/shopkeeper/reports/financial-statement',\n    query: z.object({\n      months: z.coerce.number().int().min(1).max(24).default(6),\n      format: z.enum(['pdf', 'csv', 'json']).default('json'),\n    }),\n    responses: {\n      200: z.object({\n        format: z.enum(['pdf', 'csv', 'json']),\n        pdfBase64: z.string().optional(),\n        csv: z.string().optional(),\n        json: z.record(z.unknown()).optional(),\n        filename: z.string().optional(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'P&L-style aggregates from daily reports for banks / lenders',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  installerSchema,\n  registerInstallerSchema,\n  onboardingSchema,\n  logOnboardingSchema,\n  logFollowUpSchema,\n} from '../schemas/shopkeeper-installer.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperInstallerContract = c.router({\n  registerInstaller: {\n    method: 'POST',\n    path: '/shopkeeper/installers/register',\n    body: registerInstallerSchema,\n    responses: {\n      201: z.object({ installer: installerSchema, token: z.string(), expiresIn: z.number() }),\n      400: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Register new installer',\n  },\n  loginInstaller: {\n    method: 'POST',\n    path: '/shopkeeper/installers/login',\n    body: z.object({ phone: z.string(), password: z.string().min(1) }),\n    responses: {\n      200: z.object({ installer: installerSchema, token: z.string(), expiresIn: z.number() }),\n      401: errorResponseSchema,\n    },\n    summary: 'Installer auth',\n  },\n  getInstallerProfile: {\n    method: 'GET',\n    path: '/shopkeeper/installers/me',\n    responses: {\n      200: z.object({\n        installer: installerSchema,\n        stats: z.object({\n          totalOnboardings: z.number(),\n          totalEarnings: z.number(),\n          pendingFollowUps: z.number(),\n        }),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get own profile + stats',\n  },\n  listOnboardings: {\n    method: 'GET',\n    path: '/shopkeeper/installers/onboardings',\n    query: z.object({ status: z.string().optional(), limit: z.coerce.number().int().min(1).max(100).optional() }),\n    responses: {\n      200: z.object({ onboardings: z.array(onboardingSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List installer onboardings',\n  },\n  logOnboarding: {\n    method: 'POST',\n    path: '/shopkeeper/installers/onboardings',\n    body: logOnboardingSchema,\n    responses: {\n      201: z.object({ onboarding: onboardingSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Log a new shop onboarding',\n  },\n  logFollowUp: {\n    method: 'POST',\n    path: '/shopkeeper/installers/follow-up',\n    body: logFollowUpSchema,\n    responses: {\n      200: z.object({ onboarding: onboardingSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Log a follow-up visit',\n  },\n  getLeaderboard: {\n    method: 'GET',\n    path: '/shopkeeper/installers/leaderboard',\n    query: z.object({ period: z.enum(['week', 'month']).optional(), limit: z.coerce.number().int().min(1).max(100).optional() }),\n    responses: {\n      200: z.object({\n        leaderboard: z.array(\n          z.object({\n            rank: z.number(),\n            installer: installerSchema,\n            onboardings: z.number(),\n            earnings: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Installer rankings',\n  },\n  getEarnings: {\n    method: 'GET',\n    path: '/shopkeeper/installers/earnings',\n    query: z.object({ from: z.coerce.date().optional(), to: z.coerce.date().optional() }),\n    responses: {\n      200: z.object({\n        total: z.number(),\n        byOnboarding: z.array(\n          z.object({\n            onboardingId: z.string().uuid(),\n            shopPhone: z.string(),\n            amount: z.number(),\n            paidAt: z.coerce.date(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Commission history',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nconst barcodeProductSchema = z.object({\n  id: z.string().uuid(),\n  barcode: z.string(),\n  name: z.string(),\n  brand: z.string().nullable(),\n  category: z.string().nullable(),\n  imageUrl: z.string().nullable(),\n});\n\nexport const shopkeeperBarcodesContract = c.router({\n  lookupBarcode: {\n    method: 'GET',\n    path: '/shopkeeper/barcodes/:barcode',\n    pathParams: z.object({ barcode: z.string() }),\n    responses: {\n      200: barcodeProductSchema.nullable(),\n      401: errorResponseSchema,\n    },\n    summary: 'Lookup product by barcode',\n  },\n  submitBarcode: {\n    method: 'POST',\n    path: '/shopkeeper/barcodes',\n    body: z.object({\n      barcode: z.string(),\n      name: z.string().min(1),\n      brand: z.string().optional(),\n      category: z.string().optional(),\n    }),\n    responses: {\n      201: barcodeProductSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Submit new barcode→product mapping',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  walletSchema,\n  tokenTransactionSchema,\n  tokenBundleSchema,\n  purchaseTokensSchema,\n  verifyTokenPaymentSchema,\n} from '../schemas/shopkeeper-wallet.schemas';\nimport {\n  errorResponseSchema,\n  paginationQuerySchema,\n  paginationResponseSchema,\n} from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperWalletContract = c.router({\n  getWallet: {\n    method: 'GET',\n    path: '/shopkeeper/wallet',\n    responses: {\n      200: z.object({\n        wallet: walletSchema,\n        recentTransactions: z.array(tokenTransactionSchema).max(10),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get wallet balance and recent activity',\n  },\n  purchaseTokens: {\n    method: 'POST',\n    path: '/shopkeeper/wallet/purchase',\n    body: purchaseTokensSchema,\n    responses: {\n      200: z.object({\n        wallet: walletSchema,\n        transaction: tokenTransactionSchema.optional(),\n        paymentUrl: z.string().optional(),\n        referenceId: z.string().optional(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      402: errorResponseSchema,\n    },\n    summary: 'Purchase a token bundle (initiates Paystack payment; wallet credited on success)',\n  },\n  listBundles: {\n    method: 'GET',\n    path: '/shopkeeper/wallet/bundles',\n    responses: {\n      200: z.object({ bundles: z.array(tokenBundleSchema) }),\n    },\n    summary: 'List available token bundles',\n  },\n  listTransactions: {\n    method: 'GET',\n    path: '/shopkeeper/wallet/transactions',\n    query: z\n      .object({\n        type: z.string().optional(),\n        feature: z.string().optional(),\n        from: z.coerce.date().optional(),\n        to: z.coerce.date().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        transactions: z.array(tokenTransactionSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List token transaction history',\n  },\n  verifyTokenPayment: {\n    method: 'POST',\n    path: '/shopkeeper/wallet/verify-payment',\n    body: verifyTokenPaymentSchema,\n    responses: {\n      200: z.object({\n        verified: z.boolean(),\n        wallet: walletSchema.optional(),\n        transaction: tokenTransactionSchema.optional(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Verify Paystack payment for token purchase',\n  },\n  tokenPaymentWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/wallet/webhook/flutterwave',\n    body: z.object({ event: z.string(), data: z.record(z.unknown()) }),\n    responses: {\n      200: z.object({ received: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Legacy webhook endpoint (not used)',\n  },\n  tokenPaymentWebhookPaystack: {\n    method: 'POST',\n    path: '/shopkeeper/wallet/webhook/paystack',\n    body: z.object({\n      event: z.string().optional(),\n      data: z.object({ reference: z.string().optional(), status: z.string().optional() }).passthrough().optional(),\n    }),\n    responses: {\n      200: z.object({ received: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Paystack payment webhook for token purchases (verify x-paystack-signature with raw body)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { shopSaleSchema } from '../schemas/shopkeeper.schemas';\nimport { errorResponseSchema, insufficientTokensErrorSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\n/**\n * Shop analytics API. Path segment \"analytics\" reflects the resource/domain;\n * the UI that consumes this is the \"dashboard\".\n */\nexport const shopkeeperAnalyticsContract = c.router({\n  getLiveView: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/live',\n    query: z.object({ since: z.coerce.date().optional() }),\n    responses: {\n      200: z.object({\n        recentSales: z.array(shopSaleSchema),\n        revenueToday: z.number(),\n        transactionsToday: z.number(),\n        lowStockItems: z.array(\n          z.object({\n            productId: z.string().uuid(),\n            name: z.string(),\n            currentStock: z.number(),\n            reorderThreshold: z.number().nullable(),\n          }),\n        ),\n        lastSyncAt: z.coerce.date().nullable(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Real-time transaction feed and stock levels',\n  },\n  getAnalytics: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/trends',\n    query: z.object({\n      period: z.enum(['day', 'week', 'month', 'quarter', 'year']).default('month'),\n      from: z.coerce.date().optional(),\n      to: z.coerce.date().optional(),\n    }),\n    responses: {\n      200: z.object({\n        salesTrend: z.array(\n          z.object({\n            date: z.string(),\n            revenue: z.number(),\n            transactions: z.number(),\n          }),\n        ),\n        productPerformance: z.array(\n          z.object({\n            productId: z.string().uuid(),\n            name: z.string(),\n            revenue: z.number(),\n            margin: z.number().nullable(),\n            velocity: z.number(),\n          }),\n        ),\n        paymentBreakdown: z.record(z.number()),\n        inputMethodBreakdown: z.record(z.number()),\n        peakHours: z.array(\n          z.object({\n            hour: z.number().int(),\n            transactions: z.number(),\n            revenue: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Sales trends, product performance, payment breakdowns',\n  },\n  getEmployeeView: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/employees',\n    query: z.object({\n      from: z.coerce.date().optional(),\n      to: z.coerce.date().optional(),\n    }),\n    responses: {\n      200: z.object({\n        employees: z.array(\n          z.object({\n            name: z.string(),\n            totalTransactions: z.number(),\n            totalRevenue: z.number(),\n            cashCollected: z.number(),\n            expectedCash: z.number(),\n            discrepancy: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Employee transactions and cash reconciliation',\n  },\n  getMultiShopComparison: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/multi-shop',\n    query: z.object({\n      period: z.enum(['day', 'week', 'month']).default('month'),\n    }),\n    responses: {\n      200: z.object({\n        shops: z.array(\n          z.object({\n            shopId: z.string().uuid(),\n            shopName: z.string(),\n            revenue: z.number(),\n            transactions: z.number(),\n            topProduct: z.string().nullable(),\n            activeEmployees: z.number(),\n            lowStockCount: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n    },\n    summary: 'Side-by-side shop comparison for multi-shop owners',\n  },\n  getMultiShopSummary: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/multi-shop/summary',\n    query: z.object({\n      period: z.enum(['day', 'week', 'month']).default('month'),\n    }),\n    responses: {\n      200: z.object({\n        aggregate: z.object({\n          shopCount: z.number(),\n          totalRevenue: z.number(),\n          totalTransactions: z.number(),\n          totalLowStockSkus: z.number(),\n          avgRevenuePerShop: z.number(),\n        }),\n        shops: z.array(\n          z.object({\n            shopId: z.string().uuid(),\n            shopName: z.string(),\n            revenue: z.number(),\n            transactions: z.number(),\n            topProduct: z.string().nullable(),\n            activeEmployees: z.number(),\n            lowStockCount: z.number(),\n            vsAverage: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema,\n    },\n    summary: 'Aggregate KPIs and per-shop health for multi-shop command center',\n  },\n  createShareLink: {\n    method: 'POST',\n    path: '/shopkeeper/analytics/share',\n    body: z.object({\n      permissions: z.array(\n        z.enum(['read_analytics', 'read_reports', 'read_transactions', 'bank_share']),\n      ),\n      expiresInDays: z.number().int().min(1).max(90).default(30),\n      label: z.string().max(100).optional(),\n    }),\n    responses: {\n      201: z.object({\n        shareToken: z.string(),\n        shareUrl: z.string(),\n        expiresAt: z.coerce.date(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Generate tokenized read-only link for accountant/lender',\n  },\n  getSharedView: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/shared/:token',\n    pathParams: z.object({ token: z.string() }),\n    query: z.object({\n      period: z.enum(['week', 'month', 'quarter']).default('month'),\n    }),\n    responses: {\n      200: z.object({\n        shopName: z.string(),\n        analytics: z.object({\n          salesTrend: z.array(\n            z.object({\n              date: z.string(),\n              revenue: z.number(),\n              transactions: z.number(),\n            }),\n          ),\n          totalRevenue: z.number(),\n          totalTransactions: z.number(),\n        }),\n        financialStatement: z.record(z.unknown()).optional(),\n        generatedAt: z.coerce.date(),\n      }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Public read-only view via shared link',\n  },\n  /** Gap 11: Sales forecast (moving average) per product. */\n  getSalesForecast: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/forecast',\n    query: z.object({ productId: z.string().uuid().optional() }),\n    responses: {\n      200: z.object({\n        forecast: z.array(\n          z.object({\n            productId: z.string().uuid(),\n            productName: z.string(),\n            avgDailyQty: z.number(),\n            forecastNext7Days: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Next 7 days demand forecast per product',\n  },\n  /** Gap 11: Customer segments (RFM). */\n  getCustomerSegmentation: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/segmentation',\n    responses: {\n      200: z.object({\n        segments: z.array(\n          z.object({\n            segment: z.string(),\n            count: z.number(),\n            customers: z.array(\n              z.object({\n                id: z.string().uuid(),\n                name: z.string(),\n                recencyDays: z.number(),\n                visits: z.number(),\n                totalSpent: z.number(),\n              }),\n            ),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Customer segments by recency, frequency, monetary',\n  },\n  /** Gap 11: Day-of-week and hour seasonality. */\n  getSeasonality: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/seasonality',\n    query: z.object({ days: z.coerce.number().int().min(7).max(365).default(90) }),\n    responses: {\n      200: z.object({\n        byDayOfWeek: z.array(\n          z.object({\n            day: z.number().int(),\n            dayName: z.string(),\n            revenue: z.number(),\n            transactions: z.number(),\n          }),\n        ),\n        byHour: z.array(\n          z.object({\n            hour: z.number().int(),\n            revenue: z.number(),\n            transactions: z.number(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Sales patterns by day of week and hour',\n  },\n  /** Aggregated market price benchmark (2 tokens per pull). */\n  getMarketBenchmark: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/market-benchmark',\n    query: z.object({\n      normalizedName: z.string().min(1),\n      market: z.string().min(1),\n      city: z.string().min(1),\n    }),\n    responses: {\n      200: z\n        .object({\n          normalizedName: z.string(),\n          market: z.string(),\n          city: z.string(),\n          medianPrice: z.number(),\n          p25: z.number().nullable(),\n          p75: z.number().nullable(),\n          sampleSize: z.number().int(),\n          updatedAt: z.coerce.date(),\n        })\n        .nullable(),\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n    },\n    summary: 'Median / IQR selling price for a product label in a market (privacy-safe aggregate)',\n  },\n  /** Owner-opt-in lender handoff package (internal credit score + financial statement). */\n  getLenderPackage: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/lender-package',\n    query: z.object({\n      /** Explicit owner consent required before score is returned. */\n      lenderOptIn: z.enum(['true']).optional(),\n    }),\n    responses: {\n      200: z.object({\n        scoreSummary: z.object({\n          score: z.number().int().min(0).max(100),\n          band: z.enum(['excellent', 'good', 'fair', 'limited']),\n          components: z.object({\n            revenueConsistency: z.number(),\n            paymentMethodDiversification: z.number(),\n            creditRepaymentRate: z.number(),\n            growthTrend: z.number(),\n          }),\n        }),\n        financialStatement: z.record(z.unknown()),\n        computedAt: z.coerce.date(),\n      }),\n      401: errorResponseSchema,\n      403: errorResponseSchema.extend({\n        code: z.literal('lending_not_eligible').optional(),\n        daysRemaining: z.number().int().nonnegative().optional(),\n      }),\n    },\n    summary: 'MFI handoff package — owner-only with explicit opt-in',\n  },\n  /** Gap 11: Margin optimization suggestions. */\n  getMarginOptimization: {\n    method: 'GET',\n    path: '/shopkeeper/analytics/margin',\n    responses: {\n      200: z.object({\n        products: z.array(\n          z.object({\n            productId: z.string().uuid(),\n            productName: z.string(),\n            currentMarginPercent: z.number(),\n            costPrice: z.number(),\n            sellingPrice: z.number(),\n            suggestion: z.string(),\n          }),\n        ),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Products with low margin or selling below cost',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  callSessionSchema,\n  initiateCallSchema,\n  callStatusSchema,\n  callLogQuerySchema,\n} from '../schemas/shopkeeper-telephony.schemas';\nimport {\n  errorResponseSchema,\n  insufficientTokensErrorSchema,\n  paginationResponseSchema,\n} from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperTelephonyContract = c.router({\n  incomingWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/telephony/webhook',\n    body: z.object({\n      sessionId: z.string(),\n      callerNumber: z.string(),\n      destinationNumber: z.string(),\n      direction: z.string(),\n      isActive: z.coerce.boolean(),\n      dtmfDigits: z.string().optional(),\n      /** When present (Africa's Talking recording callback), we run STT → intent → TTS → Play. */\n      recordingUrl: z.string().url().optional(),\n      recording_url: z.string().url().optional(),\n    }),\n    responses: {\n      200: z.object({ action: z.string() }),\n      400: errorResponseSchema,\n    },\n    summary: \"Africa's Talking incoming call handler\",\n  },\n  callStatusWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/telephony/status',\n    body: callStatusSchema,\n    responses: {\n      200: z.object({ received: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Call duration/cost status updates',\n  },\n  initiateCall: {\n    method: 'POST',\n    path: '/shopkeeper/telephony/call',\n    body: initiateCallSchema,\n    responses: {\n      200: z.object({\n        callSession: callSessionSchema,\n        tokensCharged: z.number().int(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n    },\n    summary: 'Trigger outbound proactive call to shop owner',\n  },\n  getCallLogs: {\n    method: 'GET',\n    path: '/shopkeeper/telephony/logs',\n    query: callLogQuerySchema,\n    responses: {\n      200: z.object({\n        calls: z.array(callSessionSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Call history for shop',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  analyzeInvoiceResponseSchema,\n  confirmRestockSchema,\n} from '../schemas/shopkeeper-vision.schemas';\nimport { errorResponseSchema, insufficientTokensErrorSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperVisionContract = c.router({\n  analyzeInvoice: {\n    method: 'POST',\n    path: '/shopkeeper/vision/invoice',\n    contentType: 'multipart/form-data',\n    body: z.object({ file: z.any() }),\n    responses: {\n      200: analyzeInvoiceResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n    },\n    summary: 'Upload image and return parsed invoice items',\n  },\n  confirmRestock: {\n    method: 'POST',\n    path: '/shopkeeper/vision/confirm',\n    body: confirmRestockSchema,\n    responses: {\n      200: z.object({\n        stockMovements: z.array(\n          z.object({\n            productId: z.string().uuid(),\n            productName: z.string(),\n            quantity: z.number(),\n            balanceAfter: z.number(),\n          }),\n        ),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Commit parsed invoice items to inventory',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { shopInsightSchema } from '../schemas/shopkeeper-insights.schemas';\nimport { errorResponseSchema, paginationQuerySchema, paginationResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperInsightsContract = c.router({\n  /** List insights for the shop (device pulls for sync / offline use). */\n  list: {\n    method: 'GET',\n    path: '/shopkeeper/insights',\n    query: z\n      .object({\n        since: z.coerce.date().optional(),\n        unreadOnly: z.coerce.boolean().optional().default(false),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        insights: z.array(shopInsightSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List cloud-generated insights for device sync',\n  },\n\n  /** Mark an insight as read (device has shown it to user). */\n  markRead: {\n    method: 'PATCH',\n    path: '/shopkeeper/insights/:id/read',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({}),\n    responses: {\n      200: shopInsightSchema,\n      404: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Mark insight as read',\n  },\n\n  /** Persist how the shop owner engaged with an insight. */\n  engageInsight: {\n    method: 'PATCH',\n    path: '/shopkeeper/insights/:id/engage',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({\n      engagementType: z.enum(['acted_on', 'dismissed', 'ignored']),\n    }),\n    responses: {\n      200: shopInsightSchema,\n      404: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Record insight engagement (acted on / dismissed / ignored)',\n  },\n\n  /** Aggregate trade agent usage (intents, daily counts, token spend from audit logs). */\n  agentUsage: {\n    method: 'GET',\n    path: '/shopkeeper/insights/agent-usage',\n    query: z.object({\n      from: z.coerce.date().optional(),\n      to: z.coerce.date().optional(),\n      limitDays: z.coerce.number().int().min(1).max(90).optional(),\n    }),\n    responses: {\n      200: z.object({\n        byIntent: z.record(z.number().int()),\n        byDay: z.array(z.object({ date: z.string(), count: z.number().int(), tokensUsed: z.number().int() })),\n        totalSessions: z.number().int(),\n        totalTokensUsed: z.number().int(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get trade agent usage (intents, daily counts, token spend)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema, paginationQuerySchema, paginationResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nconst serverAuditLogSchema = z.object({\n  id: z.string().uuid(),\n  actionType: z.string(),\n  payload: z.record(z.unknown()).nullable(),\n  createdAt: z.coerce.date(),\n});\n\nexport const shopkeeperAuditContract = c.router({\n  /** List server audit logs for the shop (accountability / dashboard). */\n  list: {\n    method: 'GET',\n    path: '/shopkeeper/audit-logs',\n    query: z\n      .object({\n        since: z.coerce.date().optional(),\n        until: z.coerce.date().optional(),\n        actionType: z.string().optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        logs: z.array(serverAuditLogSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List server-originated action audit logs',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema, insufficientTokensErrorSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\n/** Intent shape matches mobile TransactionIntent (record_sale, stock_query, restock, credit_summary, credit_payment). */\nexport const voiceIntentSchema = z.object({\n  type: z.enum(['record_sale', 'stock_query', 'restock', 'credit_summary', 'credit_payment']),\n  productId: z.string().optional().nullable(),\n  quantity: z.number().optional(),\n  unitPrice: z.number().optional(),\n  customerId: z.string().optional(),\n  amount: z.number().optional(),\n});\n\n\nexport type VoiceIntent = z.infer<typeof voiceIntentSchema>;\n\nconst voiceBatchItemSchema = z.object({\n  type: z.literal('record_sale'),\n  productId: z.string(),\n  quantity: z.number(),\n  unitPrice: z.number().optional(),\n});\n\nexport type VoiceBatchItem = z.infer<typeof voiceBatchItemSchema>;\n\nexport const voiceParseResponseSchema = z.object({\n  intent: voiceIntentSchema.nullable(),\n  batchIntents: z.array(voiceBatchItemSchema).nullable(),\n});\n\nexport type VoiceParseResponse = z.infer<typeof voiceParseResponseSchema>;\n\nexport const voiceTranscribeResponseSchema = z.object({\n  transcript: z.string(),\n  intent: voiceIntentSchema.nullable(),\n  batchIntents: z.array(voiceBatchItemSchema).nullable(),\n});\n\nexport type VoiceTranscribeResponse = z.infer<typeof voiceTranscribeResponseSchema>;\n\n/** One flat intent per row for ActionPreview-style review (ambient / multi-turn transcript). */\nexport const voiceAmbientExtractResponseSchema = z.object({\n  intents: z.array(voiceIntentSchema),\n});\n\nexport type VoiceAmbientExtractResponse = z.infer<typeof voiceAmbientExtractResponseSchema>;\n\nexport const shopkeeperVoiceContract = c.router({\n  /** Parse transcript to intent. Rule-based first; LLM fallback when null. Used by mobile when local parse fails. */\n  parseTranscript: {\n    method: 'POST',\n    path: '/shopkeeper/voice/parse',\n    body: z.object({\n      transcript: z.string(),\n      productHints: z.string().optional(), // comma-separated shop product names for LLM entity resolution\n    }),\n    responses: {\n      200: voiceParseResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n    },\n    summary: 'Parse voice transcript to transaction intent (keyword + optional LLM fallback)',\n  },\n\n  /**\n   * Transcribe audio and parse intent in one round trip.\n   * Mobile sends base64-encoded WAV (16kHz mono); API calls Whisper then VoiceParseService.\n   * Used as fallback when local regex parse fails and Whisper accuracy is needed.\n   * All AI calls stay server-side — no OpenAI key on device.\n   */\n  transcribeAudio: {\n    method: 'POST',\n    path: '/shopkeeper/voice/transcribe',\n    body: z.object({\n      audioBase64: z.string(),\n      language: z.string().optional(),       // 'en' | 'ha' | 'yo' | 'ig'\n      productHints: z.string().optional(),   // comma-separated shop product names for Whisper prompt\n    }),\n    responses: {\n      200: voiceTranscribeResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n      422: errorResponseSchema,\n    },\n    summary: 'Transcribe audio via Whisper and parse intent — single round trip, AI stays server-side',\n  },\n\n  /**\n   * After ambient listening ends, send the full rolling transcript. LLM extracts every concrete\n   * shop instruction (sales, stock, credit, restock), ignoring small talk. Same intent shapes as /voice/parse.\n   */\n  extractAmbientIntents: {\n    method: 'POST',\n    path: '/shopkeeper/voice/extract-ambient',\n    body: z.object({\n      transcript: z.string(),\n      productHints: z.string().optional(),\n    }),\n    responses: {\n      200: voiceAmbientExtractResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n    },\n    summary:\n      'Extract structured transaction intents from a long conversation transcript (ambient listening hand-off)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperMobileLlmContract = c.router({\n  getManifest: {\n    method: 'GET',\n    path: '/shopkeeper/mobile-llm/manifest',\n    responses: {\n      200: z.object({\n        modelFileName: z.string(),\n        sha256: z.string().optional(),\n        downloadUrl: z.string().url().optional(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get current on-device LLM model manifest (filename + hash for update check)',\n  },\n  getUploadLogUrl: {\n    method: 'POST',\n    path: '/shopkeeper/mobile-llm/upload-log-url',\n    body: z.object({}),\n    responses: {\n      200: z.object({\n        uploadUrl: z.string().url(),\n        key: z.string(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Get presigned PUT URL to upload one on-device LLM request/response log (direct to S3).',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema, paginationQuerySchema, paginationResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const reservationSchema = z.object({\n  id: z.string().uuid(),\n  quantity: z.number(),\n  status: z.enum(['pending', 'fulfilled', 'cancelled', 'expired']),\n  expiresAt: z.coerce.date(),\n  productId: z.string().uuid(),\n  customerId: z.string().uuid().nullable(),\n  createdAt: z.coerce.date(),\n  updatedAt: z.coerce.date(),\n});\n\nexport type ShopReservationDto = z.infer<typeof reservationSchema>;\n\nexport const shopkeeperReservationsContract = c.router({\n  listReservations: {\n    method: 'GET',\n    path: '/shopkeeper/reservations',\n    query: z\n      .object({\n        status: z.enum(['pending', 'fulfilled', 'cancelled', 'expired']).optional(),\n      })\n      .merge(paginationQuerySchema),\n    responses: {\n      200: z.object({\n        reservations: z.array(reservationSchema),\n        pagination: paginationResponseSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'List reservations for the shop',\n  },\n  createReservation: {\n    method: 'POST',\n    path: '/shopkeeper/reservations',\n    body: z.object({\n      productId: z.string().uuid(),\n      quantity: z.number().positive(),\n      customerId: z.string().uuid().optional(),\n      expiresAt: z.coerce.date(),\n    }),\n    responses: {\n      201: reservationSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Create a product reservation',\n  },\n  updateReservationStatus: {\n    method: 'PATCH',\n    path: '/shopkeeper/reservations/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({\n      status: z.enum(['pending', 'fulfilled', 'cancelled', 'expired']),\n    }),\n    responses: {\n      200: reservationSchema,\n      404: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Update reservation status (e.g. fulfil or cancel)',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nconst weeklyPlanItemSchema = z.object({\n  id: z.string().uuid(),\n  category: z.enum(['restock', 'credit_followup', 'pricing_review', 'expiry']),\n  title: z.string(),\n  detail: z.string(),\n  itemStatus: z.enum(['pending', 'approved', 'rejected', 'done']),\n  payload: z.record(z.unknown()).optional(),\n});\n\nexport const shopkeeperIntelligenceContract = c.router({\n  getAgentAutonomy: {\n    method: 'GET',\n    path: '/shopkeeper/intelligence/agent-autonomy',\n    responses: {\n      200: z.object({\n        settings: z.record(z.unknown()),\n        defaults: z.record(z.unknown()),\n        intentRouterCohort: z.enum(['control', 'experimental']),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Per-shop autonomous execution thresholds and fine-tune cohort',\n  },\n  putAgentAutonomy: {\n    method: 'PUT',\n    path: '/shopkeeper/intelligence/agent-autonomy',\n    body: z.record(z.string(), z.any()),\n    responses: {\n      200: z.object({\n        settings: z.record(z.unknown()),\n        defaults: z.record(z.unknown()),\n        intentRouterCohort: z.enum(['control', 'experimental']),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Update autonomy settings (partial merge over defaults)',\n  },\n  getWeeklyPlanLatest: {\n    method: 'GET',\n    path: '/shopkeeper/intelligence/weekly-plan/latest',\n    responses: {\n      200: z.object({\n        plan: z\n          .object({\n            id: z.string().uuid(),\n            weekKey: z.string(),\n            status: z.string(),\n            items: z.array(weeklyPlanItemSchema),\n            summaryText: z.string().nullable(),\n            deliveredAt: z.coerce.date().nullable(),\n            approvedAt: z.coerce.date().nullable(),\n            createdAt: z.coerce.date(),\n          })\n          .nullable(),\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Most recent weekly operational plan',\n  },\n  setWeeklyPlanStatus: {\n    method: 'POST',\n    path: '/shopkeeper/intelligence/weekly-plan/:planId/status',\n    pathParams: z.object({ planId: z.string().uuid() }),\n    body: z.object({\n      status: z.enum(['approved', 'rejected', 'partial']),\n    }),\n    responses: {\n      200: z.object({ updated: z.boolean() }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Approve or reject a weekly plan',\n  },\n  updateWeeklyPlanItem: {\n    method: 'PATCH',\n    path: '/shopkeeper/intelligence/weekly-plan/:planId/items/:itemId',\n    pathParams: z.object({ planId: z.string().uuid(), itemId: z.string().uuid() }),\n    body: z.object({\n      itemStatus: z.enum(['approved', 'rejected', 'done']),\n    }),\n    responses: {\n      200: z.object({ ok: z.boolean() }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Update a single weekly plan line item',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\nimport {\n  shopAlertPreferencesSchema,\n  updateShopAlertPreferencesSchema,\n} from '../schemas/shopkeeper-settings.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperSettingsContract = c.router({\n  getAlertPreferences: {\n    method: 'GET',\n    path: '/shopkeeper/settings/alert-preferences',\n    responses: {\n      200: z.object({\n        preferences: shopAlertPreferencesSchema,\n        defaults: shopAlertPreferencesSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Get owner alert push and digest preferences',\n  },\n  patchAlertPreferences: {\n    method: 'PATCH',\n    path: '/shopkeeper/settings/alert-preferences',\n    body: updateShopAlertPreferencesSchema,\n    responses: {\n      200: z.object({\n        preferences: shopAlertPreferencesSchema,\n        defaults: shopAlertPreferencesSchema,\n      }),\n      401: errorResponseSchema,\n    },\n    summary: 'Update alert push and digest preferences (partial merge)',\n  },\n});\n","import { z } from 'zod';\n\nexport const shopAlertPreferencesSchema = z.object({\n  lowStockPush: z.boolean(),\n  marginAlertPush: z.boolean(),\n  creditOverduePush: z.boolean(),\n  dailyDigestEnabled: z.boolean(),\n  /** Hour (0–23) in Africa/Lagos for daily digest delivery. */\n  digestHourLocal: z.number().int().min(0).max(23),\n});\n\nexport const updateShopAlertPreferencesSchema = shopAlertPreferencesSchema.partial();\n\nexport type ShopAlertPreferences = z.infer<typeof shopAlertPreferencesSchema>;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  storefrontGetShopResponseSchema,\n  storefrontCheckoutBodySchema,\n  storefrontCheckoutResponseSchema,\n  storefrontVerifyPaymentBodySchema,\n  storefrontVerifyPaymentResponseSchema,\n  storefrontPublicOrderSchema,\n  storefrontMarketQuerySchema,\n  storefrontMarketResponseSchema,\n  storefrontDirectoryQuerySchema,\n  storefrontListShopsResponseSchema,\n  storefrontMarketSearchQuerySchema,\n  storefrontMarketSearchResponseSchema,\n} from '../schemas/storefront.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const storefrontContract = c.router({\n  getMarket: {\n    method: 'GET',\n    path: '/storefront/market',\n    query: storefrontMarketQuerySchema,\n    responses: {\n      200: storefrontMarketResponseSchema,\n    },\n    summary: 'Public marketplace home: featured shops and categories',\n  },\n  listShops: {\n    method: 'GET',\n    path: '/storefront/shops',\n    query: storefrontDirectoryQuerySchema,\n    responses: {\n      200: storefrontListShopsResponseSchema,\n    },\n    summary: 'Public shop directory with location and category filters',\n  },\n  searchMarket: {\n    method: 'GET',\n    path: '/storefront/market/search',\n    query: storefrontMarketSearchQuerySchema,\n    responses: {\n      200: storefrontMarketSearchResponseSchema,\n    },\n    summary: 'Cross-shop product search grouped by merchant',\n  },\n  getShopBySlug: {\n    method: 'GET',\n    path: '/storefront/shops/:slug',\n    pathParams: z.object({ slug: z.string().min(1).max(64) }),\n    responses: {\n      200: storefrontGetShopResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Public storefront: shop profile and active catalog',\n  },\n  checkout: {\n    method: 'POST',\n    path: '/storefront/shops/:slug/checkout',\n    pathParams: z.object({ slug: z.string().min(1).max(64) }),\n    body: storefrontCheckoutBodySchema,\n    responses: {\n      200: storefrontCheckoutResponseSchema,\n      400: errorResponseSchema,\n      404: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Create pending online order and initialize Paystack (split to shop subaccount)',\n  },\n  getOrderById: {\n    method: 'GET',\n    path: '/storefront/orders/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    query: z.object({ token: z.string().min(16) }),\n    responses: {\n      200: storefrontPublicOrderSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Public order tracking (token-gated)',\n  },\n  verifyPayment: {\n    method: 'POST',\n    path: '/storefront/shops/:slug/verify-payment',\n    pathParams: z.object({ slug: z.string().min(1).max(64) }),\n    body: storefrontVerifyPaymentBodySchema,\n    responses: {\n      200: storefrontVerifyPaymentResponseSchema,\n      400: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Verify Paystack payment after redirect (fulfills order idempotently)',\n  },\n  storefrontWebhookPaystack: {\n    method: 'POST',\n    path: '/storefront/webhook/paystack',\n    body: z\n      .object({\n        event: z.string().optional(),\n        data: z\n          .object({\n            reference: z.string().optional(),\n            status: z.string().optional(),\n            amount: z.number().optional(),\n          })\n          .passthrough()\n          .optional(),\n      })\n      .passthrough(),\n    responses: {\n      200: z.object({ received: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Paystack webhook for storefront orders',\n  },\n});\n","import { z } from 'zod';\nimport { timestampSchema } from './common.schemas';\n\nexport const paymentProviderEnum = z.enum(['paystack', 'opay']);\nexport const orderChannelEnum = z.enum([\n  'litepos',\n  'whatsapp',\n  'storefront_web',\n  'voice',\n  'kiosk',\n]);\nexport const orderStatusEnum = z.enum([\n  'pending_approval',\n  'approved',\n  'awaiting_fulfillment',\n  'pending_payment',\n  'awaiting_manual_payment',\n  'paid',\n  'cancelled',\n  'failed',\n  'expired',\n]);\nexport const orderPaymentStatusEnum = z.enum([\n  'pending',\n  'paid',\n  'failed',\n  'expired',\n  'cancelled',\n]);\nexport const collectPaymentModeEnum = z.enum(['link', 'qr', 'auto']);\n\nexport const orderLineItemSchema = z.object({\n  productId: z.string().uuid(),\n  quantity: z.number().positive(),\n  unitPrice: z.number().nonnegative(),\n  lineTotal: z.number().nonnegative(),\n  productName: z.string(),\n});\n\nexport const shopOrderPaymentSchema = z\n  .object({\n    id: z.string().uuid(),\n    provider: paymentProviderEnum.or(z.literal('manual')),\n    reference: z.string(),\n    amount: z.number(),\n    status: orderPaymentStatusEnum,\n    paymentUrl: z.string().nullable(),\n    qrPayload: z.string().nullable(),\n    expiresAt: z.coerce.date().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const shopOrderSchema = z\n  .object({\n    id: z.string().uuid(),\n    status: orderStatusEnum,\n    channel: orderChannelEnum,\n    currency: z.string(),\n    totalAmount: z.number(),\n    buyerEmail: z.string().nullable(),\n    buyerPhone: z.string().nullable(),\n    buyerName: z.string().nullable(),\n    customerId: z.string().uuid().nullable(),\n    lineItems: z.array(orderLineItemSchema),\n    notes: z.string().nullable(),\n    payments: z.array(shopOrderPaymentSchema).optional(),\n  })\n  .merge(timestampSchema);\n\nexport const paymentConnectionSchema = z\n  .object({\n    id: z.string().uuid(),\n    provider: paymentProviderEnum,\n    status: z.enum(['active', 'inactive', 'pending']),\n    capabilities: z.object({\n      qr: z.boolean().optional(),\n      link: z.boolean().optional(),\n      transfer: z.boolean().optional(),\n    }),\n    merchantId: z.string().nullable(),\n    isDefault: z.boolean(),\n  })\n  .merge(timestampSchema);\n\nexport const createOrderSchema = z.object({\n  items: z\n    .array(\n      z.object({\n        productId: z.string().uuid(),\n        quantity: z.number().positive(),\n      }),\n    )\n    .min(1),\n  channel: orderChannelEnum.default('litepos'),\n  buyerEmail: z.string().email().optional(),\n  buyerPhone: z.string().optional(),\n  buyerName: z.string().optional(),\n  customerId: z.string().uuid().optional(),\n  notes: z.string().max(500).optional(),\n});\n\nexport const collectPaymentSchema = z.object({\n  provider: paymentProviderEnum.optional(),\n  mode: collectPaymentModeEnum.default('auto'),\n  buyerEmail: z.string().email().optional(),\n  expiryMinutes: z.number().int().min(5).max(60).default(10),\n});\n\nexport const approveOrderSchema = z.object({\n  paymentMode: z.enum(['collect', 'cash_on_pickup']).default('collect'),\n});\n\nexport const rejectOrderSchema = z.object({\n  reason: z.string().min(1).max(500),\n});\n\nexport const upsertPaymentConnectionSchema = z.object({\n  provider: paymentProviderEnum,\n  credentials: z.object({\n    merchantId: z.string().optional(),\n    subaccountCode: z.string().optional(),\n    publicKey: z.string().optional(),\n    secretKey: z.string().optional(),\n    apiKey: z.string().optional(),\n  }),\n  isDefault: z.boolean().optional(),\n});\n\nexport const supplierSchema = z\n  .object({\n    id: z.string().uuid(),\n    name: z.string(),\n    phone: z.string().nullable(),\n    email: z.string().nullable(),\n    bankDetails: z.record(z.unknown()).nullable(),\n    categories: z.array(z.string()).nullable(),\n    isActive: z.boolean(),\n  })\n  .merge(timestampSchema);\n\nexport const createSupplierSchema = z.object({\n  name: z.string().min(1).max(200),\n  phone: z.string().optional(),\n  email: z.string().email().optional(),\n  bankDetails: z.record(z.unknown()).optional(),\n  categories: z.array(z.string()).optional(),\n});\n\nexport const supplierInvoiceSchema = z\n  .object({\n    id: z.string().uuid(),\n    supplierId: z.string().uuid(),\n    amount: z.number(),\n    amountPaid: z.number(),\n    remainingBalance: z.number(),\n    currency: z.string(),\n    status: z.enum(['open', 'partial', 'paid', 'cancelled']),\n    dueDate: z.coerce.date().nullable(),\n    lineItems: z.array(z.record(z.unknown())).nullable(),\n    notes: z.string().nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const createSupplierInvoiceSchema = z.object({\n  supplierId: z.string().uuid(),\n  amount: z.number().positive(),\n  currency: z.string().default('NGN'),\n  dueDate: z.coerce.date().optional(),\n  lineItems: z.array(z.record(z.unknown())).optional(),\n  notes: z.string().optional(),\n});\n\nexport const supplierPaymentSchema = z\n  .object({\n    id: z.string().uuid(),\n    supplierId: z.string().uuid(),\n    invoiceId: z.string().uuid().nullable(),\n    amount: z.number(),\n    currency: z.string(),\n    status: z.enum([\n      'pending_confirmation',\n      'approved',\n      'processing',\n      'completed',\n      'failed',\n      'cancelled',\n    ]),\n    transferReference: z.string().nullable(),\n    provider: paymentProviderEnum.nullable(),\n  })\n  .merge(timestampSchema);\n\nexport const supplierInvoiceDetailSchema = supplierInvoiceSchema.extend({\n  payments: z.array(supplierPaymentSchema),\n});\n\nexport const createSupplierPaymentSchema = z.object({\n  supplierId: z.string().uuid(),\n  invoiceId: z.string().uuid().optional(),\n  amount: z.number().positive(),\n  notes: z.string().optional(),\n});\n\nexport const approveSupplierPaymentSchema = z.object({\n  confirm: z.literal(true),\n});\n\nconst breakdownBucketSchema = z.object({\n  count: z.number(),\n  total: z.number(),\n});\n\nexport const reconciliationSummarySchema = z.object({\n  date: z.string(),\n  paidCount: z.number(),\n  pendingCount: z.number(),\n  expiredCount: z.number(),\n  paidTotal: z.number(),\n  pendingTotal: z.number(),\n  mismatchCount: z.number(),\n  byProvider: z.object({\n    paystack: breakdownBucketSchema,\n    opay: breakdownBucketSchema,\n    manual: breakdownBucketSchema,\n  }),\n  byChannel: z.record(breakdownBucketSchema),\n  byPaymentMethod: z.record(breakdownBucketSchema),\n  cashCreditTotals: z.object({\n    cashTotal: z.number(),\n    creditTotal: z.number(),\n    transferTotal: z.number(),\n  }),\n  mismatches: z.array(\n    z.object({\n      orderId: z.string().uuid().optional(),\n      paymentId: z.string().uuid().optional(),\n      issue: z.string(),\n    }),\n  ),\n});\n\nexport const reconciliationMismatchSchema = z.object({\n  orderId: z.string().uuid().optional(),\n  paymentId: z.string().uuid().optional(),\n  issue: z.string(),\n  amount: z.number().optional(),\n  createdAt: z.coerce.date().optional(),\n});\n\nexport const reconciliationMismatchesResponseSchema = z.object({\n  date: z.string(),\n  items: z.array(reconciliationMismatchSchema),\n  page: z.number(),\n  limit: z.number(),\n  total: z.number(),\n  totalPages: z.number(),\n});\n\nexport type ShopOrder = z.infer<typeof shopOrderSchema>;\nexport type OrderLineItem = z.infer<typeof orderLineItemSchema>;\nexport type PaymentConnection = z.infer<typeof paymentConnectionSchema>;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport {\n  shopOrderSchema,\n  paymentConnectionSchema,\n  createOrderSchema,\n  collectPaymentSchema,\n  upsertPaymentConnectionSchema,\n  supplierSchema,\n  createSupplierSchema,\n  supplierInvoiceSchema,\n  createSupplierInvoiceSchema,\n  supplierPaymentSchema,\n  createSupplierPaymentSchema,\n  approveSupplierPaymentSchema,\n  approveOrderSchema,\n  rejectOrderSchema,\n  reconciliationSummarySchema,\n  reconciliationMismatchesResponseSchema,\n  supplierInvoiceDetailSchema,\n  orderStatusEnum,\n} from '../schemas/shopkeeper-payments.schemas';\nimport { errorResponseSchema } from '../schemas/common.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperPaymentsContract = c.router({\n  listPaymentConnections: {\n    method: 'GET',\n    path: '/shopkeeper/payment-connections',\n    responses: {\n      200: z.object({ connections: z.array(paymentConnectionSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List merchant payment provider connections',\n  },\n  upsertPaymentConnection: {\n    method: 'POST',\n    path: '/shopkeeper/payment-connections',\n    body: upsertPaymentConnectionSchema,\n    responses: {\n      200: z.object({ connection: paymentConnectionSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Connect or update a payment provider for this shop',\n  },\n  deletePaymentConnection: {\n    method: 'DELETE',\n    path: '/shopkeeper/payment-connections/:provider',\n    pathParams: z.object({ provider: z.enum(['paystack', 'opay']) }),\n    responses: {\n      200: z.object({ deleted: z.boolean() }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Remove a payment provider connection',\n  },\n  createOrder: {\n    method: 'POST',\n    path: '/shopkeeper/orders',\n    body: createOrderSchema,\n    responses: {\n      201: z.object({ order: shopOrderSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      409: errorResponseSchema,\n    },\n    summary: 'Create a commerce order from cart items',\n  },\n  listOrders: {\n    method: 'GET',\n    path: '/shopkeeper/orders',\n    query: z.object({\n      status: orderStatusEnum.optional(),\n      limit: z.coerce.number().int().min(1).max(100).optional(),\n    }),\n    responses: {\n      200: z.object({ orders: z.array(shopOrderSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List shop orders',\n  },\n  getOrder: {\n    method: 'GET',\n    path: '/shopkeeper/orders/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    responses: {\n      200: z.object({ order: shopOrderSchema }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Get order with payment attempts',\n  },\n  collectPayment: {\n    method: 'POST',\n    path: '/shopkeeper/orders/:id/collect-payment',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: collectPaymentSchema,\n    responses: {\n      200: z.object({\n        order: shopOrderSchema,\n        paymentUrl: z.string().optional(),\n        qrPayload: z.string().optional(),\n        reference: z.string(),\n        expiresAt: z.coerce.date().optional(),\n      }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Generate payment link or QR for an order',\n  },\n  verifyOrderPayment: {\n    method: 'POST',\n    path: '/shopkeeper/orders/:id/verify-payment',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({ reference: z.string().optional() }),\n    responses: {\n      200: z.object({ verified: z.boolean(), order: shopOrderSchema.optional() }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Poll-verify order payment status',\n  },\n  cancelOrder: {\n    method: 'POST',\n    path: '/shopkeeper/orders/:id/cancel',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({}).optional(),\n    responses: {\n      200: z.object({ order: shopOrderSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Cancel a pending order',\n  },\n  approveOrder: {\n    method: 'POST',\n    path: '/shopkeeper/orders/:id/approve',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: approveOrderSchema,\n    responses: {\n      200: z.object({ order: shopOrderSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Approve a customer-initiated order awaiting owner review',\n  },\n  rejectOrder: {\n    method: 'POST',\n    path: '/shopkeeper/orders/:id/reject',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: rejectOrderSchema,\n    responses: {\n      200: z.object({ order: shopOrderSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Reject a pending-approval order with reason',\n  },\n  paymentWebhook: {\n    method: 'POST',\n    path: '/shopkeeper/payments/webhook/:provider',\n    pathParams: z.object({ provider: z.enum(['paystack', 'opay']) }),\n    body: z.record(z.unknown()),\n    responses: {\n      200: z.object({ received: z.boolean() }),\n      400: errorResponseSchema,\n    },\n    summary: 'Unified payment provider webhook ingress',\n  },\n  listSuppliers: {\n    method: 'GET',\n    path: '/shopkeeper/suppliers',\n    responses: {\n      200: z.object({ suppliers: z.array(supplierSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List registered suppliers',\n  },\n  createSupplier: {\n    method: 'POST',\n    path: '/shopkeeper/suppliers',\n    body: createSupplierSchema,\n    responses: {\n      201: z.object({ supplier: supplierSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Register a supplier',\n  },\n  listSupplierInvoices: {\n    method: 'GET',\n    path: '/shopkeeper/supplier-invoices',\n    query: z.object({\n      status: z.enum(['open', 'partial', 'paid', 'cancelled']).optional(),\n      supplierId: z.string().uuid().optional(),\n    }),\n    responses: {\n      200: z.object({ invoices: z.array(supplierInvoiceSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List supplier bills',\n  },\n  createSupplierInvoice: {\n    method: 'POST',\n    path: '/shopkeeper/supplier-invoices',\n    body: createSupplierInvoiceSchema,\n    responses: {\n      201: z.object({ invoice: supplierInvoiceSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Create a supplier bill',\n  },\n  getSupplierInvoice: {\n    method: 'GET',\n    path: '/shopkeeper/supplier-invoices/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    responses: {\n      200: z.object({ invoice: supplierInvoiceDetailSchema }),\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Get supplier invoice with payment history',\n  },\n  listSupplierPayments: {\n    method: 'GET',\n    path: '/shopkeeper/supplier-payments',\n    query: z.object({\n      status: z\n        .enum([\n          'pending_confirmation',\n          'approved',\n          'processing',\n          'completed',\n          'failed',\n          'cancelled',\n        ])\n        .optional(),\n    }),\n    responses: {\n      200: z.object({ payments: z.array(supplierPaymentSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List supplier payment requests',\n  },\n  createSupplierPayment: {\n    method: 'POST',\n    path: '/shopkeeper/supplier-payments',\n    body: createSupplierPaymentSchema,\n    responses: {\n      201: z.object({ payment: supplierPaymentSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Draft a supplier payment (requires owner approval)',\n  },\n  confirmSupplierPayment: {\n    method: 'POST',\n    path: '/shopkeeper/supplier-payments/:id/confirm',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.object({\n      transferReference: z.string().optional(),\n      notes: z.string().optional(),\n    }),\n    responses: {\n      200: z.object({ payment: supplierPaymentSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Mark supplier payment as paid manually (offline transfer)',\n  },\n  approveSupplierPayment: {\n    method: 'POST',\n    path: '/shopkeeper/supplier-payments/:id/approve',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: approveSupplierPaymentSchema,\n    responses: {\n      200: z.object({ payment: supplierPaymentSchema }),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Approve and initiate orchestrated supplier transfer',\n  },\n  getReconciliationSummary: {\n    method: 'GET',\n    path: '/shopkeeper/payments/reconciliation',\n    query: z.object({\n      date: z.string().optional(),\n    }),\n    responses: {\n      200: reconciliationSummarySchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Daily payment reconciliation summary',\n  },\n  getReconciliationMismatches: {\n    method: 'GET',\n    path: '/shopkeeper/payments/reconciliation/mismatches',\n    query: z.object({\n      date: z.string().optional(),\n      page: z.coerce.number().int().min(1).optional(),\n      limit: z.coerce.number().int().min(1).max(100).optional(),\n    }),\n    responses: {\n      200: reconciliationMismatchesResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Paginated payment reconciliation mismatches',\n  },\n});\n","import { z } from 'zod';\n\nexport const groupBuyCampaignStatusEnum = z.enum(['active', 'threshold_met', 'expired', 'cancelled']);\n\nexport const groupBuyParticipantStatusEnum = z.enum(['opted_in', 'withdrawn', 'confirmed']);\n\nexport const groupBuyCampaignSchema = z.object({\n  id: z.string(),\n  normalizedName: z.string(),\n  market: z.string(),\n  thresholdQty: z.number(),\n  deadline: z.coerce.date(),\n  status: groupBuyCampaignStatusEnum,\n  totalDemand: z.number(),\n  participantCount: z.number(),\n});\n\nexport const groupBuyOptInSchema = z.object({\n  campaignId: z.string(),\n  quantity: z.number().positive(),\n});\n\nexport const groupBuyOptInResponseSchema = z.object({\n  participantId: z.string(),\n  campaignId: z.string(),\n  quantity: z.number(),\n  status: groupBuyParticipantStatusEnum,\n});\n\nexport type GroupBuyCampaign = z.infer<typeof groupBuyCampaignSchema>;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\nimport {\n  groupBuyCampaignSchema,\n  groupBuyOptInResponseSchema,\n  groupBuyOptInSchema,\n} from '../schemas/shopkeeper-group-buy.schemas';\n\nconst c = initContract();\n\nexport const shopkeeperGroupBuyContract = c.router({\n  listCampaigns: {\n    method: 'GET',\n    path: '/shopkeeper/group-buy/campaigns',\n    query: z.object({\n      market: z.string().optional(),\n    }),\n    responses: {\n      200: z.object({ campaigns: z.array(groupBuyCampaignSchema) }),\n      401: errorResponseSchema,\n    },\n    summary: 'List active group-buy campaigns for the shop market',\n  },\n  optIn: {\n    method: 'POST',\n    path: '/shopkeeper/group-buy/opt-in',\n    body: groupBuyOptInSchema,\n    responses: {\n      200: groupBuyOptInResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Opt into a group-buy campaign with a quantity',\n  },\n});\n","import { z } from 'zod';\n\nexport const demandSampleSizeBucketEnum = z.enum(['5-9', '10-24', '25-49', '50+']);\n\nexport const marketDemandProductSchema = z.object({\n  normalizedName: z.string(),\n  demandIndex: z.number(),\n  medianPriceBand: z\n    .object({\n      median: z.number(),\n      p25: z.number().nullable(),\n      p75: z.number().nullable(),\n    })\n    .nullable(),\n  sampleSizeBucket: demandSampleSizeBucketEnum,\n});\n\nexport const marketDemandResponseSchema = z.object({\n  city: z.string(),\n  market: z.string(),\n  category: z.string().nullable(),\n  from: z.string(),\n  to: z.string(),\n  products: z.array(marketDemandProductSchema),\n});\n\nexport type MarketDemandProduct = z.infer<typeof marketDemandProductSchema>;\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema } from '../schemas/common.schemas';\nimport { marketDemandResponseSchema } from '../schemas/platform-market-intelligence.schemas';\n\nconst c = initContract();\n\nexport const platformMarketIntelligenceContract = c.router({\n  getDemand: {\n    method: 'GET',\n    path: '/platform/market-intelligence/demand',\n    query: z.object({\n      city: z.string(),\n      market: z.string(),\n      category: z.string().optional(),\n      from: z.string(),\n      to: z.string(),\n    }),\n    responses: {\n      200: marketDemandResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n      429: errorResponseSchema,\n    },\n    summary: 'Anonymized aggregate demand signals for B2B partners',\n  },\n});\n","import { initContract } from '@ts-rest/core';\nimport { z } from 'zod';\nimport { errorResponseSchema, insufficientTokensErrorSchema } from '../schemas/common.schemas';\nimport { tradeAgentInputSchema, tradeAgentResponseSchema } from '../schemas/shopkeeper-trade-agent.schemas';\n\nconst c = initContract();\n\nconst recordLearnedExampleBodySchema = z.object({\n  input: z.string().min(1).max(500),\n  intentJson: z.record(z.unknown()),\n});\n\nconst recordRejectedExampleBodySchema = z.object({\n  input: z.string().min(1).max(500),\n});\n\nconst scheduledTaskSchema = z.object({\n  id: z.string().uuid(),\n  prompt: z.string(),\n  channel: z.string(),\n  scheduledAt: z.string().datetime(),\n  status: z.string(),\n  createdAt: z.string().datetime(),\n});\n\nconst feedbackBodySchema = z.object({\n  label: z.enum(['positive', 'negative', 'neutral']),\n  comment: z.string().max(500).optional(),\n  llmLogId: z.string().uuid().optional(),\n});\n\nexport const shopkeeperTradeAgentContract = c.router({\n  getScheduledTasks: {\n    method: 'GET',\n    path: '/shopkeeper/agent/scheduled-tasks',\n    responses: { 200: z.array(scheduledTaskSchema) },\n    summary: 'List pending scheduled follow-up tasks for the shop',\n  },\n  cancelScheduledTask: {\n    method: 'DELETE',\n    path: '/shopkeeper/agent/scheduled-tasks/:id',\n    pathParams: z.object({ id: z.string().uuid() }),\n    body: z.undefined(),\n    responses: {\n      204: z.undefined(),\n      404: errorResponseSchema,\n    },\n    summary: 'Cancel a pending scheduled follow-up task',\n  },\n  runAgent: {\n    method: 'POST',\n    path: '/shopkeeper/trade/agent',\n    body: tradeAgentInputSchema,\n    responses: {\n      200: tradeAgentResponseSchema,\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      402: insufficientTokensErrorSchema,\n      500: errorResponseSchema,\n    },\n    summary: 'Run the unified cloud trade agent',\n  },\n  recordLearnedExample: {\n    method: 'POST',\n    path: '/shopkeeper/agent/learned-example',\n    body: recordLearnedExampleBodySchema,\n    responses: {\n      204: z.undefined(),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Record a successful (input, intent) from mobile for in-context learning',\n  },\n  recordFeedback: {\n    method: 'POST',\n    path: '/shopkeeper/trade/agent/feedback',\n    body: feedbackBodySchema,\n    responses: {\n      204: z.undefined(),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n      404: errorResponseSchema,\n    },\n    summary: 'Attach fine-tuning label to LLM request log (latest trade-agent log if llmLogId omitted)',\n  },\n  recordRejectedExample: {\n    method: 'POST',\n    path: '/shopkeeper/agent/learned-example/rejected',\n    body: recordRejectedExampleBodySchema,\n    responses: {\n      204: z.undefined(),\n      400: errorResponseSchema,\n      401: errorResponseSchema,\n    },\n    summary: 'Record a rejected parse (e.g. user cancelled ActionPreviewSheet) for future task mining',\n  },\n});\n","import { z } from 'zod';\n\nexport const tradeAgentSourceEnum = z.enum(['whatsapp', 'telephony', 'api', 'cron']);\nexport const senderRoleEnum = z.enum(['owner', 'customer', 'unknown']);\n\n/** Preferred intent from client (e.g. mobile). Aligns with voice/parse; productId/productName both accepted. */\nexport const tradePreferredIntentSchema = z.object({\n  type: z.enum([\n    'stock_query',\n    'report_request',\n    'price_check',\n    'availability',\n    'credit_summary',\n    'credit_payment',\n    'record_sale',\n    'restock',\n    'stock_update',\n    'add_customer',\n    'competitor_check',\n    'weekly_analysis',\n    'supplier_optimize',\n    'schedule_follow_up',\n    'create_order',\n    'reserve',\n    'list_reservations',\n    'collect_payment',\n    'payment_status',\n    'reconcile_payments',\n    'create_supplier_bill',\n    'pay_supplier',\n    'analytics_query',\n  ]),\n  productId: z.string().optional().nullable(),\n  productName: z.string().optional().nullable(),\n  customerId: z.string().optional().nullable(),\n  customerName: z.string().optional().nullable(),\n  quantity: z.number().optional(),\n  unitPrice: z.number().optional(),\n  price: z.number().optional(),\n  amount: z.number().optional(),\n  operation: z.enum(['add', 'set']).optional(),\n  phoneNumber: z.string().optional().nullable(),\n  paymentMethod: z.string().optional().nullable(),\n  message: z.string().optional().nullable(),\n  delayHours: z.number().optional(),\n  channel: z.enum(['whatsapp', 'in_app']).optional().nullable(),\n});\n\nexport type TradePreferredIntent = z.infer<typeof tradePreferredIntentSchema>;\n\nexport const tradeAgentInputSchema = z.object({\n  input: z.string().min(1).max(2000),\n  source: tradeAgentSourceEnum,\n  senderRole: senderRoleEnum.optional(),\n  sessionId: z.string().uuid().optional(),\n  preferredIntent: tradePreferredIntentSchema.optional(),\n  /** Batch from mobile pipeline; when set, first item seeds resolution (multi-intent execution is server-side). */\n  preferredIntents: z.array(tradePreferredIntentSchema).max(20).optional(),\n});\n\nexport const tradeAgentIntentOutputSchema = z.object({\n  type: z.string(),\n  productName: z.string().optional(),\n  customerName: z.string().optional(),\n  quantity: z.number().optional(),\n  price: z.number().optional(),\n  operation: z.string().optional(),\n  phoneNumber: z.string().optional(),\n  amount: z.number().optional(),\n  paymentMethod: z.string().optional(),\n});\n\nexport const policyTierEnum = z.enum(['auto_execute', 'ask_confirm', 'escalate_human']);\nexport type PolicyTier = z.infer<typeof policyTierEnum>;\n\nexport const tradeAgentResponseSchema = z.object({\n  reply: z.string(),\n  intent: tradeAgentIntentOutputSchema.nullable(),\n  /** All intents executed in this turn (chain). Omitted when only legacy [intent] is used. */\n  intents: z.array(tradeAgentIntentOutputSchema).optional(),\n  /** Resolver + model confidence 0..1 when available. */\n  confidence: z.number().min(0).max(1).optional(),\n  clarificationNeeded: z.boolean().optional(),\n  clarificationPrompt: z.string().optional(),\n  /** When true, client should confirm before re-submitting with preferredIntent (Phase 5B autonomy). */\n  requiresConfirmation: z.boolean().optional(),\n  /** Confidence-based execution policy tier. */\n  policyTier: policyTierEnum.optional(),\n  policyReason: z.string().optional(),\n  result: z.record(z.unknown()).nullable(),\n  sessionId: z.string().uuid().optional(),\n  auditId: z.string().uuid().optional(),\n});\n"],"mappings":"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","names":["initContract","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","c","initContract","z","initContract","z","z","c","initContract","z","initContract","z","c","initContract","z","z","z","initContract","z","c","initContract","z","z","initContract","z","c","initContract","z","z","initContract","z","c","initContract","z","initContract","z","z","c","initContract","z","c","initContract"]}