import * as React from "react";
import * as PropTypes from "prop-types";
import { FieldProps, JSONSchemaObject } from "../../types";
import memoize from "memoizee";
interface ArrayPropField {
    type: "array";
    name: string;
    value?: string | number | boolean;
    idx: number;
}
interface BasicPropField {
    type: "string" | "number" | "boolean" | "object" | "integer";
    name: string;
    value?: string | number | boolean;
}
type SelectedField = ArrayPropField | BasicPropField;
interface State {
    selectedFields: SelectedField[];
    formData: any;
}
export default class CondensedObjectField extends React.Component<FieldProps<JSONSchemaObject, JSONSchemaObject>, State> {
    static propTypes: {
        schema: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
            type: PropTypes.Requireable<string>;
        }>>>;
        formData: PropTypes.Requireable<object>;
    };
    static getName(): string;
    constructor(props: FieldProps<JSONSchemaObject, JSONSchemaObject>);
    componentDidUpdate(): void;
    getSelectedFieldsFromProps(props: FieldProps<JSONSchemaObject, JSONSchemaObject>): SelectedField[];
    onSelectFieldChange: (name: string) => void;
    onFieldChange: ((idx: number) => (formData: any) => void) & memoize.Memoized<(idx: number) => (formData: any) => void>;
    onFieldDelete: ((idx: number) => () => void) & memoize.Memoized<(idx: number) => () => void>;
    getArrayFieldNextIdx(fields: SelectedField[], name: string): number;
    render(): JSX.Element;
}
export {};
