import { ObjectAbstract } from '../../common/object-abstract';
import { ResultType } from '../../common/data-type';
import { GroupType, EntityChildrenAtomType, IGenerate } from '../../common/interface/group';
import { ObjectCommon } from '../../common/object-common';
/**
 * @public
 * @class Group
 * @extends ObjectCommon
 * @implements ObjectAbstract
 */
declare class Group extends ObjectCommon implements ObjectAbstract {
    className: string;
    private apiClassName;
    private EntityChildrenAtom;
    private childrenEntities;
    private WdpGroupTransformAtom;
    private WdpGroupVisibleAtom;
    /**
     * @constructor
     * @param {GroupType} opt (optional)
     */
    constructor(opt?: GroupType);
    get children(): Array<Record<string, any>>;
    set children(childrenEntities: Array<Record<string, any>>);
    GetChildren(): Promise<ResultType>;
    SetChildren(childrenEntities: Array<Record<string, any>>): Promise<ResultType>;
    /**
     * @public
     * @function GetScheme
     * @returns {{EntityChildrenAtom: EntityChildrenAtomType}}
     */
    GetScheme(): {
        EntityChildrenAtom: EntityChildrenAtomType;
    };
    /**
     * @public
     * @function GetData
     * @returns {GroupType}
     */
    GetData(): GroupType;
    /**
     * @public
     * @function SetData
     * @param {GroupType} opt
     * @returns {void}
     */
    SetData(opt: GroupType): void;
    /**
     * @public
     * @function generateAtomData
     * @param {GroupType} opt
     * @returns {IGenerate}
     */
    generateAtomData(opt: GroupType): IGenerate;
    /**
     * @public
     * @function generateObjectData
     * @param {Record<string, any>} atomData
     * @param {Record<string, any>} atomObj (default value is this.atomObj)
     * @returns {void}
     */
    generateObjectData(atomData: Record<string, any>, atomObj?: Record<string, any>): void;
    /**
     * @public
     * @async
     * @function UnGroup
     * @returns {Promise<ResultType>}
     */
    UnGroup(): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function Add
     * @param {Array<Record<string, any>>} objs
     * @param {number} addToGroupPosition (default value is -1)
     * @returns {Promise<ResultType>}
     */
    Add(objs: Array<Record<string, any>>, addToGroupPosition?: number): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function Romove
     * @param {Array<Record<string, any>>} objs
     * @returns {Promise<ResultType>}
     */
    Remove(objs: Array<Record<string, any>>): Promise<ResultType>;
    /**
     * @public
     * @function GetValidateRules
     * @returns {GroupType}
     */
    GetValidateRules(): GroupType;
    /**
     * @public
     * @function Validate
     * @param {GroupType} opt
     * @returns {void}
     */
    Validate(opt: GroupType): void;
}
export default Group;
