/* 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 * * @deprecated WARNING: V1/V2 private endpoints (Rest API & Websocket Stream) for mainnet * will be switched off gradually from 30 Oct 2023 UTC, so they are not promised a stability. * Please note that you are at your own risk of using old endpoints going forward, and please move to V5 ASAP. */ 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'); } }