import type { Request } from 'express';
import { AsyncReportUrlData, LoadType, ReportType, RequestedReport, RequestFormData, RequestStatus, UserReportData } from '../types/UserReports';
import Dict = NodeJS.Dict;
import { ChildReportExecutionData, ExecutionData } from '../types/ExecutionData';
import { components } from '../types/api';
import { QuerySummaryItem } from '../components/_async/request-details/types';
interface ReportData {
    type: ReportType;
    reportId: string;
    reportName: string;
    description: string;
    id: string;
    name: string;
}
declare class UserStoreItemBuilder {
    userStoreItem: UserReportData;
    requestFormData: RequestFormData | Record<string, never>;
    constructor(reportData: ReportData, requestFormData?: RequestFormData);
    build: () => RequestedReport;
    addReportData: ({ type, reportId, reportName, description, id, name }: ReportData) => {
        type: ReportType;
        reportId: string;
        reportName: string;
        description: string;
        id: string;
        name: string;
        timestamp: {};
    };
    addExecutionData: (executionData: ExecutionData) => this;
    addChildExecutionData: (childExecutionData: Array<ChildReportExecutionData>) => this;
    addFilters: (filterData?: Record<string, string>) => this;
    addSortData: (sortData?: Record<string, string>) => this;
    addRequestUrls: (req: Request) => this;
    addAsyncUrls: (url?: AsyncReportUrlData) => this;
    addReportUrls: (req: Request) => this;
    addLoadType: (loadType: LoadType) => this;
    addQuery: (queryData?: {
        query: Dict<string | string[]>;
        querySummary: QuerySummaryItem[];
    }) => this;
    addInteractiveQuery: (queryData?: {
        query: Dict<string | string[]>;
        querySummary: QuerySummaryItem[];
    }) => this;
    addStatus: (status: RequestStatus) => this;
    addMetrics: (metrics: components["schemas"]["DashboardSectionDefinition"][]) => this;
    addTimestamp: () => this;
    addDefinitionsPath: (definitionsPath: string, dpdPathFromQuery: boolean) => this;
}
export { UserStoreItemBuilder };
export default UserStoreItemBuilder;
