import { EventArg } from '../../../event/EventArg';
import { Point3D } from '../../../misc';
import { Entity } from '../../Entity';
import { Path } from '../../Path';
import { Thing } from '../../Thing';
import { Component } from '../Component';
import { PathAnimation } from '../PathAnimation';
/**
 * 漫游
 */
export declare class Roaming extends Component {
    private static _app;
    private _edit;
    /**
     * 路径
     */
    _path: Path;
    /**
     * 角色
     */
    _character: Thing;
    /**
     * 路径动画
     */
    _pathAnimation: PathAnimation;
    private _appEvents;
    /**
     * 获取或设置垂直偏移
     */
    get offsetY(): number;
    set offsetY(value: number);
    /**
     * 相机水平方向角度默认值
     */
    static defaultAlpha: number;
    /**
     * 相机垂直方向角度默认值
     */
    static defaultBeta: number;
    /**
     * 相机到角色距离默认值
     */
    static defaultRadius: number;
    /**
     * 实例化一个漫游对象
     * @param entity 实体对象
     */
    constructor(entity: Entity);
    /**
     * 获取或设置路径点集合
     */
    get points(): Point3D[];
    set points(value: Point3D[]);
    /**
     * 获取或设置暂停
     */
    get pause(): boolean;
    set pause(value: boolean);
    /**
     * 获取或设置速度
     */
    get speed(): number;
    set speed(value: number);
    /**
     * 获取或设置路径可见性
     */
    get pathVisible(): boolean;
    set pathVisible(value: boolean);
    /**
     * 是否正在执行漫游
     */
    get executing(): boolean;
    /**
     * 监听事件
     * @param type 事件类型
     * @param callback 回调函数
     */
    on(type: 'EVENT_PAUSE' | 'EVENT_CONTINUE' | 'EVENT_ARRIVE' | 'EVENT_ENDPATHEDIT' | 'EVENT_POINTCLICK', callback: (ev: EventArg) => void): string;
    /**
     * 移除指定编号的事件
     * @param id 事件唯一编号
     */
    off(id: string): void;
    /**
     * 开始路径编辑
     */
    startPathEdit(): void;
    /**
     * 结束路径编辑
     */
    private _endPathEdit;
    /**
     * 创建路径
     */
    buildPath(): void;
    /**
     * 开始漫游
     * @param person 人称，true表示第一人称，false表示第三人称
     */
    startToRoam(person: boolean): Promise<void>;
    /**
     * 结束漫游
     */
    endToRoam(): void;
    private _setAppEvents;
    private _onLeftClick;
    private _onAfterFrame;
    /**
     * 结束路径编辑
     */
    endPathEdit(): Promise<void>;
}
