import { AccountBase, ClassBase, ID, NestedAccountHierarchyForReport, NestedClassHierarchyForReport, Project, TransactionLineRecommendationFieldTypes, TransactionWithCOT, UncategorizedAccounts } from '@zeniai/client-epic-state';
import { COTTrackingProps } from '../../../../types/cotTracking';
import { DisableMode } from '../../../formElements/common/common';
import { LineInfo, SearchAutoComplete } from '../../common';
import { JournalEntryRowHeaderItemData } from './header/journalEntryHeaderConfig';
/**
 * Public props for the new JE table entry component.
 *
 * This is a deliberate subset of the legacy `TransactionLinesJournalEntry`
 * prop shape. The call site in `TransactionDetailContent` spreads a single
 * `sharedProps` object into either component, and TypeScript allows the
 * spread to carry extra fields that this component does not consume. As
 * new features (inline edit, book-close enforcement, etc.) land on the
 * table view, add the corresponding props back here.
 */
export interface TransactionLinesJournalEntryTableProps {
    accountList: AccountBase[];
    accountsHierarchyList: NestedAccountHierarchyForReport[];
    classHierarchyList: NestedClassHierarchyForReport[];
    classList: ClassBase[];
    isAccountingClassesEnabled: boolean;
    isAccountingProjectsEnabled: boolean;
    isCOTEnabled: boolean;
    isProjectsTransactionsEnabled: boolean;
    lines: LineInfo[];
    projects: Project[];
    searchAutoComplete: SearchAutoComplete;
    sectionId: string;
    transaction: TransactionWithCOT;
    cotTracking?: COTTrackingProps;
    isDisabled?: DisableMode;
    isQuickViewMode?: boolean;
    isUncategorizedExpenseCategoryEnabled?: boolean;
    openTooltipId?: ID;
    uncategorizedAccounts?: UncategorizedAccounts;
    setOpenTooltipId?: (tooltipId: ID | undefined) => void;
}
/**
 * Props for the skeleton/loading empty table that mirrors the
 * `TransactionCategorizationListEmptyTable` shape.
 */
export interface TransactionLinesJournalEntryEmptyTableProps {
    isAccountingClassesEnabled: boolean;
    showProjectField: boolean;
    isCompressed?: boolean;
    isQuickViewMode?: boolean;
    sectionId?: string;
    skeletonRowCount?: number;
}
/** Props for the inline list-row component. */
export interface JournalEntryTableListRowProps {
    accountList: AccountBase[];
    accountsHierarchyList: NestedAccountHierarchyForReport[];
    classHierarchyList: NestedClassHierarchyForReport[];
    classList: ClassBase[];
    columns: JournalEntryRowHeaderItemData[];
    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 JournalEntryTableListEmptyRowProps {
    columns: JournalEntryRowHeaderItemData[];
    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;
}
