import { SetupIntentResult } from '@stripe/stripe-js'; import { ClientAnalytics } from '@zeniai/client-analytics'; import { AddCardPaymentSourceType, AddressType, AllowedDocumentType, AllowedValueWithCode, CardPaymentSelectorView, CompanyOfficerType, FilePayload, ID, KybProvidedDocumentType, OnboardingCustomerView, OnboardingStep, OnboardingSubStep, PlaidLinkTokenType } from '@zeniai/client-epic-state'; import { AddressFormData } from '../../address/addressHelper'; import { CompanyDetailsSectionFormData } from '../../commonSetUp/sections/companyDetailsSection/CompanyDetailsSection'; import { FileProps } from '../../commonSetUp/sections/companyDetailsSection/companyDetailsTypes'; import { CompanyOfficerDetailsSectionFormData } from '../../commonSetUp/sections/companyOfficerDetailsSection/CompanyOfficerDetailsSection'; import { SetUpAccountSectionFormData } from '../../commonSetUp/sections/setUpAccountSection/SetUpAccountSection'; import { IntegrationsSectionProps } from '../../settingsPage/Integrations/IntegrationsSection'; import { OnboardingQBOConnectionFormData } from './sections/QBOSetupSectionWithForm'; declare const companyDetailsSectionId = "companyDetails"; declare const companyOfficerDetailsSectionId = "companyOfficer"; declare const paymentAccountSetupSectionId = "onboardingPaymentAccountSetupSection"; declare const subscriptionBillingAddressSectionId = "onboardingSubscriptionBillingAddress"; declare const qboConnectionSectionId = "onboardingQboConnection"; export interface FormData { [companyDetailsSectionId]: CompanyDetailsSectionFormData; [companyOfficerDetailsSectionId]: CompanyOfficerDetailsSectionFormData[]; [paymentAccountSetupSectionId]: SetUpAccountSectionFormData; [qboConnectionSectionId]: OnboardingQBOConnectionFormData; [subscriptionBillingAddressSectionId]: AddressFormData; } export declare const uniqueName: (sectionId: ID) => `${string}_form`; export type StepDirection = "previous" | "next"; export interface OnboardingDetailPageHandle { triggerNext: () => void; triggerPrevious: () => void; } export interface Props { analytics: ClientAnalytics; cardPaymentView: CardPaymentSelectorView; companyTitles: AllowedValueWithCode[]; connectedAccountProvider: string; fileProps: FileProps; isAdmin: boolean; isCardPaymentPopupOpen: boolean; isRefreshingViewInBackground: boolean; onboardingCustomerView: OnboardingCustomerView; stripeKey: ID; googleAPIKey?: ID; /** * Optional prop bag for the Connect-Data-Sources step's ``. * The detail page reads only `notifyMeRegisteredSlugs` + `onNotifyMe` from it, * to drive the NetSuite Notify-Me button on the Connect-Ledger step. Required * when either of those signals needs to be live (otherwise the Notify-Me CTA * is rendered enabled but unwired). */ integrationsSectionProps?: IntegrationsSectionProps; /** * True only for pure Tax/CFO/Payroll (product-suite) tenants. Gates the * verification→setup_billing redirect so bookkeeping / mixed tenants are * never routed to the interim product-suite page (which latches * is_interim_email_sent and traps them on /thankyou). * * Absent/undefined intentionally means "treat as non-product-suite": the * redirect stays suppressed, which is the safe default for callers that * don't wire tenant product data. */ isProductSuiteTenant?: boolean; handleAddCardPaymentSource: (paymentType: AddCardPaymentSourceType, paymentMethod: string, paymentId: string) => void; handleConfirmCardSetupIntent: (setupIntentData: SetupIntentResult) => void; handleCreateCardSetupIntent: (paymentsMethod: string[]) => void; handleFetchPaymentSources: () => void; handleOnConnectClick: () => void; handleResetCardPaymentErrorStatuses: () => void; onAddressClick: (addressType: AddressType, addressId?: ID) => void; onAddressEditHandler: (formData: AddressFormData) => void; onCompanyDetailsChanged: (formData: CompanyDetailsSectionFormData) => void; onCompanyOfficerUpdated: (formData: CompanyOfficerDetailsSectionFormData[]) => void; onDeleteFile: (fileId: ID) => void; onEditFileName: (fileId: ID, name: string) => void; onEstablishConnectionClick: (publicToken: ID, linkTokenType?: PlaidLinkTokenType) => void; onEstablishConnectionSuccess: () => void; onFetchLinkTokenClick: (plaidLinkTokenType: PlaidLinkTokenType, paymentAccountId?: ID) => void; onGetOtp: (phoneNumber: string) => void; onResendOtp: (otpChallenge: string) => void; onSkipSetupClick: () => void; onUpdateCustomerView: (officerType: CompanyOfficerType, reCalculateCurrentStep?: boolean, isBillingAddressUpdate?: boolean) => void; onUpdatePaymentAccountLoginStatus: (paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void; onUpdatePaymentAccountStatus: (verificationStatusCode: string, paymentAccountId: ID, plaidLinkTokenType: PlaidLinkTokenType) => void; onUpdateStep: (updatedStep: OnboardingStep) => void; /** * Flips the verification sub-step (officer ↔ details). Called from a form- * level validation error that needs to bounce focus to a sibling form within * the same `verification` step. */ onUpdateSubStep: (subStep: OnboardingSubStep) => void; onVerifyOtp: (code: string, otpChallenge: string) => void; redirectToProductSuitePage: () => void; resetCardPaymentViewState: () => void; updateCardPaymentModalState: (isCardPaymentPopupOpen: boolean) => void; updateFilesEntity: (files: FilePayload[]) => void; updateQBOPopupState: (isQBOPopupOpen: boolean) => void; updateStepHandler: (currentStep: OnboardingStep, stepDirection: StepDirection, isTriggeredFromFooter?: boolean) => void; /** * Fired when the customer uploads a Certificate of Incorporation / EIN doc * during onboarding. The screen dispatches `parseUploadedKybDocument`. */ onCompanyDocumentUploadedForAutofill?: (params: { documentType: KybProvidedDocumentType; fileId: ID; }) => void; onFormErrorsChange?: (errorSteps: OnboardingStep[]) => void; /** * Fired when the customer uploads a passport / driving license / SSN card * for an officer during onboarding. Screen dispatches `parseUploadedKycDocument`. */ onIdentityDocumentUploadedForAutofill?: (params: { documentType: AllowedDocumentType; fileId: ID; officerType: CompanyOfficerType; }) => void; } export declare const CustomerOnboardingDetailPage: import('react').ForwardRefExoticComponent>; export {};