/**
 * DWG parser — rust/dwg-wasm wrapper around the acadrust crate (MPL-2.0,
 * consumed unmodified; see rust/dwg-wasm). Emits the parseResult shape
 * Viewer2D.load() consumes. Lazy-imported so the wasm is only fetched when a
 * DWG is actually opened.
 *
 * History: until 2026-07-10 this module selected between acadrust and
 * @horu2day/pure-cad-parser (?dwgparser= toggle). The old parser was removed
 * after side-by-side validation (PROGRESS.md Phase 15).
 *
 * Post-process: fixDwgKoreanText repairs CP949→Latin-1 mojibake common in
 * older Korean DWGs (see fixDwgKoreanText.ts). Unicode-correct drawings
 * (e.g. BasicSample) are left unchanged.
 */

import { fixDwgKoreanText } from './fixDwgKoreanText';

export type CadParseResult = {
  version?: string;
  vars?: Record<string, unknown>;
  entities?: unknown[];
  tables?: Record<string, unknown>;
  stats?: Record<string, unknown>;
};

/** Parse a DWG buffer. Returns a parseResult for Viewer2D.load(). */
export async function parseDwgBuffer(bytes: Uint8Array): Promise<CadParseResult> {
  const { initAcadrustParser, parseDwgAcadrust } = await import('./acadrustParser');
  await initAcadrustParser();
  return fixDwgKoreanText(parseDwgAcadrust(bytes));
}
