import { Node , SourceFile } from '#ast' ; import { Language } from '#language/language' ; import { CrossTypeHost } from './host' ; import { LanguagePackage } from './language-package' ; import { NullableJsonValue } from '@crosstype/common' ; export interface CompilerFunction { /**
     * Compile multiple output files
     */ ( files , options ? , hooks ? , host ? ) : Map < SourceFile , string > ; /**
     * Compile multiple output files
     */ ( node , options ? , hooks ? , host ? ) : string ; } export type Compiler < T extends CompilerFunction = CompilerFunction > = T & { pkg : LanguagePackage ; } ; export namespace Compiler { export type OptionsBase = Record < string , NullableJsonValue > ; export interface HooksBase { [ key ] : NullableJsonValue ; } export type AvailableLanguages = Language . CompilerLanguages ; export type AvailableOptions = { [ K in AvailableLanguages [ 'shortName' ] ] : Language . GetLanguage < K > [ 'CompileOptions' ] ; } ; export type AvailableHooks = { [ K in AvailableLanguages [ 'shortName' ] ] : Language . GetLanguage < K > [ 'CompileHooks' ] ; } ; param languages export declare function compile ( sourceFiles , options ? , hooks ? , host ? , languages ? ) ; /**
     * Compile a single node to a single language
     */ export declare function compileNode ( node , language , options ? , hooks ? , host ? ) ; param languages export declare function compileNode < L extends Array < AvailableLanguages [ 'shortName' ] > = Array < AvailableLanguages [ 'shortName' ] > > ( node , languages ? , options ? , hooks ? , host ? ) ; }