/**
 * @file SideNavCollapseButton.tsx
 * @input Uses React, StyleX, SideNavCollapseContext, Icon
 * @output Exports SideNavCollapseButton component
 * @position Composable toggle button for sidenav collapse
 *
 * Place inside SideNav (reads context automatically) or outside
 * (pass the same controlled `collapsible` config both get).
 *
 * SYNC: When modified, update:
 * - /packages/core/src/SideNav/SideNav.doc.mjs
 * - /packages/core/src/SideNav/index.ts
 * - /packages/cli/assets/templates/blocks/components/SideNav/ (showcase blocks)
 */
import React, { type ReactNode } from 'react';
import type { BaseProps } from '../BaseProps';
import { type SideNavControlledCollapsible, type SideNavImperativeCollapseHandle } from './SideNavCollapseContext';
import type { ElementSize } from '../SizeContext/SizeContext';
export interface SideNavCollapseButtonProps extends BaseProps<HTMLButtonElement> {
    ref?: React.Ref<HTMLButtonElement>;
    /**
     * The same controlled `collapsible` config given to SideNav
     * (`{isCollapsed, onCollapsedChange}`). Needed only when the button is
     * rendered outside the sidenav, where collapse context cannot reach it.
     */
    collapsible?: SideNavControlledCollapsible;
    /**
     * Imperative handle from SideNav.
     *
     * @deprecated Pass `collapsible` instead.
     */
    handleRef?: React.RefObject<SideNavImperativeCollapseHandle | null>;
    /**
     * Custom button label text. When provided, renders as a text button
     * with the chevron icon. When omitted, renders as an icon-only button.
     */
    label?: string;
    /**
     * Button size. Defaults to the size its container cascades — `sm` in a
     * SideNav footer — or `md` outside one. Set it for placements with no row
     * to inherit from, e.g. a button placed in a `TopNav`.
     */
    size?: ElementSize;
    /**
     * Custom button content. Overrides the default chevron icon and label.
     */
    children?: ReactNode;
}
/**
 * Composable toggle button for sidenav collapse.
 *
 * Place anywhere inside SideNav (header, topContent, footer, footerIcons)
 * and it reads collapse state from context automatically. For placement
 * outside the sidenav (e.g. in TopNav or content area), hold the state and
 * hand the same `collapsible` config to both.
 *
 * @example
 * ```
 * <SideNav isCollapsible footerIcons={<SideNavCollapseButton />}>
 *   ...
 * </SideNav>
 * ```
 *
 * @example
 * ```
 * const [isCollapsed, setIsCollapsed] = useState(false);
 * const collapsible = {isCollapsed, onCollapsedChange: setIsCollapsed};
 * <TopNav endContent={<SideNavCollapseButton collapsible={collapsible} />} />
 * <SideNav collapsible={{...collapsible, hasButton: false}}>...</SideNav>
 * ```
 */
export declare function SideNavCollapseButton({ ref, collapsible, handleRef, label, size, children, onClick: onClickProp, ...props }: SideNavCollapseButtonProps): React.JSX.Element | null;
export declare namespace SideNavCollapseButton {
    var displayName: string;
}
//# sourceMappingURL=SideNavCollapseButton.d.ts.map