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 `<IntegrationsSection>`.
     * 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;
    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<Props & import('react').RefAttributes<OnboardingDetailPageHandle>>;
export {};
