import ts from 'typescript'; export interface Identifiers { [key: string]: ts.InterfaceDeclaration | ts.TypeAliasDeclaration | ts.VariableStatement | ts.EnumDeclaration; } export interface ImportNamed { name: string | ts.Identifier; as?: string; } export interface ImportNode { module: string; named?: ImportNamed[]; defaultAs?: string | ts.Identifier; allAs?: string; } export interface DocumentContext { identifiers?: Identifiers; headers?: string[]; namespaces?: { [namespace: string]: Identifiers; }; imports?: { [key: string]: ImportNode; }; } export interface Document { type: TAstType; context: TContext; } export declare const document: (context: TContext, type: TAstType) => Document; export declare const mapWithContext: (context: TContext, items: T[], callbackfn: (context: TContext, item: T) => Document) => { items: TAstType[]; context: TContext; }; export declare const withIdentifier: (context: TContext, identifier: ts.InterfaceDeclaration | ts.TypeAliasDeclaration | ts.VariableStatement | ts.EnumDeclaration, namespace?: string) => TContext; export declare const withImports: (initialContext: TContext, ...values: ImportNode[]) => TContext; export declare const withHeader: (context: TContext, header: string) => TContext; export declare const printDocument: (doc: Document) => string;