import { CoreGroup } from './../../../core/geometry/Group';
import { BaseParamType } from '../_Base';
import { ExpressionManager } from '../../expressions/ExpressionManager';
import type { CorePoint } from '../../../core/geometry/entities/point/CorePoint';
import type { CoreVertex } from '../../../core/geometry/entities/vertex/CoreVertex';
import type { CorePrimitive } from '../../../core/geometry/entities/primitive/CorePrimitive';
import { CoreEntity } from '../../../core/geometry/CoreEntity';
import { ParamType } from '../../poly/ParamType';
import { ParamValuesTypeMap } from '../types/ParamValuesTypeMap';
import { BaseCoreObject } from '../../../core/geometry/entities/object/BaseCoreObject';
import { MethodDependency } from '../../expressions/MethodDependency';
import { CoreGraphNodeId } from '../../../core/graph/CoreGraph';
import { CoreObjectType } from '../../../core/geometry/ObjectContent';
type EntityCallback<T extends ParamType> = (entity: CoreEntity, value: ParamValuesTypeMap[T] | any) => void;
type PointEntityCallback<T extends ParamType> = (entity: CorePoint<CoreObjectType>, value: ParamValuesTypeMap[T] | any) => void;
type ObjectEntityCallback<T extends ParamType> = (entity: BaseCoreObject<CoreObjectType>, value: ParamValuesTypeMap[T] | any) => void;
type CoreGroupEntityCallback<T extends ParamType> = (entity: CoreGroup, value: ParamValuesTypeMap[T] | any) => void;
export declare class ExpressionController<T extends ParamType> {
    protected param: BaseParamType;
    protected _expression: string | undefined;
    protected _entities: CoreEntity[] | undefined;
    protected _entityCallback: EntityCallback<T> | undefined;
    protected _manager: ExpressionManager | undefined;
    protected _methodDependenciesByGraphNodeId: Map<CoreGraphNodeId, MethodDependency> | undefined;
    constructor(param: BaseParamType);
    dispose(): void;
    private _resetMethodDependencies;
    registerMethodDependency(methodDependency: MethodDependency): void;
    active(): boolean;
    expression(): string | undefined;
    isErrored(): boolean;
    errorMessage(): string | null | undefined;
    entitiesDependent(): boolean;
    setExpression(expression: string | undefined, setDirty?: boolean): void;
    updateFromMethodDependencyNameChange(): void;
    computeExpression(): Promise<any> | undefined;
    computeExpressionForEntities(entities: CoreEntity[], callback: EntityCallback<T>): Promise<void>;
    computeExpressionForPoints(entities: CorePoint<CoreObjectType>[], callback: PointEntityCallback<T>): Promise<void>;
    computeExpressionForVertices(entities: CoreVertex<CoreObjectType>[], callback: PointEntityCallback<T>): Promise<void>;
    computeExpressionForPrimitives(entities: CorePrimitive<CoreObjectType>[], callback: PointEntityCallback<T>): Promise<void>;
    computeExpressionForObjects<OT extends CoreObjectType>(entities: BaseCoreObject<OT>[], callback: ObjectEntityCallback<T>): Promise<void>;
    computeExpressionForCoreGroup(entity: CoreGroup, callback: CoreGroupEntityCallback<T>): Promise<void>;
    entities(): CoreEntity[] | undefined;
    entityCallback(): EntityCallback<T> | undefined;
    private _setEntities;
    private _resetEntities;
}
export {};
