import { Ref } from 'vue'; import type { App, onErrorCaptured, VNode } from 'vue'; import { Hookable } from 'hookable'; import type { RuntimeConfig, AppConfigInput } from '@nuxt/schema'; import type { SSRContext } from 'vue-bundle-renderer/runtime'; import type { H3Event } from 'h3'; type NuxtMeta = { htmlAttrs?: string; headAttrs?: string; bodyAttrs?: string; headTags?: string; bodyScriptsPrepend?: string; bodyScripts?: string; }; type HookResult = Promise | void; type AppRenderedContext = { ssrContext: NuxtApp['ssrContext']; }; export interface RuntimeNuxtHooks { 'app:created': (app: App) => HookResult; 'app:beforeMount': (app: App) => HookResult; 'app:mounted': (app: App) => HookResult; 'app:rendered': (ctx: AppRenderedContext) => HookResult; 'app:redirected': () => HookResult; 'app:suspense:resolve': (Component?: VNode) => HookResult; 'app:error': (err: any) => HookResult; 'app:error:cleared': (options: { redirect?: string; }) => HookResult; 'app:data:refresh': (keys?: string[]) => HookResult; 'link:prefetch': (link: string) => HookResult; 'page:start': (Component?: VNode) => HookResult; 'page:finish': (Component?: VNode) => HookResult; 'page:transition:finish': (Component?: VNode) => HookResult; 'vue:setup': () => void; 'vue:error': (...args: Parameters[0]>) => HookResult; } export interface NuxtSSRContext extends SSRContext { url: string; event: H3Event; runtimeConfig: RuntimeConfig; noSSR: boolean; /** whether we are rendering an SSR error */ error?: boolean; nuxt: _NuxtApp; payload: _NuxtApp['payload']; teleports?: Record; renderMeta?: () => Promise | NuxtMeta; } interface _NuxtApp { vueApp: App; globalName: string; hooks: Hookable; hook: _NuxtApp['hooks']['hook']; callHook: _NuxtApp['hooks']['callHook']; [key: string]: any; _asyncDataPromises: Record | undefined>; _asyncData: Record; pending: Ref; error: Ref; } | undefined>; isHydrating?: boolean; deferHydration: () => () => void | Promise; ssrContext?: NuxtSSRContext; payload: { serverRendered?: boolean; prerenderedAt?: number; data: Record; state: Record; rendered?: Function; error?: Error | { url: string; statusCode: string; statusMessage: string; message: string; description: string; data?: any; } | null; [key: string]: any; }; static: { data: Record; }; provide: (name: string, value: any) => void; } export interface NuxtApp extends _NuxtApp { } export declare const NuxtPluginIndicator = "__nuxt_plugin"; export interface Plugin = Record> { (nuxt: _NuxtApp): Promise | Promise<{ provide?: Injections; }> | void | { provide?: Injections; }; [NuxtPluginIndicator]?: true; } export interface CreateOptions { vueApp: NuxtApp['vueApp']; ssrContext?: NuxtApp['ssrContext']; globalName?: NuxtApp['globalName']; } export declare function createNuxtApp(options: CreateOptions): NuxtApp; export declare function applyPlugin(nuxtApp: NuxtApp, plugin: Plugin): Promise; export declare function applyPlugins(nuxtApp: NuxtApp, plugins: Plugin[]): Promise; export declare function normalizePlugins(_plugins: Plugin[]): Plugin>[]; export declare function defineNuxtPlugin>(plugin: Plugin): Plugin; export declare function isNuxtPlugin(plugin: unknown): boolean; /** * Ensures that the setup function passed in has access to the Nuxt instance via `useNuxt`. * * @param nuxt A Nuxt instance * @param setup The function to call */ export declare function callWithNuxt any>(nuxt: NuxtApp | _NuxtApp, setup: T, args?: Parameters): any; /** * Returns the current Nuxt instance. */ export declare function useNuxtApp(): NuxtApp; export declare function useRuntimeConfig(): RuntimeConfig; export declare function defineAppConfig(config: C): C; export {};