/** @packageDocumentation
 * @module ContentView
 */
import "./ContentLayout.scss";
import * as React from "react";
import { CommonProps } from "@itwin/core-react";
import { ContentGroup } from "./ContentGroup";
import { ContentLayoutProps, LayoutFragmentProps, UiEvent } from "@itwin/appui-abstract";
/** Properties for [[ContentWrapper]] */
interface ContentWrapperProps extends CommonProps {
    content: React.ReactNode;
}
/** ContentWrapper React component.
 * @internal
 */
export declare function ContentWrapper(props: ContentWrapperProps): JSX.Element;
/** Common interface for HorizontalSplit and VerticalSplit
 */
interface LayoutSplit {
    createContentContainer(contentNodes: React.ReactNode[], resizable: boolean): React.ReactNode;
    isLocked: boolean;
}
/** Content Layout Definition class.
 * @public
 */
export declare class ContentLayoutDef {
    private _layoutProps;
    private _rootSplit?;
    /** ID for this Content Layout */
    id: string;
    /** Description of the layout. */
    description: string;
    constructor(layoutProps: ContentLayoutProps);
    get rootSplit(): LayoutSplit | undefined;
    /** Creates [[ContentLayoutProps]] for JSON purposes
     * @public
     */
    toJSON(): ContentLayoutProps;
    /** Fill a layout container with React nodes for each content view
     */
    fillLayoutContainer(contentNodes: React.ReactNode[], resizable: boolean): React.ReactNode | undefined;
    /** Gets the indexes of content views used in this Content Layout
     */
    getUsedContentIndexes(): number[];
    private getHorizontalSplitContentIndexes;
    private getVerticalSplitContentIndexes;
    /** @internal */
    static createSplit(fragmentDef: LayoutFragmentProps): LayoutSplit | undefined;
}
/** Content Layout Activated Event Args class.
 * @public
 */
export interface ContentLayoutActivatedEventArgs {
    contentLayout: ContentLayoutDef;
    contentGroup: ContentGroup;
}
/** Content Layout Activated Event class.
 * @public
 */
export declare class ContentLayoutActivatedEvent extends UiEvent<ContentLayoutActivatedEventArgs> {
}
/** State for the [[ContentLayout]].
 */
interface ContentLayoutState {
    contentLayoutDef: ContentLayoutDef;
    contentContainer?: React.ReactNode;
    contentGroupId?: string;
}
/** Properties for the [[ContentLayout]] React component.
 * @public
 */
export interface ContentLayoutComponentProps extends CommonProps {
    contentLayout: ContentLayoutDef;
    contentGroup: ContentGroup;
    /**
    * @deprecated in 3.3. In upcoming version, widget mode will be removed and footer mode will always be true.
    */
    isInFooterMode?: boolean;
}
/** Content Layout React component.
 * @public
 */
export declare class ContentLayout extends React.Component<ContentLayoutComponentProps, ContentLayoutState> {
    /** @internal */
    readonly state: Readonly<ContentLayoutState>;
    constructor(props: ContentLayoutComponentProps);
    componentDidMount(): void;
    componentWillUnmount(): void;
    private _handleContentLayoutActivated;
    render(): React.ReactNode;
    private _onMouseDown;
    private _onMouseUp;
}
export {};
//# sourceMappingURL=ContentLayout.d.ts.map