import type React from 'react';
export interface ReactElementWithRef<T extends any = any> extends React.ReactElement<T> {
    ref?: React.Ref<T>;
}
export declare type Size = 'auto' | 'block' | 'inherit' | 'lg' | 'md' | 'none' | 'sm' | 'xl' | 'xs' | 'xxl';
export declare type Placement = 'bottom' | 'bottom-left' | 'bottom-right' | 'center' | 'left' | 'left-bottom' | 'left-top' | 'right' | 'right-bottom' | 'right-top' | 'top' | 'top-left' | 'top-right';
export interface RenderProp<T> {
    children: React.ReactNode | ((props: T) => React.ReactNode);
}
export interface Props {
    children?: React.ReactNode;
    /**
     * Additional classNames
     */
    className?: string;
    /**
     * Additional CSS styles
     */
    style?: React.CSSProperties;
}
/**
 * @deprecated Never officially documented/supported.
 * These are internal types not meant for outside of library consumption,
 * if you find yourself needing these types directly, please contact #team-ui-foundations.
 *
 * AFTER: Just use `React.HTMLAttributes<HTMLDivElement>`
 * @deprecatedSince 12
 */
export declare type DivAttributes = React.HTMLAttributes<HTMLDivElement>;
/**
 * @deprecated Never officially documented/supported.
 * These are internal types not meant for outside of library consumption,
 * if you find yourself needing these types directly, please contact #team-ui-foundations.
 *
 * AFTER: Just use `React.HTMLAttributes<HTMLSpanElement>`
 * @deprecatedSince 12
 */
export declare type SpanAttributes = React.HTMLAttributes<HTMLSpanElement>;
export declare type AriaLabelled<P = never> = ({
    'aria-label': string;
} & P) | ({
    'aria-labelledby': string;
} & P);
/**
 * Helper to create a type with required and optional keys.
 */
export declare type UsingProps<
/** All possible props */
Props, 
/** Keys that will be required */
Always extends keyof Props, 
/** Other keys that will be supported */
Optional extends keyof Props = never> = Required<Pick<Props, Always>> & Partial<Pick<Props, Optional>>;
