import { AccountBase, ClassBase, ID, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, Project, TransactionDetailLocalData, TransactionLineRecommendationFieldTypes, TransactionWithCOT, UncategorizedAccounts, ZeniDate } from '@zeniai/client-epic-state';
import { COTTrackingProps } from '../../../../types/cotTracking';
import { DisableMode } from '../../../formElements/common/common';
import { LineInfo, SearchAutoComplete } from '../../common';
import { TransactionLineRowHeaderItemData } from './header/transactionLineHeaderConfig';
/**
 * Public props for the non-journal-entry transaction line table.
 * Mirrors the shape of `TransactionLinesJournalEntryTableProps`.
 */
export interface TransactionLinesTableProps {
    accountList: AccountBase[];
    accountsHierarchyList: NestedAccountHierarchyForReport[];
    classHierarchyList: NestedClassHierarchyForReport[];
    classList: ClassBase[];
    containerRef: HTMLElement | null;
    isAccountingClassesEnabled: boolean;
    isAccountingProjectsEnabled: boolean;
    isCOTEnabled: boolean;
    isProjectsTransactionsEnabled: boolean;
    lines: LineInfo[];
    projects: Project[];
    searchAutoComplete: SearchAutoComplete;
    sectionId: string;
    transaction: TransactionWithCOT;
    bookCloseDate?: ZeniDate;
    cotTracking?: COTTrackingProps;
    entityId?: ID;
    isDisabled?: DisableMode;
    isQuickViewMode?: boolean;
    isTransactionCommentingEnabled?: boolean;
    isUncategorizedExpenseCategoryEnabled?: boolean;
    lineItemsLocalData?: TransactionDetailLocalData;
    openTooltipId?: ID;
    uncategorizedAccounts?: UncategorizedAccounts;
    setOpenTooltipId?: (tooltipId: ID | undefined) => void;
}
/**
 * Props for the skeleton/loading empty table that mirrors the
 * `TransactionLinesJournalEntryEmptyTable` shape.
 */
export interface TransactionLinesEmptyTableProps {
    isAccountingClassesEnabled: boolean;
    showProjectField: boolean;
    isCompressed?: boolean;
    isQuickViewMode?: boolean;
    sectionId?: string;
    skeletonRowCount?: number;
}
/** Props for the inline list-row component. */
export interface TransactionLineTableListRowProps {
    accountList: AccountBase[];
    accountsHierarchyList: NestedAccountHierarchyForReport[];
    classHierarchyList: NestedClassHierarchyForReport[];
    classList: ClassBase[];
    columns: TransactionLineRowHeaderItemData[];
    isCompressed: boolean;
    isCOTEnabled: boolean;
    line: LineInfo;
    lineIndex: number;
    projects: Project[];
    sectionId: string;
    isDisabled?: DisableMode;
    isUncategorizedExpenseCategoryEnabled?: boolean;
    openTooltipId?: ID;
    searchAutoComplete?: SearchAutoComplete;
    /**
     * Transaction id used by the inline `RecommendationIcon` to build a
     * unique tooltip identifier. Optional so existing callers don't break;
     * when missing the row falls back to `line.id`.
     */
    transactionId?: ID;
    uncategorizedAccounts?: UncategorizedAccounts;
    onCOTView?: (fieldType: TransactionLineRecommendationFieldTypes, recommendationSource?: string) => void;
    setOpenTooltipId?: (tooltipId: ID | undefined) => void;
}
/** Props for the skeleton row mounted by the empty table. */
export interface TransactionLineTableListEmptyRowProps {
    columns: TransactionLineRowHeaderItemData[];
    isCompressed: boolean;
    /** Optional 0-based index of this skeleton row inside the parent's loop. */
    rowIndex?: number;
    /**
     * Optional identifier of the section / sub-table the empty row belongs
     * to, forwarded into the row's `data-testid` so a parent rendering
     * multiple skeleton rows can address each one uniquely (paired with
     * `rowIndex`).
     */
    sectionId?: string;
}
