import React from "react";
import { DefaultAppContext, RequestInfo } from "./requestInfo/types";
import { Route } from "./lib/router";
export * from "./requestInfo/types";
declare global {
    type Env = {
        ASSETS: Fetcher;
        DB: D1Database;
    };
}
export type AppDefinition<Routes extends readonly Route<any>[], T extends RequestInfo> = {
    fetch: (request: Request, env: Env, cf: ExecutionContext) => Promise<Response>;
    __rwRoutes: Routes;
};
export interface DefineAppOptions {
    allowedOrigins?: readonly string[];
}
export declare const defineApp: <T extends RequestInfo = RequestInfo<any, DefaultAppContext>, Routes extends readonly Route<T>[] = readonly Route<T>[]>(routes: Routes, options?: DefineAppOptions) => AppDefinition<Routes, T>;
export declare const DefaultDocument: React.FC<{
    children: React.ReactNode;
}>;
