import React from 'react';
export type CollapseButtonProps = {
    isOpen: boolean;
    onClick: (e: React.MouseEvent<HTMLDivElement>) => void;
};
export type SideBarProps = {
    width: number;
    isOpen: boolean;
    minifiedWidth: number;
    onOpenOrClose: (arg: {
        isOpen: boolean;
    }) => void;
    shouldShowCollapseButton?: boolean | null;
    children?: React.ReactNode;
};
export declare const CollapseButtonFactory: () => ({ onClick, isOpen }: CollapseButtonProps) => React.JSX.Element;
declare function SidebarFactory(CollapseButton: ReturnType<typeof CollapseButtonFactory>): {
    new (props: SideBarProps): {
        _onOpenOrClose: () => void;
        render(): React.JSX.Element;
        context: unknown;
        setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<SideBarProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
        forceUpdate(callback?: (() => void) | undefined): void;
        readonly props: Readonly<SideBarProps>;
        state: Readonly<{}>;
        refs: {
            [key: string]: React.ReactInstance;
        };
        componentDidMount?(): void;
        shouldComponentUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): boolean;
        componentWillUnmount?(): void;
        componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
        getSnapshotBeforeUpdate?(prevProps: Readonly<SideBarProps>, prevState: Readonly<{}>): any;
        componentDidUpdate?(prevProps: Readonly<SideBarProps>, prevState: Readonly<{}>, snapshot?: any): void;
        componentWillMount?(): void;
        UNSAFE_componentWillMount?(): void;
        componentWillReceiveProps?(nextProps: Readonly<SideBarProps>, nextContext: any): void;
        UNSAFE_componentWillReceiveProps?(nextProps: Readonly<SideBarProps>, nextContext: any): void;
        componentWillUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): void;
        UNSAFE_componentWillUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): void;
    };
    new (props: SideBarProps, context: any): {
        _onOpenOrClose: () => void;
        render(): React.JSX.Element;
        context: unknown;
        setState<K extends never>(state: {} | ((prevState: Readonly<{}>, props: Readonly<SideBarProps>) => {} | Pick<{}, K> | null) | Pick<{}, K> | null, callback?: (() => void) | undefined): void;
        forceUpdate(callback?: (() => void) | undefined): void;
        readonly props: Readonly<SideBarProps>;
        state: Readonly<{}>;
        refs: {
            [key: string]: React.ReactInstance;
        };
        componentDidMount?(): void;
        shouldComponentUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): boolean;
        componentWillUnmount?(): void;
        componentDidCatch?(error: Error, errorInfo: React.ErrorInfo): void;
        getSnapshotBeforeUpdate?(prevProps: Readonly<SideBarProps>, prevState: Readonly<{}>): any;
        componentDidUpdate?(prevProps: Readonly<SideBarProps>, prevState: Readonly<{}>, snapshot?: any): void;
        componentWillMount?(): void;
        UNSAFE_componentWillMount?(): void;
        componentWillReceiveProps?(nextProps: Readonly<SideBarProps>, nextContext: any): void;
        UNSAFE_componentWillReceiveProps?(nextProps: Readonly<SideBarProps>, nextContext: any): void;
        componentWillUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): void;
        UNSAFE_componentWillUpdate?(nextProps: Readonly<SideBarProps>, nextState: Readonly<{}>, nextContext: any): void;
    };
    defaultProps: {
        width: number;
        minifiedWidth: number;
        isOpen: boolean;
        onOpenOrClose: () => void;
        shouldShowCollapseButton: boolean;
    };
    contextType?: React.Context<any> | undefined;
};
declare namespace SidebarFactory {
    var deps: (() => ({ onClick, isOpen }: CollapseButtonProps) => React.JSX.Element)[];
}
export default SidebarFactory;
