import type { CompanyDatasetResponse } from '../../../../api/companyDataSet/companyDataset.types';
import type { BaseInnerFormProps } from '../../../../hooks/useForm/types';
import type { NsTranslationKey } from '../../../../../types';
import type { CountryCode } from '../../../../types/datasets/country-code';
import type { RecordWithDefault } from '../../../../utils/recordWithDefault';
import type { ValidationRuleResult, ValidatorMode } from '../../../../utils/validation/types';
export type AddressType = 'registrationAddress' | 'operationalAddress' | 'residentialAddress';
export interface AddressSchema {
    address?: string;
    otherAddressInformation?: string;
    postalCode?: string;
    city?: string;
    stateOrProvince?: string;
    country?: CountryCode;
    searchAddress?: string;
}
export interface AddressProps extends BaseInnerFormProps<AddressSchema> {
    countryCode?: CountryCode;
    hideCountry?: boolean;
    onCountryChange?(country: CountryCode): void;
    addressType: AddressType;
    verifiedBusiness?: CompanyDatasetResponse | undefined;
    verifiedAddress?: AddressSchema;
    condensed?: boolean;
}
export interface AddressFieldProps {
    schema?: Array<keyof AddressSchema>;
    data: AddressSchema;
    fieldName: keyof AddressSchema;
    valid?: Record<keyof AddressSchema, boolean>;
    errors?: Record<keyof AddressSchema, ValidationRuleResult | null>;
    fieldProblems?: Record<keyof AddressSchema, boolean>;
    readOnly?: boolean;
    optional?: boolean;
    maxlength?: number;
    hideField?: boolean;
    trimOnBlur?: boolean;
    handleChangeFor: (key: keyof AddressSchema, mode?: ValidatorMode) => (e: any) => void;
    handleBlur?: (e: FocusEvent) => void;
}
export type AddressSchemas = RecordWithDefault<CountryCode, Array<keyof AddressSchema>>;
export type AddressLabels = {
    [label: string]: RecordWithDefault<CountryCode, NsTranslationKey<'common'>>;
};
export type AddressSchemaLabels = {
    [field in keyof AddressSchema]?: NsTranslationKey<'common'>;
};
