/**
 * Feishu message converter registry.
 *
 * Maps message_type → converter function.
 * Inspired by openclaw-lark/src/messaging/converters/index.ts.
 */

import type { FeishuMessageConverter } from './types'
import { convertText } from './text'
import { convertPost } from './post'
import { convertImage } from './image'
import { convertFile } from './file'
import { convertAudio } from './audio'
import { convertVideo } from './video'
import { convertSticker } from './sticker'
import { convertMergeForward } from './merge-forward'
import { convertShareChat } from './share-chat'
import { convertShareUser } from './share-user'
import { convertLocation } from './location'

export const messageConverters: ReadonlyMap<string, FeishuMessageConverter> = new Map([
  ['text', convertText],
  ['post', convertPost],
  ['image', convertImage],
  ['file', convertFile],
  ['audio', convertAudio],
  ['video', convertVideo],
  ['media', convertVideo], // alias — Feishu sometimes sends 'media' for video
  ['sticker', convertSticker],
  ['merge_forward', convertMergeForward],
  ['share_chat', convertShareChat],
  ['share_user', convertShareUser],
  ['location', convertLocation],
])

// Export individual converters for direct use
export {
  convertText,
  convertPost,
  convertImage,
  convertFile,
  convertAudio,
  convertVideo,
  convertSticker,
  convertMergeForward,
  convertShareChat,
  convertShareUser,
  convertLocation,
}

export type { ConvertedPayload, MessageConvertContext, FeishuMessageConverter } from './types'
