import { UniversalProduct, UniversalCategory, UniversalOrder } from './universal-models.interface';

export interface CommerceConnector {
  testConnection(): Promise<boolean>;
  fetchProducts(): Promise<UniversalProduct[]>;
  fetchCategories(): Promise<UniversalCategory[]>;
  checkStock(externalProductId: string, externalVariantId?: string): Promise<number>;
  createOrder(order: UniversalOrder): Promise<{ externalOrderId: string; orderNumber: string }>;
  updateOrderStatus(externalOrderId: string, status: string): Promise<boolean>;
  updatePaymentStatus(externalOrderId: string, status: 'PAID' | 'FAILED', gatewayReference?: string): Promise<boolean>;
  fetchOrder(externalOrderId: string): Promise<UniversalOrder>;
  updateStock(externalProductId: string, quantity: number, externalVariantId?: string): Promise<boolean>;
  registerWebhooks(deliveryUrl: string): Promise<boolean>;
  createProduct?(product: UniversalProduct): Promise<{ externalId: string }>;
  updateProduct?(externalProductId: string, product: UniversalProduct): Promise<boolean>;
  deleteProduct?(externalProductId: string, product?: any): Promise<boolean>;
}
