import { DateTime } from 'luxon';
import React from 'react';
import type { IApplicationSummary } from '../application';
import type { IPagerDutyService } from './pagerDuty.read.service';
import './pager.less';
declare type SortDirectionType = 'ASC' | 'DESC';
export interface IUserDisplay {
    level: number;
    name: string;
    url: string;
}
export interface IUserList {
    [level: number]: IUserDisplay[];
}
export interface IOnCallsByService {
    users?: IUserList;
    applications: IApplicationSummary[];
    last: DateTime;
    service: IPagerDutyService;
    searchString: string;
}
export interface IPagerProps {
}
export interface IPagerState {
    accountName: string;
    app: string;
    hideNoApps: boolean;
    notFoundApps: string[];
    filterString: string;
    initialKeys: string[];
    selectedKeys: Map<string, IPagerDutyService>;
    sortBy: string;
    sortDirection: SortDirectionType;
    sortedData: IOnCallsByService[];
}
export declare class Pager extends React.Component<IPagerProps, IPagerState> {
    private cache;
    private allData;
    private searchApi;
    constructor(props: IPagerProps);
    componentDidMount(): void;
    private sortByFunction;
    sort: (info: {
        sortBy: string;
        sortDirection: SortDirectionType;
    }) => void;
    sortList(sortedData: IOnCallsByService[], sortBy: string, sortDirection: SortDirectionType): void;
    private findServiceByApplicationName;
    private runFilter;
    componentDidUpdate(_prevProps: IPagerProps, prevState: IPagerState): void;
    private getOnCallsByService;
    private selectedChanged;
    private clearAll;
    private rowGetter;
    private serviceRenderer;
    private lastIncidentRenderer;
    private applicationRenderer;
    private highlight;
    private onCallRenderer;
    private pageRenderer;
    private pageHeaderRenderer;
    private headerRenderer;
    private handleFilterChange;
    private rowClassName;
    private handleHideNoAppsChanged;
    private rowClicked;
    private closeCallback;
    render(): JSX.Element;
}
export {};
