import type { AstIdMap, RNodeWithParent } from '../../../r-bridge/lang-4.x/ast/model/processing/decorate';
import type { REnvironmentInformation } from '../../environments/environment';
import type { DataflowGraph } from '../../graph/graph';
import type { Lift, Value, ValueNumber, ValueVector } from '../values/r-value';
import { Top } from '../values/r-value';
import type { VariableResolve } from '../../../config';
/**
 * Helper function used by {@link resolveIdToValue}, please use that instead, if
 * you want to resolve the value of an identifier / node
 *
 * This function converts an RNode to its Value, but also recursively resolves
 * aliases and vectors (in case of a vector).
 *
 * @param a       - Ast node to resolve
 * @param resolve - Variable resolve mode
 * @param env     - Environment to use
 * @param graph   - Dataflow Graph to use
 * @param map     - Idmap of Dataflow Graph
 * @returns resolved value or top/bottom
 */
export declare function resolveNode(resolve: VariableResolve, a: RNodeWithParent, env?: REnvironmentInformation, graph?: DataflowGraph, map?: AstIdMap): Value;
/**
 * Helper function used by {@link resolveIdToValue}, please use that instead, if
 * you want to resolve the value of an identifier / node
 *
 * This function resolves a vector function call `c` to a {@link ValueVector}
 * by recursively resolving the values of the arguments by calling {@link resolveIdToValue}
 *
 * @param resolve - Variable resolve mode
 * @param node    - Node of the vector function to resolve
 * @param env     - Environment to use
 * @param graph   - Dataflow graph
 * @param map     - Id map of the dataflow graph
 * @returns ValueVector or Top
 */
export declare function resolveAsVector(resolve: VariableResolve, node: RNodeWithParent, environment?: REnvironmentInformation, graph?: DataflowGraph, idMap?: AstIdMap): ValueVector<Lift<Value[]>> | typeof Top;
/**
 * Helper function used by {@link resolveIdToValue}, please use that instead, if
 * you want to resolve the value of an identifier / node
 *
 * This function resolves a binary sequence operator `:` to a {@link ValueVector} of {@link ValueNumber}s
 * by recursively resolving the values of the arguments by calling {@link resolveIdToValue}
 *
 * @param resolve  - Variable resolve mode
 * @param operator - Node of the sequence operator to resolve
 * @param env      - Environment to use
 * @param graph    - Dataflow graph
 * @param map      - Id map of the dataflow graph
 * @returns ValueVector of ValueNumbers or Top
 */
export declare function resolveAsSeq(resolve: VariableResolve, operator: RNodeWithParent, environment?: REnvironmentInformation, graph?: DataflowGraph, idMap?: AstIdMap): ValueVector<Lift<ValueNumber[]>> | typeof Top;
/**
 * Helper function used by {@link resolveIdToValue}, please use that instead, if
 * you want to resolve the value of an identifier / node
 *
 * This function resolves a unary plus operator `+` to a {@link ValueNumber} or {@link ValueVector} of ValueNumbers
 * by recursively resolving the values of the arguments by calling {@link resolveIdToValue}
 *
 * @param resolve  - Variable resolve mode
 * @param operator - Node of the plus operator to resolve
 * @param env      - Environment to use
 * @param graph    - Dataflow graph
 * @param map      - Id map of the dataflow graph
 * @returns ValueNumber, ValueVector of ValueNumbers, or Top
 */
export declare function resolveAsPlus(resolve: VariableResolve, operator: RNodeWithParent, environment?: REnvironmentInformation, graph?: DataflowGraph, idMap?: AstIdMap): ValueNumber | ValueVector<Lift<ValueNumber[]>> | typeof Top;
/**
 * Helper function used by {@link resolveIdToValue}, please use that instead, if
 * you want to resolve the value of an identifier / node
 *
 * This function resolves a unary minus operator `-` to a {@link ValueNumber} or {@link ValueVector} of ValueNumbers
 * by recursively resolving the values of the arguments by calling {@link resolveIdToValue}
 *
 * @param resolve  - Variable resolve mode
 * @param operator - Node of the minus operator to resolve
 * @param env      - Environment to use
 * @param graph    - Dataflow graph
 * @param map      - Id map of the dataflow graph
 * @returns ValueNumber, ValueVector of ValueNumbers, or Top
 */
export declare function resolveAsMinus(resolve: VariableResolve, operator: RNodeWithParent, environment?: REnvironmentInformation, graph?: DataflowGraph, idMap?: AstIdMap): ValueNumber | ValueVector<Lift<ValueNumber[]>> | typeof Top;
