xtraderClient/src/api/wallet.ts
2026-03-15 15:03:47 +08:00

63 lines
1.7 KiB
TypeScript

import { get, post } from './request'
export interface DepositAddressData {
address?: string
depositAddress?: string
tokenAddress?: string
walletAddress?: string
[key: string]: unknown
}
export interface DepositAddressResponse {
code: number
data?: DepositAddressData
msg?: string
}
export interface GetDepositAddressParams {
chain: string
tokenSymbol?: string
}
function pickAddress(d: DepositAddressData | undefined): string | undefined {
if (!d) return undefined
return (
(d.walletAddress as string | undefined) ??
(d.externalWalletAddress as string | undefined) ??
(d.depositAddress as string | undefined) ??
(d.tokenAddress as string | undefined) ??
(d.address as string | undefined)
)
}
export interface CollectDepositParams {
userId: number
}
export async function collectDeposit(
data: CollectDepositParams,
config?: { headers?: Record<string, string> },
): Promise<{ code: number; msg?: string }> {
return post<{ code: number; msg?: string }>('/wallet/collect', data, config)
}
export async function getDepositAddress(
params: GetDepositAddressParams,
config?: { headers?: Record<string, string> },
): Promise<{ ok: boolean; address?: string; raw?: DepositAddressResponse }> {
const paths = ['/pmset/getDepositAddress', '/wallet/getDepositAddress', '/pmset/getDepositAddressClient']
for (const p of paths) {
try {
const res = await get<DepositAddressResponse>(p, params as any, config)
const codeOk = res.code === 0 || res.code === 200
const addr = pickAddress(res.data)
if (codeOk && addr && typeof addr === 'string' && addr.length > 0) {
return { ok: true, address: addr, raw: res }
}
} catch {
}
}
return { ok: false }
}