/**
 * 路口象限，路口中心点为坐标轴原点，正北方向为0°。
 * 225° ~ 315°：西象限。
 * 315° ~ 45°：北象限。
 * 45° ~ 135°：东象限。
 * 135° ~ 225°：南象限。
 */
import * as Three from 'three';
export declare enum QuadrantCode {
    West = "1",
    North = "2",
    East = "3",
    South = "4"
}
export interface IResult {
    status: number;
    message: string;
    result?: any;
}
export interface IVehicleTrack {
    time?: string;
    timestamp: number;
    localTimestamp: number;
    crossId?: string;
    ptcId: string;
    vehicleId: string;
    x: number;
    y: number;
    ptcType: number;
    vehicleType: number;
    heading: number;
    vehicleColor: number | string;
    plateColor: number;
    showName?: string;
    state?: string;
    fixAngle?: number;
    speed?: number;
    plateNo?: string;
    roadLayer?: string;
    step?: number;
}
export interface IVehicleRecord {
    model: Three.Mesh | Three.Object3D;
    data: IVehicleTrack;
    segmentStartTime?: number;
    segmentTotalTime?: number;
    waitForDelete: boolean;
    isMoving: boolean;
    currentPos?: number[];
}
export interface ILaneNumberParams {
    lanes: {
        crossId: string;
        laneNumber: string;
        stopLineCenter: number[];
        laneDirection?: number;
    }[];
}
export interface ISetMapCenterParams {
    center?: number[];
    target?: __esri.GoToTarget2D;
    zoom?: number;
    duration?: number;
}
export interface ILayerVisibleParams {
    id: string;
    visible: boolean;
}
export interface ILookAtParams {
    center: number[];
    height: number;
    tilt?: number;
    heading?: number;
    duration?: number;
}
export interface IStartCrossBufferParam {
    crossId: string;
    crossCenter: number[];
    bufferRadius?: number;
}
export interface IPoint {
    type: string;
    x: number;
    y: number;
    z?: number;
}
export interface ILine {
    type: string;
    paths: number[][][];
}
export interface IPolygon {
    type: string;
    rings: number[][][];
}
export interface IPointSymbol {
    type: string;
    style?: string;
    url?: string;
    width?: number;
    height?: number;
    xoffset?: number;
    yoffset?: number;
    horizontalOrigin?: string;
    verticalOrigin?: string;
    color?: string;
    size?: number;
}
export interface ILineSymbol {
    type: string;
    color?: string | number[];
    width?: number;
    height?: number;
    extrudeHeight?: number;
    cornerType?: string;
}
export interface IPolygonSymbol {
    type: string;
    style?: string;
    color?: string | number[];
    outline?: {
        color?: string | number[];
        width?: number;
    };
}
export interface IOverlay {
    geometry: IPoint | ILine | IPolygon;
    id?: string;
    visible?: boolean;
    symbol?: IPointSymbol | ILineSymbol | IPolygonSymbol;
    properties?: any;
}
export interface IMaskParam {
    geometry: IPolygon;
    maskColor?: number[];
    maskSize?: number;
}
export interface IOverlayParam {
    type?: string;
    defaultSymbol?: IPointSymbol | ILineSymbol | IPolygonSymbol;
    defaultVisible?: boolean;
    overlays: Array<IOverlay>;
    visible?: boolean;
}
export interface ISetMapCameraParams {
    name: string;
    zoom?: number;
    duration?: number;
}
export interface IQueueLengthParams {
    crossNo: string;
    laneId: number;
    queueLength: number;
}
export interface IToggleTrafficInfoParams {
    name: string;
    visible: boolean;
}
export interface ITraceRendererInterface {
    init(): Promise<void>;
    getLog(): (string | number | undefined)[][];
    addVehicles(objects: IVehicleTrack[]): Promise<void>;
    updateVehicles(objects: IVehicleTrack[]): Promise<void>;
    deleteVehicles(idList: string[]): void;
    clearVehicles(): void;
    updatePanelContent(contentType: EVehiclePlateState): void;
    toggleGroundVehicle(visible: boolean): void;
    toggleElevatedVehicle(visible: boolean): void;
    toggleTrafficInfo(params: IToggleTrafficInfoParams): void;
    togglePause(pause: boolean): void;
    setInterpolate(enable: boolean): void;
}
export declare enum EVehiclePlateState {
    None = 0,
    PlateNumber = 1,
    Id = 2,
    Mix = 3
}
export interface ILaneInfo {
    roadId: string;
    sectionId: number;
    laneId: number;
}
/** 采样后的车道 */
export interface ISampledLane {
    id: number;
    type: string;
    innerPath: number[][];
    outerPath: number[][];
}
/** 采样后的路段 */
export interface ISampledLaneSection {
    id: number;
    lanePaths: ISampledLane[];
}
/** 采样后的道路 */
export interface ISampledRoad {
    id: string;
    name: string;
    junction: string;
    refLine: number[][];
    laneSections: ISampledLaneSection[];
}
export interface IRoadLink {
    elementId: string;
    elementType: string;
    contactPoint?: string;
}
export interface IRoadStopLinesResult {
    junctionId: string;
    stopLines: {
        roadId: string;
        line: number[][];
    }[];
}
export interface IShowOpenDriveFromFileParams {
    server: string;
    file: string;
    options?: {
        showJunctionPolygon: boolean;
        showJunctionLane: boolean;
        showRoadName: boolean;
        centerMap?: boolean;
    };
    selectedCallback?: (info: any) => void;
}
export interface IFindSumoParams {
    type: string;
    id: string;
    flash?: boolean;
}
export interface IUnselectSumoParams {
    type: string;
    id?: string;
}
export interface ISplitOpenDriveLaneParams {
    id: string;
    start?: number;
    end?: number;
}
export interface IJunctionTableData {
    id: string;
    name: string;
    nodeType: string;
    type: string;
    coordinates: number[];
    district: string;
    crossId?: string;
    factoryCode?: string;
}
export interface ISignalCountdownProps {
    flash: boolean;
    displayMode: string;
    crossId: string;
    roadId: string;
    mapPoint: number[];
    stopLine: number[][];
    position: {
        left: number;
        top: number;
    };
    rotation: number;
    scale: number;
    lampStatus: {
        uNumber?: number;
        uColor?: string;
        lNumber?: number;
        lColor?: string;
        sNumber?: number;
        sColor?: string;
        rNumber?: number;
        rColor?: string;
    };
}
export interface IShowSignalControlAreaParams {
    areaList: any[];
    style?: string;
}
export interface IDistrictRoad {
    id: string;
    coordinates: number[][];
    districtId: string;
    subDistrictId: string;
}
export interface IFindSignalControlAreaParams {
    type: string;
    id: string;
    scale?: number;
}
export interface INode {
    id: string;
    longitude: number;
    latitude: number;
    name: string;
    signalId?: string;
    coordinates?: number[][];
}
export interface IEditSignalControlAreaParams {
    crossesInArea: INode[];
    addCrossCallback: (params: INode) => void;
    removeCrossCallback: (params: {
        id: string;
    }) => void;
    removeAllCrossCallback?: () => void;
    odrServer: string;
}
export interface IShowGreenWaveBandParams {
    bandId: string;
    coordinates: number[][];
    nodeList: INode[];
}
export interface IRoadLine {
    id: string;
    fromNode: string;
    toNode: string;
    coordinates: number[][];
}
