import { Observable } from 'rxjs';
import { AdminProduct, AdminProductCategoryOption, AdminProductListFilters, AdminProductsListResult } from '../models/admin-product.model';

export interface AdminProductsGateway {
  loadProducts(filters: AdminProductListFilters): Observable<AdminProductsListResult>;
  loadProduct(id: string): Observable<AdminProduct | null>;
  loadCategories(): Observable<AdminProductCategoryOption[]>;
  createProduct(product: AdminProduct): Observable<AdminProduct>;
  updateProduct(product: AdminProduct): Observable<AdminProduct>;
  deleteProduct(id: string): Observable<void>;
  duplicateProduct(id: string): Observable<AdminProduct | null>;
  archiveProduct(id: string): Observable<void>;
  restoreProduct(id: string): Observable<AdminProduct | null>;
}
