import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  ChatRequest,
  ChatResponse,
  ConfigResponse,
  DailyRequest,
  DailyResponse,
  SummaryRequest,
  SummaryResponse,
  TitleRequest,
  TitleResponse,
  TranslationRequest,
  TranslationResponse,
  UsageRequest,
  UsageResponse,
} from "./types"

/**
 * AI module definition with nested AI-powered features
 */
export const aiModule = defineModule({
  name: "ai",
  prefix: "/ai",
  routes: {
    // AI chat interface - streaming response
    chat: defineRoute<ChatRequest, ChatResponse>("POST", "/chat"),

    // Content summarization
    summary: defineRoute<SummaryRequest, SummaryResponse>("GET", "/summary"),

    // Content translation
    translation: defineRoute<TranslationRequest, TranslationResponse>(
      "GET",
      "/translation",
    ),

    // Title generation for chat/content
    summaryTitle: defineRoute<TitleRequest, TitleResponse>(
      "POST",
      "/summary-title",
    ),

    // Daily summaries
    daily: defineRoute<DailyRequest, DailyResponse>("GET", "/daily"),

    usage: defineRoute<UsageRequest, UsageResponse>("GET", "/usage"),

    // AI chat configuration
    config: defineRoute<never, ConfigResponse>("GET", "/chat/config"),
  },
})

// Export the API type
export type AIAPI = typeof aiModule.api

export type * from "./types"
