import { InjectionKey, App, Ref } from 'vue';
import { RouteWeaverInstance, NavigationInstance } from '@route-weaver/core';

declare const routeWeaverKey: InjectionKey<RouteWeaverInstance<any, any>>;
declare const navigationKey: InjectionKey<NavigationInstance<any, any>>;
declare const createRouteWeaver: (weaver: RouteWeaverInstance<any, any>, nav: NavigationInstance<any, any>) => {
    install(app: App): void;
};
declare const useRouteWeaver: <T extends RouteWeaverInstance<any, any> = RouteWeaverInstance<any, any>>() => T;
declare const useNavigationInstance: <T extends NavigationInstance<any, any> = NavigationInstance<any, any>>() => T;

declare const useNavigation: <T extends NavigationInstance<any, any>>() => T["navigation"];

declare const useActiveRoute: <T extends NavigationInstance<any, any>>() => Ref<ReturnType<T["getActiveRoute"]>>;
declare const useBreadcrumbs: <T extends NavigationInstance<any, any>>() => Ref<ReturnType<T["getBreadcrumbs"]>>;
declare const useBuildPath: <T extends NavigationInstance<any, any>>() => T["buildPath"];

export { createRouteWeaver, navigationKey, routeWeaverKey, useActiveRoute, useBreadcrumbs, useBuildPath, useNavigation, useNavigationInstance, useRouteWeaver };
