import * as React from "react";
import * as PropTypes from "prop-types";
import { FieldProps } from "../../types";
/**
 * Watches a specified field which contains taxon set IDs.
 *
 * When taxon set IDs are added, it fetches the taxa in those sets from the API and adds them to the units in formData.
 *
 * When taxon set IDs are removed, it removes any taxa belonging to those sets from the units in formData.
 *
 * uiSchema = {
 *   "ui:field": "TaxonSetPopulatorField",
 *   "ui:options": {
 *     "props": {
 *       "from": "taxonCensus",                    	// Source object containing taxon set IDs
 *       "fromArrayKey": "censusTaxonSetID",      	// Field within source object containing the taxon set IDs
 *    	 "joinArray": true,                      	// Join array of IDs into comma-separated string
 *     }
 *   }
 * }
 */
export default class TaxonSetPopulatorField extends React.Component<FieldProps> {
    static propTypes: {
        uiSchema: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
            "ui:options": PropTypes.Requireable<PropTypes.InferProps<{
                props: PropTypes.Requireable<NonNullable<PropTypes.InferProps<{
                    from: PropTypes.Validator<string>;
                    fromArrayKey: PropTypes.Requireable<string>;
                    joinArray: PropTypes.Requireable<boolean>;
                }> | (PropTypes.InferProps<{
                    from: PropTypes.Validator<string>;
                    fromArrayKey: PropTypes.Requireable<string>;
                    joinArray: PropTypes.Requireable<boolean>;
                }> | null | undefined)[] | null | undefined>>;
            }>>;
            uiSchema: PropTypes.Requireable<object>;
        }>>>;
        schema: PropTypes.Validator<NonNullable<PropTypes.InferProps<{
            type: PropTypes.Requireable<string>;
        }>>>;
        formData: PropTypes.Validator<object>;
    };
    static getName(): string;
    selectedTaxonSets: string[];
    unitTaxonSets: Record<string, string[]>;
    getStateFromProps(): {
        onChange: (formData: any) => Promise<void>;
    };
    componentDidMount(): Promise<void>;
    onChange: (formData: any) => Promise<void>;
    private fetchTaxaFromSet;
}
