import * as React from "react";
import * as DialogPrimitive from "@radix-ui/react-dialog";
import { type VariantProps } from "class-variance-authority";
interface AppLayoutDrawerRootProps extends React.ComponentPropsWithoutRef<typeof DialogPrimitive.Root> {
}
declare const AppLayoutDrawerRoot: {
    ({ open: openProp, defaultOpen, onOpenChange, modal, children, ...rest }: AppLayoutDrawerRootProps): React.JSX.Element;
    displayName: string;
};
declare const AppLayoutDrawerTrigger: React.ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & React.RefAttributes<HTMLButtonElement>>;
declare const AppLayoutDrawerClose: React.ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & React.RefAttributes<HTMLButtonElement>>;
declare const appLayoutDrawerVariants: (props?: ({
    side?: "bottom" | "left" | "right" | "top" | null | undefined;
    flush?: boolean | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface AppLayoutDrawerContentProps extends Omit<React.ComponentPropsWithoutRef<typeof DialogPrimitive.Content>, "style">, VariantProps<typeof appLayoutDrawerVariants> {
    flush?: boolean;
    resizable?: boolean;
    minSize?: number;
    maxSize?: number;
    defaultSize?: number;
    storageKey?: string;
    /** Pixel breakpoint below which `resizable` is disabled and inline size is
     *  not applied (so the panel can render full-area on mobile). */
    mobileBreakpoint?: number;
    overlayClassName?: string;
    resizeAriaLabel?: string;
    style?: React.CSSProperties;
    panelStyle?: React.CSSProperties;
    panelClassName?: string;
    /** Override the portal container. Defaults to AppLayout's main-area container
     *  (from context). Pass `null` to opt out of portaling. */
    container?: HTMLElement | null;
    /** Keep the panel mounted across close so its subtree state survives an
     *  open → close → open cycle (no remount, no refetch, no flicker). Lazy:
     *  nothing renders until the first open; after that the panel stays mounted
     *  (Radix `forceMount`) and the slide animation runs off `data-state`.
     *  Default `false` — preserves the standard unmount-on-close behaviour for
     *  every other consumer. */
    keepMounted?: boolean;
    /** When `true` (default), clicks on the dim overlay over the main content
     *  area close the drawer. Clicks on AppLayout chrome (header, sidebar) NEVER
     *  close the drawer regardless of this flag — chrome interactions shouldn't
     *  accidentally dismiss a persistent panel. Pass `false` to make the drawer
     *  fully persistent (X button or Escape only). Consumer-provided
     *  `onInteractOutside` still runs first and can preventDefault to override. */
    dismissOnInteractOutside?: boolean;
    /** Debug helper — when `true`, on each open the component snapshots the
     *  scroll metrics (scrollLeft / scrollWidth / clientWidth / overflow-x) of
     *  every ancestor of the portal container, at mount, after RAF, +150ms,
     *  +350ms, and on close. Use to diagnose layout-shift on open: look for an
     *  ancestor that gains `scrollLeft > 0` or has `overflow-x: visible` while
     *  `scrollWidth > clientWidth`. Remove the prop once diagnosed. */
    debugLayoutShift?: boolean;
}
declare const AppLayoutDrawerContent: React.ForwardRefExoticComponent<AppLayoutDrawerContentProps & React.RefAttributes<HTMLDivElement>>;
declare const AppLayoutDrawerHeader: {
    ({ className, children, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
    displayName: string;
};
declare const AppLayoutDrawerTitle: React.ForwardRefExoticComponent<import("..").DrawerTitleProps & React.RefAttributes<HTMLHeadingElement>>;
declare const AppLayoutDrawerDescription: React.ForwardRefExoticComponent<Omit<DialogPrimitive.DialogDescriptionProps & React.RefAttributes<HTMLParagraphElement>, "ref"> & React.RefAttributes<HTMLParagraphElement>>;
declare const AppLayoutDrawerBody: {
    ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
    displayName: string;
};
declare const AppLayoutDrawerFooter: {
    ({ className, ...props }: React.HTMLAttributes<HTMLDivElement>): React.JSX.Element;
    displayName: string;
};
export { AppLayoutDrawerRoot as AppLayoutDrawer, AppLayoutDrawerTrigger, AppLayoutDrawerClose, AppLayoutDrawerContent, AppLayoutDrawerHeader, AppLayoutDrawerTitle, AppLayoutDrawerDescription, AppLayoutDrawerBody, AppLayoutDrawerFooter, };
//# sourceMappingURL=app-layout-drawer.d.ts.map