import { ReportType } from 'src/dpr/types/UserReports';

type NameValuePair = {
    name: string;
    value: string;
};
type DprMyReportHeading = {
    name: string;
    classes: string;
};
type DprMyReportTitle = {
    productName: string;
    reportName: string;
    reportType: string;
    timestamp?: string;
};
type DprMyReportFilters = {
    prerequest?: NameValuePair[];
    interactive?: NameValuePair[];
};
type RemoveAction = {
    action: string;
    csrfToken: string;
    returnTo: string;
};
type LinkAction = {
    href: string;
};
type ViewAction = {
    href: string;
    reportType: string;
};
type DprMyReportActions = {
    remove?: RemoveAction;
    refresh?: LinkAction;
    retry?: LinkAction;
    view?: ViewAction;
    polling?: LinkAction;
    load?: ViewAction;
    bookmark?: DprMyReportActionBookmark;
    request?: ViewAction;
};
type DprMyReportActionBookmark = {
    reportId: string;
    id: string;
    reportType: ReportType;
    csrfToken: string;
    bookmarkActionEndpoint?: string | undefined;
    linkType: string;
    linkText: string;
};
type DprMyReportMeta = {
    id: string;
    reportId: string;
    tableId?: string | undefined;
};
type DprMyReportItem = {
    title: DprMyReportTitle;
    description?: string;
    filters?: DprMyReportFilters;
    status?: string;
    actions?: DprMyReportActions;
    meta?: DprMyReportMeta;
};
type DprMyReportListConfig = {
    title: string;
    listType: ListType;
    headings: DprMyReportHeading[];
    items: DprMyReportItem[];
    totals: MyReportsListTotals;
};
declare enum ListType {
    REQUESTED = "requested",
    BOOKMARKS = "bookmarks",
    VIEWED = "viewed"
}
type DprMyReport = {
    requested: DprMyReportListConfig;
    viewed: DprMyReportListConfig;
    bookmarks?: DprMyReportListConfig | undefined;
};
type MyReportsOptions = {
    maxRows?: number;
    showHelp?: boolean;
};
type MyReportsListTotals = {
    shown: number;
    total: number;
    href?: string | undefined;
};

export { ListType };
export type { DprMyReport, DprMyReportActionBookmark, DprMyReportActions, DprMyReportFilters, DprMyReportHeading, DprMyReportItem, DprMyReportListConfig, DprMyReportMeta, DprMyReportTitle, LinkAction, MyReportsListTotals, MyReportsOptions, NameValuePair, RemoveAction, ViewAction };
