import type { ExecutionContext, TypedExecutionContext } from '../../types/core';
import type { ASTNode, ExpressionNode } from '../../types/base-types';
import type { ExpressionEvaluator } from '../../core/expression-evaluator';
import { type DecoratedCommand, type CommandMetadata } from '../decorators';
export interface RepeatCommandInput {
    type: 'for' | 'times' | 'while' | 'until' | 'until-event' | 'forever';
    variable?: string;
    collection?: unknown[];
    condition?: unknown;
    count?: number;
    indexVariable?: string;
    commands?: unknown;
    eventName?: string;
    eventTarget?: EventTarget;
}
export interface RepeatCommandOutput {
    type: string;
    iterations: number;
    completed: boolean;
    lastResult?: unknown;
    interrupted?: boolean;
}
export declare class RepeatCommand implements DecoratedCommand {
    readonly name: string;
    readonly metadata: CommandMetadata;
    parseInput(raw: {
        args: ASTNode[];
        modifiers: Record<string, ExpressionNode>;
    }, evaluator: ExpressionEvaluator, context: ExecutionContext): Promise<RepeatCommandInput>;
    execute(input: RepeatCommandInput, context: TypedExecutionContext): Promise<RepeatCommandOutput>;
    private executeCommands;
}
export declare const createRepeatCommand: () => RepeatCommand;
export default RepeatCommand;
//# sourceMappingURL=repeat.d.ts.map