import { SellingMethodEnum } from '../../asset';
import { FileFormatEnum, FilteredRequest, PagedRequest, PagedResponse } from '../../common';
import { BaseAddress } from '../../users';
import { ListingExtended } from '../interfaces';

export type SearchListingsRequest = PagedRequest<{
  name?: string;
  createdBy?: string;
  sellingMethod?: SellingMethodEnum;
  categories?: string[];
  assetId?: string;
  types?: string[];
  zip?: string;
  miles?: number;
  minPrice?: number;
  maxPrice?: number;
  ranges?: number[][];
  shippingDetail?: {
    shipFrom: BaseAddress;
    weight: number;
    length: number;
    width: number;
    height: number;
  };
}>;

// Inferred from API documentation
export type SearchListingsResponse = PagedResponse<ListingExtended>;

export interface EditPriceRequest {
  id: string;
  price: number;
  concurrencyStamp: string;
}

export type GetListingsReportRequest = FilteredRequest<{
  createdBy?: string;
  from?: string;
  to?: string;
  appNames?: string[];
  fileFormat?: FileFormatEnum;
}>;
