import { apiFetch } from './client'
import type { AutoTradeRule, AutoTradePosition, AutoTradeLog, AutoTradeStatus, AutoTradeWatchSource } from './types'

export const autotradeApi = {
  // 엔진 상태
  getStatus: () =>
    apiFetch<AutoTradeStatus>('/api/autotrade/status'),

  // 규칙 목록
  getRules: () =>
    apiFetch<AutoTradeRule[]>('/api/autotrade/rules'),

  // 규칙 추가
  addRule: (rule: Omit<AutoTradeRule, 'id' | 'createdAt'>) =>
    apiFetch<AutoTradeRule>('/api/autotrade/rules', {
      method: 'POST',
      body: JSON.stringify(rule),
    }),

  // 규칙 수정
  updateRule: (id: string, rule: Partial<AutoTradeRule>) =>
    apiFetch<AutoTradeRule>(`/api/autotrade/rules/${id}`, {
      method: 'PUT',
      body: JSON.stringify(rule),
    }),

  // 규칙 삭제
  deleteRule: (id: string) =>
    apiFetch<{ ok: boolean }>(`/api/autotrade/rules/${id}`, { method: 'DELETE' }),

  // 규칙 활성화/비활성화
  toggleRule: (id: string) =>
    apiFetch<AutoTradeRule>(`/api/autotrade/rules/${id}/toggle`, { method: 'POST' }),

  // 포지션 목록
  getPositions: () =>
    apiFetch<AutoTradePosition[]>('/api/autotrade/positions'),

  // 거래 내역 (종료된 포지션)
  getTrades: () =>
    apiFetch<AutoTradePosition[]>('/api/autotrade/trades'),

  // 이벤트 로그
  getLogs: () =>
    apiFetch<AutoTradeLog[]>('/api/autotrade/logs'),

  // 감시 소스 조회
  getWatchSource: () =>
    apiFetch<AutoTradeWatchSource>('/api/autotrade/watch-source'),

  // 감시 소스 설정
  setWatchSource: (src: AutoTradeWatchSource) =>
    apiFetch<{ ok: boolean }>('/api/autotrade/watch-source', {
      method: 'PUT',
      body: JSON.stringify(src),
    }),

  // 엔진 시작
  start: () =>
    apiFetch<{ running: boolean }>('/api/autotrade/start', { method: 'POST' }),

  // 엔진 중지
  stop: () =>
    apiFetch<{ running: boolean }>('/api/autotrade/stop', { method: 'POST' }),

  // 긴급 전량 청산
  emergency: () =>
    apiFetch<{ ok: boolean }>('/api/autotrade/emergency', { method: 'POST' }),

  // 개별 포지션 청산
  closePosition: (code: string) =>
    apiFetch<{ ok: boolean }>(`/api/autotrade/positions/${code}/close`, { method: 'POST' }),
}
