import type { IEventContainer } from "../../collection/EventContainer";
import { Component } from "../../hierarchy_object/Component";
import type { ComponentConstructor } from "../../hierarchy_object/ComponentConstructor";
import type { PointerGridEvent } from "./PointerGridInputListener";
/**
 * grid pointer
 *
 * draw grid aligned rectangle cursor and receive pointer events
 *
 *
 * disallow multiple component
 *
 * require components: `PointerGridInputListener`
 */
export declare class GridPointer extends Component {
    readonly disallowMultipleComponent: boolean;
    readonly requiredComponents: ComponentConstructor[];
    private _pointerGridInputListener;
    private _pointerZoffset;
    private _pointerObject;
    private _pointerRenderer;
    private readonly _onPointerDownEvent;
    private readonly _onPointerUpEvent;
    private readonly _onPointerMoveEvent;
    private _isMouseDown;
    private _started;
    start(): void;
    onDestroy(): void;
    private readonly onPointerEnterBind;
    private readonly onPointerLeaveBind;
    private readonly onPointerDownBind;
    private readonly onPointerUpBind;
    private readonly onPointerMoveBind;
    private updatePointerPosition;
    /**
     * on pointer down event
     */
    get onPointerDown(): IEventContainer<(event: PointerGridEvent) => void>;
    /**
     * on pointer up event
     */
    get onPointerUp(): IEventContainer<(event: PointerGridEvent) => void>;
    /**
     * on pointer move event
     */
    get onPointerMove(): IEventContainer<(event: PointerGridEvent) => void>;
    /**
     * pointer z offset from gameObject.transform.position.z. default: 0
     *
     * if cursor is not visible, set this to a big positive value
     */
    get pointerZoffset(): number;
    /**
     * pointer z offset from gameObject.transform.position.z. (default: 0)
     *
     * if cursor is not visible, set this to a big positive value
     */
    set pointerZoffset(value: number);
}
