///
///
import { CompleteObjectType, VoidType } from "../../compilation/types";
import { ExpressionContext } from "../../compilation/contexts";
import { SuccessfullyCompiled } from "../CPPConstruct";
import { ValueCategory, Expression, CompiledExpression, t_TypedExpression } from "./Expression";
import { RuntimeExpression } from "./RuntimeExpression";
import { UnaryOperatorExpressionOutlet } from "../../../view/constructs/ExpressionOutlets";
import { ConstructOutlet } from "../../../view/constructs/ConstructOutlet";
import { CompiledTemporaryDeallocator } from "../TemporaryDeallocator";
import { t_UnaryOperators, UnaryOperatorExpressionASTNode } from "../../../ast/ast_expressions";
import { LogicalNotExpression } from "./LogicalNotExpression";
import { UnaryMinusExpression } from "./UnaryMinusExpression";
import { UnaryPlusExpression } from "./UnaryPlusExpression";
import { AddressOfExpression } from "./AddressOfExpression";
import { DereferenceExpression } from "./DereferenceExpression";
import { PrefixIncrementExpression } from "./PrefixIncrementExpression";
export declare abstract class UnaryOperatorExpression extends Expression {
abstract readonly type?: CompleteObjectType | VoidType;
abstract readonly operand: Expression;
abstract readonly operator: t_UnaryOperators;
protected constructor(context: ExpressionContext, ast: ASTType | undefined);
createDefaultOutlet(this: CompiledUnaryOperatorExpression, element: JQuery, parent?: ConstructOutlet): UnaryOperatorExpressionOutlet;
}
export declare type AnalyticUnaryOperatorExpression = DereferenceExpression | AddressOfExpression | UnaryPlusExpression | UnaryMinusExpression | LogicalNotExpression | PrefixIncrementExpression;
export interface TypedUnaryOperatorExpression extends UnaryOperatorExpression, t_TypedExpression {
readonly type: T;
readonly valueCategory: ValueCategory;
}
export interface CompiledUnaryOperatorExpression extends TypedUnaryOperatorExpression, SuccessfullyCompiled {
readonly temporaryDeallocator?: CompiledTemporaryDeallocator;
readonly operand: CompiledExpression;
}
export interface RuntimeUnaryOperatorExpression extends RuntimeExpression> {
readonly operand: RuntimeExpression;
}