import { NuxtIslandContext, NuxtIslandResponse, NuxtRenderChunkContext, NuxtRenderCloseContext, NuxtRenderHTMLContext, NuxtRenderRouteContext } from "../app/types.js"; import { NuxtRequestEvent, NuxtServerHooks } from "nuxt/schema"; //#region src/server/hooks.d.ts /** * The return type of a server hook handler. * * @since 4.6.0 */ export type ServerHookResult = void | Promise; /** * The hooks the Nuxt renderer calls. * * @since 4.6.0 */ export interface NuxtServerRendererHooks { 'render:route': (context: NuxtRenderRouteContext, extra: { event: NuxtRequestEvent; }) => ServerHookResult; 'render:html': (context: NuxtRenderHTMLContext, extra: { event: NuxtRequestEvent; streaming?: boolean; }) => ServerHookResult; 'render:html:chunk': (context: NuxtRenderChunkContext, extra: { event: NuxtRequestEvent; }) => ServerHookResult; 'render:html:close': (context: NuxtRenderCloseContext, extra: { event: NuxtRequestEvent; }) => ServerHookResult; 'render:island': (response: NuxtIslandResponse, extra: { event: NuxtRequestEvent; islandContext: NuxtIslandContext; }) => ServerHookResult; } type HookMap = { [Name in keyof Hooks]: (...args: any[]) => ServerHookResult; }; /** * Server hooks. Handlers run serially, in registration order. * * @since 4.6.0 */ export interface ServerHookable> { /** Returns a function that removes the handler. */ hook(name: Name, handler: Hooks[Name]): () => void; removeHook(name: Name, handler: Hooks[Name]): void; callHook(name: Name, ...args: Parameters): Promise | void; } /** * The server runtime hooks: renderer hooks and those declared on {@link NuxtServerHooks}. * * @example * ```ts * // server/plugins/robots.ts * useServerHooks().hook('render:html', (html, { event }) => { * html.head.push('') * }) * ``` * * @since 4.6.0 */ export declare function useServerHooks(): ServerHookable; //#endregion export {};