UNPKG

@bit-ui-libs/common

Version:
133 lines (107 loc) 4.69 kB
import { AxiosRequestHeaders } from 'axios'; import { BaseService, BaseServiceOptions } from '../api/services/base-service'; import { FileFormatEnum, FilteredRequest, PagedRequest, PagedResponse, createQueryParams } from '../common'; import { AddReferenceVdtRequest, AddReferenceVdtResponse, CategoriesRequest, CollectionReport, CreateListingRequest, CreateListingResponse, GetActiveAssetTemplateRequest, GetAssetGroupsResponse, GetAssetWitnessesRequest, GetAssetsRequest, GetPublicWitnessesRequest, SearchAssetTypesRequest, ShareAssetRequest, } from './asset.service.interfaces'; import { makeGetAssetsParams } from './asset.service.utils'; import { AssetCategory, AssetTemplate, AssetType, AssetTypeStep, AssetWitness, ChainBaseEvent, CustomerAsset, FavoriteAsset, OwnershipHistoryResponse, } from './interfaces'; interface AssetServiceOptions { route: 'asset' | 'service'; } export class AssetService extends BaseService { assetApiUrl: string; constructor(opts: BaseServiceOptions & AssetServiceOptions) { super(opts); this.assetApiUrl = `${this.apiUrl}/assets/v1/${opts?.route}`; } list(req: GetAssetsRequest = {}) { return this.get<PagedResponse<CustomerAsset>>(this.assetApiUrl, makeGetAssetsParams(req)); } listPublic(req: GetAssetsRequest = {}) { return this.get<PagedResponse<CustomerAsset>>(`${this.assetApiUrl}/tokens-public`, makeGetAssetsParams(req)); } favorites(req: GetAssetsRequest = {}) { return this.get<PagedResponse<FavoriteAsset>>(`${this.assetApiUrl}/list-favorite`, makeGetAssetsParams(req)); } listGroup() { return this.get<GetAssetGroupsResponse>(`${this.assetApiUrl}/group`); } listCategories(req: FilteredRequest<CategoriesRequest> = {}) { return this.get<AssetCategory[]>(`${this.apiUrl}/assets/v1/asset-category/list`, req); } searchCategories(req: PagedRequest<CategoriesRequest> = {}) { return this.get<PagedResponse<AssetCategory>>(`${this.apiUrl}/assets/v1/asset-category`, req); } getCategoryByName(name?: string) { return this.get<AssetCategory>(`${this.apiUrl}/assets/v1/asset-category?name=${name}`); } getCategoryById(categoryId?: string, headers?: AxiosRequestHeaders) { return this.get<AssetCategory>(`${this.apiUrl}/assets/v1/asset-category/${categoryId}`, undefined, { headers }); } searchAssetTypes(req: PagedRequest<SearchAssetTypesRequest> = {}) { return this.get<PagedResponse<AssetType>>(`${this.apiUrl}/assets/v1/asset-type`, req); } listAssetTypes(req: PagedRequest<SearchAssetTypesRequest> = {}) { return this.get<AssetType[]>(`${this.apiUrl}/assets/v1/asset-type/list`, req); } getActiveAssetTemplate(req?: GetActiveAssetTemplateRequest, headers?: AxiosRequestHeaders) { return this.get<AssetTemplate>(`${this.apiUrl}/assets/v1/asset-template/activated`, req, { headers }); } getAssetType(assetTypeId: string, headers?: AxiosRequestHeaders) { return this.get<AssetType>(`${this.apiUrl}/assets/v1/asset-type/${assetTypeId}`, undefined, { headers }); } getAssetTypeSteps(assetTypeId: string) { return this.get<AssetTypeStep>(`${this.apiUrl}/assets/v1/asset-type/${assetTypeId}/steps`); } share(eventId: string, data: ShareAssetRequest): Promise<any> { return this.post<any, any>(`${this.assetApiUrl}/${eventId}/share`, data); } witnesses(req: GetAssetWitnessesRequest = {}) { return this.get<PagedResponse<AssetWitness>>(`${this.assetApiUrl}/witnesses`, req); } witnessesPublic(req: GetPublicWitnessesRequest = {}) { return this.get<PagedResponse<AssetWitness>>(`${this.assetApiUrl}/witnesses-public`, req); } addReferenceVdt(req: AddReferenceVdtRequest) { return this.post<AddReferenceVdtResponse, AddReferenceVdtRequest>(`${this.assetApiUrl}/reference-vdt`, req); } createListing(props: CreateListingRequest) { return this.post<CreateListingResponse, CreateListingRequest>(`${this.assetApiUrl}/listing`, props); } getAssetChainDetails(eventId: string) { return this.get<ChainBaseEvent>(`${this.apiUrl}/core-events/v1/chain-assets/${eventId}`); } getOwnershipHistory(req: GetAssetsRequest = {}) { const query = createQueryParams({ assetName: req.name, ...req }); return this.get<PagedResponse<OwnershipHistoryResponse>>(`${this.assetApiUrl}/ownership-history?${query}`); } getAssociatedAssets(req: GetAssetsRequest = {}) { return this.get<PagedResponse<CustomerAsset>>(`${this.apiUrl}/assets/v1/asset/tokens-public`, req); } vdtReport(fileFormat: FileFormatEnum) { return this.get<CollectionReport>(`${this.apiUrl}/assets/v1/asset/collection-report`, { fileFormat }); } }