import { DashboardClient } from '../data/dashboardClient.js';
import { components } from '../types/api.d.js';
import { DashboardDataResponse } from '../types/Metrics.js';

import Dict = NodeJS.Dict;

declare class DashboardService {
    private readonly dashboardClient;
    constructor(dashboardClient: DashboardClient);
    getDefinition(token: string, dpdId: string, id: string, dataProductDefinitionsPath?: string, query?: Dict<string | string[]> | undefined): Promise<components['schemas']['DashboardDefinition']>;
    requestAsyncDashboard(token: string, reportId: string, dashboardId: string, query: Record<string, string | boolean | number>): Promise<Dict<string>>;
    cancelAsyncRequest(token: string, reportId: string, dashboardId: string, executionId: string, dataProductDefinitionsPath?: string): Promise<Dict<string>>;
    getAsyncStatus(token: string, reportId: string, dashboardId: string, executionId: string, tableId?: string, dataProductDefinitionsPath?: string): Promise<components['schemas']['StatementExecutionStatus']>;
    getAsyncDashboard(token: string, reportId: string, dashboardId: string, tableId: string, query: Record<string, string | string[]>): Promise<DashboardDataResponse[][]>;
    getSyncDashboard(token: string, dashboardId: string, reportId: string, query: Record<string, string | string[]>): Promise<DashboardDataResponse[][]>;
}

export { DashboardService, DashboardService as default };
