type MaybePromise = T | Promise; type FarmClientPluginEnforce = "pre" | "post"; type FarmClientNavigationAction = "push" | "replace" | "pop"; type FarmClientHydrationMode = "hydrate" | "render"; interface FarmClientLocation { href: string; pathname: string; search: string; hash: string; } interface FarmClientPluginRouter { navigate(href: string, options?: Record): MaybePromise; /** Re-render the current URL from fresh server data without replacing the document shell. */ refresh?(options?: Record): MaybePromise; prefetch?(href: string): MaybePromise; clearCache?(): void; getNavigationState?(): unknown; } interface FarmClientPluginMetadata { name: string; version?: string; } interface FarmClientPluginSetupEvent { plugin: FarmClientPluginMetadata; public: Readonly; router: FarmClientPluginRouter; isDev: boolean; isProd: boolean; deploymentId?: string; } interface FarmClientPluginStateEvent extends FarmClientPluginSetupEvent { state: TState; } interface FarmClientHydrationSession { container: Element; location: FarmClientLocation; mode: FarmClientHydrationMode; startedAt: number; } interface FarmClientHydrationEvent extends FarmClientPluginStateEvent, FarmClientHydrationSession { } interface FarmClientHydrationCompleteEvent extends FarmClientHydrationEvent { durationMs: number; recovered: boolean; } interface FarmClientNavigationSession { id: string; from: FarmClientLocation | null; to: FarmClientLocation; action: FarmClientNavigationAction; signal: AbortSignal; startedAt: number; route?: { pattern?: string | null; params?: Record; }; } interface FarmClientNavigationEvent extends FarmClientPluginStateEvent, FarmClientNavigationSession { } interface FarmClientNavigationLoadedEvent extends FarmClientNavigationEvent { durationMs: number; data?: unknown; } interface FarmClientNavigationResolvedEvent extends FarmClientNavigationEvent { durationMs: number; } interface FarmClientNavigationErrorEvent extends FarmClientNavigationResolvedEvent { error: unknown; } type FarmClientPluginErrorPhase = "setup" | "hydration" | "navigation" | "window" | "unhandled-rejection" | "performance" | `plugin:${string}` | (string & {}); interface FarmClientPluginErrorEvent extends FarmClientPluginStateEvent { error: unknown; phase: FarmClientPluginErrorPhase; location: FarmClientLocation; navigation?: FarmClientNavigationSession; } interface FarmClientPerformanceEvent extends FarmClientPluginStateEvent { entry: PerformanceEntry; location: FarmClientLocation; } interface FarmClientPluginCloseEvent extends FarmClientPluginStateEvent { reason: "pagehide" | "hmr" | "manual" | (string & {}); } interface FarmClientPlugin { setup?(event: FarmClientPluginSetupEvent): MaybePromise; hydration?: { before?(event: FarmClientHydrationEvent): MaybePromise; after?(event: FarmClientHydrationCompleteEvent): MaybePromise; }; navigation?: { before?(event: FarmClientNavigationEvent): MaybePromise; loaded?(event: FarmClientNavigationLoadedEvent): MaybePromise; resolved?(event: FarmClientNavigationResolvedEvent): MaybePromise; rendered?(event: FarmClientNavigationResolvedEvent): MaybePromise; error?(event: FarmClientNavigationErrorEvent): MaybePromise; }; error?(event: FarmClientPluginErrorEvent): MaybePromise; performance?(event: FarmClientPerformanceEvent): MaybePromise; close?(event: FarmClientPluginCloseEvent): MaybePromise; } interface FarmClientPluginRegistration { name: string; version?: string; enforce?: FarmClientPluginEnforce; definition: FarmClientPlugin; public?: TPublic; } /** * Define the lifecycle for an application's auto-discovered `src/client.ts` * entry. The identity helper preserves state inference while keeping the * module entirely in the browser bundle. */ declare function defineClient(definition: FarmClientPlugin): FarmClientPlugin; interface FarmClientPluginManagerOptions { router: FarmClientPluginRouter; isDev?: boolean; isProd?: boolean; deploymentId?: string; window?: Window; } declare class FarmClientPluginManager { private readonly registrations; private readonly options; private readonly instances; private readonly performanceObservers; private startPromise?; private closePromise?; private currentNavigation?; private navigationSequence; private starting; private started; private closed; private readonly reportedErrors; private readonly runtimeErrorOverlay?; private readonly handleWindowError; private readonly handleUnhandledRejection; private readonly handlePageHide; constructor(registrations: readonly FarmClientPluginRegistration[], options: FarmClientPluginManagerOptions); start(): Promise; beginHydration(input: { container: Element; mode: FarmClientHydrationMode; }): Promise; completeHydration(session: FarmClientHydrationSession, options?: { recovered?: boolean; }): Promise; failHydration(session: FarmClientHydrationSession, error: unknown): Promise; beginNavigation(input: { from?: string | URL | FarmClientLocation | null; to: string | URL | FarmClientLocation; action: FarmClientNavigationAction; route?: FarmClientNavigationSession["route"]; }): Promise; markNavigationLoaded(session: FarmClientNavigationSession, data?: unknown): Promise; cancelNavigation(session?: FarmClientNavigationSession, reason?: unknown): void; resolveNavigation(session: FarmClientNavigationSession): Promise; scheduleNavigationRendered(session: FarmClientNavigationSession): Promise; failNavigation(session: FarmClientNavigationSession, error: unknown): Promise; reportError(error: unknown, phase: FarmClientPluginErrorPhase, navigation?: FarmClientNavigationSession, location?: FarmClientLocation, sourceEvent?: Event): Promise; close(reason?: FarmClientPluginCloseEvent["reason"]): Promise; getPlugins(): readonly FarmClientPluginMetadata[]; private startInternal; private installBrowserListeners; private installPerformanceObservers; private closeInternal; private runHook; private runErrorHooks; private createSetupEvent; private createStateEvent; private getLocation; private getBaseUrl; private logHookError; } declare function createClientPluginManager(registrations: readonly FarmClientPluginRegistration[], options: FarmClientPluginManagerOptions): FarmClientPluginManager; export { FarmClientPluginManager as F, type FarmClientHydrationCompleteEvent as a, type FarmClientHydrationEvent as b, createClientPluginManager as c, type FarmClientHydrationMode as d, type FarmClientHydrationSession as e, type FarmClientLocation as f, type FarmClientNavigationAction as g, type FarmClientNavigationErrorEvent as h, type FarmClientNavigationEvent as i, type FarmClientNavigationLoadedEvent as j, type FarmClientNavigationResolvedEvent as k, type FarmClientNavigationSession as l, type FarmClientPerformanceEvent as m, type FarmClientPlugin as n, type FarmClientPluginCloseEvent as o, type FarmClientPluginEnforce as p, type FarmClientPluginErrorEvent as q, type FarmClientPluginErrorPhase as r, type FarmClientPluginManagerOptions as s, type FarmClientPluginMetadata as t, type FarmClientPluginRegistration as u, type FarmClientPluginRouter as v, type FarmClientPluginSetupEvent as w, type FarmClientPluginStateEvent as x, defineClient as y };