import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  AuditAchievementRequest,
  AuditAchievementResponse,
  CheckAchievementRequest,
  CheckAchievementResponse,
  ClaimAchievementRequest,
  ClaimAchievementResponse,
  ListAchievementsRequest,
  ListAchievementsResponse,
} from "./types"

/**
 * Achievement module for user achievement management
 */
export const achievementModule = defineModule({
  name: "achievement",
  prefix: "/achievement",
  routes: {
    // List user achievements
    list: defineRoute<ListAchievementsRequest, ListAchievementsResponse>(
      "GET",
      "/",
    ),

    // Claim/receive achievement reward
    claim: defineRoute<ClaimAchievementRequest, ClaimAchievementResponse>(
      "PUT",
      "/",
    ),

    // Check achievement status
    check: defineRoute<CheckAchievementRequest, CheckAchievementResponse>(
      "POST",
      "/check",
    ),

    // Submit achievement for audit
    audit: defineRoute<AuditAchievementRequest, AuditAchievementResponse>(
      "POST",
      "/audit",
    ),
  },
})

// Export the API type
export type AchievementAPI = typeof achievementModule.api

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