import type { BaseInnerFormProps } from '../../core/hooks/useForm/types';
import type { CompanyDatasetResponse } from '../../core/models/api/company-search';
import type { CountryCode } from '../../core/models/country-code';
import type { TranslationKey } from '../../language/types';
import type { RecordWithDefault } from '../../utils/recordWithDefault';
import type { ValidationRuleResult, ValidatorMode } from '../../utils/validation/types';
import type { DropinAPIHandlers } from '../Dropins/types';
export type AddressType = 'registrationAddress' | 'operationalAddress';
export interface AddressSchema {
    address?: string;
    otherAddressInformation?: string;
    postalCode?: string;
    city?: string;
    stateOrProvince?: string;
    country?: CountryCode;
    searchAddress?: string;
    poBox?: boolean;
}
export interface AddressProps extends BaseInnerFormProps<AddressSchema> {
    countryCode?: CountryCode;
    hideCountry?: boolean;
    onCountryChange?(country: CountryCode): void;
    addressType?: AddressType;
    handleAddressSearch: DropinAPIHandlers['handleAddressSearch'];
    handleFindAddress: DropinAPIHandlers['handleFindAddress'];
    legalEntityId?: string;
    verifiedBusiness?: CompanyDatasetResponse | undefined;
    verifiedAddress?: AddressSchema;
    condensed?: boolean;
}
export interface FieldContainerProps {
    legalEntityId?: string;
    classNameModifiers?: string[];
    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;
    handleAddressSearch?: DropinAPIHandlers['handleAddressSearch'];
    handleFindAddress?: DropinAPIHandlers['handleFindAddress'];
}
export interface ReadOnlyAddressProps {
    data: AddressSchema;
    label: TranslationKey;
}
export type AddressSchemas = RecordWithDefault<CountryCode, Array<keyof AddressSchema>>;
export type AddressLabels = {
    [label: string]: RecordWithDefault<CountryCode, TranslationKey>;
};
export type AddressSchemaLabels = {
    [field in keyof AddressSchema]?: TranslationKey;
};
export interface SearchAddressProps {
    handleAddressSearch: DropinAPIHandlers['handleAddressSearch'];
    handleFindAddress: DropinAPIHandlers['handleFindAddress'];
    handleChangeFor: (key: keyof AddressSchema, mode?: ValidatorMode) => (e: any) => void;
    data: AddressSchema;
    legalEntityId?: string;
    autocompleteAddressForm: (address: AddressSchema) => void;
    addressType?: AddressType;
    kompanyAddress?: string;
    kompanyPrefilled?: boolean;
}
