import { TNode, Value } from '@tempots/dom';
import type { LocationData } from '@tempots/ui';
import { LinkOptions } from './link';
export type UrlMatchMode = 'exact' | 'prefix' | 'params';
export interface NavigationLinkOptions extends Omit<LinkOptions, 'disabled'> {
    /**
     * How to match the current URL against the link's href
     * - 'exact': URL must match exactly (default)
     * - 'prefix': Current URL must start with the link's href
     * - 'params': Match pathname and search params, ignore hash
     */
    matchMode?: UrlMatchMode;
    /**
     * Whether to disable the link when it matches the current location
     * @default true
     */
    disableWhenActive?: Value<boolean>;
}
export declare function isUrlMatch(location: LocationData, targetHref: string, matchMode: UrlMatchMode): boolean;
type LocationMatcher = string | RegExp | ((location: LocationData) => boolean);
export declare function createLocationMatcher(href: Value<string>, matchMode: UrlMatchMode): Value<LocationMatcher>;
export declare function NavigationLink({ href, matchMode, disableWhenActive, ...linkOptions }: NavigationLinkOptions, ...children: TNode[]): import("@tempots/dom").Renderable;
export {};
