import { DiagnosticAddendum } from '../common/diagnostic'; import { AugmentedAssignmentNode, BinaryOperationNode, ExpressionNode, TernaryNode, UnaryOperationNode } from '../parser/parseNodes'; import { OperatorType } from '../parser/tokenizerTypes'; import { EvalFlags, TypeEvaluator, TypeResult } from './typeEvaluatorTypes'; import { InferenceContext } from './typeUtils'; interface BinaryOperationOptions { isLiteralMathAllowed?: boolean; isTupleAddAllowed?: boolean; } export declare function validateBinaryOperation(evaluator: TypeEvaluator, operator: OperatorType, leftTypeResult: TypeResult, rightTypeResult: TypeResult, errorNode: ExpressionNode, inferenceContext: InferenceContext | undefined, diag: DiagnosticAddendum, options: BinaryOperationOptions): TypeResult; export declare function getTypeOfBinaryOperation(evaluator: TypeEvaluator, node: BinaryOperationNode, flags: EvalFlags, inferenceContext: InferenceContext | undefined): TypeResult; export declare function getTypeOfAugmentedAssignment(evaluator: TypeEvaluator, node: AugmentedAssignmentNode, inferenceContext: InferenceContext | undefined): TypeResult; export declare function getTypeOfUnaryOperation(evaluator: TypeEvaluator, node: UnaryOperationNode, flags: EvalFlags, inferenceContext: InferenceContext | undefined): TypeResult; export declare function getTypeOfTernaryOperation(evaluator: TypeEvaluator, node: TernaryNode, flags: EvalFlags, inferenceContext: InferenceContext | undefined): TypeResult; export {};