import type { TreeNode } from '../utils/terminal/layout'; /** Base options shared by both document-generation flows. */ export interface DocumentFileOptions { /** The `` part of the document. */ name: string; /** The `` part of the document. */ type: string; /** The optional `` part of the document. */ extension?: string; /** Relative path where the documents are located */ documentsDir: string; /** Has the current working directory */ cwd: string; /** Whether to write to the filesystem or not */ dryRun?: boolean; /** When true, suppress the per-write dry-run note (the caller emits it once). */ suppressDryRunNote?: boolean; } /** Options for copying an existing file into the documents directory. */ export interface GenerateDocumentFromExistingFileOptions extends DocumentFileOptions { /** Path to the existing file to copy. Resolved relative to `cwd` if not absolute. */ sourceFilePath: string; } /** * Generates a new, empty ready-made document file inside the documents * directory. Per D3, newly-scaffolded documents are created truly empty (0 * bytes) - no per-extension boilerplate. * * Returns `undefined` (and logs an info message) when a document with the same * `` part already exists, instead of overwriting it. */ export declare function generateDocument(options: DocumentFileOptions): Promise; /** * Copies an existing file into the documents directory under the derived * document filename `.[.]`. * * Returns `undefined` (and logs an info message) when a document with the same * `` part already exists, instead of overwriting it. */ export declare function generateDocumentFromExistingFile(options: GenerateDocumentFromExistingFileOptions): Promise; /** Builds the final document filename from its parts: `.[.]`. */ export declare function buildDocumentFileName(name: string, type: string, extension?: string): string;