/**
 * Trading Platform Frontend Types
 * Centralized exports for all type definitions
 * Updated: 2026-01-27
 */

// Auth types - User, Session, RBAC, Team
export * from './auth.types';

// Payment types - Subscription, Wallet, Transaction
// Re-export all except ApiResponse (which conflicts with other modules)
export {
  type PlanInterval,
  type PlanTier,
  type SubscriptionStatus,
  type PaymentStatus,
  type TransactionType,
  type WalletStatus,
  type WalletType,
  type TransactionStatus,
  type PricingPlan,
  type PlanFeature,
  type PlanLimits,
  type Subscription,
  type SubscriptionWithPlan,
  type Payment,
  type PaymentMethod,
  type InvoiceLineItem,
  type Invoice,
  type Wallet,
  type WalletTransaction,
  type CouponInfo,
  type CreateSubscriptionInput,
  type CheckoutSession,
  type SubscriptionPreview,
  type BillingInfo,
  type UsageStats,
  type UsageStat,
  type SubscriptionResponse,
  type WalletResponse,
} from './payment.types';

// Investment types - PAMM accounts, Trading Agents
export * from './investment.types';

// ML types - Predictions, Signals, Models
export * from './ml.types';

// Trading types - Orders, Positions, Charts
// Re-export all except ApiResponse (which conflicts with other modules)
export {
  type OrderType,
  OrderTypeEnum,
  type OrderSide,
  OrderSideEnum,
  type OrderStatus,
  OrderStatusEnum,
  type PositionStatus,
  PositionStatusEnum,
  type SignalType,
  SignalTypeEnum,
  type ConfidenceLevel,
  ConfidenceLevelEnum,
  type Timeframe,
  TimeframeEnum,
  type BotType,
  BotTypeEnum,
  type BotStatus,
  BotStatusEnum,
  type Interval,
  type Candle,
  type Ticker,
  type OrderBookEntry,
  type OrderBook,
  type TradingSymbol,
  type SMAData,
  type EMAData,
  type RSIData,
  type MACDData,
  type BollingerBandsData,
  type CandleData,
  type VolumeData,
  type CrosshairData,
  type KlinesResponse,
  type TickerResponse,
  type TickersResponse,
  type OrderBookResponse,
  type SymbolSearchResponse,
  type TradingState,
  type Watchlist,
  type WatchlistItemData,
  type WatchlistSymbolData,
  type PaperAccount,
  type PaperPosition,
  type PaperOrder,
  type CreateOrderInput,
  type PaperTrade,
  type AccountSummary,
  type PaperBalance,
  type CandlestickChartProps,
  type ChartToolbarProps,
} from './trading.types';

// Education types - Courses, Lessons, Quizzes
// Re-export all except ApiResponse (which conflicts with other modules)
export {
  type DifficultyLevel,
  type CourseStatus,
  type ContentType,
  type EnrollmentStatus,
  type QuestionType,
  type CourseCategory,
  type CourseInstructor,
  type CourseListItem,
  type CourseDetail,
  type CourseModule,
  type LessonListItem,
  type LessonDetail,
  type LessonResource,
  type LessonProgress,
  type UserEnrollment,
  type EnrollmentWithCourse,
  type Quiz,
  type QuizQuestion,
  type QuizOption,
  type QuizAttempt,
  type QuizAnswer,
  type QuizResult,
  type QuestionResult,
  type GamificationProfile,
  type LevelProgress,
  type Achievement,
  type StreakStats,
  type LeaderboardEntry,
  type UserLeaderboardPosition,
  type GamificationSummary,
  type CourseFilters,
  type PaginatedResponse,
} from './education.types';

// Chat types - Messages, Conversations
export * from './chat.types';

// Trading Agents types - Atlas, Orion, Nova agents
export * from './tradingAgents.types';

// Export a unified ApiResponse type (using the most complete version from payment.types)
// Also export module-specific aliases for backward compatibility
export { type ApiResponse } from './payment.types';
export { type ApiResponse as PaymentApiResponse } from './payment.types';
export { type ApiResponse as TradingApiResponse } from './trading.types';
export { type ApiResponse as EducationApiResponse } from './education.types';
