export type GooglePlaceAPIError = { error: { code: number; message: string; status: string; details?: GooglePlaceAPIErrorDetailsItem[]; }; }; export type GooglePlaceAPIErrorDetailsItem = { "@type": string; fieldViolations: GooglePlaceAPIErrorDetailsItemFieldViolation[]; }; export type GooglePlaceAPIErrorDetailsItemFieldViolation = { description: string; field: string; }; export type GooglePlaceNearbyAPIResponse = { places: GooglePlaceDetail[]; }; export type GooglePlaceTextSearchAPIResponse = { places: GooglePlaceDetail[]; contextualContents: ContextualContent[]; nextPageToken: string; searchUri: string; }; export type ContextualContent = { photos: PlacePhoto[]; justifications: {}[]; }; export type GooglePlaceDetail = { name: string; id: string; types: string[]; nationalPhoneNumber?: string; internationalPhoneNumber?: string; formattedAddress: string; shortFormattedAddress?: string; adrFormatAddress?: string; businessStatus: string; googleMapsUri: string; websiteUri?: string; rating: number; userRatingCount: number; iconMaskBaseUri: string; iconBackgroundColor: string; displayName: LocalizedText; primaryTypeDisplayName: LocalizedText; primaryType: string; editorialSummary?: LocalizedText; location: LatLng; viewport: Viewport; utcOffsetMinutes: number; addressComponents: AddressComponent[]; plusCode: PlusCode; accessibilityOptions: AccessibilityOptions; pureServiceAreaBusiness?: boolean; reviews: GoogleReview[]; photos: PlacePhoto[]; addressDescriptor: AddressDescriptor; googleMapsLinks: GoogleMapsLinks; timeZone: { id: string; }; postalAddress?: PostalAddress; regularOpeningHours?: OpeningHours; currentOpeningHours?: OpeningHours; restroom?: boolean; }; export type LatLng = { latitude: number; longitude: number; }; export type Viewport = { low: LatLng; high: LatLng; }; export type LocalizedText = { text: string; languageCode: string; }; export type PlusCode = { globalCode: string; compoundCode: string; }; export type AddressComponent = { longText: string; shortText: string; types: string[]; languageCode: string; }; export type AddressDescriptor = { landmarks: AddressDescriptorPlace[]; areas: AddressDescriptorPlace[]; }; export type AddressDescriptorPlace = { name: string; placeId: string; displayName: LocalizedText; types: string[]; straightLineDistanceMeters?: number; spatialRelationship?: string; containment?: string; }; export type AuthorAttribution = { displayName: string; uri: string; photoUri: string; }; export type GoogleReview = { name: string; relativePublishTimeDescription: string; rating: number; text: LocalizedText; originalText: LocalizedText; authorAttribution: AuthorAttribution; publishTime: string; flagContentUri: string; googleMapsUri: string; }; export type PlacePhoto = { name: string; widthPx: number; heightPx: number; authorAttributions: AuthorAttribution[]; flagContentUri: string; googleMapsUri: string; }; export type GoogleMapsLinks = { directionsUri: string; placeUri: string; writeAReviewUri: string; reviewsUri: string; photosUri: string; }; export type AccessibilityOptions = { wheelchairAccessibleEntrance: boolean; wheelchairAccessibleRestroom?: boolean; wheelchairAccessibleParking?: boolean; }; export type OpeningHours = { openNow: boolean; periods: OpeningPeriod[]; weekdayDescriptions: string[]; nextCloseTime?: string; }; export type OpeningPeriod = { open: OpeningTime; close: OpeningTime; }; export type OpeningTime = { day: number; hour: number; minute: number; date?: { year: number; month: number; day: number; }; }; export type PostalAddress = { regionCode: string; languageCode: string; administrativeArea: string; locality: string; addressLines: string[]; };