import { apiGet, apiPost } from '@/lib/http' import type { CollectLookupResponse, UploadedFile, WorkOrder, WorkerFinanceRequest, WorkerListResponse, WorkerLoginResponse, WorkerProfileResponse, WorkerUser, WorkerWalletLedger, } from '@/types/worker-platform' export function registerWorker(payload: { username: string password: string displayName?: string phone?: string inviteCode?: string }) { return apiPost<{ worker: WorkerUser; reviewRequired: boolean }>( '/api/v1/worker/auth/register', payload, ) } export function loginWorker(payload: { username: string; password: string }) { return apiPost('/api/v1/worker/auth/login', payload) } export function fetchWorkerSession() { return apiGet<{ authenticated: boolean expiresAt: string worker: WorkerUser }>('/api/v1/worker/auth/session') } export function logoutWorker() { return apiPost<{ success: boolean }>('/api/v1/worker/auth/logout') } export function fetchWorkerProfile() { return apiGet('/api/v1/worker/profile') } export function fetchWorkerWalletLedgers(params?: Record) { return apiGet>( '/api/v1/worker/profile/wallet-ledgers', params, ) } export function fetchWorkerFinanceRequests(params?: Record) { return apiGet>( '/api/v1/worker/profile/finance-requests', params, ) } export function createWorkerRechargeRequest(payload: { amount?: number note?: string }) { return apiPost<{ request: WorkerFinanceRequest }>( '/api/v1/worker/profile/recharge-requests', payload, ) } export function createWorkerWithdrawRequest(payload: { amount?: number accountChannel?: string accountName?: string accountNo?: string note?: string }) { return apiPost<{ request: WorkerFinanceRequest }>( '/api/v1/worker/profile/withdraw-requests', payload, ) } export function changeWorkerPassword(payload: { currentPassword: string newPassword: string }) { return apiPost<{ worker: WorkerUser; reloginRequired: boolean }>( '/api/v1/worker/profile/change-password', payload, ) } export function fetchWorkerHallOrders(params?: Record) { return apiGet>( '/api/v1/worker/hall/orders', params, ) } export function grabWorkerOrder(workOrderId: number) { return apiPost<{ order: WorkOrder }>( `/api/v1/worker/hall/orders/${workOrderId}/grab`, ) } export function fetchWorkerMyOrders(params?: Record) { return apiGet>('/api/v1/worker/orders', params) } export function submitWorkerAcceptance( workOrderId: number, payload: { note?: string; imageUrls?: string[]; files?: UploadedFile[] }, ) { return apiPost<{ order: WorkOrder }>( `/api/v1/worker/orders/${workOrderId}/submit-acceptance`, payload, ) } export function lookupCollectOrder(orderNo: string) { return apiPost('/api/v1/collect/lookup', { orderNo }) } export function submitCollectOrder(payload: { orderNo: string workOrderId?: number fields: Record }) { return apiPost<{ complete: boolean; order: Record }>( '/api/v1/collect/submit', payload, ) }