import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  CreateRSSHubInstanceRequest,
  CreateRSSHubInstanceResponse,
  DeleteRSSHubInstanceRequest,
  DeleteRSSHubInstanceResponse,
  GetRSSHubInstanceRequest,
  GetRSSHubInstanceResponse,
  GetRSSHubInstancesListResponse,
  GetRSSHubStatusResponse,
  UseRSSHubInstanceRequest,
  UseRSSHubInstanceResponse,
} from "./types"

/**
 * RSSHub module for RSSHub instance management
 */
export const rsshubModule = defineModule({
  name: "rsshub",
  prefix: "/rsshub",
  routes: {
    // Create or update RSSHub instance
    createInstance: defineRoute<
      CreateRSSHubInstanceRequest,
      CreateRSSHubInstanceResponse
    >("POST", "/"),

    // List available RSSHub instances
    listInstances: defineRoute<never, GetRSSHubInstancesListResponse>(
      "GET",
      "/list",
    ),

    // Delete RSSHub instance
    deleteInstance: defineRoute<
      DeleteRSSHubInstanceRequest,
      DeleteRSSHubInstanceResponse
    >("DELETE", "/"),

    // Purchase/use RSSHub instance
    useInstance: defineRoute<
      UseRSSHubInstanceRequest,
      UseRSSHubInstanceResponse
    >("POST", "/use"),

    // Get specific RSSHub instance
    getInstance: defineRoute<
      GetRSSHubInstanceRequest,
      GetRSSHubInstanceResponse
    >("GET", "/"),

    // Get user's RSSHub usage status
    getStatus: defineRoute<never, GetRSSHubStatusResponse>("GET", "/status"),
  },
})

// Export the API type
export type RSSHubAPI = typeof rsshubModule.api
export type * from "./types"
