/**
 * @import { Source, Word } from "@helios-lang/compiler-utils"
 */
/**
 * A Module is a collection of statements
 */
export class Module {
    /**
     * @param {Word} name
     * @param {Statement[]} statements
     * @param {Source} sourceCode
     */
    constructor(name: Word, statements: Statement[], sourceCode: Source);
    /**
     * @readonly
     * @type {Word}
     */
    readonly name: Word;
    /**
     * @readonly
     * @type {Source}
     */
    readonly sourceCode: Source;
    /**
     * @private
     * @readonly
     * @type {Statement[]}
     */
    private readonly _statements;
    /**
     * @type {Statement[]}
     */
    get statements(): Statement[];
    /**
     * @returns {string}
     */
    toString(): string;
    /**
     * @param {ModuleScope} scope
     */
    evalTypes(scope: ModuleScope): void;
    /**
     * This module can depend on other modules
     * @param {Module[]} modules
     * @param {Module[]} stack
     * @returns {Module[]}
     */
    filterDependencies(modules: Module[], stack?: Module[]): Module[];
    /**
     *
     * @param {(name: string, statement: ConstStatement) => void} callback
     */
    loopConstStatements(callback: (name: string, statement: ConstStatement) => void): void;
}
import type { Word } from "@helios-lang/compiler-utils";
import type { Source } from "@helios-lang/compiler-utils";
import { Statement } from "../statements/index.js";
import { ModuleScope } from "../scopes/index.js";
import { ConstStatement } from "../statements/index.js";
//# sourceMappingURL=Module.d.ts.map