import { CesiumService } from '../cesium/cesium.service';
import { CesiumEventBuilder } from './cesium-event-builder';
import { EventRegistrationInput } from './event-registration-input';
import { DisposableObservable } from './disposable-observable';
import { PlonterService } from '../plonter/plonter.service';
/**
* Returns screen position, drag boolean for drag events only
*/
export interface Movement {
startPosition: {
x: number;
y: number;
};
endPosition: {
x: number;
y: number;
};
drop?: boolean;
}
export interface EventResult {
movement: Movement;
cesiumEntities: any[];
entities: any[];
}
/**
* Manages all map events. Notice events will run outside of Angular zone.
* Provided by `` component there for could be injected at any component under `` hierarchy
* or from the `` component reference `acMapComponent.getMapEventsManager()`
*
* __usage:__
* ```
* MapEventsManagerService.register({event, modifier, priority, entityType, pickOption}).subscribe()
* ```
* __param:__ {CesiumEvent} event
* __param:__ {CesiumEventModifier} modifier
* __param:__ priority - the bigger the number the bigger the priority. default : 0.
* __param:__ entityType - entity type class that you are interested like (Track). the class must extends AcEntity
* __param:__ pickOption - self explained
*/
export declare class MapEventsManagerService {
private cesiumService;
private eventBuilder;
private plonterService;
private scene;
private eventRegistrations;
constructor(cesiumService: CesiumService, eventBuilder: CesiumEventBuilder, plonterService: PlonterService);
init(): void;
/**
* Register to map event
* @param input Event Registration Input
*
* @returns DisposableObservable
*/
register(input: EventRegistrationInput): DisposableObservable;
private disposeObservable;
private sortRegistrationsByPriority;
private createEventRegistration;
private createDragEvent;
private triggerPick;
private addEntities;
private plonter;
}