import { SessionContext } from '../types';
import { SceneContextOptions, SceneContextEnterOptions, SceneContextLeaveOptions, LastAction } from './scene.types';
export declare class SceneContext<S extends Record<string, unknown> = Record<string, any>> {
    /** Lazy session for submodules */
    session: SessionContext;
    /** Base namespace for user input */
    state: S;
    /** Is the scene cancelled? Used in `leaveHandler()` */
    cancelled: boolean;
    lastAction: LastAction;
    /** Controlled behavior leave */
    leaving: boolean;
    private readonly context;
    private repository;
    constructor(options: SceneContextOptions);
    /** Returns current scene */
    get current(): import("..").SceneInterface | undefined;
    /** Enter to scene */
    enter(slug: string, options?: SceneContextEnterOptions<S>): Promise<void>;
    /** Reenter to current scene */
    reenter(): Promise<void>;
    /** Leave from current scene */
    leave(options?: SceneContextLeaveOptions): Promise<void>;
    /** Reset state/session */
    reset(): void;
    /** Updates session and state is lazy */
    private updateSession;
}
