import { SyncHook, AsyncHook } from '@liff/hooks'; import { HooksRegisters, ModuleDriver } from './driver'; export type HookTimings = { [timing: string]: SyncHook | AsyncHook; }; export type ApiHooks = Record; export type HooksRegistersFromApiHooks = { [apiName in keyof Hooks]: { [timing in keyof Hooks[apiName]]: Hooks[apiName][timing]['on']; }; }; interface BaseModuleContext { liff: Liff; hooks: Hooks; internalHooks: InternalHooks; } export type ModuleContext = BaseModuleContext, HooksRegistersFromApiHooks>; declare class ModuleContextImpl implements ModuleContext { private _driver; liff: Liff; constructor(_driver: ModuleDriver, liff: Liff); hooks: HooksRegisters; internalHooks: HooksRegisters; } export interface PluginContext { liff: Liff; hooks: Hooks; } declare class PluginContextImpl implements PluginContext { private _driver; liff: Liff; constructor(_driver: ModuleDriver, liff: Liff); hooks: HooksRegisters; } export declare class ContextHolder { private pluginCtx; private moduleCtx; constructor(driver: ModuleDriver, liff: Liff); get pluginContext(): PluginContextImpl; get moduleContext(): ModuleContextImpl; } export {};