import { ObjectAbstract } from '../../../common/object-abstract';
import { ResultType, IindexAndNameArray, IindexAndSwitchArray } from '../../../common/data-type';
import { VegetationType, VegetationAtomType, RelativePolygon2DAtomType, VegetationAssetsAtomType, IGenerate } from '../../../common/interface/vegetation';
import { ObjectController } from '../../../common/object-controller';
/**
 * @public
 * @class Vegetation
 * @extends ObjectController
 * @implements ObjectAbstract
 */
declare class Vegetation extends ObjectController implements ObjectAbstract {
    className: string;
    private Modeler;
    private RelativePolygon2DAtom;
    private VegetationAssetsAtom;
    private VegetationAssetsTemp;
    private VegetationAtom;
    /**
     * @constructor
     * @param {VegetationType} opt (optional)
     */
    constructor(opt?: VegetationType);
    /**
     * @public
     * @function GetScheme
     * @returns {{VegetationAtom: VegetationAtomType, RelativePolygon2DAtom: RelativePolygon2DAtomType, VegetationAssetsAtom: VegetationAssetsAtomType}}
     */
    GetScheme(): {
        VegetationAtom: VegetationAtomType;
        RelativePolygon2DAtom: RelativePolygon2DAtomType;
        VegetationAssetsAtom: VegetationAssetsAtomType;
    };
    /**
     * @public
     * @function GetData
     * @returns {VegetationType}
     */
    GetData(): VegetationType;
    /**
     * @public
     * @function SetData
     * @param {VegetationType} opt
     * @returns {void}
     */
    SetData(opt: VegetationType): void;
    /**
     * @public
     * @function generateAtomData
     * @param {VegetationType} opt
     * @returns {IGenerate}
     */
    generateAtomData(opt: VegetationType): IGenerate;
    /**
     * @public
     * @async
     * @function RemoveRegion
     * @param {Array<number>} indexArray
     * @returns {Promise<ResultType>}
     */
    RemoveRegion(indexArray: Array<number>): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function UpdateRegionName
     * @param {Array<IindexAndNameArray>} indexAndNameArray
     * @returns {Promise<ResultType>}
     */
    UpdateRegionName(indexAndNameArray: Array<IindexAndNameArray>): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function ToggleRegion
     * @param {Array<IindexAndSwitchArray>} indexAndSwitchArray
     * @returns {Promise<ResultType>}
     */
    ToggleRegion(indexAndSwitchArray: Array<IindexAndSwitchArray>): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function QueryRegion
     * @returns {Promise<ResultType>}
     */
    QueryRegion(): Promise<ResultType>;
    /**
     * @public
     * @function GetValidateRules
     * @returns {VegetationType}
     */
    GetValidateRules(): VegetationType;
    /**
     * @public
     * @function Validate
     * @param {VegetationType} opt
     * @returns {void}
     */
    Validate(opt: VegetationType): void;
}
export default Vegetation;
