export class FunctionModule {
    /**
     *
     * @param {string} id
     * @param {FunctionSignature} signature
     * @param {FunctionModuleReference[]} [dependencies]
     * @param {ParticleAttributeSpecification[]} [read_variables]
     * @param {LineBuilder} code_lines
     * @returns {FunctionModule}
     */
    static from({ id, signature, dependencies, read_variables, code_lines }: string): FunctionModule;
    /**
     *
     * @type {string}
     */
    id: string;
    /**
     *
     * @type {FunctionSignature}
     */
    signature: FunctionSignature;
    /**
     *
     * @type {FunctionModuleReference[]}
     */
    dependencies: FunctionModuleReference[];
    /**
     * These variables must be present in the program context
     * @type {ParticleAttributeSpecification[]}
     */
    read_variables: ParticleAttributeSpecification[];
    /**
     *
     * @type {LineBuilder}
     */
    code_lines: LineBuilder;
    /**
     *
     * @param {FunctionModuleReference} reference
     * @returns {boolean}
     */
    dependencyExists(reference: FunctionModuleReference): boolean;
    /**
     *
     * @param {string} id
     * @param {FunctionSignature} signature
     * @returns {boolean}
     */
    addDependency(id: string, signature: FunctionSignature): boolean;
    /**
     * Produce code for the function
     * @param {LineBuilder} output
     */
    generate(output: LineBuilder): void;
    /**
     * @readonly
     * @type {boolean}
     */
    readonly isFunctionModule: boolean;
}
import { FunctionSignature } from "./FunctionSignature.js";
import { FunctionModuleReference } from "./FunctionModuleReference.js";
import LineBuilder from "../../../../../../core/codegen/LineBuilder.js";
//# sourceMappingURL=FunctionModule.d.ts.map