/** @packageDocumentation
 * @module Utilities
 */
import * as React from "react";
import type { WidgetDef } from "../widgets/WidgetDef";
/** List of known preview features. */
interface KnownPreviewFeatures {
    /** If `true`, the panels and tool settings will always be rendered over the content.
     * The content will never change size.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/672
     */
    contentAlwaysMaxSize: boolean;
    /** If `true`, the floating widget will have a "maximize" button. Use `enableMaximizedPanelWidget` to enable the feature for panel widgets.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673
     */
    enableMaximizedFloatingWidget: boolean;
    /** If `true`, the panel widget will have a "maximize" button. Use `enableMaximizedFloatingWidget` to enable the feature for floating widgets.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/673
     */
    enableMaximizedPanelWidget: boolean;
    /** If `true`, the active tab of a dragged widget will become active when dropped in a container.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/679
     */
    activateDroppedTab: boolean;
    /** If `true`, the horizontal panels will have an additional "Align" button.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/706
     */
    horizontalPanelAlignment: boolean;
    /** If enabled, a dropdown menu will be rendered for widgets that exceed the specified threshold of title bar buttons.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/723
     */
    widgetActionDropdown: {
        threshold: number;
    };
    /** If `true`, the [[Toolbar]] component will be replaced by a new iTwinUI based toolbar.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/924
     */
    newToolbars: boolean;
    /** If `true`, popout widgets will not be rendered in a separate element tree, instead widget content will be re-parented to a popout content container.
     * Alternatively, an array of widget ids can be specified to only re-parent specific widgets.
     * @note Use {@link useTransientState} to save and restore DOM transient state when re-parenting widgets.
     * @note There is a known limitation where iTwinUI v2 popover elements will be rendered in the main window. Prefer using iTwinUI v3 when using this feature.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/925
     */
    reparentPopoutWidgets: boolean | WidgetDef["id"][];
    /** If `true`, additional UI elements are rendered to allow the end user of the layout to control widget visibility.
     * Alternatively, an array of widget ids can be specified to only control specific widgets.
     * @note Use {@link UiItemsManager} APIs to manage what widgets are available to the end-user.
     *
     * Discuss or upvote this feature: https://github.com/iTwin/appui/discussions/859
     */
    controlWidgetVisibility: boolean | WidgetDef["id"][];
}
/** List of preview features that can be enabled/disabled.
 * This list is expected to change over time, the interface is made
 * so that new features can be added or removed without breaking existing code.
 * A console warning will simply appear if unknown features are passed.
 * @beta
 */
export interface PreviewFeatures extends Partial<KnownPreviewFeatures> {
    [featureName: string]: any;
}
/** Hook to access the preview features set.
 * @internal
 */
export declare function usePreviewFeatures(): PreviewFeatures;
/** Props for PreviewFeaturesProvider.
 * @beta
 */
export interface PreviewFeaturesProviderProps {
    children?: React.ReactNode;
    features?: PreviewFeatures;
}
/** Set which preview features are enabled. These features are not yet ready for production use nor have
 * a proper API defined yet.
 * The available set of features are defined in the [[PreviewFeatures]] interface.
 *
 * This component should wrap the Provider component.
 *
 * ```tsx
 * <PreviewFeaturesProvider features={{ enableMaximizedFloatingWidget: true }}>
 *   <Provider store={UiFramework.store}>
 *    [...]
 *     <ConfigurableUIContent />
 *    [/...]
 *   </Provider>
 * </PreviewFeaturesProvider>
 * ```
 * @beta
 */
export declare function PreviewFeaturesProvider({ children, features, }: PreviewFeaturesProviderProps): React.JSX.Element;
export {};
//# sourceMappingURL=PreviewFeatures.d.ts.map