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>; /** * 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; export {};