@bit-ui-libs/common
Version:
This library was generated with [Nx](https://nx.dev).
133 lines (107 loc) • 4.69 kB
text/typescript
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 });
}
}