import { IdGenerator } from '../idGenerator';
import { FlatModule, QuintModule } from '../ir/quintIr';
import { LookupTable } from '../names/base';
import { SourceMap } from '../parsing/quintParserFrontend';
import { AnalysisOutput } from '../quintAnalyzer';
/**
 * Flatten an array of modules, replacing instances, imports and exports with
 * their definitions and inlining type aliases.
 *
 * @param modules The modules to flatten
 * @param table The lookup table to for all referred names
 * @param idGenerator The id generator to use for new definitions; should be the same as used for parsing
 * @param sourceMap The source map for all modules involved
 * @param analysisOutput The analysis output for all modules involved
 *
 * @returns An object containing the flattened modules, flattened lookup table and flattened analysis output
 */
export declare function flattenModules(modules: QuintModule[], table: LookupTable, idGenerator: IdGenerator, sourceMap: SourceMap, analysisOutput: AnalysisOutput): {
    flattenedModules: FlatModule[];
    flattenedTable: LookupTable;
    flattenedAnalysis: AnalysisOutput;
};
