import { CSSProperties, ReactNode } from 'react';
import { Mode } from '../../contexts/DashboardBehaviour/types';
import { DataType } from '../../../../shared-logic/src/Field/types';
import { ListViewItem as ListViewItemType } from './types';
export declare type InitValue<T> = {
    title: string;
    subtext?: string;
    icon?: DataType;
    value: T;
    onSelected?: (v: T) => void;
};
export declare type NewItemProps<T> = {
    testId?: string;
    onNew?: (newItem: any) => void;
    callToAction: string;
    hide?: boolean;
    initValues: InitValue<T>[];
    id?: string;
    isOpen?: boolean;
    marginTop?: CSSProperties['marginTop'];
    onOpenDropdown?: () => void;
};
export declare function NewItem<T>(props: NewItemProps<T>): JSX.Element | null;
declare type ListViewProps<T> = {
    items: ListViewItemType<T>[];
    onOrderChange?: (index: number, movedTo: number) => void;
    onDeleteItem?: (itemIndex: number, context: any) => void;
    onToggleHidden?: (args: {
        itemIndex: number;
    }) => void;
    isHidden?: (args: {
        itemIndex: number;
    }) => boolean;
    newItem?: NewItemProps<T>;
    testId?: string;
    newItemBtn?: {
        onClick: () => void;
        callToAction: string;
        disabled?: boolean;
    };
    mode: Mode;
    id?: string;
    children?: ReactNode;
    paddingRight?: CSSProperties['paddingRight'];
    showHiddenToggle?: boolean;
    purpose?: string;
};
export declare function ListView<T>(props: ListViewProps<T>): JSX.Element;
export {};
