import React from 'react';
import type { ButtonProps, TextInputProps, LinkProps, CheckboxProps } from '../../index';
import type { OverlayProps } from '../../Overlay/Overlay';
import type { ResponsiveValue } from '../../hooks/useResponsiveValue';
import type { PositionSettings } from '@primer/behaviors';
import type { FCWithSlotMarker, WithSlotMarker } from '../../utils/types';
export type SelectPanelProps = {
    title: string;
    description?: string;
    variant?: 'anchored' | 'modal' | ResponsiveValue<'anchored' | 'modal', 'full-screen' | 'bottom-sheet'>;
    selectionVariant?: 'single' | 'multiple' | 'instant';
    id?: string;
    defaultOpen?: boolean;
    open?: boolean;
    anchorRef?: React.RefObject<HTMLButtonElement | null>;
    anchoredPositionSettings?: Partial<PositionSettings>;
    onCancel?: () => void;
    onClearSelection?: undefined | (() => void);
    onSubmit?: (event?: React.FormEvent<HTMLFormElement>) => void;
    width?: OverlayProps['width'];
    height?: 'fit-content';
    maxHeight?: Exclude<OverlayProps['maxHeight'], 'xsmall'>;
    children: React.ReactNode;
    className?: string;
};
export type SelectPanelSecondaryActionProps = {
    children: React.ReactNode;
} & (({
    variant: 'button';
} & Partial<Omit<ButtonProps, 'variant'>>) | ({
    variant: 'link';
} & Partial<LinkProps>) | ({
    variant: 'checkbox';
    id?: string;
} & CheckboxProps));
export type SelectPanelMessageProps = {
    children: React.ReactNode;
} & ({
    size?: 'full';
    title: string;
    variant: 'warning' | 'error' | 'empty';
} | {
    size?: 'inline';
    title?: never;
    variant: 'warning' | 'error';
});
export declare const SelectPanel: React.FC<SelectPanelProps> & {
    Button: WithSlotMarker<React.ForwardRefExoticComponent<{
        alignContent?: import("../../Button/types").AlignContent;
        icon?: React.FunctionComponent<import("@primer/octicons-react").IconProps> | React.ElementType | React.ReactElement<any> | null;
        leadingVisual?: React.ElementType | React.ReactElement<any> | null;
        trailingVisual?: React.ElementType | React.ReactElement<any> | null;
        trailingAction?: React.ElementType | null;
        children?: React.ReactNode;
        count?: number | string;
    } & {
        variant?: import("../../Button/types").VariantType;
        size?: import("../../Button/types").Size;
        disabled?: boolean;
        block?: boolean;
        loading?: boolean;
        loadingAnnouncement?: string;
        inactive?: boolean;
        labelWrap?: boolean;
    } & React.ButtonHTMLAttributes<HTMLButtonElement> & React.RefAttributes<HTMLButtonElement>>>;
    Header: FCWithSlotMarker<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
        onBack?: () => void;
    }>;
    SearchInput: FCWithSlotMarker<TextInputProps>;
    Footer: {
        ({ ...props }: {
            [x: string]: any;
        }): React.JSX.Element | null;
        __SLOT__: symbol;
    };
    Loading: ({ children }: React.PropsWithChildren) => React.JSX.Element;
    Message: React.FC<SelectPanelMessageProps>;
    SecondaryAction: React.FC<SelectPanelSecondaryActionProps>;
};
//# sourceMappingURL=SelectPanel.d.ts.map