import { GraphicsInterface } from '../../types/cli.types';
import OnboardingStore from './stores/OnboardingStore';
export type Script = ScriptItem[];
type ScriptItem = string | ScriptItemCallback;
type ScriptRedirect = string;
type ScriptItemCallback = (player: CallbackPlayer) => Promise<void | ScriptRedirect> | void | ScriptRedirect;
export interface CallbackPlayer {
    ui: GraphicsInterface;
    redirect(toScriptKey: string): ScriptRedirect;
    onboardingStore: OnboardingStore;
    executeCommand: CommandExecuter;
}
export type CommandExecuter = (command: string) => Promise<void>;
export default class ScriptPlayer {
    private ui;
    private scriptsByKey;
    private onboardingStore;
    private commandExecuter;
    constructor(options: {
        ui: GraphicsInterface;
        onboardingStore: OnboardingStore;
        commandExecuter: CommandExecuter;
    });
    playScriptWithKey(key: string): Promise<void>;
    loadScript(key: string, script: Script): void;
    playScript(script: Script): Promise<void>;
    private buildCallbackOptions;
    private redirectAndPlay;
    static redirect(toScriptKey: string): string;
    private extractDestination;
    private isRedirect;
}
export {};
