interface VSCodeApi {
  postMessage(message: unknown): void;
  getState(): unknown;
  setState(state: unknown): void;
}

let api: VSCodeApi | undefined;

export function getVSCodeApi(): VSCodeApi {
  if (!api) {
    // @ts-expect-error — VS Code injects acquireVsCodeApi globally
    api = acquireVsCodeApi();
  }
  return api!;
}

export function postMessage(message: unknown): void {
  getVSCodeApi().postMessage(message);
}