import * as React from 'react';
import * as PropTypes from 'prop-types';
import { FlexBlockItem } from './FlexBlockItem';
declare enum FlexBlockDirectionProperty {
    ROW = "row",
    COLUMN = "column"
}
declare enum FlexBlockAlignProperty {
    CENTER = "center",
    START = "start",
    END = "end"
}
declare enum FlexBlockJustifyProperty {
    CENTER = "center",
    START = "start",
    END = "end",
    SPACE_BETWEEN = "space-between",
    SPACE_AROUND = "space-around",
    SPACE_EVENLY = "space-evenly"
}
declare type FlexBlockProps = {
    children?: React.ReactNode;
    className?: string;
    direction: FlexBlockDirectionProperty;
    align?: FlexBlockAlignProperty | FlexBlockJustifyProperty.CENTER | FlexBlockJustifyProperty.START | FlexBlockJustifyProperty.END;
    justify?: FlexBlockJustifyProperty;
    gutterWidth: number;
    shouldFlexChildren: boolean;
    shouldStretchChildren: boolean;
    shouldWrap: boolean;
    shouldUnwrapChildren: boolean;
    childWrapperStyle: React.CSSProperties;
    style: React.CSSProperties;
};
export declare class FlexBlock extends React.PureComponent<FlexBlockProps> {
    static Item: typeof FlexBlockItem;
    static ROW: FlexBlockDirectionProperty;
    static COLUMN: FlexBlockDirectionProperty;
    static CENTER: FlexBlockJustifyProperty.CENTER;
    static START: FlexBlockJustifyProperty.START;
    static END: FlexBlockJustifyProperty.END;
    static SPACE_BETWEEN: FlexBlockJustifyProperty;
    static SPACE_AROUND: FlexBlockJustifyProperty;
    static SPACE_EVENLY: FlexBlockJustifyProperty;
    static propTypes: {
        children: PropTypes.Requireable<PropTypes.ReactNodeLike>;
        className: PropTypes.Requireable<string>;
        direction: PropTypes.Requireable<FlexBlockDirectionProperty>;
        align: PropTypes.Requireable<FlexBlockJustifyProperty>;
        justify: PropTypes.Requireable<FlexBlockAlignProperty>;
        gutterWidth: PropTypes.Requireable<number>;
        shouldFlexChildren: PropTypes.Requireable<boolean>;
        shouldWrap: PropTypes.Requireable<boolean>;
        shouldUnwrapChildren: PropTypes.Requireable<boolean>;
        childWrapperStyle: PropTypes.Requireable<object>;
        style: PropTypes.Requireable<object>;
    };
    static defaultProps: {
        children: any;
        className: any;
        direction: FlexBlockDirectionProperty;
        align: any;
        justify: any;
        gutterWidth: number;
        shouldFlexChildren: boolean;
        shouldStretchChildren: boolean;
        shouldWrap: boolean;
        shouldUnwrapChildren: boolean;
        childWrapperStyle: {};
        style: {};
    };
    wrapChild: (child: React.ReactElement<any, string | ((props: any) => React.ReactElement<any, string | any | (new (props: any) => React.Component<any, any, any>)>) | (new (props: any) => React.Component<any, any, any>)>, index: any) => JSX.Element;
    renderChildren(): {};
    render(): JSX.Element;
}
export {};
