import { RestClient } from './restClient.js';
import { ApiConfig } from './types.d.js';
import { components } from '../types/api.d.js';
import { DashboardDataResponse } from '../types/Metrics.js';

import Dict = NodeJS.Dict;

declare class DashboardClient {
    restClient: RestClient;
    constructor(config: ApiConfig);
    getDefinition(token: string, dashboardId: string, dpdId: string, definitionsPath?: string, queryData?: Dict<string | string[]> | undefined): Promise<components['schemas']['DashboardDefinition']>;
    requestAsyncDashboard(token: string, reportId: string, dashboardId: string, query: Record<string, string | boolean | number>): Promise<Dict<string>>;
    getAsyncDashboard(token: string, reportId: string, dashboardId: string, tableId: string, query: Record<string, string | string[]>): Promise<DashboardDataResponse[][]>;
    getAsyncStatus(token: string, reportId: string, dashboardId: string, executionId: string, tableId?: string, dataProductDefinitionsPath?: string): Promise<components['schemas']['StatementExecutionStatus']>;
    cancelAsyncRequest(token: string, reportId: string, dashboardId: string, executionId: string, dataProductDefinitionsPath?: string): Promise<Dict<string>>;
    getSyncDashboard(token: string, reportId: string, dashboardId: string, query: Record<string, string | string[]>): Promise<DashboardDataResponse[][]>;
    logInfo(title: string, args?: Dict<string>): void;
}

export { DashboardClient, DashboardClient as default };
