import { Subject } from 'rxjs'; import { Actions } from '../engine/actions'; import { EngineContext, InjectEngineContext } from '../engine/context'; import { RxStore, RxStoreOptions } from '../engine/rx-store'; import { Ctx } from '../internal-types'; import { Emitter } from '../utils/emitter'; import { KeyBindingMap, KeyBindingName } from '../utils/keyboard-shortcut'; export type AppContext = EngineContext & { actions: Actions; store: RxStore; keyBindingMap: KeyBindingMap; shortcut$: Subject<{ type: KeyBindingName; event: KeyboardEvent; }>; keydown$: Subject; emitter: Emitter; }; export type InjectAppContext = InjectEngineContext; export declare function createAppContext(ctx: InjectAppContext, options?: RxStoreOptions): AppContext; export declare const appContext: import('@dineug/r-html').Context; export declare const useAppContext: (ctx: Ctx, fallback?: AppContext) => import('@dineug/r-html').Ref; export declare function appDestroy(app: AppContext): void;