import { apiFetch } from './client'
import type { AccountBalance, OrderRequest, OrderResult, PendingOrder, OrderHistory } from './types'

export const accountApi = {
  // 계좌 잔고
  getBalance: () =>
    apiFetch<AccountBalance>('/api/account/balance'),

  // 미체결 주문
  getPending: () =>
    apiFetch<PendingOrder[]>('/api/account/pending'),

  // 주문 내역
  getHistory: () =>
    apiFetch<OrderHistory[]>('/api/account/history'),

  // 예수금
  getDeposit: () =>
    apiFetch<unknown>('/api/account/deposit'),

  // 주문 가능 금액/수량
  getOrderable: (code: string, price: number) =>
    apiFetch<unknown>(`/api/account/orderable?code=${code}&price=${price}`),

  // 매수 주문
  buy: (req: OrderRequest) =>
    apiFetch<OrderResult>('/api/order/buy', {
      method: 'POST',
      body: JSON.stringify(req),
    }),

  // 매도 주문
  sell: (req: OrderRequest) =>
    apiFetch<OrderResult>('/api/order/sell', {
      method: 'POST',
      body: JSON.stringify(req),
    }),

  // 주문 정정
  modify: (req: OrderRequest & { orderNo: string }) =>
    apiFetch<OrderResult>('/api/order/modify', {
      method: 'PUT',
      body: JSON.stringify(req),
    }),

  // 주문 취소
  cancel: (orderNo: string, code: string, qty: number) =>
    apiFetch<{ ok: boolean }>('/api/order', {
      method: 'DELETE',
      body: JSON.stringify({ orderNo, code, qty }),
    }),
}
