import { type ComponentPropsWithoutRef, type ReactNode } from "react";
export type AccordionMode = "single" | "multiple";
export type AccordionVariant = "default" | "bordered" | "separated";
export interface AccordionItem {
    /** Stable identifier. */
    id: string;
    /** Header label. */
    label: ReactNode;
    /** Optional secondary line below the label. */
    description?: ReactNode;
    /** Optional leading icon. */
    icon?: ReactNode;
    /** Optional trailing slot in the header (badge, count, action). */
    trailing?: ReactNode;
    /** Panel content. */
    content: ReactNode;
    /** Disable interaction for this item. */
    disabled?: boolean;
}
export interface AccordionProps extends Omit<ComponentPropsWithoutRef<"div">, "onChange" | "defaultValue" | "children" | "onDrag" | "onDragStart" | "onDragEnd" | "onAnimationStart"> {
    /** Items to render. */
    items: AccordionItem[];
    /** Single vs multiple expansion. Default `"single"`. */
    mode?: AccordionMode;
    /** Controlled expanded item ids. */
    value?: string[];
    /** Uncontrolled initial expanded ids. */
    defaultValue?: string[];
    /** Fires when the expanded set changes. */
    onValueChange?: (value: string[]) => void;
    /**
     * Allow the last open item to be closed (single mode). Default
     * `true`. When `false`, one item is always open — useful for tabbed-
     * like surfaces.
     */
    collapsible?: boolean;
    /** Visual variant. Default `"default"`. */
    variant?: AccordionVariant;
    /** Visual size. Default `"md"`. */
    size?: "sm" | "md" | "lg";
    /** Disable the entire accordion. */
    disabled?: boolean;
}
export declare const Accordion: import("react").ForwardRefExoticComponent<AccordionProps & import("react").RefAttributes<HTMLDivElement>>;
//# sourceMappingURL=Accordion.d.ts.map