import { ScriptReference, ScriptContext, ScriptManager } from './script'; import { GameConfig, GameObjectData } from '@gedit/render-engine'; import { MaybePromise } from '@gedit/utils'; import { OutputType } from './external'; export interface PluginEnable { spine: boolean; dragonbones: boolean; } export interface PluginContext { width: number; height: number; element: string; engine: string; config: GameConfig; newLine: boolean; plugins: PluginEnable; toBrowserUrl: (url: string) => Promise; type: OutputType; scripts: ScriptManager; store: Map; } export interface PluginHookThisArgs { ctx: PluginContext; output: string; addScript: (id?: Symbol | string) => Symbol; getScript: (id: Symbol | string) => ScriptReference; getScriptContext: (id: Symbol | string) => ScriptContext; useScript: (id: Symbol | string) => void; setValue: (key: string | number, value: D) => void; getValue: (key: string | number) => D; print: (str: string) => void; println: (str: string) => void; echo: (v: string) => void; undo: () => void; push: (type?: BlockPair, newLine?: boolean) => void; pop: (newLine?: boolean) => void; identifier: (...args: string[]) => string; func: (name: string) => void; comment: (comments: string) => void; } export type PluginPureHook = PluginHookThisArgs; export interface Plugin { onParse?: (this: PluginHookThisArgs) => MaybePromise; onParsed?: (this: PluginHookThisArgs) => MaybePromise; onCompile?: (this: PluginHookThisArgs) => MaybePromise; onCompiled?: (this: PluginHookThisArgs) => MaybePromise; onPrint?: (this: PluginHookThisArgs) => MaybePromise; onPrinted?: (this: PluginHookThisArgs) => MaybePromise; } export declare function initContext(): PluginContext; export type MaybeArg = string | number | object | GameObjectData | undefined; export declare enum BlockPair { braces = 1, bracket = 2, Parentheses = 3, Space = 4 } export declare function onion(funcs: (Function | undefined | null)[], ctx?: PluginContext): (...args: MaybeArg[]) => Promise; //# sourceMappingURL=plugin.d.ts.map