import { AllowedValueWithCode } from '../../../commonStateTypes/allowedValue'; import { Amount } from '../../../commonStateTypes/amount'; import { BalanceChange } from '../../../commonStateTypes/balance'; import { FetchStateAndError, ID } from '../../../commonStateTypes/common'; import { AllowedDocumentType, File } from '../../../entity/file/fileState'; import { InstitutionDetails, Logo } from '../../../entity/paymentAccount/paymentAccountState'; import { ZeniDate } from '../../../zeniDayJS'; import ZeniUrl from '../../../zeniUrl'; import { NewAddressData } from '../../addressView/addressViewState'; import { CompanyOfficerType } from '../../companyView/types/companyPassport/companyUsersLocalData'; import { AccountTypeSubConfigCodeKeyType } from '../billPay/billPayConfig/billPayConfigState'; export interface FundingAccount { accType: AccountTypeSubConfigCodeKeyType; balanceFetchStatus: FetchStateAndError; id: ID; label: string; maskedAccountNumber: string; accountBalance?: { available?: Amount; change?: BalanceChange; current?: Amount; lastRefreshTime?: ZeniDate; }; accountLast4?: string; accountSubType?: AllowedValueWithCode; createTime?: ZeniDate; institutionDetails?: InstitutionDetails; isLoginRequired?: boolean; isVerified?: boolean; logo?: Logo; providerAccountId?: ID; providerVerificationStatus?: AllowedValueWithCode; verificationStatus?: AllowedValueWithCode; zeniAccountId?: ID; } declare const toSetupViewType: (v: string) => "bill_pay" | "reimbursement" | "zeni_accounts" | "zeni_treasury" | "charge_cards" | "other_connection" | "billing" | "debit_cards" | "charge_cards__debit_cards"; export type SetupViewType = ReturnType; export declare const toChargeCardSetupViewType: (v: string) => "charge_cards" | "debit_cards" | "charge_cards__debit_cards"; export type ChargeCardSetupViewType = ReturnType; /** * Setup View Local Data - Interfaces */ export interface CompanyDetailsLocalData { companyId: ID; fileIds: ID[]; companyDescription?: string; companyIndustry?: string; companyIndustryType?: string; companyLegalName?: string; companySourceOfFunds?: string; companySourceOfFundsDescription?: string; companySubIndustry?: string; countriesOfOperations?: string[]; incDate?: ZeniDate; phone?: string; purposeOfAccount?: string; purposeOfAccountDescription?: string; regulatedStatus?: string; regulatedStatusDescription?: string; sourceOfFunds?: string; stateOfIncorporation?: string; syncToken?: string; taxIdOrEIN?: string; transactionVolume?: string; transactionVolumeDescription?: string; typeOfIncorporation?: string; usNexus?: string; usNexusTypes?: string[]; website?: ZeniUrl; } export interface PrimaryContactLocalData { email: string; firstName: string; lastName: string; userId: ID | undefined; syncToken?: string; } export interface CompanyOfficerLocalData { additionalDocumentTypesRequestedForVerification: AllowedDocumentType[]; additionalSubmittedDocumentsForVerificationFileIds: ID[]; areAdditionalDocumentsRequestedForVerification: boolean; areAdditionalDocumentsSubmittedForVerification: boolean; email: string; fileIds: ID[]; firstName: string; isSelectedForVerification: boolean; lastName: string; officerType: CompanyOfficerType; userId: ID | undefined; birthday?: ZeniDate; documentTypeSelectedForVerification?: AllowedDocumentType; isPhoneVerified?: boolean; nationalityCountryCode?: string; otpChallenge?: string; ownershipInCompany?: number; phone?: string; ssn?: string; syncToken?: string; titleAtCompany?: string; treasuryUserVerificationStatus?: AllowedValueWithCode; userVerificationStatus?: AllowedValueWithCode; } export interface SetupViewLocalData { companyDetails: CompanyDetailsLocalData; officers: CompanyOfficerLocalData[]; primaryContactDetails?: PrimaryContactLocalData; } export interface CompanyOfficersDetails extends CompanyOfficerLocalData { additionalFiles: File[]; /** Field names in this officer's localData populated by AI doc autofill. */ autoFilledFields: string[]; deleteFileStatusById: Record; otpverificationStatus: FetchStateAndError; sendOtpStatus: FetchStateAndError; updateFileStatusById: Record; userFiles: File[]; addressStatus?: NewAddressData; } export interface CompanyDetails { /** Field names in companyDetails localData populated by AI doc autofill. */ autoFilledFields: string[]; companyFiles: File[]; companyId: ID; deleteFileStatusById: Record; updateFileStatusById: Record; addressStatus?: NewAddressData; companyDescription?: string; companyIndustry?: string; companyIndustryType?: string; companyLegalName?: string; companySourceOfFunds?: string; companySourceOfFundsDescription?: string; companySubIndustry?: string; countriesOfOperations?: string[]; incDate?: ZeniDate; phone?: string; primaryContactLocalData?: PrimaryContactLocalData; purposeOfAccount?: string; purposeOfAccountDescription?: string; registeredAddressStatus?: NewAddressData; regulatedStatus?: string; regulatedStatusDescription?: string; sourceOfFunds?: string; stateOfIncorporation?: string; syncToken?: string; taxIdOrEIN?: string; transactionVolume?: string; transactionVolumeDescription?: string; typeOfIncorporation?: string; usNexus?: string; usNexusTypes?: string[]; website?: ZeniUrl; } export interface CompanyAndOfficerLocalData { companyOfficerLocalData: Record; parsingDocumentFileIds: ID[]; companyDetailsLocalData?: CompanyDetails; } /** * Setup View State */ export interface CompanyAndIdentityDetails { companyDetails: { /** * Field names from {@link CompanyDetailsLocalData} that were populated by AI * autofill from an uploaded KYB document. Drives the ✦ sparkle in the form. * Always present (empty when no autofill has run yet). */ autoFilledFields: string[]; localData?: CompanyDetailsLocalData; }; companyOfficerUpdateStatus: Record; primaryContactDetails: { localData?: PrimaryContactLocalData; }; } export interface SetupViewState extends CompanyAndIdentityDetails { /** * File IDs currently being parsed by the AI autofill epic. Populated when * `parseUploadedKyc/KybDocument` dispatches and cleared when the * corresponding apply / failure action fires. Drives the "AI is reading * your document" overlay on the document upload field. */ parsingDocumentFileIds: ID[]; updateStatus: FetchStateAndError; } export {};