63 lines
1.7 KiB
TypeScript
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 }
|
|
}
|
|
|