import type { RouterElement2 } from './RouterElement2';
/**
 * The tag name used for the `RouterElement2` custom element.
 *
 * @public
 */
export declare const TAG_NAME_ROUTER: "mosaik-router-2";
/**
 * A constructor type for `HTMLElement` subclasses.
 *
 * @public
 */
export type HTMLElementConstructor = typeof HTMLElement;
/**
 * Represents a component that can be resolved by the router.
 * It can be a tag name string, an `HTMLElement` constructor,
 * or a lazy-loading function returning a promise of a constructor.
 *
 * @public
 */
export type Component = string | HTMLElementConstructor | (() => Promise<HTMLElementConstructor>);
/**
 * The public API surface of `RouterElement2`, used for type constraints.
 *
 * @public
 */
export type IBaseRouter = Pick<RouterElement2, 'routes' | 'qs' | 'params' | 'onChange' | 'setRoutes' | 'navigate' | 'forward' | 'back'>;
/**
 * A subset of `IBaseRouter` exposed to route guards.
 *
 * @public
 */
export type ICustomRouterGuard = Omit<IBaseRouter, 'onChange' | 'setRoutes' | 'routes'>;
/**
 * A guard function invoked before entering a route.
 * Return `true` to allow navigation, `false` to cancel it.
 *
 * @public
 */
export type Guard = (router: ICustomRouterGuard) => boolean | Promise<boolean>;
/**
 * Represents a subscription that can be unsubscribed.
 *
 * @public
 */
export interface ISubscription {
    /**
     * Unsubscribe the subscription.
     */
    unsubscribe: () => void;
}
/**
 * Describes a navigation target.
 *
 * @public
 */
export interface INavigation {
    /**
     * Navigation path.
     */
    path: string;
    /**
     * Href associated with the navigation path.
     */
    href: string;
    /**
     * Query parameters as key-value pairs.
     */
    query: Record<string, string>;
}
/**
 * Options that control navigation behavior.
 *
 * @public
 */
export interface INavigationOptions {
    /**
     * Indicates whether `window.history.pushState` should be called.
     */
    enableHistoryPushState: boolean;
}
//# sourceMappingURL=Declarations.d.ts.map