import { Request, Response } from 'express';
import { ReportTemplateData } from '../../../../../utils/TemplateBuilder/SectionedDataHelper/types';
import { ChildData } from '../../../../../utils/TemplateBuilder/ParentChildDataBuilder/types';
import type { Columns } from '../../../../../components/_reports/report-heading/report-columns/report-columns-form/types';
import type { AsyncReportUtilsParams } from '../../../../../types/AsyncReportUtils';
import type { DataTable } from '../../../../../utils/DataTableBuilder/types';
import type { components } from '../../../../../types/api';
import type { AsyncSummary, RequestedReport } from '../../../../../types/UserReports';
import { LoadType, ReportType } from '../../../../../types/UserReports';
import ReportQuery from '../../../../../types/ReportQuery';
import type { ExtractedDefinitionData } from './types';
import type { Services } from '../../../../../types/Services';
export declare const getData: ({ res, req, services, token, userId, }: AsyncReportUtilsParams & {
    token: string;
    userId: string;
}) => Promise<{
    definition: {
        id: string;
        name: string;
        description?: string;
        variant: components["schemas"]["VariantDefinition"];
    };
    requestData: RequestedReport | undefined;
    reportData: Record<string, string>[];
    summariesData: AsyncSummary[];
    childData: ChildData[];
    reportQuery: ReportQuery;
    columns: Columns;
}>;
export declare const getSummariesData: (summaries: components["schemas"]["ReportSummary"][], services: Services, token: string, req: Request, res: Response) => Promise<AsyncSummary[]>;
export declare const getChildData: (childVariants: components["schemas"]["ChildVariantDefinition"][], services: Services, token: string, req: Request, res: Response, requestData?: RequestedReport) => Promise<ChildData[]>;
/**
 * Entry point function to render the report
 *
 * @param {AsyncReportUtilsParams} { req, res, services }
 * @return {*}
 */
export declare const renderReport: ({ req, res, services }: AsyncReportUtilsParams) => Promise<{
    renderData: {
        dataTable: DataTable | ReportTemplateData;
        totals?: string;
        pagination?: import("../../../../../components/_reports/report-page/report-template/report-pagination/types").Pagination;
        executionId?: string | undefined;
        requestedTimestamp?: string | undefined;
        querySummary?: NodeJS.Dict<string>[];
        queryData?: NodeJS.Dict<string | string[]> | undefined;
        requestUrl?: import("../../../../../types/UserReports").AsyncReportUrlItemData | undefined;
        defaultQuery?: string | undefined;
        dataProductDefinitionsPath?: string | undefined;
        reportName: string;
        name: string;
        description: string | undefined;
        classification: string | undefined;
        printable: boolean;
        specification: components["schemas"]["Specification"];
        template: string;
        fields: components["schemas"]["FieldDefinition"][];
        actions: import("../../../../../components/_reports/report-heading/report-actions/types").ReportAction[];
        downloadConfig: import("../../../../../components/_reports/report-heading/report-actions/types").DownloadActionParams | undefined;
        bookmarkConfig: {
            bookmarkActionEndpoint: string;
            showBookmark: boolean;
            linkText: string;
            linkType: string;
        };
        feedbackFormHref: string | undefined;
        csrfToken: string;
        loadType: LoadType;
        type: ReportType;
        tableId: string | string[];
        reportId: string | string[];
        id: string | string[];
        filterData: {
            filters: import("../../../../../components/_filters/types").FilterValue[];
            selectedFilters: {
                text: string;
                displayValue: string;
                key: string;
                value: (string | import("../../../../../components/_filters/types").DateRange)[];
                disabled: boolean;
                constraints: {
                    key: string;
                    value: string;
                }[] | undefined;
                classes: string;
                attributes: {
                    'aria-label': string;
                };
            }[];
            hasDefaults: boolean | undefined;
            canSaveDefaults: boolean;
        };
        count: number;
        columns?: Columns;
    };
}>;
declare const _default: {
    renderReport: ({ req, res, services }: AsyncReportUtilsParams) => Promise<{
        renderData: {
            dataTable: DataTable | ReportTemplateData;
            totals?: string;
            pagination?: import("../../../../../components/_reports/report-page/report-template/report-pagination/types").Pagination;
            executionId?: string | undefined;
            requestedTimestamp?: string | undefined;
            querySummary?: NodeJS.Dict<string>[];
            queryData?: NodeJS.Dict<string | string[]> | undefined;
            requestUrl?: import("../../../../../types/UserReports").AsyncReportUrlItemData | undefined;
            defaultQuery?: string | undefined;
            dataProductDefinitionsPath?: string | undefined;
            reportName: string;
            name: string;
            description: string | undefined;
            classification: string | undefined;
            printable: boolean;
            specification: components["schemas"]["Specification"];
            template: string;
            fields: components["schemas"]["FieldDefinition"][];
            actions: import("../../../../../components/_reports/report-heading/report-actions/types").ReportAction[];
            downloadConfig: import("../../../../../components/_reports/report-heading/report-actions/types").DownloadActionParams | undefined;
            bookmarkConfig: {
                bookmarkActionEndpoint: string;
                showBookmark: boolean;
                linkText: string;
                linkType: string;
            };
            feedbackFormHref: string | undefined;
            csrfToken: string;
            loadType: LoadType;
            type: ReportType;
            tableId: string | string[];
            reportId: string | string[];
            id: string | string[];
            filterData: {
                filters: import("../../../../../components/_filters/types").FilterValue[];
                selectedFilters: {
                    text: string;
                    displayValue: string;
                    key: string;
                    value: (string | import("../../../../../components/_filters/types").DateRange)[];
                    disabled: boolean;
                    constraints: {
                        key: string;
                        value: string;
                    }[] | undefined;
                    classes: string;
                    attributes: {
                        'aria-label': string;
                    };
                }[];
                hasDefaults: boolean | undefined;
                canSaveDefaults: boolean;
            };
            count: number;
            columns?: Columns;
        };
    }>;
    extractDataFromDefinition: (definition: components["schemas"]["SingleVariantReportDefinition"]) => ExtractedDefinitionData;
};
export default _default;
