import React$1, { ReactNode } from 'react';

type TreeNodeProps = {
    executionId?: string;
    runId?: string;
    clientId?: string;
    status?: string;
    resultPercentage?: Record<string, number>;
    reRun?: boolean;
    reRunFailed?: boolean;
    results?: boolean;
    reports?: boolean;
    createdBy?: string;
    modifiedBy?: string;
    createdByUname?: string;
    modifiedByUname?: string;
    createdOn?: string;
    modifiedOn?: string;
    state?: string;
    path?: string;
    searchKey?: string;
    key: string;
    name?: string;
    projectId?: string;
    hierarchy: number;
    executionOrder?: number;
    conditionCount?: number;
    subContainerCount?: number;
    resourceCount?: number;
    totalSubContainerCount?: number;
    totalResourceCount?: number;
    totalProjectElementCount?: number;
    totalSharedElementCount?: number;
    container?: boolean;
    localDelete?: boolean;
    defaultEntity?: boolean;
    lastResource?: boolean;
    lastChild?: boolean;
    platform?: string;
    parentId?: string;
    parentName?: string;
    checked?: boolean | 'partial';
    expanded?: boolean;
    expandable?: boolean;
    sourceId?: string;
    isNewNode?: boolean;
    entityType?: string;
    lastDefaultEntity?: string;
    type?: string;
    label?: string;
    isShared?: boolean | string;
    isRecorded?: string;
    originalId?: string;
    locatorsCount?: number;
    version?: string;
    hide?: boolean;
    folder?: boolean;
    selectedStatus?: 'completely' | 'partially' | 'none';
    isDelete?: boolean;
    reviewerId?: string;
    reviewerName?: string;
    localCopyId?: string;
    localAutomationId?: string;
    localManualId?: string;
    cascaded?: string;
    automationId?: string;
    manualId?: string;
    unselectable?: boolean;
    description?: string;
    desc?: string;
    expandedAll?: boolean;
    hideResources?: boolean;
    hidePreOrPost?: boolean;
    isScript?: boolean;
    stepId?: string;
    conditionId?: string;
    machInstanceId?: string;
};

interface NewNode {
    sourceId?: string;
    payloadSourceId?: string;
    action?: 'addAbove' | 'addBelow' | 'addInside';
    type?: 'input' | 'inputWithDropdown';
    options?: [];
    selectedOption?: string;
    value?: string;
    error?: string;
    label?: string;
    confirmIconTooltip?: string;
    cancelIconTooltip?: string;
    firstNodeKey?: string;
}
declare type JSX = ReactNode | JSX.Element[] | string | null;
type RootNode = {
    node: any;
    select: 'radio' | 'checkbox' | 'none';
    cell?: (row: any) => JSX;
    actions?: (row: any, treeRowRef?: React.RefObject<HTMLDivElement | null>) => JSX;
};
interface Column {
    name: string | JSX;
    accessor: string;
    width: string;
    isClickable?: boolean;
    cell?: (row: any) => JSX;
    actions?: (row: any, treeRowRef?: React.RefObject<HTMLDivElement | null>) => JSX;
    isTree?: boolean;
    defaultValue?: string;
    defaultActions?: () => JSX;
}
interface TreeTableProps {
    treeData: any;
    columnsData: Column[];
    selected?: string[];
    select?: 'radio' | 'checkbox' | 'none';
    onChange?: (e: any, node: string[] | any) => void;
    onClick?: (e: React.MouseEvent<HTMLDivElement>, row: TreeNodeProps) => void;
    onExpand?: (node: TreeNodeProps) => void;
    loadMore?: (_direction?: string) => void;
    tableBorder?: string;
    height?: number | string;
    newNode?: NewNode;
    onAddConfirm?: (_name: string, _type?: Option) => void;
    onAddCancel?: () => void;
    loading?: boolean;
    rootNode?: RootNode;
    getContentLength?: number;
    handleEditFieldError?: (inputText: string) => string;
    pagination?: boolean;
    selectedNode?: string;
    tableHeaderBgColor?: string;
    hideOnDisable?: boolean;
    freezeColumns?: number;
    scriptLengthTruncate?: number;
    addModuleInputWidth?: number;
    addModuleSelectWidth?: number;
    onScroll?: () => void;
    disableEditLabelConfirmIcon?: boolean;
    transparentHeader?: boolean;
    navigateTreeNode?: string | null;
    handleRemoveNavigateTreeNode?: () => void;
    scrollThreshold?: number;
}
type OptionValue = any;
interface Option {
    [key: string]: OptionValue;
}

declare const TableTreeFn: React$1.ForwardRefExoticComponent<TreeTableProps & React$1.RefAttributes<HTMLDivElement>>;

export { TableTreeFn };
