import { default as React } from 'react';
import { ActionButtonSize } from '../ActionButton';
export interface CopyButtonProps {
    /** Text copied to the clipboard when pressed. */
    value: string;
    /** Show a "Copy"/"Copied" text label beside the icon. Default false (icon-only). */
    withLabel?: boolean;
    /** Icon size in px. Defaults to 16. */
    iconSize?: number;
    /** Frame size, forwarded to ActionButton. Defaults to `md`. */
    size?: ActionButtonSize;
    /** Accessible name + tooltip. Defaults to "Copy to clipboard". */
    ariaLabel?: string;
    /** Fired with the value after a successful copy. */
    onCopy?: (value: string) => void;
    className?: string;
    testId?: string;
}
/**
 * Standalone copy-to-clipboard affordance: swaps its icon to a check (with a
 * teal "pop") and optionally shows "Copied" feedback.
 *
 * Composes `ActionButton`, so it inherits the shared chrome — focus ring,
 * press `active:scale`, sizes, hover, and the re-skinnable `--action-button-*`
 * tokens — and stays consistent with other action buttons (e.g. CodeBlock's
 * copy button). The success animation lives in `CopyStateIcon`; the clipboard
 * behaviour in `useCopyToClipboard`.
 *
 * Its `'use client'` boundary is the reason it stays a separate component:
 * server components (e.g. `forms/TextField` via `showCopyToClipboard`) can
 * embed a copy affordance without themselves becoming client components.
 *
 * Renders ghost (border dropped) so it reads as a quiet affordance in trailing
 * slots.
 *
 * @example
 * ```tsx
 * <CopyButton value="demo_api_key_abc123" ariaLabel="Copy API key" />
 * <CopyButton value={url} withLabel />
 * ```
 *
 * @beta This component is experimental — prop shape may change before release.
 */
export declare const CopyButton: React.FC<CopyButtonProps>;
//# sourceMappingURL=CopyButton.d.ts.map