import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
import { type PropertyTarget } from '../helpers/property-target';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
export type ToggleCommandInput = {
    type: 'classes';
    classes: string[];
    targets: HTMLElement[];
    duration?: number;
    untilEvent?: string;
} | {
    type: 'attribute';
    name: string;
    value?: string;
    targets: HTMLElement[];
    duration?: number;
    untilEvent?: string;
} | {
    type: 'css-property';
    property: 'display' | 'visibility' | 'opacity';
    targets: HTMLElement[];
} | {
    type: 'property';
    target: PropertyTarget;
} | {
    type: 'dialog';
    mode: 'modal' | 'non-modal';
    targets: HTMLDialogElement[];
} | {
    type: 'details';
    targets: HTMLDetailsElement[];
} | {
    type: 'select';
    targets: HTMLSelectElement[];
} | {
    type: 'classes-between';
    classA: string;
    classB: string;
    targets: HTMLElement[];
    duration?: number;
    untilEvent?: string;
};
export declare class ToggleCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<ToggleCommandInput>;
    execute(input: ToggleCommandInput, context: TypedExecutionContext): Promise<HTMLElement[]>;
}
export declare const createToggleCommand: () => ToggleCommand;
export default ToggleCommand;
//# sourceMappingURL=toggle.d.ts.map