import { default as React } from 'react';
import { AddressType, AllowedValueWithCode, CompanyDetails, Country, File, ID, KybProvidedDocumentType } from '@zeniai/client-epic-state';
import { CreatableSingleSelectFieldValue } from '../../../creatableSingleSelect/CreatableSingleSelectField';
import { AddressValueFieldType } from '../../../formElements/addressValueField/AddressValueField';
import { FormSectionProps } from '../../../formElements/common/formSection';
import { CountryMultiSelectFieldValue } from '../../../formElements/countryMultiSelectField/CountryMultiSelectField';
import { MultiSelectFieldValue } from '../../../formElements/multiSelectField/MultiSelectField';
import { Name } from '../../../formElements/nameField/NameField';
import { SingleSelectFieldValue } from '../../../singleSelect/SingleSelectField';
import { VerificationProductType } from '../commonTypes';
import { FileProps } from './companyDetailsTypes';
/**
 * Component & its Props
 */
export interface CompanyDetailsSectionProps extends FormSectionProps {
    allIndustries: AllowedValueWithCode[];
    fileProps: FileProps;
    productType: VerificationProductType;
    allNationalityCountries?: Country[];
    /**
     * Field names from companyDetails localData populated by Zeni AI doc autofill
     * (Certificate of Incorporation / EIN letter). When a key appears here, this
     * section pushes the matching value from `companyDetails` into the form via
     * `setValue`. Pass `companyDetailsLocalData.autoFilledFields ?? []` from the
     * screen. Optional — when omitted, autofill is a no-op (back-compat).
     */
    autoFilledFields?: string[];
    businessVerificationProps?: {
        isRefreshingViewInBackground: boolean;
        companyVerificationStatus?: AllowedValueWithCode;
    };
    companyDetails?: CompanyDetails;
    connectedAccountProvider?: string;
    elementsContainerStyle?: React.CSSProperties;
    hideNewOnboardingFields?: boolean;
    /** V3 onboarding hides the "Optional" pill next to the header. */
    hideOptionalLabel?: boolean;
    /** V3 onboarding suppresses the section sub-header line. */
    hideSubHeader?: boolean;
    isCompleted?: boolean;
    optionalFields?: FormDataKeys[];
    /**
     * File IDs currently being parsed by the AI autofill epic. Drives the
     * shimmer overlay on `LabeledDocumentField`. Pass
     * `setupViewState.parsingDocumentFileIds` from the screen.
     */
    parsingDocumentFileIds?: ID[];
    sectionHeader?: string;
    sectionSubHeader?: string;
    showCompletedIcon?: boolean;
    showInfoTooltip?: boolean;
    showTreasuryFields?: boolean;
    style?: React.CSSProperties;
    onCompanyAddressClick?: (addressType: AddressType) => void;
    /**
     * Fired when a new company document (Certificate of Incorporation / EIN
     * letter) is uploaded. Connect to `parseUploadedKybDocument` action to
     * trigger Zeni AI extraction + autofill.
     */
    onCompanyDocumentUploadedForAutofill?: (params: {
        documentType: KybProvidedDocumentType;
        fileId: ID;
    }) => void;
    onRegisteredAddressClick?: (addressType: AddressType) => void;
}
export declare const CompanyDetailsSection: React.ForwardRefExoticComponent<CompanyDetailsSectionProps & React.RefAttributes<HTMLDivElement>>;
/**
 * Form Data Type
 */
export interface CompanyDetailsSectionFormData {
    companyDescription: string;
    companyId: ID;
    companyIndustry: SingleSelectFieldValue;
    companyLegalName: string;
    companyPhone: string;
    companyTaxId: string;
    companyWebsite: string;
    fileIds: ID[];
    primaryContactEmail: string;
    primaryContactName: Name;
    certificateOfIncorporation?: File;
    companyAddress?: AddressValueFieldType;
    companyIndustryType?: SingleSelectFieldValue;
    companySourceOfFunds?: SingleSelectFieldValue;
    companySourceOfFundsDescription?: string;
    companySubIndustry?: SingleSelectFieldValue;
    countriesOfOperations?: CountryMultiSelectFieldValue;
    ein?: File;
    incDate?: Date;
    primaryContactSyncToken?: ID;
    primaryContactUserId?: ID;
    purposeOfAccount?: SingleSelectFieldValue;
    purposeOfAccountDescription?: string;
    registeredAddress?: AddressValueFieldType;
    regulatedStatus?: string;
    regulatedStatusDescription?: string;
    sourceOfFunds?: SingleSelectFieldValue;
    stateOfIncorporation?: CreatableSingleSelectFieldValue;
    syncToken?: string;
    transactionVolume?: SingleSelectFieldValue;
    transactionVolumeDescription?: string;
    typeOfIncorporation?: CreatableSingleSelectFieldValue;
    usNexus?: string;
    usNexusTypes?: MultiSelectFieldValue;
}
type FormDataKeys = keyof CompanyDetailsSectionFormData;
declare const uniqueName: (sectionId: string, key: FormDataKeys) => `${string}.fileIds` | `${string}.syncToken` | `${string}.ein` | `${string}.companyId` | `${string}.companyLegalName` | `${string}.companyDescription` | `${string}.companyIndustry` | `${string}.companyPhone` | `${string}.companyTaxId` | `${string}.companyWebsite` | `${string}.primaryContactEmail` | `${string}.primaryContactName` | `${string}.certificateOfIncorporation` | `${string}.companyAddress` | `${string}.companyIndustryType` | `${string}.companySourceOfFunds` | `${string}.companySourceOfFundsDescription` | `${string}.companySubIndustry` | `${string}.countriesOfOperations` | `${string}.incDate` | `${string}.primaryContactSyncToken` | `${string}.primaryContactUserId` | `${string}.purposeOfAccount` | `${string}.purposeOfAccountDescription` | `${string}.registeredAddress` | `${string}.regulatedStatus` | `${string}.regulatedStatusDescription` | `${string}.sourceOfFunds` | `${string}.stateOfIncorporation` | `${string}.transactionVolume` | `${string}.transactionVolumeDescription` | `${string}.typeOfIncorporation` | `${string}.usNexus` | `${string}.usNexusTypes`;
export type FormDataKeyUniqueNames = ReturnType<typeof uniqueName>;
export {};
