export interface DocsManifest {
  version: string;
  coreVersion: string;
  generatedAt: string;
  navigation: NavigationSection[];
  pages: Record<string, DocsPage>;
  ai?: DocsAiPrompts;
}

export interface DocsAiPrompts {
  systemPrompts: {
    base: string;
    native: string;
    p5: string;
    shader: string;
  };
  conversionGuides: {
    p5: string;
    shadertoy: string;
    threejs: string;
  };
}

export interface NavigationSection {
  id: string;
  title: string;
  icon?: string;
  pages: NavigationPage[];
}

export interface NavigationPage {
  id: string;
  title: string;
  path?: string;
  children?: NavigationPage[];
}

export interface DocsPage {
  id: string;
  title: string;
  description: string;
  headings: PageHeading[];
  content: ContentBlock[];
}

export interface PageHeading {
  id: string;
  level: 2 | 3 | 4 | 5 | 6;
  text: string;
}

export type ContentBlock = TextBlock | LiveExampleBlock;

export interface TextBlock {
  type: 'text';
  markdown: string;
}

export interface LiveExampleBlock {
  type: 'live-example';
  title: string;
  description?: string;
  sceneCode: string;
  sceneFile: string;
  capabilities?: LiveExampleCapabilities;
  assets?: LiveExampleAssets;
}

export interface LiveExampleCapabilities {
  audio?: true;
  video?: true;
  interaction?: true;
}

export interface LiveExampleAssets {
  audio?: string;
  video?: string;
  images?: Record<string, string>;
}

export declare const docsApi: DocsManifest;
