import { ObjectAbstract } from '../../../common/object-abstract';
import { ResultType, ICoordinates2D } from '../../../common/data-type';
import { WimModelerWaterPolygonAtomType, WimModelerWaterAtomType, WimModelerWaterType, IGenerate, IAttributes } from '../../../common/interface/wim-modeler-water';
import { ObjectController } from '../../../common/object-controller';
/**
 * @public
 * @class WimModelerWater
 * @extends ObjectController
 * @implements ObjectAbstract
 */
declare class WimModelerWater extends ObjectController implements ObjectAbstract {
    className: string;
    private WimModelerWaterPolygonAtom;
    private WimModelerWaterAtom;
    /**
     * @constructor
     * @param {WimModelerWaterType} opt (optional)
     */
    constructor(opt?: WimModelerWaterType);
    get waterHeight(): number;
    set waterHeight(waterHeight: number);
    get bInverseNormal(): boolean;
    set bInverseNormal(bInverseNormal: boolean);
    get bAlignZ(): boolean;
    set bAlignZ(bAlignZ: boolean);
    get bUseVertexCorner(): boolean;
    set bUseVertexCorner(bUseVertexCorner: boolean);
    get cornerRadius(): number;
    set cornerRadius(cornerRadius: number);
    get cornerSplitNum(): number;
    set cornerSplitNum(cornerSplitNum: number);
    get waterType(): string;
    set waterType(waterType: string);
    get waterColor(): string;
    set waterColor(waterColor: string);
    get waveHeight(): number;
    set waveHeight(waveHeight: number);
    get waterTransparency(): number;
    set waterTransparency(waterTransparency: number);
    get waterTransparentDepth(): number;
    set waterTransparentDepth(waterTransparentDepth: number);
    get rippleScale(): number;
    set rippleScale(rippleScale: number);
    get waveRotate(): number;
    set waveRotate(waveRotate: number);
    get waveSpeed(): number;
    set waveSpeed(waveSpeed: number);
    get waveIntensity(): number;
    set waveIntensity(waveIntensity: number);
    get waveScale(): number;
    set waveScale(waveScale: number);
    get coordinates(): ICoordinates2D;
    set coordinates(coordinates: ICoordinates2D);
    get attributes(): Array<IAttributes>;
    set attributes(attributes: Array<IAttributes>);
    GetWaterHeight(): Promise<ResultType>;
    SetWaterHeight(waterHeight: number): Promise<ResultType>;
    GetInverseNormal(): Promise<ResultType>;
    SetInverseNormal(bInverseNormal: boolean): Promise<ResultType>;
    GetbInverseNormal(): Promise<ResultType>;
    SetbInverseNormal(bInverseNormal: boolean): Promise<ResultType>;
    GetbAlignZ(): Promise<ResultType>;
    SetbAlignZ(bAlignZ: boolean): Promise<ResultType>;
    GetAlignZ(): Promise<ResultType>;
    SetAlignZ(bAlignZ: boolean): Promise<ResultType>;
    GetUseVertexCorner(): Promise<ResultType>;
    SetUseVertexCorner(bUseVertexCorner: boolean): Promise<ResultType>;
    GetbUseVertexCorner(): Promise<ResultType>;
    SetbUseVertexCorner(bUseVertexCorner: boolean): Promise<ResultType>;
    GetCornerRadius(): Promise<ResultType>;
    SetCornerRadius(cornerRadius: number): Promise<ResultType>;
    GetCornerSplitNum(): Promise<ResultType>;
    SetCornerSplitNum(cornerSplitNum: number): Promise<ResultType>;
    GetWaterType(): Promise<ResultType>;
    SetWaterType(waterType: string): Promise<ResultType>;
    GetWaterColor(): Promise<ResultType>;
    SetWaterColor(waterColor: string): Promise<ResultType>;
    GetWaveHeight(): Promise<ResultType>;
    SetWaveHeight(waveHeight: number): Promise<ResultType>;
    GetWaterTransparency(): Promise<ResultType>;
    SetWaterTransparency(waterTransparency: number): Promise<ResultType>;
    GetWaterTransparentDepth(): Promise<ResultType>;
    SetWaterTransparentDepth(waterTransparentDepth: number): Promise<ResultType>;
    GetRippleScale(): Promise<ResultType>;
    SetRippleScale(rippleScale: number): Promise<ResultType>;
    GetWaveRotate(): Promise<ResultType>;
    SetWaveRotate(waveRotate: number): Promise<ResultType>;
    GetWaveSpeed(): Promise<ResultType>;
    SetWaveSpeed(waveSpeed: number): Promise<ResultType>;
    GetWaveIntensity(): Promise<ResultType>;
    SetWaveIntensity(waveIntensity: number): Promise<ResultType>;
    GetWaveScale(): Promise<ResultType>;
    SetWaveScale(waveScale: number): Promise<ResultType>;
    GetCoordinates(): Promise<ResultType>;
    SetCoordinates(coordinates: ICoordinates2D): Promise<ResultType>;
    GetAttributes(): Promise<ResultType>;
    SetAttributes(attributes: Array<IAttributes>): Promise<ResultType>;
    /**
     * @public
     * @function GetScheme
     * @returns {{WimModelerWaterAtom: WimModelerWaterAtomType, WimModelerWaterPolygonAtom: WimModelerWaterPolygonAtomType}}
     */
    GetScheme(): {
        WimModelerWaterAtom: WimModelerWaterAtomType;
        WimModelerWaterPolygonAtom: WimModelerWaterPolygonAtomType;
    };
    /**
     * @public
     * @function GetData
     * @returns {WimModelerWaterType}
     */
    GetData(): WimModelerWaterType;
    /**
     * @public
     * @function SetData
     * @param {WimModelerWaterType} opt
     * @returns {void}
     */
    SetData(opt: WimModelerWaterType): void;
    /**
     * @public
     * @function generateAtomData
     * @param {ModelerWaterType} opt
     * @returns {IGenerate}
     */
    generateAtomData(opt: WimModelerWaterType): IGenerate;
    /**
     * @public
     * @function GetValidateRules
     * @returns {ModelerWaterType}
     */
    GetValidateRules(): WimModelerWaterType;
    /**
     * @public
     * @function Validate
     * @param {WimModelerWaterType} opt
     * @returns {void}
     */
    Validate(opt: WimModelerWaterType): void;
}
export default WimModelerWater;
