import React from 'react';
import { StandardProps } from '../../util/component-types';
import * as reducers from './Sidebar.reducers';
interface ISidebarPrimaryProps extends StandardProps {
}
interface ISidebarTitleProps extends StandardProps {
}
interface ISidebarBarProps extends StandardProps {
    Title?: ISidebarTitleProps | string;
    title?: ISidebarTitleProps | string;
    hasGutters?: boolean;
}
export interface ISidebarState {
    isExpanded: boolean;
    width: number;
}
export interface ISidebarProps extends StandardProps {
    /** Sets the starting width of the Bar. */
    width?: number;
    /** Force the Sidebar to be expanded or collapsed. */
    isExpanded?: boolean;
    /** Allows animated expand and collapse behavior. */
    isAnimated?: boolean;
    /** Render the Sidebar to the left or right of primary content. */
    position?: 'left' | 'right';
    /** Disable user resizing of the Sidebar. */
    isResizeDisabled?: boolean;
    /** Set the title of the Sidebar. (alias for \`Title\` and \`Sidebar.Title\`) */
    title?: React.ReactNode;
    /** Set the title of the Sidebar. (alias for \`title\` and \`Sidebar.Title\`) */
    Title?: React.ReactNode;
    /** Called when the user is currently resizing the Sidebar. */
    onResizing?: (width: number, { event, props }: {
        event: MouseEvent | TouchEvent;
        props: ISidebarProps;
    }) => void;
    /** Called when the user resizes the Sidebar. */
    onResize?: (width: number, { event, props }: {
        event: MouseEvent | TouchEvent;
        props: ISidebarProps;
    }) => void;
    /** 	Called when the user expands or collapses the Sidebar. */
    onToggle?: ({ event, props, }: {
        event: React.MouseEvent<HTMLButtonElement>;
        props: ISidebarProps;
    }) => void;
}
declare class Sidebar extends React.Component<ISidebarProps, ISidebarState> {
    static displayName: string;
    static Bar: {
        (_props: ISidebarBarProps): null;
        peek: {
            description: string;
        };
        displayName: string;
        propName: string;
        propTypes: {
            Title: any;
            title: any;
            hasGutters: any;
        };
        defaultProps: {
            hasGutters: boolean;
        };
    };
    static Primary: {
        (_props: ISidebarPrimaryProps): null;
        peek: {
            description: string;
        };
        displayName: string;
        propName: string;
    };
    static Title: {
        (_props: ISidebarTitleProps): null;
        peek: {
            description: string;
        };
        propTypes: {
            children: any;
        };
        displayName: string;
        propName: string[];
    };
    static peek: {
        description: string;
        categories: string[];
    };
    static reducers: typeof reducers;
    static propTypes: {
        style: any;
        className: any;
        children: any;
        width: any;
        isExpanded: any;
        isAnimated: any;
        position: any;
        isResizeDisabled: any;
        title: any;
        Title: any;
        Bar: any;
        Primary: any;
        onResizing: any;
        onResize: any;
        onToggle: any;
    };
    static defaultProps: {
        isExpanded: boolean;
        isAnimated: boolean;
        width: number;
        position: "left";
        isResizeDisabled: boolean;
        onResizing: (...args: any[]) => void;
        onResize: (...args: any[]) => void;
        onToggle: (...args: any[]) => void;
    };
    handleExpanderClick: (event: React.MouseEvent<HTMLButtonElement>) => void;
    handleResizing: (width: number, { event }: {
        event: MouseEvent | TouchEvent;
    }) => void;
    handleResize: (width: number, { event }: {
        event: MouseEvent | TouchEvent;
    }) => void;
    render(): JSX.Element;
}
declare const _default: typeof Sidebar & import("../../util/state-management").IHybridComponent<ISidebarProps, ISidebarState>;
export default _default;
export { Sidebar as SidebarDumb };
