import React from 'react';
import { AddressModuleDataDTO, AddressDTO } from '@sentecacommerce/sdk';
import { ShippingValidationsType } from '../../../contexts/CheckoutForm/utils';
import { ShippingFormErrorLabels } from '../../../contexts/CheckoutForm';
import { DefaultFormErrors } from '../../error-handling';
export declare enum Couriers {
    'Speedy' = "Speedy",
    'Econt' = "Econt",
    'Evropat' = "Evropat"
}
export declare type AddressFormModule = {
    methods: {
        key?: string;
        select: () => void;
    }[];
};
declare type Modules = {
    [key in Couriers]: AddressFormModule;
};
declare type AddressFormContextValue = {
    formKey: string;
    modules: Modules;
    isLoading: boolean;
    addressState?: AddressDTO;
    setAddressState: React.Dispatch<AddressDTO>;
    onInputChange: (name: string, value: any) => void;
    moduleData?: AddressModuleDataDTO;
    setModuleAddressData: (key: string, value: any) => void;
    isSubmitting: boolean;
    isValid: boolean;
    errors: {
        [key: string]: string | undefined;
    };
};
export declare type AddressFormLabelsType = ShippingFormErrorLabels & DefaultFormErrors;
export declare const AddressFormContextProvider: ({ children, address: currentAddress, onSuccess, validations, errorLabels, requiredFields, }: {
    children: JSX.Element | JSX.Element[];
    address?: AddressDTO | undefined;
    onSuccess: () => void;
    validations?: ShippingValidationsType | undefined;
    errorLabels: AddressFormLabelsType;
    requiredFields?: string[] | undefined;
}) => JSX.Element;
export declare const useAddressForm: () => AddressFormContextValue;
export {};
