import * as React from "react";
import type { Router as RemixRouter } from "../../router/router";
import type { DataStrategyFunction } from "../../router/utils";
import type { AssetsManifest, EntryContext } from "./entry";
import type { RouteModules } from "./routeModules";
export declare const SingleFetchRedirectSymbol: unique symbol;
export 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;
};
interface StreamTransferProps {
    context: EntryContext;
    identifier: number;
    reader: ReadableStreamDefaultReader<Uint8Array>;
    textDecoder: TextDecoder;
    nonce?: string;
}
export declare function StreamTransfer({ context, identifier, reader, textDecoder, nonce, }: StreamTransferProps): React.JSX.Element | null;
export declare function getSingleFetchDataStrategy(manifest: AssetsManifest, routeModules: RouteModules, getRouter: () => RemixRouter): DataStrategyFunction;
export declare function singleFetchUrl(reqUrl: URL | string): URL;
export declare function decodeViaTurboStream(body: ReadableStream<Uint8Array>, global: Window | typeof globalThis): Promise<{
    done: Promise<undefined>;
    value: unknown;
}>;
export {};
