import { convertDocfx } from './converters/docfx.js';
import { convertJavadoc } from './converters/javadoc.js';
import { convertPhpdoc } from './converters/phpdoc.js';
import { convertSphinx } from './converters/sphinx.js';
import { convertTypedoc } from './converters/typedoc.js';
import type { SdkConverter, SdkFormat, SdkReference } from './types.js';

const converters: Record<SdkFormat, SdkConverter> = {
  typedoc: convertTypedoc,
  docfx: convertDocfx,
  javadoc: convertJavadoc,
  sphinx: convertSphinx,
  phpdoc: convertPhpdoc,
};

export async function generateSdkReference(
  format: SdkFormat,
  sourcePath: string
): Promise<SdkReference> {
  const converter = converters[format];
  if (!converter) {
    throw new Error(`Unsupported SDK documentation format: ${format}`);
  }
  return converter(sourcePath);
}
