// 核心交易模块的类型定义

/**
 * 交易对信息
 */
export interface TradingPair {
  symbol: string // 交易对符号，如 "BTC-USDT"
  baseAsset: string // 基础资产
  quoteAsset: string // 计价资产
  contractAddress?: string // 合约地址（Perp DEX）
  decimals: number // 小数位数
}

/**
 * 市场数据接口
 */
export interface MarketData {
  symbol: string
  price: number
  timestamp: number
  volume24h: number
  change24h: number
  high24h: number
  low24h: number
  bidPrice: number
  askPrice: number
  bidQty: number
  askQty: number
  fundingRate?: number // 资金费率（Perp DEX）
}

/**
 * 订单簿数据
 */
export interface OrderBook {
  symbol: string
  timestamp: number
  bids: Array<[number, number]> // [price, quantity]
  asks: Array<[number, number]> // [price, quantity]
  lastUpdateId: number
}

/**
 * K线数据
 */
export interface KlineData {
  symbol: string
  interval: string
  openTime: number
  open: number
  high: number
  low: number
  close: number
  volume: number
  closeTime: number
  quoteVolume: number
  trades: number
}

/**
 * 持仓信息
 */
export interface Position {
  id: string
  symbol: string
  side: 'long' | 'short'
  size: number // 仓位大小
  entryPrice: number // 入场价格
  markPrice: number // 标记价格
  leverage: number // 杠杆倍数
  unrealizedPnL: number // 未实现盈亏
  realizedPnL: number // 已实现盈亏
  fundingFees: number // 资金费用
  liquidationPrice: number // 强平价格
  margin: number // 保证金
  timestamp: number
  isOpen: boolean // 是否为开仓
}

/**
 * 交易订单
 */
export interface Order {
  id: string
  symbol: string
  side: 'buy' | 'sell'
  type: 'market' | 'limit' | 'stop' | 'stop_market'
  quantity: number
  price?: number
  stopPrice?: number
  status: 'pending' | 'filled' | 'cancelled' | 'rejected'
  filledQuantity: number
  remainingQuantity: number
  timestamp: number
  fee?: number
  feeAsset?: string
}

/**
 * 交易信号
 */
export interface TradingSignal {
  symbol: string
  action: 'open_long' | 'open_short' | 'close' | 'hedge'
  confidence: number // 置信度 0-1
  quantity: number // 建议数量
  price?: number // 建议价格
  leverage?: number // 建议杠杆
  reason: string // 信号原因
  indicators: Record<string, number> // 技术指标
  timestamp: number
}

/**
 * 对冲配置
 */
export interface HedgeConfig {
  symbol: string
  hedgeRatio: number // 对冲比例
  hedgeMethod: 'spot' | 'perp' | 'options' // 对冲方式
  maxSlippage: number // 最大滑点
  rebalanceThreshold: number // 重新平衡阈值
  minHedgeInterval: number // 最小对冲间隔
}

/**
 * 交易执行结果
 */
export interface ExecutionResult {
  success: boolean
  orderId?: string
  executedQuantity: number
  executedPrice: number
  fee: number
  error?: string
  txHash?: string // 链上交易哈希
  gasUsed?: number // gas 使用量
}

/**
 * 市场数据源
 */
export interface MarketDataSource {
  name: string
  type: 'cex' | 'dex' | 'oracle'
  baseUrl: string
  wsUrl?: string
  apiKey?: string
  secret?: string
  chainId?: number // 链ID
  rpcUrl?: string
}

/**
 * 价格数据
 */
export interface PriceData {
  symbol: string
  price: number
  source: string
  timestamp: number
  confidence: number // 数据置信度
}

/**
 * 资金费率数据
 */
export interface FundingRateData {
  symbol: string
  fundingRate: number
  markPrice: number
  indexPrice: number
  estimatedSettlePrice: number
  nextFundingTime: number
  timestamp: number
}

/**
 * 流动性数据
 */
export interface LiquidityData {
  symbol: string
  poolAddress: string
  reserve0: number
  reserve1: number
  fee: number
  timestamp: number
}
