/**
 * One-component-fits-all "Ask" affordance shared across the three
 * chat-adjacent surfaces (source chips, inline cards, search results).
 *
 * Before this primitive, the same semantic action was implemented three
 * different ways:
 *   - Source chip: inline `<button>` next to the chip
 *   - Source chip dropdown row: secondaryAction icon-button
 *   - Inline card: UI-Kit `<Button variant="transparent">Ask</Button>`
 *   - Search results: nothing (asymmetric — no Ask)
 *
 * Three icon sizes, three different opacity rules, three different DOM
 * shapes for the same action. Centralized here as a single `Button`-
 * backed wrapper so the DOM + a11y + hover behavior live in one place.
 * The `density` prop picks the visual variant; the icon/label/click
 * semantics are identical across all three.
 */
import React from 'react';
import type { ChatRef } from './chat-ref.types';
export type SourceActionDensity = 'inline' | 'card' | 'list-row';
export interface SourceActionButtonProps {
    /** The row to drill into when clicked. The button is HIDDEN when this
     *  is null (e.g. row has no primary key — Ask can't fire). */
    chatRef: ChatRef | null;
    /** Click handler. Receives the chatRef. When undefined the button is
     *  hidden — same as null chatRef. */
    onDiscuss?: (ref: ChatRef) => void;
    /** Visual density / layout. Defaults to `'inline'`. */
    density?: SourceActionDensity;
    /** Optional className appended to the outer element. */
    className?: string;
    /** Button text label override. Defaults to `'Ask'`. The Display variant
     *  on inline cards passes `'Display'` here. Density `'inline'` shows
     *  the icon only — the label is used for aria-label / title even when
     *  it doesn't render visibly. */
    label?: string;
}
export declare function SourceActionButton({ chatRef, onDiscuss, density, className, label, }: SourceActionButtonProps): React.ReactElement | null;
//# sourceMappingURL=source-action-button.d.ts.map