import { normalizeEarningLedger, normalizeEarningPage, normalizeEarningPageQuery, normalizeEarningSummary, normalizeEarningWithdrawal, normalizeEarningWithdrawalPayload } from './earning-contract.js' import { normalizeResourcePathId } from './request-normalizers.js' import { requestStrict } from './request-client.js' export const earningApi = { async getEarningSummary(requestOptions = {}) { const earningSummary = await requestStrict({ url: '/genealogy/app/earnings/summary', method: 'GET' }, { requestController: requestOptions.requestController ?? null }) return normalizeEarningSummary(earningSummary) }, async getEarningLedgerPage(query = {}, requestOptions = {}) { const ledgerPage = await requestStrict({ url: '/genealogy/app/earnings/ledger', method: 'GET', data: normalizeEarningPageQuery(query) }, { requireData: false, requestController: requestOptions.requestController ?? null }) return normalizeEarningPage(ledgerPage, normalizeEarningLedger, '收益明细') }, async getEarningWithdrawalPage(query = {}, requestOptions = {}) { const withdrawalPage = await requestStrict({ url: '/genealogy/app/earnings/withdrawals', method: 'GET', data: normalizeEarningPageQuery(query) }, { requireData: false, requestController: requestOptions.requestController ?? null }) return normalizeEarningPage(withdrawalPage, normalizeEarningWithdrawal, '提现记录') }, async requestEarningWithdrawal(payload, requestOptions = {}) { const withdrawal = await requestStrict({ url: '/genealogy/app/earnings/withdrawals', method: 'POST', data: normalizeEarningWithdrawalPayload(payload) }, { requestController: requestOptions.requestController ?? null }) return normalizeEarningWithdrawal(withdrawal) }, async cancelEarningWithdrawal(withdrawalId, requestOptions = {}) { const normalizedWithdrawalId = normalizeResourcePathId(withdrawalId, '提现记录标识') const withdrawal = await requestStrict({ url: `/genealogy/app/earnings/withdrawals/${normalizedWithdrawalId}/cancel`, method: 'POST' }, { requestController: requestOptions.requestController ?? null }) return normalizeEarningWithdrawal(withdrawal) } }