/// <reference types="node" />
import { FilterRequest, LayoutPayloadOptions, ReportsPayloadOptions, ReportsPayloadV2Options } from '@bringg/types';
import { ConfigurationAudit } from '@bringg/types/types/configuration_audit';
import BaseService from '../../Core/BaseService';
import Session from '../../Services/Identity/Session';
export declare const Routes: {
    GENERATE_REPORT: string;
    GET_LAYOUT: string;
    GET_REPORT: string;
    GET_FILTERS: string;
    GET_REPORT_EXECUTION: string;
    GET_LAST_UPDATE_TIME: string;
    GET_CONFIGURATIONS: string;
    GET_CONFIGURATIONS_CSV: string;
    GET_CONFIGURATIONS_FILTER_OPTOINS: string;
};
export interface ChangedBy {
    id: number;
    name: string;
    isAdmin: boolean;
}
export interface ConfigurationFilterOptions {
    changedBy: ChangedBy[];
    changedByAdmin: ChangedBy[];
    configurationModels: string[];
}
export type GetConfigurationsPayload = Partial<{
    limit: number;
    offset: number;
    sort: 'desc' | 'asc';
    changedBy: number[];
    changedByAdmin: number[];
    configurationModels: string[];
    changeTime: [string, string];
}>;
export default class ReportsService extends BaseService<ReportsService> {
    constructor(session: Session);
    getConfigurations(options: GetConfigurationsPayload): Promise<ConfigurationAudit[]>;
    downloadConfigurations(options: GetConfigurationsPayload): Promise<NodeJS.ReadStream>;
    getConfigurationsFilterOptions(): Promise<ConfigurationFilterOptions>;
    getReportExecution(uuid?: string): Promise<string>;
    getLastUpdateTime(): Promise<number>;
    getLayout(request?: LayoutPayloadOptions): Promise<Bringg.ReportsLayout>;
    getReport(id: string, options: ReportsPayloadV2Options): Promise<Bringg.ReportsWidget>;
    getFilters(options: FilterRequest): Promise<Bringg.FiltersResponse>;
    cacheablesGetReport(id: number, options: ReportsPayloadOptions): Promise<Bringg.ReportsWidget>;
}
export type ReportResponse = {
    uuid: number;
    report: Bringg.ReportsWidget;
};
export type ReportExecutionResponse = {
    success: boolean;
    url: string;
};
export type LastUpdateTimeResponse = {
    success: boolean;
    last_update_time?: number;
};
