/**
 * @typedef {import("@helios-lang/uplc").UplcProgramV2} UplcProgramV2
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("../typecheck/index.js").ScriptTypes} ScriptTypes
 * @typedef {import("./EntryPoint.js").EntryPoint} EntryPoint
 */
export class UserFunc {
    /**
     * @param {ModuleCollection} modules
     * @param {string} name - member functions have a `Type::` prefix
     */
    constructor(modules: ModuleCollection, name: string);
    /**
     * @readonly
     * @type {ModuleCollection}
     */
    readonly modules: ModuleCollection;
    /**
     * @readonly
     * @type {string}
     */
    readonly name: string;
    /**
     * @type {ConstStatement}
     */
    get mainConst(): ConstStatement;
    /**
     * @type {FuncStatement}
     */
    get mainFunc(): FuncStatement;
    /**
     * @type {FuncStatement | ConstStatement}
     */
    get main(): ConstStatement | FuncStatement;
    /**
     * @param {{
     *   optimize: boolean
     *   validatorTypes: ScriptTypes
     *   validatorIndices?: Record<string, number>
     *   hashDependencies: Record<string, string>
     *   currentScriptValue?: string
     * }} props
     * @returns {UplcProgramV2}
     */
    compile(props: {
        optimize: boolean;
        validatorTypes: ScriptTypes;
        validatorIndices?: Record<string, number>;
        hashDependencies: Record<string, string>;
        currentScriptValue?: string;
    }): UplcProgramV2;
    /**
     * @param {{
     *   validatorTypes: ScriptTypes
     *   validatorIndices?: Record<string, number>
     *   optimize?: boolean
     *   hashDependencies?: Record<string, string>
     *   currentScriptValue?: string
     * }} props
     * @returns {{
     *   ir: SourceMappedStringI
     *   requiresScriptContext: boolean
     *   requiresCurrentScript: boolean
     * }}
     */
    toIR(props: {
        validatorTypes: ScriptTypes;
        validatorIndices?: Record<string, number>;
        optimize?: boolean;
        hashDependencies?: Record<string, string>;
        currentScriptValue?: string;
    }): {
        ir: SourceMappedStringI;
        requiresScriptContext: boolean;
        requiresCurrentScript: boolean;
    };
}
export type UplcProgramV2 = import("@helios-lang/uplc").UplcProgramV2;
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type ScriptTypes = import("../typecheck/index.js").ScriptTypes;
export type EntryPoint = import("./EntryPoint.js").EntryPoint;
import { ModuleCollection } from "./ModuleCollection.js";
import { ConstStatement } from "../statements/index.js";
import { FuncStatement } from "../statements/index.js";
//# sourceMappingURL=UserFunc.d.ts.map