type Method = 'get' | 'post' | 'put' | 'delete' | 'options' | 'patch' | 'all';
type App = Record<Method | string, ((route: string, handler: (req: unknown, res: unknown) => void) => void) | any>;
type ViteDevServer = {
    ssrLoadModule: (url: string, opts?: {
        fixStacktrace?: boolean;
    }) => Promise<Record<string, any>>;
};
type AutoloadRoutesOptions = {
    /**
     * Pattern to search files of routes
     * @example pattern only .ts files
     * ```ts
     * pattern: '**\/*.ts'
     * ```
     * @default '**\/*.{ts,tsx,mjs,js,jsx,cjs}'
     */
    pattern?: string;
    /**
     * Prefix to add to routes
     * @example prefix for APIs
     * ```ts
     * prefix: '/api'
     * ```
     * @default ''
     */
    prefix?: string;
    /**
     * Directory to search routes
     * @default '/routes'
     */
    routesDir?: string;
    /**
     * Default method to use when the route filename doesn't use the (<METHOD>) pattern
     * @default 'get'
     */
    defaultMethod?: Method | string;
    /**
     * Vite dev server instance
     * @default undefined
     */
    viteDevServer?: ViteDevServer;
    /**
     * Skip the throw error when no routes are found
     * @default false
     */
    skipNoRoutes?: boolean;
    /**
     * Skip the import errors with the `default export` of a rotue file
     * @default false
     */
    skipImportErrors?: boolean;
};
declare const autoloadRoutes: (app: App, { pattern, prefix, routesDir, defaultMethod, viteDevServer, skipNoRoutes, skipImportErrors }: AutoloadRoutesOptions) => Promise<App>;

export { autoloadRoutes };
