import { Observable } from 'rxjs';
import { AdminOrder, AdminOrderListFilters, AdminOrdersListResult, AdminOrderStatus } from '../models/admin-order.model';

export interface AdminOrdersGateway {
  loadOrders(filters: AdminOrderListFilters): Observable<AdminOrdersListResult>;
  loadOrder(id: string): Observable<AdminOrder | null>;
  updateStatus(id: string, status: AdminOrderStatus): Observable<AdminOrder | null>;
  requestRefund(id: string): Observable<AdminOrder | null>;
  addNote(id: string, note: string, internal: boolean): Observable<AdminOrder | null>;
  archiveOrder(id: string): Observable<AdminOrder | null>;
  restoreOrder(id: string): Observable<AdminOrder | null>;
  deleteOrder(id: string): Observable<void>;
}
