/**
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("./Definitions.js").Definitions} Definitions
 */
/**
 * @typedef {{
 *   optimize: boolean
 *   isTestnet: boolean
 *   makeParamsSubstitutable?: boolean
 *   aliasNamespace?: string
 * }} ToIRContextProps
 */
export class ToIRContext {
    /**
     * @param {ToIRContextProps} props
     * @param {string} indent
     * @param {Map<string, RawFunc>} db
     */
    constructor(props: ToIRContextProps, indent?: string, db?: Map<string, RawFunc>);
    /**
     * @readonly
     * @type {ToIRContextProps}
     */
    readonly props: ToIRContextProps;
    /**
     * @readonly
     * @type {string}
     */
    readonly indent: string;
    /**
     * @type {Map<string, RawFunc>}
     */
    _db: Map<string, RawFunc>;
    /**
     * @type {string | undefined}
     */
    get aliasNamespace(): string | undefined;
    /**
     * @type {Map<string, RawFunc>}
     */
    get db(): Map<string, RawFunc>;
    /**
     * TODO: rename to isMainnet()
     * @type {boolean}
     */
    get isTestnet(): boolean;
    /**
     * @type {boolean}
     */
    get optimize(): boolean;
    /**
     * @type {boolean}
     */
    get paramsSubsitutable(): boolean;
    /**
     * @returns {ToIRContext}
     */
    tab(): ToIRContext;
    /**
     * Load all raw generics so all possible implementations can be generated correctly during type parameter injection phase
     * @returns {Map<string, ((ttp: string[], ftp: string[]) => SourceMappedStringI)>}
     */
    fetchRawGenerics(): Map<string, ((ttp: string[], ftp: string[]) => SourceMappedStringI)>;
    /**
     * Doesn't add templates
     * @param {SourceMappedStringI} ir
     * @param {Definitions | undefined} userDefs - some userDefs might have the __helios prefix
     * @returns {Definitions}
     */
    fetchRawFunctions(ir: SourceMappedStringI, userDefs?: Definitions | undefined): Definitions;
    /**
     * Appends parent debugging information which should be passed into IR via site.alias
     * @param {string} alias
     * @returns {ToIRContext}
     */
    appendAliasNamespace(alias: string): ToIRContext;
    /**
     * Adds parent debugging information which should be passed into IR via site.alias
     * @param {string} alias
     * @returns {ToIRContext}
     */
    withAliasNamespace(alias: string): ToIRContext;
    /**
     * @param {SourceMappedStringI} ir
     * @returns {SourceMappedStringI}
     */
    wrapWithRawFunctions(ir: SourceMappedStringI): SourceMappedStringI;
}
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type Definitions = import("./Definitions.js").Definitions;
export type ToIRContextProps = {
    optimize: boolean;
    isTestnet: boolean;
    makeParamsSubstitutable?: boolean;
    aliasNamespace?: string;
};
import { RawFunc } from "./RawFunc.js";
//# sourceMappingURL=ToIRContext.d.ts.map