import { Vue } from 'vue-2/types/vue';
import { NavigationGuard as NavigationGuard3, VueRouter as VueRouter3 } from 'vue-router-3/types/router';
import { NavigationGuard as NavigationGuard4, NavigationGuardWithThis, Router as VueRouter4 } from 'vue-router-4';
import { ICachedSharedElement } from './types/ICachedSharedElement';
import { ISharedElementCandidate } from './types/ISharedElementCandidate';
type NavigationGuard = NavigationGuard3<Vue> & NavigationGuard4 & NavigationGuardWithThis<undefined>;
type VueRouter = VueRouter3 & VueRouter4;
export declare function createRouteGuard(sharedElementCandidates: Map<string, ISharedElementCandidate>, sharedElementCache: Map<string, ICachedSharedElement>): {
    SharedElementRouteGuard: NavigationGuard;
    NuxtSharedElementRouteGuard: (context: {
        app: {
            router: VueRouter;
        };
    }) => void;
};
export {};
