import type { ASTNode, ExecutionContext } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
export interface PropertyTarget {
    element: HTMLElement;
    property: string;
}
export interface PropertyOfExpressionNode {
    type: 'propertyOfExpression';
    property: {
        type: 'identifier';
        name: string;
    };
    target: ASTNode;
}
export interface PropertyAccessNode {
    type: 'propertyAccess';
    object: ASTNode;
    property: string;
}
export declare function isPropertyOfExpressionNode(node: unknown): node is PropertyOfExpressionNode;
export declare function isPropertyAccessNode(node: unknown): node is PropertyAccessNode;
export declare function isPropertyTargetString(value: unknown): value is string;
export declare function resolvePropertyTargetFromNode(node: PropertyOfExpressionNode, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<PropertyTarget | null>;
export declare function resolvePropertyTargetFromAccessNode(node: PropertyAccessNode, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<PropertyTarget | null>;
export declare function resolvePropertyTargetFromString(value: string, context: ExecutionContext): PropertyTarget | null;
export declare function resolveAnyPropertyTarget(node: ASTNode, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<PropertyTarget | null>;
export declare function readPropertyTarget(target: PropertyTarget): unknown;
export declare function writePropertyTarget(target: PropertyTarget, value: unknown): void;
export declare function togglePropertyTarget(target: PropertyTarget): unknown;
//# sourceMappingURL=property-target.d.ts.map