import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  CategoriesGetQuery,
  CategoriesGetResponse,
  CategoryDeleteRequest,
  CategoryDeleteResponse,
  CategoryPatchRequest,
  CategoryPatchResponse,
} from "./types"

/**
 * Categories module definition - Subscription categorization
 */
export const categoriesModule = defineModule({
  name: "categories",
  prefix: "/categories",
  routes: {
    // Get user categories
    get: defineRoute<CategoriesGetQuery, CategoriesGetResponse>("GET", "/"),

    // Update category for subscription
    update: defineRoute<CategoryPatchRequest, CategoryPatchResponse>(
      "PATCH",
      "/",
    ),

    // Delete category
    delete: defineRoute<CategoryDeleteRequest, CategoryDeleteResponse>(
      "DELETE",
      "/",
    ),
  },
})

// Export the API type
export type CategoriesAPI = typeof categoriesModule.api

// Re-export types for external consumption
export type * from "./types"
