import { type ComponentProps, type ElementType, type ReactNode } from 'react';
import type { GDSComponentProps } from '@graphprotocol/gds-css';
import { type RenderProp } from './base/Render.tsx';
import { PaneContainerMeta, PaneMeta } from './Pane.meta.ts';
import { type ToggleButtonProps } from './ToggleButton.tsx';
export interface PaneProviderProps {
    children: ReactNode;
}
export declare function PaneProvider({ children }: PaneProviderProps): import("react/jsx-runtime").JSX.Element;
export declare namespace PaneProvider {
    var displayName: string;
}
export interface UsePaneOptions {
    defaultCollapsed?: boolean | undefined;
    defaultOverlayOpen?: boolean | undefined;
    onCollapsedChange?: ((collapsed: boolean) => void) | undefined;
    onOverlayOpenChange?: ((overlayOpen: boolean) => void) | undefined;
}
export declare function usePane(name: string, options?: UsePaneOptions): {
    layout: "overlay" | "docked";
    collapsed: boolean;
    overlayOpen: boolean;
    setCollapsed: (collapsed: boolean) => void;
    setOverlayOpen: (overlayOpen: boolean) => void;
    toggle: () => void;
};
export interface PaneContainerProps extends ComponentProps<'div'>, GDSComponentProps<typeof PaneContainerMeta> {
}
export declare function PaneContainer({ ref: passedRef, orientation, className, style, children, ...props }: PaneContainerProps): import("react/jsx-runtime").JSX.Element;
export declare namespace PaneContainer {
    var displayName: string;
}
export interface PaneProps extends ComponentProps<'div'>, GDSComponentProps<typeof PaneMeta> {
    /** @default 'div' */
    as?: ElementType | undefined;
    /** Unique name for this pane. */
    name: string;
    /**
     * Whether the pane is pseudo-modal in overlay mode. When `true`, the overlay shows a backdrop,
     * receives focus when opened, and can be closed by pressing Escape or interacting with elements
     * covered by the backdrop.
     *
     * @default true
     */
    overlayModal?: boolean | undefined;
}
export declare function PaneRoot({ ref: passedRef, as: Element, name, layout, side, overlayModal, className, style, children, ...props }: PaneProps): import("react/jsx-runtime").JSX.Element;
export declare namespace PaneRoot {
    var displayName: string;
}
type PaneToggleButtonState = {
    open: boolean;
};
interface PaneToggleButtonCommonProps extends ComponentProps<'button'> {
    /** Name of the pane to toggle. */
    name: string;
}
interface PaneToggleButtonWithRenderProps extends PaneToggleButtonCommonProps {
    /** Element or render function for the toggle button. */
    render: RenderProp<PaneToggleButtonState>;
    variant?: never;
    size?: never;
    hideLabel?: never;
    tooltip?: never;
    addonBefore?: never;
    addonAfter?: never;
}
interface PaneToggleButtonWithoutRenderProps extends PaneToggleButtonCommonProps, Pick<ToggleButtonProps, 'variant' | 'size' | 'hideLabel' | 'tooltip' | 'addonBefore' | 'addonAfter'> {
    render?: undefined;
}
export type PaneToggleButtonProps = PaneToggleButtonWithRenderProps | PaneToggleButtonWithoutRenderProps;
export declare function PaneToggleButton({ name, render, variant, size, hideLabel, tooltip, addonBefore, addonAfter, onClick, className, children, ...props }: PaneToggleButtonProps): import("react/jsx-runtime").JSX.Element;
export declare namespace PaneToggleButton {
    var displayName: string;
}
export {};
//# sourceMappingURL=Pane.parts.d.ts.map