import { Basic } from './basic';
import { AtomAbstract } from './atom-abstract';
import { ResultType, CoordType, RotatorType, ScaleType, BasicInfoAtomType, IOperations, IOBjectCache } from './data-type';
import RequestEntityController from '../action/request-entity-controller';
/**
 * @public
 * @class AtomController
 * @extends Basic
 * @implements AtomAbstract
 */
export declare class AtomController extends Basic implements AtomAbstract {
    private type;
    private ObjectClass;
    protected RequestEntity: RequestEntityController;
    protected objectMap: Map<string, IOBjectCache>;
    /**
     * @constructor
     * @param {any} obj
     * @param {any} ObjectClass (optional)
     */
    constructor(obj: any, ObjectClass?: any);
    /**
     * @protected
     * @function setType
     * @param {string} type
     * @returns {void}
     */
    protected setType(type: string): void;
    /**
     * @protected
     * @function generateDataObject
     * @param {T} params
     * @param {S} obj
     * @returns {S}
     */
    protected generateDataObject<T, S extends Record<string, any>>(params: T, obj: S): S;
    /**
     * @protected
     * @function findFromMap
     * @param {string} key (optional)
     * @returns {Array<Record<string, any>> | {object: Record<string, any>} | undefined}
     */
    protected findFromMap(key?: string): Array<Record<string, any>> | {
        object: Record<string, any>;
    } | undefined;
    /**
     * @public
     * @function addToMap
     * @param {string} key
     * @param {any} obj
     * @returns {void}
     */
    addToMap(key: string, obj: any): void;
    /**
     * @public
     * @function removeFromMap
     * @param {string} key
     * @returns {void}
     */
    removeFromMap(key: string): void;
    /**
     * @public
     * @function clearMap
     * @returns {void}
     */
    clearMap(): void;
    /**
     * @public
     * @function onClick
     * @param {Function} func (e: ResultType) => void
     * @returns {void}
     */
    onClick(func: (e: ResultType) => void): void;
    /**
     * @public
     * @function onDbClick
     * @param {Function} func (e: ResultType) => void
     * @returns {void}
     */
    onDbClick(func: (e: ResultType) => void): void;
    /**
     * @public
     * @function onMouseEnter
     * @param {Function} func (e: ResultType) => void
     * @returns {void}
     */
    onMouseEnter(func: (e: ResultType) => void): void;
    /**
     * @public
     * @function onMouseOut
     * @param {Function} func (e: ResultType) => void
     * @returns {void}
     */
    onMouseOut(func: (e: ResultType) => void): void;
    /**
     * @public
     * @async
     * @function Delete
     * @param {Array<string>} eids
     * @returns {Promise<ResultType>}
     */
    Delete(eids: Array<string>): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function SetLocation
     * @param {string} eid
     * @param {CoordType} location
     * @returns {Promise<ResultType>}
     */
    SetLocation(eid: string, location: CoordType): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function SetRotator
     * @param {string} eid
     * @param {RotatorType} rotator
     * @returns {Promise<ResultType>}
     */
    SetRotator(eid: string, rotator: RotatorType): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function SetScale3d
     * @param {string} eid
     * @param {ScaleType} scale3d
     * @returns {Promise<ResultType>}
     */
    SetScale3d(eid: string, scale3d: ScaleType): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function SetVisible
     * @param {Array<string>} eids
     * @param {boolean} bVisible (default value is true)
     * @returns {Promise<ResultType>}
     */
    SetVisible(eids: Array<string>, bVisible?: boolean): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function ClearCache
     * @returns {Promise<ResultType>}
     */
    ClearCache(): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function UpdateBasic
     * @param {string} eid
     * @param {BasicInfoAtomType} opt
     * @returns {Promise<ResultType>}
     */
    UpdateBasic(eid: string, opt: BasicInfoAtomType): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function CreateWithTemplate
     * @param {Record<string, any>} dp
     * @param {Array<Record<string, any>>} bp
     * @param {IOperations} operations (optional)
     * @returns {Promise<ResultType>}
     */
    CreateWithTemplate(dp: Record<string, any>, bp: Array<Record<string, any>>, operations?: IOperations): Promise<ResultType>;
    /**
     * @public
     * @function GetObject
     * @param {Record<string, any>} jsonData
     * @returns {Record<string, any>}
     */
    GetObject(jsonData: Record<string, any>): Record<string, any>;
    /**
     * @public
     * @async
     * @function Create
     * @param {Record<string, any>} jsonData
     * @returns {Promise<ResultType>}
     */
    Create(jsonData: Record<string, any>): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function Add
     * @param {any} obj
     * @param {IOperations} operations (optional)
     * @returns {Promise<ResultType>}
     */
    Add(obj: any, operations?: IOperations): Promise<ResultType>;
    /**
     * @public
     * @async
     * @function Get
     * @param {string} eid (optional)
     * @returns {Promise<ResultType>}
     */
    Get(eid?: string): Promise<ResultType>;
    /**
     * @public
     * @function checkCacheExist
     * @param {string} eid
     * @returns {ResultType}
     */
    checkCacheExist(eid: string): ResultType;
    /**
     * @public
     * @async
     * @function GenerateObject
     * @param {Record<string, any>} res
     * @returns {Promise<any>}
     */
    GenerateObject(res: Record<string, any>): Promise<any>;
    /**
     * @public
     * @async
     * @function GetOnly
     * @param {string} eid
     * @returns {Promise<ResultType>}
     */
    GetOnly(eid: string): Promise<ResultType>;
}
