/* eslint-disable @typescript-eslint/no-explicit-any */ import { APIResponseWithTime, AccountAssetInformationRequest, DepositRecordsRequest, EnableUniversalTransferRequest, InternalTransferRequest, SubAccountTransferRequest, SupportedDepositListRequest, TransferQueryRequest, UniversalTransferRequest, WithdrawalRecordsRequest, WithdrawalRequest, } from './types'; import { REST_CLIENT_TYPE_ENUM } from './util'; import BaseRestClient from './util/BaseRestClient'; /** * REST API client for Account Asset APIs */ export class AccountAssetClient extends BaseRestClient { getClientType() { return REST_CLIENT_TYPE_ENUM.accountAsset; } async fetchServerTime(): Promise { const res = await this.getServerTime(); return Number(res.time_now); } /** * * Transfer Data Endpoints * */ createInternalTransfer( params: InternalTransferRequest ): Promise> { return this.postPrivate('/asset/v1/private/transfer', params); } createSubAccountTransfer( params: SubAccountTransferRequest ): Promise> { return this.postPrivate('/asset/v1/private/sub-member/transfer', params); } getInternalTransfers( params?: TransferQueryRequest ): Promise> { return this.getPrivate('/asset/v1/private/transfer/list', params); } getSubAccountTransfers( params?: TransferQueryRequest ): Promise> { return this.getPrivate( '/asset/v1/private/sub-member/transfer/list', params ); } getSubAccounts(): Promise> { return this.getPrivate('/asset/v1/private/sub-member/member-ids'); } enableUniversalTransfer( params?: EnableUniversalTransferRequest ): Promise> { return this.postPrivate('/asset/v1/private/transferable-subs/save', params); } createUniversalTransfer( params: UniversalTransferRequest ): Promise> { return this.postPrivate('/asset/v1/private/universal/transfer', params); } getUniversalTransfers( params?: TransferQueryRequest ): Promise> { return this.getPrivate('/asset/v1/private/universal/transfer/list', params); } /** * * Wallet & Deposit Endpoints * */ getSupportedDepositList( params?: SupportedDepositListRequest ): Promise> { return this.get('/asset/v1/public/deposit/allowed-deposit-list', params); } getDepositRecords( params?: DepositRecordsRequest ): Promise> { return this.getPrivate('/asset/v1/private/deposit/record/query', params); } getWithdrawRecords( params?: WithdrawalRecordsRequest ): Promise> { return this.getPrivate('/asset/v1/private/withdraw/record/query', params); } getCoinInformation(coin?: string): Promise> { return this.getPrivate('/asset/v1/private/coin-info/query', { coin }); } getAssetInformation( params?: AccountAssetInformationRequest ): Promise> { return this.getPrivate('/asset/v1/private/asset-info/query', params); } submitWithdrawal( params: WithdrawalRequest ): Promise> { return this.postPrivate('/asset/v1/private/withdraw', params); } cancelWithdrawal(withdrawalId: number): Promise> { return this.postPrivate('/asset/v1/private/withdraw/cancel', { id: withdrawalId, }); } getDepositAddress(coin: string): Promise> { return this.getPrivate('/asset/v1/private/deposit/address', { coin }); } /** * * API Data Endpoints * */ getServerTime(): Promise { return this.get('/v2/public/time'); } getApiAnnouncements(): Promise> { return this.get('/v2/public/announcement'); } }