import { TransactionPage, TransactionStatus } from '@zeniai/client-analytics'; import { Entity, EntityAutoCompleteView, ID, Line, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, Project, Recommendation, RecommendationWithCOT, TransactionDetailLineItemData, TransactionDetailLocalData, TransactionLineRecommendationFieldTypes, VendorType } from '@zeniai/client-epic-state'; import { WindowSize } from '../../context/windowSizeProvider'; import { ChainOfThoughtData } from '../common/tooltipVariants/types'; import { AutoCompleteGroupedOption } from '../formElements/autoCompleteGroupedCreatableSingleSelectCustomGroupField/AutoCompleteGroupedCreatableSingleSelectCustomGroupField'; import { GroupedOption } from '../formElements/labeledGroupSingleSelectFieldWithRecommendationCheckbox/GroupedSingleSelectField'; import { AncestorMetadata, TreeNodeProps } from '../reportTree/reportTreeTypes'; import { LineInfo } from './common'; export declare const filterOutLinkedTransactionLine: (lines?: LineInfo[]) => Line[]; export declare const filterDeletedOptions: (groupedOptions: GroupedOption[]) => GroupedOption[]; export declare const getGroupedAccountOptionsWithCOT: (allAccounts: NestedAccountHierarchyForReport[], lineRecommendation?: RecommendationWithCOT[], type?: string) => GroupedOption[]; export declare const getGroupedClassOptionsWithCOT: (allClasses: NestedClassHierarchyForReport[], lineRecommendation?: RecommendationWithCOT[]) => GroupedOption[]; export declare const getGroupedProjectOptions: (projects: Project[]) => GroupedOption[]; export declare const getGroupedAccountOptions: (allAccounts: NestedAccountHierarchyForReport[], lineRecommendation?: Recommendation[], type?: string) => GroupedOption[]; export declare const getGroupedClassOptions: (allClasses: NestedClassHierarchyForReport[], lineRecommendation?: Recommendation[]) => GroupedOption[]; export declare const getGroupedEntityOptions: (entityAutoCompleteView?: EntityAutoCompleteView) => GroupedOption[]; export declare const getDefaultEntityOptions: (filteredLine: TransactionDetailLineItemData, entityAutoCompleteView?: EntityAutoCompleteView) => { label: string; options: { label: string | undefined; value: string | undefined; }[]; }[]; export declare const isMiscategorizedField: (fieldType: TransactionLineRecommendationFieldTypes, options: GroupedOption[] | AutoCompleteGroupedOption[] | undefined, selectedOption?: string) => boolean; export declare const getGroupedForPayeeEntityOptions: (entityAutoCompleteView: EntityAutoCompleteView, entityDetails?: Entity, recommendations?: Recommendation[]) => AutoCompleteGroupedOption[]; export declare const getGroupedForPayeeEntityOptionsWithCOT: (entityAutoCompleteView: EntityAutoCompleteView, entityDetails?: Entity, recommendations?: RecommendationWithCOT[]) => AutoCompleteGroupedOption[]; export declare const getCustomerVendorEntityInfo: (currentItem: LineInfo, transactionDetailLocalData: TransactionDetailLocalData, selectedEntityName?: string, selectedLineId?: string, entityAutoCompleteView?: EntityAutoCompleteView) => Entity | undefined; export declare const getCustomerVendorInfo: (currentItem: LineInfo, selectedEntityName?: string, selectedLineId?: string, entityAutoCompleteView?: EntityAutoCompleteView) => { customerInfo: Entity; vendorInfo: Entity; }; export declare const getJournalEntryLineHeights: (transactionListItem: string | LineInfo, windowSize: WindowSize) => number; export declare const getFlattenAccountListFromHierarchy: (nestedAccountList: NestedAccountHierarchyForReport[], dep?: number, ancestorMetadata?: AncestorMetadata[]) => TreeNodeProps[]; export declare const getFlattenClassListFromHierarchy: (nestedClassList: NestedClassHierarchyForReport[], dep?: number, ancestorMetadata?: AncestorMetadata[]) => TreeNodeProps[]; export declare const getGroupedVendorOptions: (vendorDetails?: { id: ID; name: string; qboId: ID; }, recommendations?: RecommendationWithCOT[], allVendors?: Entity[]) => AutoCompleteGroupedOption[]; export declare const getGroupedCodeAndNameOptions: (allVendorTypeList: VendorType[], groupTitle: string) => GroupedOption[]; export declare const hasRecommendationsForType: (recommendations: RecommendationWithCOT[], type: TransactionLineRecommendationFieldTypes) => boolean; export declare const createCOTDataFromRecommendations: (recommendations: RecommendationWithCOT[], type: TransactionLineRecommendationFieldTypes, isCOTEnabled: boolean, existingOption: { label?: string; value?: string; }, pageSource: TransactionPage, transactionStatus: TransactionStatus | null, onRecommendationClick: (recommendationId: string, type: TransactionLineRecommendationFieldTypes) => void, onAlternateRecommendationExpandClick: (isExpanded: boolean) => void, selectedValue?: ID, isAccountOptionDisabled?: (option: ID) => boolean, isPrimaryLoading?: boolean, isAlternateLoading?: boolean) => ChainOfThoughtData | null; export declare const isLineAutoCategorized: (lines: Line[], lineId: ID) => boolean; export declare const mergeLineWithFormOnlyFields: (newLine: LineInfo, existingLine: LineInfo | undefined) => LineInfo; export declare const mergeLineInfoWithFormValues: (newLines: LineInfo[], currentLines: LineInfo[]) => LineInfo[]; type TransactionDetailFieldKey = "vendorDetails" | "category" | "class" | "description" | "memo" | "entity" | "project" | "amount"; /** * Extracts the stable third-party (QBO) ID from a Zeni-generated transaction ID. * Zeni IDs have the form `tran_:` where the UUID prefix is unstable * across API calls, but the QBO suffix is the canonical identifier. * If the input is already a plain ID (no colon), it is returned as-is. */ export declare const getStableTransactionId: (transactionId: string) => string; /** * Builds the transaction detail page URL used in comment thread metadata so * notifications and emails deep-link to the detail page. Mirrors the host * app's route `/{tenantDomain}/transaction/{type}/{id}`. * * `tenantDomain` defaults to the first path segment of the current location; * callers that already know their domain can pass it explicitly, which also * makes this testable without mocking `window.location`. */ export declare const buildTransactionDetailUrl: (transactionType: string, transactionId: string, tenantDomain?: string) => string; export declare const uniqueTransactionTabKey: (key: TransactionDetailFieldKey, index?: number) => `${number}.class` | `${number}.memo` | `${number}.amount` | TransactionDetailFieldKey | `${number}.category` | `${number}.description` | `${number}.project` | `${number}.entity` | `${number}.vendorDetails`; export type TransactionTabKeys = ReturnType; export {};