// {"id":425049,"status":true,"name":"Machine Shop","description":"","tags":[],"keywords":[],"extensors":{},"locations":[{"mapId":7216,"waypointIds":[43102987]}],"uris":{"items":[]},"displayMode":1,"_mappedPoints":{"7216":true}}
export type JIBESTREAM_DESTINATION = {
  id: number;
  status: boolean;
  name: string;
  description: string;
  tags: string[];
  keywords: string[];
  extensors: Object;
  locations: JIBESTREAM_LOCATION[];
  uris: Object;
  displayMode: number;
  waypoints: JIBESTREAM_WAYPOINT[];
};

export type JIBESTREAM_WAYPOINT = {
  _: {
    id: number;
    status: boolean;
    mapId: number;
    coordinates: number[];
    associations: {
      destinations: number[];
    };
    xyz: {
      x: number;
      y: number;
      z: number;
    };
  };
};

export type JIBESTREAM_PATH = {
  _: {
    seq: number;
    mapId: number;
    mover: {
      moverId: number;
      speed: number;
      accessiblity: number;
      typeName: string;
      svg: null;
    };
    points: {
      _: {
        id: number;
        status: boolean;
        mapId: number;
        coordinates: number[];
        associations?: {
          destinations: number[];
        };
        xyz: {
          x: number;
          y: number;
          z: number;
        };
      };
    }[];
    cost: number;
    pixelDistance: number;
    mmDistance: number;
  };
};

export type JIBESTREAM_LOCATION = {
  mapId: number;
  waypointIds: number[];
};

export type JIBESTREAM_STYLE = {
  fill?: string;
  stroke?: string;
  strokeWidth?: number;
  strokeOpacity?: number;
  opacity?: number;
};

export type JIBESTREAM_FONT = {
  align?: string;
  fill?: string;
  fontFamily?: string;
  fontSize?: number & string;
  wordWrap?: boolean;
  wordWrapWidth?: number;
};

export type INSTRUCTION = {
  fullText: string;
  prepend: string;
  direction: string;
  destinationName?: string;
  distance: number;
  remainingDistance: number;
  wp: number;
  dest: number;
  startPoint?: number[];
  endPoint?: number[];
};

export type MAP_CREDENTIALS = {
  clientId: string;
  clientSecret: string;
  customerId: number;
  venueId: number;
  host: string;
};

export type MAP_COMPASS_PROPERTIES = {
  position?: number[];
  padding?: number[];
  width?: number;
  height?: number;
};

export type MAP_FLOOR_SELECTOR_PROPERTIES = {
  inactiveStyle?: JIBESTREAM_STYLE;
  inactiveFont?: JIBESTREAM_FONT;
  activeStyle?: JIBESTREAM_STYLE;
  activeFont?: JIBESTREAM_FONT;
  position?: number[];
  padding?: number[];
  vertical?: boolean;
};

export type MAP_SEARCH_PROPERTIES = {
  inactiveStyle?: JIBESTREAM_STYLE;
  inactiveFont?: JIBESTREAM_FONT;
  activeStyle?: JIBESTREAM_STYLE;
  activeFont?: JIBESTREAM_FONT;
  position?: number[];
  placeholder?: string;
  searchArray?: Object[];
  maxResults?: number;
  padding?: number[];
};

export type MAP_ZOOM_BUTTON_PROPERTIES = {
  inactiveStyle?: JIBESTREAM_STYLE;
  inactiveFont?: JIBESTREAM_FONT;
  activeStyle?: JIBESTREAM_STYLE;
  activeFont?: JIBESTREAM_FONT;
  position?: number[];
  zoomInText?: string;
  zoomOutText?: string;
  padding?: number[];
};

export type FOLLOW_BLUE_DOT_PROPERTIES = {
  enabled: boolean;
  rotate: boolean;
  interval: number;
};

export type JIBESTREAM_DESTINATION_SET = {
  _: JIBESTREAM_DESTINATION;
  locations: {
    _locations: JIBESTREAM_LOCATION[];
  };
  uris: {
    _: Object[];
  };
  waypoints: JIBESTREAM_WAYPOINT[];
};

export type MAP_TAP_EVENT = {
  pointers: Object[];
  changedPointers: { isTrusted: boolean }[];
  pointerType: string;
  srcEvent: { isTrusted: boolean };
  isFirst: false;
  isFinal: true;
  eventType: number;
  center: { x: number; y: number };
  timeStamp: number;
  deltaTime: number;
  angle: number;
  distance: number;
  deltaX: number;
  deltaY: number;
  offsetDirection: number;
  overallVelocityX: number;
  overallVelocityY: number;
  overallVelocity: number;
  scale: number;
  rotation: number;
  maxPointers: number;
  velocity: number;
  velocityX: number;
  velocityY: number;
  direction: number;
  target: Object;
  type: 'singletap';
  tapCount: number;
  localPoint: number[];
};
