import { Observable } from 'rxjs';
import { AdminCategory, AdminCategoryListFilters } from '../models/admin-category.model';

export interface AdminCategoriesGateway {
  loadCategories(filters: AdminCategoryListFilters): Observable<AdminCategory[]>;
  loadCategory(id: string): Observable<AdminCategory | null>;
  createCategory(category: AdminCategory): Observable<AdminCategory>;
  updateCategory(category: AdminCategory): Observable<AdminCategory>;
  deleteCategory(id: string): Observable<void>;
  restoreCategory(id: string): Observable<AdminCategory | null>;
  isSlugTaken(slug: string, excludingId: string | null): Observable<boolean>;
}
