import { PosProvider } from '../../entities/pos-integration.entity'; export interface PosProduct { externalId: string; name: string; sku?: string; barcode?: string; category?: string; quantity: number; price?: number; cost?: number; imageUrl?: string; } export interface PosSaleItem { externalProductId: string; quantity: number; unitPrice: number; totalPrice: number; } export interface PosSale { externalId: string; items: PosSaleItem[]; totalAmount: number; timestamp: Date; } export interface PosInventoryUpdate { externalProductId: string; newQuantity: number; reason?: string; } export interface PosAdapterConfig { provider: PosProvider; credentials: Record; storeId: string; } export interface IPosAdapter { readonly provider: PosProvider; /** * Initialize the adapter with credentials */ initialize(config: PosAdapterConfig): Promise; /** * Validate the credentials are correct */ validateCredentials(): Promise; /** * Fetch all products from POS */ getProducts(): Promise; /** * Fetch a single product by external ID */ getProduct(externalId: string): Promise; /** * Update inventory quantity in POS */ updateInventory(updates: PosInventoryUpdate[]): Promise; /** * Fetch recent sales */ getSales(since: Date): Promise; /** * Generate webhook secret for this integration */ generateWebhookSecret(): string; /** * Verify webhook signature */ verifyWebhookSignature( payload: string, signature: string, secret: string, ): boolean; }