import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types.ts';
import type { ExpressionEvaluator } from '../../core/expression-evaluator.ts';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
export type SetCommandInput = {
    type: 'variable';
    name: string;
    value: unknown;
} | {
    type: 'attribute';
    element: HTMLElement;
    name: string;
    value: unknown;
} | {
    type: 'property';
    element: HTMLElement;
    property: string;
    value: unknown;
} | {
    type: 'style';
    element: HTMLElement;
    property: string;
    value: string;
} | {
    type: 'object-literal';
    properties: Record<string, unknown>;
    targets: HTMLElement[];
};
export interface SetCommandOutput {
    target: string | HTMLElement;
    value: unknown;
    targetType: 'variable' | 'attribute' | 'property';
}
export declare class SetCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<SetCommandInput>;
    execute(input: SetCommandInput, context: TypedExecutionContext): Promise<SetCommandOutput>;
    private tryParseMemberExpression;
    private extractValue;
    private resolveElement;
    private resolveTargets;
    private parseTheXofY;
    validate(input: unknown): input is SetCommandInput;
}
export declare const createSetCommand: () => SetCommand;
export default SetCommand;
//# sourceMappingURL=set.d.ts.map