import { defineModule, defineRoute } from "../../shared/define-module"
import type {
  CreateMessagingTokenRequest,
  CreateMessagingTokenResponse,
  DeleteMessagingTokenRequest,
  DeleteMessagingTokenResponse,
  GetMessagingTokensResponse,
} from "./types"

/**
 * Messaging module for push notification management
 */
export const messagingModule = defineModule({
  name: "messaging",
  prefix: "/messaging",
  routes: {
    // List messaging tokens for user
    getTokens: defineRoute<never, GetMessagingTokensResponse>("GET", "/"),

    // Create or update messaging token
    createToken: defineRoute<
      CreateMessagingTokenRequest,
      CreateMessagingTokenResponse
    >("POST", "/"),

    // Remove messaging token
    deleteToken: defineRoute<
      DeleteMessagingTokenRequest,
      DeleteMessagingTokenResponse
    >("DELETE", "/"),
  },
})

// Export the API type
export type MessagingAPI = typeof messagingModule.api

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