///
///
import { Comment } from './comment';
import { Output } from './output';
import { Value } from './value';
import { Declaration } from './decl';
type Content = Comment | Declaration | Value;
type Header = Comment;
export interface ProgramOptions {
rootDirectory: string;
constructFileSuffix: string;
constructHeaders?: Header[];
specFileSuffix: string;
language: 'typescript' | 'javascript';
}
export declare class Program {
#private;
constructor(options: ProgramOptions);
get paths(): string[];
generatedConstructFile(path: string): GeneratedFile;
generatedSupportFile(path: string): GeneratedFile;
staticSpecFile(path: string, content: string | Buffer): StaticAuxiliaryFile;
staticStyleFile(path: string, content: string | Buffer): StaticAuxiliaryFile;
staticSupportFile(path: string, content: string | Buffer): StaticAuxiliaryFile;
realize(): Promise;
}
export declare abstract class ProgramFile {
readonly path: string;
constructor(path: string);
get dirname(): string;
get basename(): string;
relativePath(to: ProgramFile): string;
}
export interface ImportOptions {
relativeTo?: string;
relativeToSelf?: boolean;
alias?: string;
}
export interface NamedImport {
identifier: string;
alias?: string;
}
export declare class GeneratedFile extends ProgramFile {
#private;
namedImport(identifier: string, from: string, options?: ImportOptions): void;
plainImport(from: string, options?: ImportOptions): void;
header(header: Header): void;
section(content: Content): void;
render(output: Output): void;
}
export declare class StaticAuxiliaryFile extends ProgramFile {
readonly content: string | Buffer;
constructor(path: string, content: string | Buffer);
}
export {};