import type { SyntheticEvent } from 'react';
import React from 'react';
import TableStyleSet from '../../utils/TableStyleSet';
import type { EventActionComponentWithFilters, EventType, Row, FieldActionsComponentsWithFilters, FieldValueHighlightMapType } from '../../common-types';
import { PageToggle } from '../../common-types';
import type { VizProps, SearchData } from '../../utils/datasourceUtils';
type PaginationParamsType = {
    source?: string;
    format?: string;
    offset?: number;
    count?: number;
    requestTotalCount?: boolean;
};
export interface EventsViewerOptions {
    /** Feature toggle for pagination */
    showPagination?: boolean;
    /** Page length options available to the user */
    pageLengthOptions?: number[];
    /** Array of objects with eventtypeValues for filtering by eventtype, fieldFilters for filtering by fields,
     *  and event action component (these need to be Menu.Item and will be rendered inside a Menu component) */
    renderEventActions?: EventActionComponentWithFilters[];
    /** Map of fields, each associated with an array of objects with eventtypeValues for filtering by eventtype,
     *  and field action component (these need to be Menu.Item and will be rendered inside a Menu component) */
    renderFieldActions?: FieldActionsComponentsWithFilters;
    /** Format for displaying time values */
    timeFormat?: string;
    /** Available table styles */
    tableStyles?: TableStyleSet;
    /** Current table style. Must be the key of an existing entry in tableStyles.
     * Set it to `null` to disable table style selector */
    currentTableStyle?: string;
    /** Whether to Show row numbers or not */
    rowNumbers?: boolean;
    /** Whether to wrap text or not */
    wrapResults?: boolean;
    /** Array of formatting options for the current table style */
    formattingOptions?: string[];
    /** Customized fields to be displayed in FooterFields */
    footerFields?: string[];
    /** Map of fields and their respective values to highlight */
    fieldValueHighlightMap?: FieldValueHighlightMapType;
}
interface EventsViewerProps extends VizProps {
    /**
     * width in pixel or string, defaults to 100%
     */
    width?: string | number;
    /**
     * height in pixel or string,  defaults to 100%
     */
    height?: string | number;
    /**
     * component formatting options
     */
    options?: EventsViewerOptions;
    /**
     * A callback to update Events Viewer table style formatting options
     */
    onOptionsChange: (data: {
        [key: string]: string | boolean | Array<number>;
    }) => void;
    /**
     * A callback to request new data with updated search request params.
     * Required if using pagination
     */
    onRequestParamsChange?: (str: string, data: PaginationParamsType & {
        offset: number;
        count: number;
    }) => void;
    /**
     * Custom style on visualization
     */
    style?: {
        [key: string]: any;
    };
    /**
     * Props to support event selection
     */
    selection?: {
        /**
         * Callback to execute when all events of a page are toggled
         */
        onTogglePage: (events: EventType[], pageNumber: number, status: PageToggle) => void;
        /**
         * Callback to execute when an event on a page is toggled
         */
        onToggleRow: (event: EventType, index: number, pageNumber: number) => void;
        /**
         * Selected rows (events)
         */
        rows: Row[];
        /**
         * Actions to act on the selected rows (events) in the table
         */
        actions?: {
            name: string;
            label: string;
        }[];
        /**
         * Handler for when the user selects a selection action
         */
        onActionClicked?: (e: SyntheticEvent, { action }: {
            action: string;
        }) => void;
    };
    /** Callback when the user clicks on the row's time value */
    onTimeClicked?: (e: SyntheticEvent, { time }: {
        time: string;
    }) => void;
    /** Additional props for time field with onClick handler */
    timeFieldAdditionalProps?: Record<string, any>;
    /** Callback when the user clicks on the field name in the expanded row */
    onFieldClicked?: (e: SyntheticEvent, { field, value }: {
        field: string;
        value: string;
    }) => void;
    /** Additional props for field with onClick handler in the expanded row */
    fieldAdditionalProps?: Record<string, any>;
    /** Callback when the user clicks on the field value in the expanded row */
    onFieldValueClicked?: (e: SyntheticEvent, { field, value }: {
        field: string;
        value: string;
    }) => void;
    /** Callback when the user clicks on the field value in the expanded row */
    onTagClicked?: (e: SyntheticEvent, { field, value }: {
        field: string;
        value: string;
    }) => void;
    /** Check if an attribute is a field */
    isField?: (name: string) => boolean;
    /** DataSources for the eventsviewer */
    dataSources?: Record<string, SearchData>;
}
declare const EventsViewer: ({ dataSources, width, height, options, onOptionsChange, onRequestParamsChange, style, selection, onTimeClicked, timeFieldAdditionalProps, onFieldClicked, fieldAdditionalProps, onFieldValueClicked, onTagClicked, isField, }: EventsViewerProps) => React.JSX.Element;
export default EventsViewer;
