import * as _route_weaver_core from '@route-weaver/core';
import { RouteDeclarations, NavDefinitions, NavigationInstance } from '@route-weaver/core';
import * as react_jsx_runtime from 'react/jsx-runtime';
import React from 'react';

declare const useNavigation: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>() => _route_weaver_core.StructuredNavigation<U, V>;
declare const useActiveRoute: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>() => _route_weaver_core.ActiveRoute<U> | undefined;
declare const useBreadcrumbs: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>() => _route_weaver_core.StructuredNavItem<U>[];
declare const useBuildPath: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>() => <R extends keyof T>(id: R, ...args: _route_weaver_core.ExtractRouteParams<_route_weaver_core.RoutePath<T[R]>> extends never ? [params?: undefined] : [params: _route_weaver_core.RouteParams<_route_weaver_core.RoutePath<T[R]>>]) => string;

declare const RouteWeaverProvider: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>({ navInstance, children, }: {
    navInstance: NavigationInstance<T, V, U>;
    children: React.ReactNode;
}) => react_jsx_runtime.JSX.Element;
declare const useRouteWeaver: <T extends RouteDeclarations<U>, V extends NavDefinitions<keyof T & string>, U = unknown>() => NavigationInstance<T, V, U>;

export { RouteWeaverProvider, useActiveRoute, useBreadcrumbs, useBuildPath, useNavigation, useRouteWeaver };
