import { LabelValueCodesPayload } from '../../commonPayloadTypes/commonPayload'; import { AllowedValueWithCode } from '../../commonStateTypes/allowedValue'; import { Amount } from '../../commonStateTypes/amount'; import { ID } from '../../commonStateTypes/common'; import { Month } from '../../commonStateTypes/timePeriod'; import { AccountTypeSubConfigCodeKeyType } from '../../view/spendManagement/billPay/billPayConfig/billPayConfigState'; import { MileageDenomination } from '../../view/spendManagement/reimbursement/remiSetupView/remiSetupViewState'; import { ZeniDate } from '../../zeniDayJS'; import ZeniUrl from '../../zeniUrl'; import { CustomerSatisfactionInfo } from '../customerSatisfaction/customerSatisfactionSelectorReducerTypes'; import { UserRoleType } from '../userRole/userRoleType'; export interface OnboardingStepErrorDetails { details: string; summary: string; } export declare const toOnboardingIdentityVerificationStatus: (v: string) => "Error" | "Not Initiated" | "Complete" | "Incomplete" | "Pending Review"; export type OnboardingIdentityVerficationStatus = NonNullable>; export declare const ALL_ACCOUNTING_CONNECTION_CREATION_MODES: readonly ["zeni_user", "customer"]; declare const toAccountingConnectionCreationMode: (v: string) => "customer" | "zeni_user"; export declare const toAccountingConnectionCreationModeStrict: (v: string | null) => "customer" | "zeni_user" | undefined; export type AccountingConnectionCreationMode = NonNullable>; export interface CompanyInfo { companyId: ID; createTime: ZeniDate; firstMonthOfFY: Month; isZeniCOAInUse: boolean; name: string; primaryEmailDomain: string; updateTime: ZeniDate; bookCloseDate?: ZeniDate; companyDescription?: string; companyLegalName?: string; companySourceOfFunds?: string; companySourceOfFundsDescription?: string; companyUrl?: ZeniUrl; countriesOfOperations?: string[]; meetingUrl?: ZeniUrl; phone?: string; purposeOfAccount?: string; purposeOfAccountDescription?: string; regulatedStatus?: string; regulatedStatusDescription?: string; sourceOfFunds?: string; syncToken?: string; tenantId?: ID; transactionVolume?: string; transactionVolumeDescription?: string; usNexus?: string; usNexusTypes?: string[]; } export interface CompanyLocaleInfo { companyIncCountryCode: string; currencyCode: string; currencySymbol: string; isMultiCurrencyEnabled: boolean; languageCode: string; isQBOMultiCurrencyEnabled?: boolean; } export interface CompanyIncInfo { fileIds: ID[]; companyIncCountry?: string; companyIncCountryCode?: string; companyIncDate?: ZeniDate; companyIncState?: string; companyIncStateCode?: string; companyIncType?: string; companyIndustryType?: string; companySubIndustry?: string; } export interface CompanyTaxInfo { taxesFiledYears: number[]; dunsId?: string; naicsCode?: string; sicCode?: string; taxesDueDate?: ZeniDate; taxesFiledDate?: ZeniDate; taxId?: string; } export interface CompanyQuestionaire { businessBanks: string[]; companyCreditCards: string[]; companyIndustry: string; companyMoneyRaised: { max: Amount; min: Amount; } | undefined; companyMonthlyExpenses: { max: Amount; min: Amount; } | undefined; companyPaymentProcessors: string[]; companySize: { max: number; min: number; } | undefined; servicesRequested: string[]; bookkeepingSoftwareUsed?: string; companyBusinessModel?: string; companyFinanceManagementFirmName?: string; companyFinanceManagementType?: string; payrollProvider?: string; referrerName?: string; referrerType?: string; } export interface CompanyManagementInfo { apAnalystUserIds: ID[]; companyOfficerUserIds: ID[]; controllerUserIds: ID[]; customerSuccessManagerUserIds: ID[]; preparerUserIds: ID[]; receiverEmails: string[]; reviewerUserIds: ID[]; taxLeadUserIds: ID[]; companyAddressId?: ID; companyContactUserId?: ID; companyGroupId?: string; customerSatisfaction?: CustomerSatisfactionInfo; lastReportSentBusinessDay?: number; lastReportSentDate?: ZeniDate; note?: string; noteLastUpdatedUserId?: ID; noteLastUpdateTime?: ZeniDate; primaryContactUserId?: ID; registeredAddressId?: ID; statusCode?: string; taxStatusCode?: string; users?: CompanyManagementUserRole[]; } export interface CompanyManagementUserRole { isSelected: boolean; isZeni: boolean; role: UserRoleType; userId: ID; } export interface SubsidiaryCompany { companyId: ID; name: string; } interface ParentCompanyInfo { subsidiaries: SubsidiaryCompany[]; } interface SubsidiaryCompanyInfo { parentCompanyId: ID; parentCompanyName: string; siblings: SubsidiaryCompany[]; } export interface ParentSubsidiaryInfo { parentInfo?: ParentCompanyInfo; subsidiaryInfo?: SubsidiaryCompanyInfo; } export interface Company { companyBillPayInfo: CompanyBillPayInfo; companyChargeCardInfo: CompanyChargeCardInfo; companyDebitCardInfo: CompanyDebitCardInfo; companyInfo: CompanyInfo; companyLocaleInfo: CompanyLocaleInfo; companyOnboardingInfo: CompanyOnboardingInfo; companyReimbursementInfo: CompanyReimbursementInfo; companyTreasuryInfo: CompanyTreasuryInfo; companyZeniAccountInfo: CompanyZeniAccountInfo; configInfo: CompanyConfigInfo; featuresActivationInfo: CompanyFeaturesActivationInfo; incInfo: CompanyIncInfo; managementInfo: CompanyManagementInfo; parentSubsidiaryInfo: ParentSubsidiaryInfo; questionaire: CompanyQuestionaire; taxInfo: CompanyTaxInfo; } export type BillPayNowCutOffByMethod = { ach: ZeniDate; }; export interface CompanyBillPayInfo { internationalWireOnboardingDetails: Record; isBillPayEnabled: boolean; isBillPayTOSAccepted: boolean; isInternationalWireEnabled: boolean; isInternationalWiresVerified: boolean; payNowCutOffTimeByMethod: BillPayNowCutOffByMethod; usersSelectedForVerification: ID[]; billPayTOSAcceptanceIp?: string; billPayTOSAcceptanceTime?: ZeniDate; billPayTOSAcceptanceUserAgent?: string; billPayTOSAcceptanceUserid?: ID; businessVerificationStatus?: AllowedValueWithCode; companyVerificationStatus?: AllowedValueWithCode; internationalWireOnboardingStatus?: AllowedValueWithCode; isBillPayApprovalEnabled?: boolean; isBusinessVerified?: boolean; primaryFundingAccount?: { accountId: ID; accountType: AccountTypeSubConfigCodeKeyType; }; } export interface UserReimbursementInfo { isReimbursementTOSAccepted: boolean; reimbursementTOSAcceptanceIp?: string; reimbursementTOSAcceptanceTime?: ZeniDate; reimbursementTOSAcceptanceUserAgent?: string; } export interface MasterTOSInfo { isMasterTOSAccepted: boolean; masterTOSAcceptanceIp?: string; masterTOSAcceptanceTime?: ZeniDate; masterTOSAcceptanceUserAgent?: string; } export interface CompanyReimbursementInfo extends UserReimbursementInfo { isReimbursementEnabled: boolean; primaryFundingAccount?: { accountId: ID; accountType: AccountTypeSubConfigCodeKeyType; }; reimbursementTOSAcceptanceUserid?: ID; } interface UserZeniAccountInfo { isZeniAccountTOSAccepted: boolean; zeniAccountTOSAcceptanceIp?: string; zeniAccountTOSAcceptanceTime?: ZeniDate; zeniAccountTOSAcceptanceUserAgent?: string; } export interface CompanyZeniAccountInfo extends UserZeniAccountInfo { isZeniAccountEnabled: boolean; primaryFundingAccount?: { accountId: ID; accountType: AccountTypeSubConfigCodeKeyType; }; zeniAccountTOSAcceptanceUserid?: ID; } interface UserTreasuryInfo { isTreasuryTOSAccepted: boolean; treasuryTOSAcceptanceIp?: string; treasuryTOSAcceptanceTime?: ZeniDate; treasuryTOSAcceptanceUserAgent?: string; } export interface CompanyTreasuryInfo extends UserTreasuryInfo { businessVerificationStatus?: AllowedValueWithCode; companyVerificationStatus?: AllowedValueWithCode; primaryFundingAccount?: { accountId: ID; accountType: AccountTypeSubConfigCodeKeyType; }; treasuryBusinessVerificationVerifiedTime?: ZeniDate; treasuryTOSAcceptanceUserid?: ID; } interface UserChargeCardInfo { isChargeCardTOSAccepted: boolean; chargeCardTOSAcceptanceIp?: string; chargeCardTOSAcceptanceTime?: ZeniDate; chargeCardTOSAcceptanceUserAgent?: string; } interface UserDebitCardInfo { isDebitCardTOSAccepted: boolean; debitCardTOSAcceptanceIp?: string; debitCardTOSAcceptanceTime?: ZeniDate; debitCardTOSAcceptanceUserAgent?: string; } export interface CompanyChargeCardInfo extends UserChargeCardInfo { chargeCardsCreditAccountLimit: number; isChargeCardEnabled: boolean; isCompanyInterestedInChargeCard: boolean; chargeCardTOSAcceptanceUserid?: ID; isAutoPayEnabled?: boolean; primaryFundingAccount?: { accountId: ID; accountType: AccountTypeSubConfigCodeKeyType; }; } export interface CompanyDebitCardInfo extends UserDebitCardInfo { isDebitCardEnabled: boolean; debitCardTOSAcceptanceUserid?: ID; } export interface CompanyFeaturesActivationInfo { connectedAccountProvider: string; isBillPayFeatureEnabled: boolean; isFeatureVendorListingEnabled: boolean; isReimbursementFeatureEnabled: boolean; isSameDayAchFeatureEnabled: boolean; isBookkeepingEnabled?: boolean; isCfoEnabled?: boolean; isPayrollEnabled?: boolean; isTaxEnabled?: boolean; } export interface CompanyOnboardingAiActivationInfo { isOnboardingAiActivationViewed: boolean; isOnboardingAiFinanceTeamAcknowledged: boolean; onboardingAiActivationViewedBy: ID[]; onboardingAiFinanceTeamAcknowledgedBy: ID[]; } export interface CompanyMileageConfigInfo { defaultMileageUnitAmount: number; denominationConversions: { denomination: MileageDenomination; denominationSymbol: string; amount?: number; }; description: string; mileageCurrencyCode: string; mileageCurrencySymbol: string; mileageUnit: string; mileageUnitAmount?: number; } export interface CompanyConfigInfo { isMonthEndReportInDraft: boolean; isNewCompanyIndustryVerified: boolean; isUnitMigrationRequired: boolean; isUnitMigrationTOSRequired: boolean; mileageRateConfig: CompanyMileageConfigInfo; } export interface OnboardingStepInfo { completed: boolean; error: boolean; userIds: ID[]; errorDetails?: OnboardingStepErrorDetails; pendingVerification?: boolean; } export interface IdentityVerificationStatus { status: OnboardingIdentityVerficationStatus; userIds: ID[]; } export interface OnboardingStepsInfo { bankAccountLinked: OnboardingStepInfo; customerCreated: OnboardingStepInfo; groupCreated: OnboardingStepInfo; qboLinked: OnboardingStepInfo; } export interface OnboardingInfo extends OnboardingStepsInfo { businessVerified: IdentityVerificationStatus; identityVerified: IdentityVerificationStatus; isInterimEmailSent: boolean; onboardingAiActivationInfo: CompanyOnboardingAiActivationInfo; onboardingCustomerUserIds: ID[]; uncategorizedExpenseAccountIdentified: boolean; uncategorizedIncomeAccountIdentified: boolean; accountingConnectionCreationMode?: AccountingConnectionCreationMode; inviteAccepted?: boolean; inviteSent?: boolean; onboardingTimeSinceQuoteSigned?: string; onboardingToQuoteSignMinutes?: number; } export interface CompanyOnboardingInfo { isOnboardingCompanyDetailsCompleted: boolean; isOnboardingCompleted: boolean; isSubsidiary: boolean; onboardingUserIds: ID[]; onboardingInfo?: OnboardingInfo; parentCompanyId?: ID; subscriptionBillingAddressId?: ID; } export declare const TREASURY_ELIGIBLE_INC_TYPES: readonly ["C Corporation", "S Corporation", "Limited Liability Company"]; export declare const toTreasuryEligibleIncType: (v: string) => "C Corporation" | "S Corporation" | "Limited Liability Company"; export type TreasuryEligibleIncType = NonNullable>; export declare const isCompanyEligibleForTreasury: (company: Company) => boolean; export {};