import { DisplayableActionContentType, DisplayableActionTypes } from "../../action/actionTypes";
import { GameState } from "../../../player/gameState";
import { TypedAction } from "../../action/actions";
import { Awaitable, Values } from "../../../../util/data";
import { Displayable } from "../../elements/displayable/displayable";
import type { CalledActionResult } from "../../gameTypes";
import { Scene } from "../../elements/scene";
import { Transform } from "../../elements/transform/transform";
import { Transition } from "../../elements/transition/transition";
import { Layer } from "../../elements/layer";
import { LogicAction } from "../../action/logicAction";
import { ActionExecutionInjection, ExecutedActionResult } from "../../action/action";
import { Story } from "../../elements/story";
export declare class DisplayableAction<T extends Values<typeof DisplayableActionTypes> = Values<typeof DisplayableActionTypes>, Self extends Displayable<any, any, any> = Displayable<any, any>, TransitionType extends Transition = Transition> extends TypedAction<DisplayableActionContentType<TransitionType>, T, Self> {
    static ActionTypes: {
        readonly action: "displayable:action";
        readonly applyTransform: "displayable:applyTransform";
        readonly applyTransition: "displayable:applyTransition";
        readonly init: "displayable:init";
    };
    executeAction(gameState: GameState, injection: ActionExecutionInjection): ExecutedActionResult;
    applyTransform(state: GameState, element: Displayable<any, any>, transform: Transform, injection: ActionExecutionInjection, onFinished?: () => void): Awaitable<CalledActionResult, CalledActionResult>;
    applyTransition(state: GameState, element: Displayable<any, any>, transition: TransitionType, injection: ActionExecutionInjection, onFinished?: () => void): Awaitable<CalledActionResult, CalledActionResult>;
    initDisplayable(state: GameState, scene: Scene | null, element: Displayable<any, any>, layer: Layer | null, isElement: boolean | undefined, injection: ActionExecutionInjection): Awaitable<CalledActionResult>;
    stringify(_story: Story, _seen: Set<LogicAction.Actions>, _strict: boolean): string;
}
