import { TypedAction } from "../../action/actions";
import { ControlActionContentType, ControlActionTypes } from "../../action/actionTypes";
import { LogicAction } from "../../action/logicAction";
import { Control } from "../../elements/control";
import { Story } from "../../elements/story";
import { ActionSearchOptions } from "../../types";
import { Awaitable } from "../../../../util/data";
import { GameState } from "../../../player/gameState";
import { ActionExecutionInjection, ExecutedActionResult } from "../../action/action";
export declare class ControlAction<T extends typeof ControlActionTypes[keyof typeof ControlActionTypes] = typeof ControlActionTypes[keyof typeof ControlActionTypes]> extends TypedAction<ControlActionContentType, T, Control> {
    static ActionTypes: {
        readonly action: "control:action";
        readonly do: "control:do";
        readonly doAsync: "control:doAsync";
        readonly any: "control:any";
        readonly all: "control:all";
        readonly allAsync: "control:allAsync";
        readonly repeat: "control:repeat";
        readonly sleep: "control:sleep";
    };
    static executeActionsAsync(gameState: GameState, action: LogicAction.Actions): Awaitable<void>;
    checkActionChain(actions: LogicAction.Actions[]): LogicAction.Actions[];
    executeAction(gameState: GameState, injection: ActionExecutionInjection): ExecutedActionResult;
    getFutureActions(story: Story, options: ActionSearchOptions): LogicAction.Actions[];
    stringify(story: Story, _seen: Set<LogicAction.Actions>, _strict: boolean): string;
}
