import { apiClient } from './client' export interface Order { id: number order_no: string listing_id: number account_id: number owner_id: number renter_id: number owner_phone?: string renter_phone?: string title: string server_region: string login_platform: string rented_at?: string estimated_duration_hours: number rent_start_at?: string rent_end_at?: string rent_amount: number deposit_amount: number platform_fee: number account_snapshot?: Record status: string handoff_status: string settlement_status: string checkout?: Checkout created_at: string updated_at: string } export interface Checkout { id: number order_id: number initiated_by: number status: string rent_amount: number deposit_amount: number consumable_amount: number coin_consumed_m: number other_amount: number deposit_deduct_amount: number renter_refund_amount: number owner_income_amount: number content: string evidence_urls: string[] owner_adjustment_reason: string owner_adjusted_at?: string renter_confirmed_at?: string renter_rejected_at?: string created_at: string updated_at: string } export interface HandoffRecord { id: number order_id: number from_user_id: number to_user_id: number type: string content: string confirmed_by_renter_at?: string confirmed_by_owner_at?: string created_at: string } export interface SubmitCheckoutPayload { content: string consumable_amount: number coin_consumed_m: number other_amount: number evidence_urls: string[] } export interface CounterCheckoutPayload { consumable_amount: number coin_consumed_m: number other_amount: number deposit_deduct_amount: number reason: string evidence_urls: string[] } interface ApiResponse { code: string message: string data: T } export interface PaginatedResult { items: T[] total: number page: number page_size: number } export async function createOrder(listingId: number) { const { data } = await apiClient.post>('/orders', { listing_id: listingId, }) return data.data } export async function payOrder(id: number) { const { data } = await apiClient.post>(`/orders/${id}/pay`) return data.data } export async function fetchOrders() { const { data } = await apiClient.get>('/orders') return data.data.items } export async function fetchAdminOrders() { const { data } = await apiClient.get>('/admin/orders') return data.data.items } export async function fetchOrder(id: string | number) { const { data } = await apiClient.get>(`/orders/${id}`) return data.data } export async function fetchAdminOrder(id: string | number) { const { data } = await apiClient.get>(`/admin/orders/${id}`) return data.data } export async function cancelOrder(id: number) { const { data } = await apiClient.post>(`/orders/${id}/cancel`) return data.data } export async function submitHandoff(id: number, content: string) { const { data } = await apiClient.post>(`/orders/${id}/handoff`, { content }) return data.data } export async function fetchHandoffRecords(id: string | number) { const { data } = await apiClient.get>(`/orders/${id}/handoff-records`) return data.data.items } export async function fetchAdminHandoffRecords(id: string | number) { const { data } = await apiClient.get>(`/admin/orders/${id}/handoff-records`) return data.data.items } export async function adminCloseOrder(id: number, reason: string) { const { data } = await apiClient.post>(`/admin/orders/${id}/close`, { reason }) return data.data } export async function adminMarkOrderAbnormal(id: number, reason: string) { const { data } = await apiClient.post>(`/admin/orders/${id}/mark-abnormal`, { reason }) return data.data } export async function confirmReceive(id: number) { const { data } = await apiClient.post>(`/orders/${id}/confirm-receive`) return data.data } export async function submitReturn(id: number, content: string) { const { data } = await apiClient.post>(`/orders/${id}/return`, { content }) return data.data } export async function confirmReturn(id: number) { const { data } = await apiClient.post>(`/orders/${id}/confirm-return`) return data.data } export async function submitCheckout(id: number, payload: SubmitCheckoutPayload) { const { data } = await apiClient.post>(`/orders/${id}/checkout`, payload) return data.data } export async function confirmCheckout(id: number) { const { data } = await apiClient.post>(`/orders/${id}/checkout/confirm`) return data.data } export async function counterCheckout(id: number, payload: CounterCheckoutPayload) { const { data } = await apiClient.post>(`/orders/${id}/checkout/counter`, payload) return data.data } export async function acceptCheckout(id: number) { const { data } = await apiClient.post>(`/orders/${id}/checkout/accept`) return data.data }