import type { ChatRuntime } from '../../../contexts/chat-runtime-context';
/** Minimal mouse-event surface — structural so chip buttons / tiles can call it
 *  without casting `React.MouseEvent`. */
export interface NavClickEvent {
    preventDefault(): void;
    button?: number;
    metaKey?: boolean;
    ctrlKey?: boolean;
    shiftKey?: boolean;
    altKey?: boolean;
}
export interface ExecuteNavigationClickArgs {
    event: NavClickEvent;
    runtime: ChatRuntime | null | undefined;
    href: string;
    path?: string | null;
    targetPlatform?: string | null;
    /** Host router fallback for same-origin soft-nav when the runtime doesn't wire
     *  `navigation.navigate` — pass `useRouter().push`. Without it, falls back to a
     *  full-page `window.location.assign`. */
    fallbackNavigate?: (path: string) => void;
}
export interface ExecuteNavigationImperativeArgs {
    runtime: ChatRuntime | null | undefined;
    href: string;
    targetPlatform?: string | null;
    fallbackNavigate?: (path: string) => void;
}
/**
 * Click-handler form. Returns `true` when it took action (called
 * `preventDefault`); `false` for modifier / non-primary clicks the browser
 * should handle natively. Spread the result into your anchor's `onClick`.
 */
export declare function executeNavigation({ event, runtime, href, path, targetPlatform, fallbackNavigate, }: ExecuteNavigationClickArgs): boolean;
/**
 * Imperative form — for buttons, list-row onClicks, and post-action redirects
 * that aren't anchor clicks. Same decision tree, no event/modifier handling.
 */
export declare function executeNavigationImperative({ runtime, href, targetPlatform, fallbackNavigate, }: ExecuteNavigationImperativeArgs): void;
//# sourceMappingURL=execute-navigation.d.ts.map