import { OpenAPIServer } from "./server/create.js";
import { OutputEntry } from "./utils/pages/builder.js";
import { SchemaToPagesOptions } from "./utils/pages/preset-auto.js";
import "./server/index.js";
import { ProcessedDocument } from "./utils/process-document.js";
import { PagesToTextOptions } from "./utils/pages/to-text.js";

//#region src/generate-file.d.ts
interface OutputFile {
  path: string;
  content: string;
}
interface IndexConfig {
  items: IndexItem[] | ((ctx: BeforeWriteContext) => IndexItem[]);
  /**
   * Generate URLs for cards
   */
  url: ((filePath: string) => string) | {
    baseUrl: string;
    /**
     * Base content directory
     */
    contentDir: string;
  };
}
interface IndexItem {
  path: string;
  title?: string;
  description?: string;
  /**
   * Specify linked pages:
   * - items in `inputs` to include all generated pages of a specific schema.
   * - specific Markdown/MDX files.
   */
  only?: string[];
}
interface GenerateFilesConfig extends PagesToTextOptions {
  /**
   * the OpenAPI server object
   */
  input: OpenAPIServer;
  /**
   * Output directory
   */
  output: string;
  /**
   * Generate index files with cards linking to generated pages.
   */
  index?: IndexConfig;
  /**
   * Can add/change/remove output files before writing to file system
   **/
  beforeWrite?: (this: BeforeWriteContext, files: OutputFile[]) => void | Promise<void>;
}
type Config = SchemaToPagesOptions & GenerateFilesConfig;
interface BeforeWriteContext {
  readonly generated: Record<string, OutputFile[]>;
  readonly generatedEntries: Record<string, OutputEntry[]>;
  readonly documents: Record<string, ProcessedDocument>;
}
declare function generateFiles(options: Config): Promise<void>;
declare function generateFilesOnly(options: SchemaToPagesOptions & Omit<GenerateFilesConfig, 'output'>): Promise<OutputFile[]>;
//#endregion
export { Config, OutputFile, generateFiles, generateFilesOnly };
//# sourceMappingURL=generate-file.d.ts.map