import { Ray } from "@galacean/engine-math";
import { Entity } from "../../../Entity";
import { Scene } from "../../../Scene";
import { ClearableObjectPool } from "../../../utils/ClearableObjectPool";
import { Pointer } from "../Pointer";
import { PointerEventData } from "../PointerEventData";
import { IHitResult } from "./IHitResult";
export declare abstract class PointerEventEmitter {
    protected static _tempRay: Ray;
    protected _hitResult: IHitResult;
    protected _pool: ClearableObjectPool<PointerEventData>;
    constructor(pool: ClearableObjectPool<PointerEventData>);
    abstract processRaycast(scenes: readonly Scene[], pointer: Pointer): void;
    abstract processDrag(pointer: Pointer): void;
    abstract processDown(pointer: Pointer): void;
    abstract processUp(pointer: Pointer): void;
    abstract processLeave(pointer: Pointer): void;
    abstract dispose(): void;
    protected abstract _init(): void;
    protected _createEventData(pointer: Pointer, target: Entity, currentTarget?: Entity): PointerEventData;
    protected _fireDown(entity: Entity, eventData: PointerEventData): void;
    protected _fireUp(entity: Entity, eventData: PointerEventData): void;
    protected _fireClick(entity: Entity, eventData: PointerEventData): void;
    protected _fireEnter(entity: Entity, eventData: PointerEventData): void;
    protected _fireExit(entity: Entity, eventData: PointerEventData): void;
    protected _fireBeginDrag(entity: Entity, eventData: PointerEventData): void;
    protected _fireDrag(entity: Entity, eventData: PointerEventData): void;
    protected _fireEndDrag(entity: Entity, eventData: PointerEventData): void;
    protected _fireDrop(entity: Entity, eventData: PointerEventData): void;
}
