/**
 * Wraps 'inner' IR source with some definitions (used for top-level statements and for builtins)
 * @param {SourceMappedStringI} inner
 * @param {Definitions} definitions - name -> definition
 * @returns {SourceMappedStringI}
 */
export function wrapWithDefs(inner: SourceMappedStringI, definitions: Definitions): SourceMappedStringI;
/**
 * @typedef {{
 *   dependsOnOwnHash: boolean
 *   purpose?: string
 *   name: string
 *   hashDependencies: Record<string, string>
 *   validatorTypes?: ScriptTypes
 *   validatorIndices?: Record<string, number>
 *   currentScriptValue?: string
 *   makeParamsSubstitutable: boolean
 * }} ExtraDefOptions
 */
/**
 * @param {ExtraDefOptions} options
 * @returns {Definitions}
 */
export function genExtraDefs(options: ExtraDefOptions): Definitions;
/**
 * @protected
 * @param {SourceMappedStringI} ir
 * @param {Definitions} definitions
 * @returns {Set<string>}
 */
export function collectAllUsed(ir: SourceMappedStringI, definitions: Definitions): Set<string>;
/**
 * @typedef {import("@helios-lang/compiler-utils").Site} Site
 * @typedef {import("@helios-lang/ir").SourceMappedStringI} SourceMappedStringI
 * @typedef {import("../typecheck/index.js").ScriptTypes} ScriptTypes
 */
/**
 * `keySite` is an optional way to give the key a proper name
 * @typedef {{
 *   content: SourceMappedStringI
 *   keySite?: Site
 * }} Definition
 */
/**
 * TODO: this should be wrapped by a class
 * @typedef {Map<string, Definition>} Definitions
 */
export const TAB: "    ";
export const PARAM_IR_PREFIX: "__";
export const PARAM_IR_MACRO: "__param";
export type ExtraDefOptions = {
    dependsOnOwnHash: boolean;
    purpose?: string;
    name: string;
    hashDependencies: Record<string, string>;
    validatorTypes?: ScriptTypes;
    validatorIndices?: Record<string, number>;
    currentScriptValue?: string;
    makeParamsSubstitutable: boolean;
};
export type Site = import("@helios-lang/compiler-utils").Site;
export type SourceMappedStringI = import("@helios-lang/ir").SourceMappedStringI;
export type ScriptTypes = import("../typecheck/index.js").ScriptTypes;
/**
 * `keySite` is an optional way to give the key a proper name
 */
export type Definition = {
    content: SourceMappedStringI;
    keySite?: Site;
};
/**
 * TODO: this should be wrapped by a class
 */
export type Definitions = Map<string, Definition>;
//# sourceMappingURL=Definitions.d.ts.map