import Vue, { VNode, VNodeDirective } from 'vue'; import { Readable } from 'stream'; export declare function createRenderer(options?: RendererOptions): Renderer; export declare function createBundleRenderer(bundle: string | object, options?: BundleRendererOptions): BundleRenderer; type RenderCallback = (err: Error | null, html: string) => void; interface Renderer { renderToString(vm: Vue, callback: RenderCallback): void; renderToString(vm: Vue, context: object, callback: RenderCallback): void; renderToString(vm: Vue): Promise; renderToString(vm: Vue, context: object): Promise; renderToStream(vm: Vue, context?: object): Readable; } interface BundleRenderer { renderToString(callback: RenderCallback): void; renderToString(context: object, callback: RenderCallback): void; renderToString(): Promise; renderToString(context: object): Promise; renderToStream(context?: object): Readable; } interface RendererOptions { template?: string; inject?: boolean; shouldPreload?: (file: string, type: string) => boolean; shouldPrefetch?: (file: string, type: string) => boolean; cache?: RenderCache; directives?: { [key: string]: (vnode: VNode, dir: VNodeDirective) => void }; } interface BundleRendererOptions extends RendererOptions { clientManifest?: object; serializer?: (state: object) => string; runInNewContext?: boolean | 'once'; basedir?: string; } interface RenderCache { get: (key: string, cb?: (res: string) => void) => string | void; set: (key: string, val: string) => void; has?: (key: string, cb?: (hit: boolean) => void) => boolean | void; }