 85bf1341f3
			
		
	
	85bf1341f3
	
	
	
		
			
			Frontend Enhancements: - Complete React TypeScript frontend with modern UI components - Distributed workflows management interface with real-time updates - Socket.IO integration for live agent status monitoring - Agent management dashboard with cluster visualization - Project management interface with metrics and task tracking - Responsive design with proper error handling and loading states Backend Infrastructure: - Distributed coordinator for multi-agent workflow orchestration - Cluster management API with comprehensive agent operations - Enhanced database models for agents and projects - Project service for filesystem-based project discovery - Performance monitoring and metrics collection - Comprehensive API documentation and error handling Documentation: - Complete distributed development guide (README_DISTRIBUTED.md) - Comprehensive development report with architecture insights - System configuration templates and deployment guides The platform now provides a complete web interface for managing the distributed AI cluster with real-time monitoring, workflow orchestration, and agent coordination capabilities. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
		
			
				
	
	
		
			556 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			556 lines
		
	
	
		
			19 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
| import type { Location, Path, To } from "./history";
 | |
| /**
 | |
|  * Map of routeId -> data returned from a loader/action/error
 | |
|  */
 | |
| export interface RouteData {
 | |
|     [routeId: string]: any;
 | |
| }
 | |
| export declare enum ResultType {
 | |
|     data = "data",
 | |
|     deferred = "deferred",
 | |
|     redirect = "redirect",
 | |
|     error = "error"
 | |
| }
 | |
| /**
 | |
|  * Successful result from a loader or action
 | |
|  */
 | |
| export interface SuccessResult {
 | |
|     type: ResultType.data;
 | |
|     data: unknown;
 | |
|     statusCode?: number;
 | |
|     headers?: Headers;
 | |
| }
 | |
| /**
 | |
|  * Successful defer() result from a loader or action
 | |
|  */
 | |
| export interface DeferredResult {
 | |
|     type: ResultType.deferred;
 | |
|     deferredData: DeferredData;
 | |
|     statusCode?: number;
 | |
|     headers?: Headers;
 | |
| }
 | |
| /**
 | |
|  * Redirect result from a loader or action
 | |
|  */
 | |
| export interface RedirectResult {
 | |
|     type: ResultType.redirect;
 | |
|     response: Response;
 | |
| }
 | |
| /**
 | |
|  * Unsuccessful result from a loader or action
 | |
|  */
 | |
| export interface ErrorResult {
 | |
|     type: ResultType.error;
 | |
|     error: unknown;
 | |
|     statusCode?: number;
 | |
|     headers?: Headers;
 | |
| }
 | |
| /**
 | |
|  * Result from a loader or action - potentially successful or unsuccessful
 | |
|  */
 | |
| export type DataResult = SuccessResult | DeferredResult | RedirectResult | ErrorResult;
 | |
| type LowerCaseFormMethod = "get" | "post" | "put" | "patch" | "delete";
 | |
| type UpperCaseFormMethod = Uppercase<LowerCaseFormMethod>;
 | |
| /**
 | |
|  * Users can specify either lowercase or uppercase form methods on `<Form>`,
 | |
|  * useSubmit(), `<fetcher.Form>`, etc.
 | |
|  */
 | |
| export type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;
 | |
| /**
 | |
|  * Active navigation/fetcher form methods are exposed in lowercase on the
 | |
|  * RouterState
 | |
|  */
 | |
| export type FormMethod = LowerCaseFormMethod;
 | |
| export type MutationFormMethod = Exclude<FormMethod, "get">;
 | |
| /**
 | |
|  * In v7, active navigation/fetcher form methods are exposed in uppercase on the
 | |
|  * RouterState.  This is to align with the normalization done via fetch().
 | |
|  */
 | |
| export type V7_FormMethod = UpperCaseFormMethod;
 | |
| export type V7_MutationFormMethod = Exclude<V7_FormMethod, "GET">;
 | |
| export type FormEncType = "application/x-www-form-urlencoded" | "multipart/form-data" | "application/json" | "text/plain";
 | |
| type JsonObject = {
 | |
|     [Key in string]: JsonValue;
 | |
| } & {
 | |
|     [Key in string]?: JsonValue | undefined;
 | |
| };
 | |
| type JsonArray = JsonValue[] | readonly JsonValue[];
 | |
| type JsonPrimitive = string | number | boolean | null;
 | |
| type JsonValue = JsonPrimitive | JsonObject | JsonArray;
 | |
| /**
 | |
|  * @private
 | |
|  * Internal interface to pass around for action submissions, not intended for
 | |
|  * external consumption
 | |
|  */
 | |
| export type Submission = {
 | |
|     formMethod: FormMethod | V7_FormMethod;
 | |
|     formAction: string;
 | |
|     formEncType: FormEncType;
 | |
|     formData: FormData;
 | |
|     json: undefined;
 | |
|     text: undefined;
 | |
| } | {
 | |
|     formMethod: FormMethod | V7_FormMethod;
 | |
|     formAction: string;
 | |
|     formEncType: FormEncType;
 | |
|     formData: undefined;
 | |
|     json: JsonValue;
 | |
|     text: undefined;
 | |
| } | {
 | |
|     formMethod: FormMethod | V7_FormMethod;
 | |
|     formAction: string;
 | |
|     formEncType: FormEncType;
 | |
|     formData: undefined;
 | |
|     json: undefined;
 | |
|     text: string;
 | |
| };
 | |
| /**
 | |
|  * @private
 | |
|  * Arguments passed to route loader/action functions.  Same for now but we keep
 | |
|  * this as a private implementation detail in case they diverge in the future.
 | |
|  */
 | |
| interface DataFunctionArgs<Context> {
 | |
|     request: Request;
 | |
|     params: Params;
 | |
|     context?: Context;
 | |
| }
 | |
| /**
 | |
|  * Arguments passed to loader functions
 | |
|  */
 | |
| export interface LoaderFunctionArgs<Context = any> extends DataFunctionArgs<Context> {
 | |
| }
 | |
| /**
 | |
|  * Arguments passed to action functions
 | |
|  */
 | |
| export interface ActionFunctionArgs<Context = any> extends DataFunctionArgs<Context> {
 | |
| }
 | |
| /**
 | |
|  * Loaders and actions can return anything except `undefined` (`null` is a
 | |
|  * valid return value if there is no data to return).  Responses are preferred
 | |
|  * and will ease any future migration to Remix
 | |
|  */
 | |
| type DataFunctionValue = Response | NonNullable<unknown> | null;
 | |
| type DataFunctionReturnValue = Promise<DataFunctionValue> | DataFunctionValue;
 | |
| /**
 | |
|  * Route loader function signature
 | |
|  */
 | |
| export type LoaderFunction<Context = any> = {
 | |
|     (args: LoaderFunctionArgs<Context>, handlerCtx?: unknown): DataFunctionReturnValue;
 | |
| } & {
 | |
|     hydrate?: boolean;
 | |
| };
 | |
| /**
 | |
|  * Route action function signature
 | |
|  */
 | |
| export interface ActionFunction<Context = any> {
 | |
|     (args: ActionFunctionArgs<Context>, handlerCtx?: unknown): DataFunctionReturnValue;
 | |
| }
 | |
| /**
 | |
|  * Arguments passed to shouldRevalidate function
 | |
|  */
 | |
| export interface ShouldRevalidateFunctionArgs {
 | |
|     currentUrl: URL;
 | |
|     currentParams: AgnosticDataRouteMatch["params"];
 | |
|     nextUrl: URL;
 | |
|     nextParams: AgnosticDataRouteMatch["params"];
 | |
|     formMethod?: Submission["formMethod"];
 | |
|     formAction?: Submission["formAction"];
 | |
|     formEncType?: Submission["formEncType"];
 | |
|     text?: Submission["text"];
 | |
|     formData?: Submission["formData"];
 | |
|     json?: Submission["json"];
 | |
|     actionStatus?: number;
 | |
|     actionResult?: any;
 | |
|     defaultShouldRevalidate: boolean;
 | |
| }
 | |
| /**
 | |
|  * Route shouldRevalidate function signature.  This runs after any submission
 | |
|  * (navigation or fetcher), so we flatten the navigation/fetcher submission
 | |
|  * onto the arguments.  It shouldn't matter whether it came from a navigation
 | |
|  * or a fetcher, what really matters is the URLs and the formData since loaders
 | |
|  * have to re-run based on the data models that were potentially mutated.
 | |
|  */
 | |
| export interface ShouldRevalidateFunction {
 | |
|     (args: ShouldRevalidateFunctionArgs): boolean;
 | |
| }
 | |
| /**
 | |
|  * Function provided by the framework-aware layers to set `hasErrorBoundary`
 | |
|  * from the framework-aware `errorElement` prop
 | |
|  *
 | |
|  * @deprecated Use `mapRouteProperties` instead
 | |
|  */
 | |
| export interface DetectErrorBoundaryFunction {
 | |
|     (route: AgnosticRouteObject): boolean;
 | |
| }
 | |
| export interface DataStrategyMatch extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {
 | |
|     shouldLoad: boolean;
 | |
|     resolve: (handlerOverride?: (handler: (ctx?: unknown) => DataFunctionReturnValue) => DataFunctionReturnValue) => Promise<DataStrategyResult>;
 | |
| }
 | |
| export interface DataStrategyFunctionArgs<Context = any> extends DataFunctionArgs<Context> {
 | |
|     matches: DataStrategyMatch[];
 | |
|     fetcherKey: string | null;
 | |
| }
 | |
| /**
 | |
|  * Result from a loader or action called via dataStrategy
 | |
|  */
 | |
| export interface DataStrategyResult {
 | |
|     type: "data" | "error";
 | |
|     result: unknown;
 | |
| }
 | |
| export interface DataStrategyFunction {
 | |
|     (args: DataStrategyFunctionArgs): Promise<Record<string, DataStrategyResult>>;
 | |
| }
 | |
| export type AgnosticPatchRoutesOnNavigationFunctionArgs<O extends AgnosticRouteObject = AgnosticRouteObject, M extends AgnosticRouteMatch = AgnosticRouteMatch> = {
 | |
|     signal: AbortSignal;
 | |
|     path: string;
 | |
|     matches: M[];
 | |
|     fetcherKey: string | undefined;
 | |
|     patch: (routeId: string | null, children: O[]) => void;
 | |
| };
 | |
| export type AgnosticPatchRoutesOnNavigationFunction<O extends AgnosticRouteObject = AgnosticRouteObject, M extends AgnosticRouteMatch = AgnosticRouteMatch> = (opts: AgnosticPatchRoutesOnNavigationFunctionArgs<O, M>) => void | Promise<void>;
 | |
| /**
 | |
|  * Function provided by the framework-aware layers to set any framework-specific
 | |
|  * properties from framework-agnostic properties
 | |
|  */
 | |
| export interface MapRoutePropertiesFunction {
 | |
|     (route: AgnosticRouteObject): {
 | |
|         hasErrorBoundary: boolean;
 | |
|     } & Record<string, any>;
 | |
| }
 | |
| /**
 | |
|  * Keys we cannot change from within a lazy() function. We spread all other keys
 | |
|  * onto the route. Either they're meaningful to the router, or they'll get
 | |
|  * ignored.
 | |
|  */
 | |
| export type ImmutableRouteKey = "lazy" | "caseSensitive" | "path" | "id" | "index" | "children";
 | |
| export declare const immutableRouteKeys: Set<ImmutableRouteKey>;
 | |
| type RequireOne<T, Key = keyof T> = Exclude<{
 | |
|     [K in keyof T]: K extends Key ? Omit<T, K> & Required<Pick<T, K>> : never;
 | |
| }[keyof T], undefined>;
 | |
| /**
 | |
|  * lazy() function to load a route definition, which can add non-matching
 | |
|  * related properties to a route
 | |
|  */
 | |
| export interface LazyRouteFunction<R extends AgnosticRouteObject> {
 | |
|     (): Promise<RequireOne<Omit<R, ImmutableRouteKey>>>;
 | |
| }
 | |
| /**
 | |
|  * Base RouteObject with common props shared by all types of routes
 | |
|  */
 | |
| type AgnosticBaseRouteObject = {
 | |
|     caseSensitive?: boolean;
 | |
|     path?: string;
 | |
|     id?: string;
 | |
|     loader?: LoaderFunction | boolean;
 | |
|     action?: ActionFunction | boolean;
 | |
|     hasErrorBoundary?: boolean;
 | |
|     shouldRevalidate?: ShouldRevalidateFunction;
 | |
|     handle?: any;
 | |
|     lazy?: LazyRouteFunction<AgnosticBaseRouteObject>;
 | |
| };
 | |
| /**
 | |
|  * Index routes must not have children
 | |
|  */
 | |
| export type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {
 | |
|     children?: undefined;
 | |
|     index: true;
 | |
| };
 | |
| /**
 | |
|  * Non-index routes may have children, but cannot have index
 | |
|  */
 | |
| export type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {
 | |
|     children?: AgnosticRouteObject[];
 | |
|     index?: false;
 | |
| };
 | |
| /**
 | |
|  * A route object represents a logical route, with (optionally) its child
 | |
|  * routes organized in a tree-like structure.
 | |
|  */
 | |
| export type AgnosticRouteObject = AgnosticIndexRouteObject | AgnosticNonIndexRouteObject;
 | |
| export type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {
 | |
|     id: string;
 | |
| };
 | |
| export type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {
 | |
|     children?: AgnosticDataRouteObject[];
 | |
|     id: string;
 | |
| };
 | |
| /**
 | |
|  * A data route object, which is just a RouteObject with a required unique ID
 | |
|  */
 | |
| export type AgnosticDataRouteObject = AgnosticDataIndexRouteObject | AgnosticDataNonIndexRouteObject;
 | |
| export type RouteManifest = Record<string, AgnosticDataRouteObject | undefined>;
 | |
| type _PathParam<Path extends string> = Path extends `${infer L}/${infer R}` ? _PathParam<L> | _PathParam<R> : Path extends `:${infer Param}` ? Param extends `${infer Optional}?` ? Optional : Param : never;
 | |
| /**
 | |
|  * Examples:
 | |
|  * "/a/b/*" -> "*"
 | |
|  * ":a" -> "a"
 | |
|  * "/a/:b" -> "b"
 | |
|  * "/a/blahblahblah:b" -> "b"
 | |
|  * "/:a/:b" -> "a" | "b"
 | |
|  * "/:a/b/:c/*" -> "a" | "c" | "*"
 | |
|  */
 | |
| export type PathParam<Path extends string> = Path extends "*" | "/*" ? "*" : Path extends `${infer Rest}/*` ? "*" | _PathParam<Rest> : _PathParam<Path>;
 | |
| export type ParamParseKey<Segment extends string> = [
 | |
|     PathParam<Segment>
 | |
| ] extends [never] ? string : PathParam<Segment>;
 | |
| /**
 | |
|  * The parameters that were parsed from the URL path.
 | |
|  */
 | |
| export type Params<Key extends string = string> = {
 | |
|     readonly [key in Key]: string | undefined;
 | |
| };
 | |
| /**
 | |
|  * A RouteMatch contains info about how a route matched a URL.
 | |
|  */
 | |
| export interface AgnosticRouteMatch<ParamKey extends string = string, RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject> {
 | |
|     /**
 | |
|      * The names and values of dynamic parameters in the URL.
 | |
|      */
 | |
|     params: Params<ParamKey>;
 | |
|     /**
 | |
|      * The portion of the URL pathname that was matched.
 | |
|      */
 | |
|     pathname: string;
 | |
|     /**
 | |
|      * The portion of the URL pathname that was matched before child routes.
 | |
|      */
 | |
|     pathnameBase: string;
 | |
|     /**
 | |
|      * The route object that was used to match.
 | |
|      */
 | |
|     route: RouteObjectType;
 | |
| }
 | |
| export interface AgnosticDataRouteMatch extends AgnosticRouteMatch<string, AgnosticDataRouteObject> {
 | |
| }
 | |
| export declare function convertRoutesToDataRoutes(routes: AgnosticRouteObject[], mapRouteProperties: MapRoutePropertiesFunction, parentPath?: string[], manifest?: RouteManifest): AgnosticDataRouteObject[];
 | |
| /**
 | |
|  * Matches the given routes to a location and returns the match data.
 | |
|  *
 | |
|  * @see https://reactrouter.com/v6/utils/match-routes
 | |
|  */
 | |
| export declare function matchRoutes<RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject>(routes: RouteObjectType[], locationArg: Partial<Location> | string, basename?: string): AgnosticRouteMatch<string, RouteObjectType>[] | null;
 | |
| export declare function matchRoutesImpl<RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject>(routes: RouteObjectType[], locationArg: Partial<Location> | string, basename: string, allowPartial: boolean): AgnosticRouteMatch<string, RouteObjectType>[] | null;
 | |
| export interface UIMatch<Data = unknown, Handle = unknown> {
 | |
|     id: string;
 | |
|     pathname: string;
 | |
|     params: AgnosticRouteMatch["params"];
 | |
|     data: Data;
 | |
|     handle: Handle;
 | |
| }
 | |
| export declare function convertRouteMatchToUiMatch(match: AgnosticDataRouteMatch, loaderData: RouteData): UIMatch;
 | |
| /**
 | |
|  * Returns a path with params interpolated.
 | |
|  *
 | |
|  * @see https://reactrouter.com/v6/utils/generate-path
 | |
|  */
 | |
| export declare function generatePath<Path extends string>(originalPath: Path, params?: {
 | |
|     [key in PathParam<Path>]: string | null;
 | |
| }): string;
 | |
| /**
 | |
|  * A PathPattern is used to match on some portion of a URL pathname.
 | |
|  */
 | |
| export interface PathPattern<Path extends string = string> {
 | |
|     /**
 | |
|      * A string to match against a URL pathname. May contain `:id`-style segments
 | |
|      * to indicate placeholders for dynamic parameters. May also end with `/*` to
 | |
|      * indicate matching the rest of the URL pathname.
 | |
|      */
 | |
|     path: Path;
 | |
|     /**
 | |
|      * Should be `true` if the static portions of the `path` should be matched in
 | |
|      * the same case.
 | |
|      */
 | |
|     caseSensitive?: boolean;
 | |
|     /**
 | |
|      * Should be `true` if this pattern should match the entire URL pathname.
 | |
|      */
 | |
|     end?: boolean;
 | |
| }
 | |
| /**
 | |
|  * A PathMatch contains info about how a PathPattern matched on a URL pathname.
 | |
|  */
 | |
| export interface PathMatch<ParamKey extends string = string> {
 | |
|     /**
 | |
|      * The names and values of dynamic parameters in the URL.
 | |
|      */
 | |
|     params: Params<ParamKey>;
 | |
|     /**
 | |
|      * The portion of the URL pathname that was matched.
 | |
|      */
 | |
|     pathname: string;
 | |
|     /**
 | |
|      * The portion of the URL pathname that was matched before child routes.
 | |
|      */
 | |
|     pathnameBase: string;
 | |
|     /**
 | |
|      * The pattern that was used to match.
 | |
|      */
 | |
|     pattern: PathPattern;
 | |
| }
 | |
| /**
 | |
|  * Performs pattern matching on a URL pathname and returns information about
 | |
|  * the match.
 | |
|  *
 | |
|  * @see https://reactrouter.com/v6/utils/match-path
 | |
|  */
 | |
| export declare function matchPath<ParamKey extends ParamParseKey<Path>, Path extends string>(pattern: PathPattern<Path> | Path, pathname: string): PathMatch<ParamKey> | null;
 | |
| export declare function decodePath(value: string): string;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare function stripBasename(pathname: string, basename: string): string | null;
 | |
| /**
 | |
|  * Returns a resolved path object relative to the given pathname.
 | |
|  *
 | |
|  * @see https://reactrouter.com/v6/utils/resolve-path
 | |
|  */
 | |
| export declare function resolvePath(to: To, fromPathname?: string): Path;
 | |
| /**
 | |
|  * @private
 | |
|  *
 | |
|  * When processing relative navigation we want to ignore ancestor routes that
 | |
|  * do not contribute to the path, such that index/pathless layout routes don't
 | |
|  * interfere.
 | |
|  *
 | |
|  * For example, when moving a route element into an index route and/or a
 | |
|  * pathless layout route, relative link behavior contained within should stay
 | |
|  * the same.  Both of the following examples should link back to the root:
 | |
|  *
 | |
|  *   <Route path="/">
 | |
|  *     <Route path="accounts" element={<Link to=".."}>
 | |
|  *   </Route>
 | |
|  *
 | |
|  *   <Route path="/">
 | |
|  *     <Route path="accounts">
 | |
|  *       <Route element={<AccountsLayout />}>       // <-- Does not contribute
 | |
|  *         <Route index element={<Link to=".."} />  // <-- Does not contribute
 | |
|  *       </Route
 | |
|  *     </Route>
 | |
|  *   </Route>
 | |
|  */
 | |
| export declare function getPathContributingMatches<T extends AgnosticRouteMatch = AgnosticRouteMatch>(matches: T[]): T[];
 | |
| export declare function getResolveToMatches<T extends AgnosticRouteMatch = AgnosticRouteMatch>(matches: T[], v7_relativeSplatPath: boolean): string[];
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare function resolveTo(toArg: To, routePathnames: string[], locationPathname: string, isPathRelative?: boolean): Path;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare function getToPathname(to: To): string | undefined;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare const joinPaths: (paths: string[]) => string;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare const normalizePathname: (pathname: string) => string;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare const normalizeSearch: (search: string) => string;
 | |
| /**
 | |
|  * @private
 | |
|  */
 | |
| export declare const normalizeHash: (hash: string) => string;
 | |
| export type JsonFunction = <Data>(data: Data, init?: number | ResponseInit) => Response;
 | |
| /**
 | |
|  * This is a shortcut for creating `application/json` responses. Converts `data`
 | |
|  * to JSON and sets the `Content-Type` header.
 | |
|  *
 | |
|  * @deprecated The `json` method is deprecated in favor of returning raw objects.
 | |
|  * This method will be removed in v7.
 | |
|  */
 | |
| export declare const json: JsonFunction;
 | |
| export declare class DataWithResponseInit<D> {
 | |
|     type: string;
 | |
|     data: D;
 | |
|     init: ResponseInit | null;
 | |
|     constructor(data: D, init?: ResponseInit);
 | |
| }
 | |
| /**
 | |
|  * Create "responses" that contain `status`/`headers` without forcing
 | |
|  * serialization into an actual `Response` - used by Remix single fetch
 | |
|  */
 | |
| export declare function data<D>(data: D, init?: number | ResponseInit): DataWithResponseInit<D>;
 | |
| export interface TrackedPromise extends Promise<any> {
 | |
|     _tracked?: boolean;
 | |
|     _data?: any;
 | |
|     _error?: any;
 | |
| }
 | |
| export declare class AbortedDeferredError extends Error {
 | |
| }
 | |
| export declare class DeferredData {
 | |
|     private pendingKeysSet;
 | |
|     private controller;
 | |
|     private abortPromise;
 | |
|     private unlistenAbortSignal;
 | |
|     private subscribers;
 | |
|     data: Record<string, unknown>;
 | |
|     init?: ResponseInit;
 | |
|     deferredKeys: string[];
 | |
|     constructor(data: Record<string, unknown>, responseInit?: ResponseInit);
 | |
|     private trackPromise;
 | |
|     private onSettle;
 | |
|     private emit;
 | |
|     subscribe(fn: (aborted: boolean, settledKey?: string) => void): () => boolean;
 | |
|     cancel(): void;
 | |
|     resolveData(signal: AbortSignal): Promise<boolean>;
 | |
|     get done(): boolean;
 | |
|     get unwrappedData(): {};
 | |
|     get pendingKeys(): string[];
 | |
| }
 | |
| export type DeferFunction = (data: Record<string, unknown>, init?: number | ResponseInit) => DeferredData;
 | |
| /**
 | |
|  * @deprecated The `defer` method is deprecated in favor of returning raw
 | |
|  * objects. This method will be removed in v7.
 | |
|  */
 | |
| export declare const defer: DeferFunction;
 | |
| export type RedirectFunction = (url: string, init?: number | ResponseInit) => Response;
 | |
| /**
 | |
|  * A redirect response. Sets the status code and the `Location` header.
 | |
|  * Defaults to "302 Found".
 | |
|  */
 | |
| export declare const redirect: RedirectFunction;
 | |
| /**
 | |
|  * A redirect response that will force a document reload to the new location.
 | |
|  * Sets the status code and the `Location` header.
 | |
|  * Defaults to "302 Found".
 | |
|  */
 | |
| export declare const redirectDocument: RedirectFunction;
 | |
| /**
 | |
|  * A redirect response that will perform a `history.replaceState` instead of a
 | |
|  * `history.pushState` for client-side navigation redirects.
 | |
|  * Sets the status code and the `Location` header.
 | |
|  * Defaults to "302 Found".
 | |
|  */
 | |
| export declare const replace: RedirectFunction;
 | |
| export type ErrorResponse = {
 | |
|     status: number;
 | |
|     statusText: string;
 | |
|     data: any;
 | |
| };
 | |
| /**
 | |
|  * @private
 | |
|  * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies
 | |
|  *
 | |
|  * We don't export the class for public use since it's an implementation
 | |
|  * detail, but we export the interface above so folks can build their own
 | |
|  * abstractions around instances via isRouteErrorResponse()
 | |
|  */
 | |
| export declare class ErrorResponseImpl implements ErrorResponse {
 | |
|     status: number;
 | |
|     statusText: string;
 | |
|     data: any;
 | |
|     private error?;
 | |
|     private internal;
 | |
|     constructor(status: number, statusText: string | undefined, data: any, internal?: boolean);
 | |
| }
 | |
| /**
 | |
|  * Check if the given error is an ErrorResponse generated from a 4xx/5xx
 | |
|  * Response thrown from an action/loader
 | |
|  */
 | |
| export declare function isRouteErrorResponse(error: any): error is ErrorResponse;
 | |
| export {};
 |