import api from './client'; import type { BasicSummary, AccountBulkSelection, AccountBulkTagRequest, HuyaAccountItem, HuyaAccountSummary, HuyaDeviceBindingListResult, HuyaAutoRegisterBatch, HuyaAutoRegisterRequest, HuyaAutoRegisterRetryRequest, HuyaConfig, HuyaCookieItem, HuyaCookieImportResult, HuyaGoodsItem, HuyaPasswordAccountImportResult, HuyaPasswordLoginBatchResult, HuyaPasswordLoginRequest, HuyaAppPasswordLoginRequest, HuyaPasswordLoginResult, HuyaPasswordLoginSelectedRequest, HuyaRechargeGoodsItem, HuyaRegisterSuccessLog, HuyaSmsCodeRequest, HuyaSmsCodeResult, HuyaSmsLoginRequest, HuyaSmsLoginResult, HuyaTaskBatchRequest, HuyaTaskBatchResult, HuyaTaskItem, MessageCountResponse, MessageDeletedResponse, MessageResponse, PageParams, PaginatedResponse, TaskSummary, } from './types'; export const huyaApi = { taskTypes: () => api.get, Record>('/huya/task-types'), listAccounts: (params?: { assigned_only?: boolean; tag?: string; has_cookie?: boolean; include_cookie?: boolean }) => api.get('/huya/accounts', { params }), listAccountsPaged: (params: PageParams & { assigned_only?: boolean; tag?: string; has_cookie?: boolean; include_cookie?: boolean }) => api.get, PaginatedResponse>('/huya/accounts', { params }), accountsSummary: () => api.get('/huya/accounts/summary'), /** 设备绑定: 账号 ↔ 环境列表 (画像+指纹状态+账号表合并) */ listDeviceBindings: () => api.get('/huya/device-bindings'), /** 解绑: 删除设备画像与 hydevice 指纹状态, 下次登录自动生成全新环境 */ deleteDeviceBinding: (account: string) => api.delete<{ ok: boolean; message: string }, { ok: boolean; message: string }>(`/huya/device-bindings/${encodeURIComponent(account)}`), importCookies: (text: string, tag: string = '') => api.post('/huya/accounts/import-cookies', { text, tag }), importPasswordAccounts: (text: string, tag: string = '') => api.post('/huya/accounts/import-passwords', { text, tag }), passwordLogin: (data: HuyaPasswordLoginRequest) => api.post('/huya/accounts/password-login', data), passwordLoginSelected: (data: HuyaPasswordLoginSelectedRequest) => api.post('/huya/accounts/password-login/selected', data), appPasswordLogin: (data: HuyaAppPasswordLoginRequest) => api.post('/huya/accounts/app-password-login', data), appPasswordLoginSelected: (data: HuyaPasswordLoginSelectedRequest) => api.post('/huya/accounts/app-password-login/selected', data), smsCode: (data: HuyaSmsCodeRequest) => api.post('/huya/accounts/sms-code', data, { timeout: 120000 }), smsLogin: (data: HuyaSmsLoginRequest) => api.post('/huya/accounts/sms-login', data, { timeout: 120000 }), startAutoRegister: (data: HuyaAutoRegisterRequest) => api.post('/huya/register/batches', data), listAutoRegisterBatches: (limit = 50) => api.get('/huya/register/batches', { params: { limit } }), getAutoRegisterBatch: (batchId: string) => api.get(`/huya/register/batches/${batchId}`), stopAutoRegisterBatch: (batchId: string) => api.post(`/huya/register/batches/${batchId}/stop`), retryAutoRegisterBatch: (batchId: string, data?: HuyaAutoRegisterRetryRequest) => api.post(`/huya/register/batches/${batchId}/retry`, data || {}), exportAutoRegisterBatch: (batchId: string) => api.get(`/huya/register/batches/${batchId}/export`, { responseType: 'blob' }), listRegisterSuccessLogs: (params?: { batch_id?: string; tag?: string; limit?: number }) => api.get('/huya/register/success-logs', { params }), exportRegisterSuccessLogs: (params?: { batch_id?: string; tag?: string; limit?: number }) => api.get('/huya/register/success-logs/export', { responseType: 'blob', params }), stopBatch: (batchId: string) => api.post(`/huya/stop/${batchId}`), assign: (id: number, assigned_to: number | null) => api.put(`/huya/accounts/${id}/assign`, { assigned_to }), batchAssign: (account_ids: number[], assigned_to: number | null) => api.post('/huya/accounts/batch-assign', { account_ids, assigned_to }), assignmentsSummary: () => api.get<{ support_users: { id: number; username: string; assigned_count: number }[]; unassigned_count: number }, { support_users: { id: number; username: string; assigned_count: number }[]; unassigned_count: number }>('/huya/accounts/assignments/summary'), setTag: (id: number, tag: string) => api.put(`/huya/accounts/${id}/tag`, { tag }), batchTag: (account_ids: number[], tag: string) => api.put('/huya/accounts/batch-tag', { account_ids, tag }), batchTagSelection: (data: AccountBulkTagRequest) => api.put('/huya/accounts/batch-tag-selection', data), listTags: () => api.get('/huya/accounts/tags/list'), deleteAccount: (id: number) => api.delete(`/huya/accounts/${id}`), deleteAccounts: (accountIds: number[]) => api.delete('/huya/accounts/batch', { params: { account_ids: accountIds.join(',') } }), deleteAccountsSelection: (data: AccountBulkSelection) => api.post('/huya/accounts/batch-delete', data), listCookies: () => api.get('/huya/cookies'), listCookiesPaged: (params: PageParams & { include_cookie?: boolean }) => api.get, PaginatedResponse>('/huya/cookies', { params }), cookiesSummary: () => api.get('/huya/cookies/summary'), getCookie: (id: number) => api.get(`/huya/cookies/${id}`), exportCookies: (format?: string) => api.get('/huya/cookies/export', { responseType: 'blob', params: format ? { format } : {} }), deleteCookie: (id: number) => api.delete(`/huya/cookies/${id}`), deleteCookies: (accountIds: number[]) => api.delete('/huya/cookies/batch', { params: { account_ids: accountIds.join(',') } }), getConfig: () => api.get('/huya/config'), updateConfig: (data: Partial) => api.put('/huya/config', data), listGoods: () => api.get('/huya/goods'), listRechargeGoods: () => api.get('/huya/recharge-goods'), createTasks: (data: HuyaTaskBatchRequest) => api.post('/huya/tasks/batch', data), listTasks: (batchId?: string) => api.get('/huya/tasks', { // 列表轮询默认不带 base64 小程序码,避免每次 1MB+ 流量。 params: batchId ? { batch_id: batchId, include_images: false } : { include_images: false }, }), tasksSummary: () => api.get('/huya/tasks/summary'), getTask: (taskId: number) => api.get(`/huya/tasks/${taskId}`), cleanupOrphans: () => api.post<{ message: string; cleaned: number; success: boolean }, { message: string; cleaned: number; success: boolean }>('/huya/tasks/cleanup-orphans'), };