import { ObjectAbstract } from '../../../common/object-abstract';
import { ResultType, AssetAtomType } from '../../../common/data-type';
import { MaterialAtomType, IMaterial } from '../../../common/interface/material';
import { HierarchyType, IGenerate } from '../../../common/interface/hierarchy';
import { ObjectController } from '../../../common/object-controller';
/**
 * @public
 * @class Hierarchy
 * @extends ObjectController
 * @implements ObjectAbstract
 */
declare class Hierarchy extends ObjectController implements ObjectAbstract {
    className: string;
    private AssetAtom;
    private MaterialAtom;
    /**
     * @constructor
     * @param {HierarchyType} opt (optional)
     */
    constructor(opt?: HierarchyType);
    get seedId(): string | null;
    set seedId(seedId: string | null);
    get changedMaterialInfo(): Array<IMaterial>;
    set changedMaterialInfo(changedMaterialInfo: Array<IMaterial>);
    GetSeedId(): Promise<ResultType>;
    SetSeedId(seedId: string | null): Promise<ResultType>;
    GetChangedMaterialInfo(): Promise<ResultType>;
    SetChangedMaterialInfo(changedMaterialInfo: Array<IMaterial>): Promise<ResultType>;
    /**
     * @public
     * @function GetScheme
     * @returns {{AssetAtom: AssetAtomType, MaterialAtom: MaterialAtomType}}
     */
    GetScheme(): {
        AssetAtom: AssetAtomType;
        MaterialAtom: MaterialAtomType;
    };
    /**
     * @public
     * @function GetData
     * @returns {HierarchyType}
     */
    GetData(): HierarchyType;
    /**
     * @public
     * @function SetData
     * @param {HierarchyType} opt
     * @returns {void}
     */
    SetData(opt: HierarchyType): void;
    /**
     * @public
     * @function generateAtomData
     * @param {HierarchyType} opt
     * @returns {IGenerate}
     */
    generateAtomData(opt: HierarchyType): IGenerate;
    /**
     * @public
     * @function GetValidateRules
     * @returns {HierarchyType}
     */
    GetValidateRules(): HierarchyType;
    /**
     * @public
     * @function Validate
     * @param {HierarchyType} opt
     * @returns {void}
     */
    Validate(opt: HierarchyType): void;
}
export default Hierarchy;
