// Copyright 2015 The Vanadium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

package ifc

type Id string
type Latitude float32
type Longitude float32

type IdOrIds union {
  Id Id
  Ids []Id
}

// required for optional ints
type Byte struct {
  Value byte
}
type Float32 struct {
  Value float32
}
type Int16 struct {
  Value int16
}

type CastSpec struct {
  PanelName string
}

type LatLng struct {
  Lat Latitude
  Lng Longitude
}

type LatLngBounds struct {
  Sw LatLng
  Ne LatLng
}

type Place struct {
  PlaceId Id

  Location LatLng
  Viewport ?LatLngBounds

  FormattedAddress string
  Name string
  PhotoUrl string
  IconUrl string
  Rating ?Float32
  PriceLevel ?Byte
}

type Event struct {
}

type MultiplexedEvent struct {
  Source Id
}

type DestinationPlaceChangeEvent struct {
  Source Id
  Place ?Place
  Previous ?Place
}

type DestinationSearchEvent struct {
  Source Id
  Places []Place
}

type DestinationSubmitEvent struct {
  Source Id
  Value string
}

type DestinationAddEvent struct {
  Id Id
}
