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;
type TransactionDetailFieldKey = "vendorDetails" | "category" | "class" | "description" | "memo" | "entity";
/**
 * Extracts the stable third-party (QBO) ID from a Zeni-generated transaction ID.
 * Zeni IDs have the form `tran_<uuid>:<qbo_id>` 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;
export declare const uniqueTransactionTabKey: (key: TransactionDetailFieldKey, index?: number) => `${number}.class` | `${number}.memo` | TransactionDetailFieldKey | `${number}.category` | `${number}.description` | `${number}.entity` | `${number}.vendorDetails`;
export type TransactionTabKeys = ReturnType<typeof uniqueTransactionTabKey>;
export {};
