import { BaseService, BaseServiceOptions } from '../../api/services/base-service'; import { createQueryParams } from '../../common'; import { Listing, ListingWithAsset } from '../interfaces'; import { EditPriceRequest, GetListingsReportRequest, SearchListingsRequest, SearchListingsResponse, } from './listing.service.interfaces'; export class ListingService extends BaseService { listingApiUrl: string; constructor(opts: BaseServiceOptions) { super(opts); this.listingApiUrl = `${this.apiUrl}/marketplace/v1/listings`; } search(req: SearchListingsRequest = {}) { return this.get(this.listingApiUrl, req); } editPrice(req: EditPriceRequest) { return this.put(this.listingApiUrl, req); } reportDownloadUrl(req: GetListingsReportRequest) { return this.get(`${this.listingApiUrl}/reports`, req); } getById(id: string) { return this.get(`${this.listingApiUrl}/${id}`); } removeById(id: string) { return this.delete(`${this.listingApiUrl}/${id}`); } getPublic(id: string) { return this.get(`${this.listingApiUrl}/${id}/public`); } getByAssetId(assetId: string) { return this.get(`${this.listingApiUrl}/${assetId}/asset`); } getPublicByAssetId(assetId: string) { return this.get(`${this.listingApiUrl}/${assetId}/public`); } removeByAssetId(assetId: string) { return this.delete(`${this.listingApiUrl}/${assetId}/asset`); } listingView(listingId: string) { return this.put(`${this.listingApiUrl}/${listingId}/viewed`, {}); } }