import type { StaticHandler, DataStrategyFunction, UNSAFE_DataWithResponseInit as DataWithResponseInit } from "@remix-run/router"; import type { ServerBuild } from "./build"; import type { AppLoadContext } from "./data"; import { ServerMode } from "./mode"; import type { TypedDeferredData, TypedResponse } from "./responses"; import type { Jsonify } from "./jsonify"; import type { ClientActionFunctionArgs, ClientLoaderFunctionArgs } from "./routeModules"; export declare const SingleFetchRedirectSymbol: unique symbol; type SingleFetchRedirectResult = { redirect: string; status: number; revalidate: boolean; reload: boolean; replace: boolean; }; export type SingleFetchResult = { data: unknown; } | { error: unknown; } | SingleFetchRedirectResult; export type SingleFetchResults = { [key: string]: SingleFetchResult; [SingleFetchRedirectSymbol]?: SingleFetchRedirectResult; }; export declare const SINGLE_FETCH_REDIRECT_STATUS = 202; export declare function getSingleFetchDataStrategy({ isActionDataRequest, loadRouteIds, }?: { isActionDataRequest?: boolean; loadRouteIds?: string[]; }): DataStrategyFunction; export declare function singleFetchAction(build: ServerBuild, serverMode: ServerMode, staticHandler: StaticHandler, request: Request, handlerUrl: URL, loadContext: AppLoadContext, handleError: (err: unknown) => void): Promise<{ result: SingleFetchResult; headers: Headers; status: number; }>; export declare function singleFetchLoaders(build: ServerBuild, serverMode: ServerMode, staticHandler: StaticHandler, request: Request, handlerUrl: URL, loadContext: AppLoadContext, handleError: (err: unknown) => void): Promise<{ result: SingleFetchResults; headers: Headers; status: number; }>; export declare function getSingleFetchRedirect(status: number, headers: Headers, basename: string | undefined): SingleFetchRedirectResult; export declare function encodeViaTurboStream(data: any, requestSignal: AbortSignal, streamTimeout: number | undefined, serverMode: ServerMode): ReadableStream; export declare function data(value: T, init?: number | ResponseInit): DataWithResponseInit; type Serializable = undefined | null | boolean | string | symbol | number | bigint | Date | URL | RegExp | Error | ReadonlyArray | Array | { [key: PropertyKey]: Serializable; } | Map | Set | Promise; type Serialize = T extends void ? undefined : T extends Serializable ? T : T extends (...args: any[]) => unknown ? undefined : T extends Promise ? Promise> : T extends Map ? Map, Serialize> : T extends Set ? Set> : T extends [] ? [] : T extends readonly [infer F, ...infer R] ? [Serialize, ...Serialize] : T extends Array ? Array> : T extends readonly unknown[] ? readonly Serialize[] : T extends Record ? { [K in keyof T]: Serialize; } : undefined; type ClientData = T extends TypedResponse ? Jsonify : T extends TypedDeferredData ? U : T; type ServerData = T extends TypedResponse ? Jsonify : T extends TypedDeferredData ? Serialize : T extends DataWithResponseInit ? Serialize : Serialize; export type SerializeFrom = T extends (...args: infer Args) => infer Return ? Args extends [ClientLoaderFunctionArgs | ClientActionFunctionArgs] ? ClientData> : ServerData> : T; export {};