import * as React from 'react';
import { FormContext } from './Context';
interface IGroupPublicProps<T> {
    expandedInitially?: boolean;
    name?: DeepKeyOf<T>;
    vertical?: boolean;
    borderless?: boolean;
    title?: string;
    optional?: boolean;
    visibility?: string | ((values: Partial<T>) => boolean);
    height?: number;
    className?: string;
    containerClassName?: string;
    columns?: 1 | 2 | 3;
    /**
     * Works only on named groups. Set this if you want to preserve values (or handle their removal in another way)
     * when the group stops being visible.
     */
    keepOnUnmount?: boolean;
}
interface IGroupInjectedProps<T> {
    values?: Partial<T>;
    isGroupVisible: (marker: string) => boolean;
}
export interface IGroup<T> extends IGroupPublicProps<T>, IGroupInjectedProps<T> {
}
export declare class GroupBare<T = any> extends React.PureComponent<IGroup<T>> {
    static contextType: React.Context<import("./Context").IFormContext<any> | undefined>;
    context: React.ContextType<typeof FormContext>;
    componentWillUnmount(): void;
    render(): JSX.Element | null;
    private generateQAHelperClass;
    private getNestedSectionName;
    private isVisible;
    private collapseInitially;
}
export declare class Group<T = any> extends React.PureComponent<IGroupPublicProps<T>> {
    render(): JSX.Element;
}
export {};
