import { type AddressedLocationValue, type LocationCoordinates } from '../../../../../core/src/index';
export declare const LOCATION_MAP_DEFAULTS: {
    readonly zoom: 15;
    readonly heightPx: 320;
    readonly showAddressText: true;
    readonly showDirections: true;
    readonly directionsLabel: "Get directions";
};
export declare const LOCATION_MAP_LIMITS: {
    readonly zoom: {
        readonly min: 3;
        readonly max: 18;
    };
    readonly heightPx: {
        readonly min: 200;
        readonly max: 600;
    };
};
export type LocationMapValueInput = Readonly<{
    addressText?: string | null;
    displayAddress?: string | null;
    lat?: number | string | null;
    lng?: number | string | null;
}>;
export type LocationMapSource = 'business_address' | 'venue' | 'custom';
export type LocationMapUnresolvedReason = 'missing_custom_location' | 'missing_business_address' | 'missing_venue_id' | 'missing_venue_location';
export type LocationMapLocationsByVenueId = Readonly<Record<string, unknown>>;
export type ResolvedLocationMapLocation = Readonly<{
    kind: 'custom';
    locationValue: NormalizedLocationMapValue;
}> | Readonly<{
    kind: 'business_address';
    locationValue: NormalizedLocationMapValue;
}> | Readonly<{
    kind: 'venue';
    venueId: string;
    locationValue: NormalizedLocationMapValue;
}> | Readonly<{
    kind: 'unresolved';
    source: LocationMapSource;
    reason: LocationMapUnresolvedReason;
}>;
export type NormalizedLocationMapValue = AddressedLocationValue;
export type LocationMapHydrationProps = Readonly<{
    location?: NormalizedLocationMapValue | null;
    zoom?: number | null;
    heightPx?: number | null;
    showAddressText?: boolean;
    showDirections?: boolean;
    directionsLabel?: string | null;
    className?: string | null;
}>;
export type NormalizedLocationMapProps = Readonly<{
    resolvedLocation: ResolvedLocationMapLocation;
    locationValue: NormalizedLocationMapValue | null;
    unresolvedMessage: string | null;
    addressText: string | null;
    location: LocationCoordinates | null;
    zoom: number;
    heightPx: number;
    showAddressText: boolean;
    showDirections: boolean;
    directionsLabel: string;
    className: string | null;
}>;
export declare function normalizeLocationMapValue(value: unknown): NormalizedLocationMapValue | null;
export declare function normalizeLocationMapSource(value: LocationMapSource | string | null | undefined): LocationMapSource;
export declare function resolveLocationMapLocation(input: {
    location?: unknown;
    businessAddress?: unknown;
    locationSource?: LocationMapSource | string | null;
    venueId?: string | null;
    venuesById?: LocationMapLocationsByVenueId | null;
}): ResolvedLocationMapLocation;
export declare function describeUnresolvedLocationMapLocation(resolvedLocation: ResolvedLocationMapLocation): string | null;
export declare function normalizeLocationMapProps(input: {
    location?: unknown;
    businessAddress?: unknown;
    locationSource?: LocationMapSource | string | null;
    venueId?: string | null;
    venuesById?: LocationMapLocationsByVenueId | null;
    zoom?: number | string | null;
    heightPx?: number | string | null;
    showAddressText?: boolean | string | null;
    showDirections?: boolean | string | null;
    directionsLabel?: string | null;
    className?: string | null;
}): NormalizedLocationMapProps;
export declare function toLocationMapHydrationProps(input: {
    location?: unknown;
    businessAddress?: unknown;
    locationSource?: LocationMapSource | string | null;
    venueId?: string | null;
    venuesById?: Record<string, unknown> | null;
    zoom?: number | string | null;
    heightPx?: number | string | null;
    showAddressText?: boolean | string | null;
    showDirections?: boolean | string | null;
    directionsLabel?: string | null;
    className?: string | null;
}): LocationMapHydrationProps;
export declare function buildGoogleMapsDirectionsUrl(input: {
    addressText?: string | null;
    location?: LocationCoordinates | null;
}): string | null;
