import { default as React } from 'react';
import { Address, AddressUpdatableInfo, FetchState, ID } from '@zeniai/client-epic-state';
import { DisableMode } from '../formElements/common/common';
import { FormSectionProps } from '../formElements/common/formSection';
import { AddressFieldValue, AddressFormData, AddressValue } from './addressHelper';
/**
 * Component & its Props
 */
export interface FooterButtons {
    buttonWidth?: number;
    cancelButtonLabel?: string;
    primaryButtonLabel?: string;
    separatorStyle?: React.CSSProperties;
}
export interface Props {
    googleAPIKey: ID;
    addressToEdit?: Address | AddressUpdatableInfo;
    addTitleMessage?: string;
    customNavStyles?: React.CSSProperties;
    customTitleStyles?: React.CSSProperties;
    dontShowSaveConfirmationPopup?: boolean;
    editTitleMessage?: string;
    footerButtons?: FooterButtons;
    hideAddressBackButton?: boolean;
    hideAddressSubTitle?: boolean;
    isDisabled?: DisableMode;
    isSubPage?: boolean;
    loadingState?: FetchState;
    navBarContainerStyles?: React.CSSProperties;
    navbarStyles?: React.CSSProperties;
    sectionStyles?: React.CSSProperties;
    showAddressCloseButton?: boolean;
    showNavbarWithClose?: boolean;
    subTitleMessage?: string;
    subTitleStyles?: React.CSSProperties;
    onCancel?: () => void;
    onSubmitHandler?: (formData: AddressFormData) => void;
}
export interface AddressSectionProps extends FormSectionProps {
    googleAPIKey: ID;
    addressToEdit?: Address | AddressUpdatableInfo;
    elementsStyle?: React.CSSProperties;
    isSubPage?: boolean;
    style?: React.CSSProperties;
    onFormFieldClick?: (e: React.MouseEvent<HTMLInputElement | HTMLDivElement, MouseEvent>) => void;
}
export declare function AddressSection({ googleAPIKey, isSubPage, addressToEdit, sectionId, isDisabled, style, elementsStyle, onFormFieldClick, }: AddressSectionProps): import("react/jsx-runtime").JSX.Element;
declare function AddressFormPage(props: Props): import("react/jsx-runtime").JSX.Element;
export default AddressFormPage;
/**
 * Form Data Type
 */
export interface FormData {
    addressSection: AddressFormData;
}
type FormDataKeys = keyof AddressFormData | keyof AddressFieldValue | keyof AddressValue;
declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.city` | `${string}.country` | `${string}.postalCode` | `${string}.state` | `${string}.street` | `${string}.countryCode` | `${string}.locationLat` | `${string}.locality` | `${string}.route` | `${string}.secondaryInfo` | `${string}.suite` | `${string}.addressString` | `${string}.addressValue` | `${string}.formattedAddress` | `${string}.administrativeAreaLevel1` | `${string}.administrativeAreaLevel2` | `${string}.locationLng` | `${string}.neighborhood` | `${string}.placeId` | `${string}.postalCodeSuffix` | `${string}.streetNumber`;
export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
/**
 * Helpers
 */
export declare const defaultAddressFormatter: (addressValue: AddressValue) => string;
export declare const getPlaceholderTextWithPrefix: (labelText: string) => string;
