/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
/// <reference types="googlemaps" />
import { AddressValidationId, IAddressGroupComponent, IAnswer, IAnswerUpdatedEvent } from '@boldpenguin/sdk-types';
import { EventEmitter } from '../../stencil-public-runtime';
interface AddressMap {
    [key: string]: {
        short: string;
        long: string;
    };
}
export declare class BpSdkAddressGroup implements IAddressGroupComponent {
    /**
     * group of answers
     */
    answers: IAnswer[];
    /**
     * label
     */
    label: string;
    /**
     *  Labels that describe group
     */
    labelledBy: string;
    /**
     * Disable automatically saving answers when typing.
     * This should only be used in specific advanced scenarios
     */
    disableAutoSave: boolean;
    /**
     * Render validation component
     */
    useAddressValidation: boolean;
    /**
     * Answer pool ID if multiple address pool or group ID from the question set
     */
    addressValidationId: AddressValidationId;
    answerMap: {
        [key: string]: IAnswer;
    };
    useExternal: boolean;
    /**
     * Passes information needed to update answer
     */
    saveAnswer: EventEmitter<IAnswerUpdatedEvent>;
    /**
     * Passes missing address_components
     */
    addressMissingComponents: EventEmitter<{
        missing_components: string[];
    }>;
    /**
     * Passes unsaved answer when `disableAutoSave` is true
     */
    stageAddressValidationAnswerForUpdate: EventEmitter<IAnswerUpdatedEvent>;
    onAnswersChange(newAnswers: IAnswer[]): void;
    resetState(): void;
    connectedCallback(): void;
    componentWillLoad(): void;
    emitSaveAnswer(answer: IAnswer, newValue: string | string[]): void;
    onSaveAnswer(event: CustomEvent<IAnswerUpdatedEvent>): void;
    onPlacesUpdate({ detail }: CustomEvent<google.maps.places.PlaceResult>): void;
    updateInputs: (address: AddressMap) => () => void;
    updateStreet(address: AddressMap): void;
    updateCity(address: AddressMap): void;
    updateState(address: AddressMap): void;
    updateZip(address: AddressMap): void;
    updateJson(place: google.maps.places.PlaceResult): void;
    /**
     * Emits addressMissingComponents event if any required
     * address components are missing
     *
     * @param addressComponents The array of address components from Google
     */
    handleMissingAddressComponents: (addressComponents: google.maps.GeocoderAddressComponent[]) => void;
    /**
     * Finds the address components that are missing in the Google data
     *
     * @param addressComponents The array of address components from Google
     * @returns Returns an array of missing address component types
     */
    getMissingAddressComponents: (addressComponents: google.maps.GeocoderAddressComponent[]) => string[];
    render(): any[];
    renderExternal(): any;
    renderInternal(): any;
}
export {};
