import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
/**
 * Interface for a Monitor Dashboard
 */
export interface MonitorDashboard {
    id: number;
    label: string;
    service_type: string;
    type: string;
    widgets: Record<string, any>[];
    created: string;
    updated: string;
}
/**
 * Interface for a Monitor Service
 */
export interface MonitorService {
    service_type: string;
    label: string;
}
/**
 * Interface for a Metric Definition
 */
export interface MetricDefinition {
    metric: string;
    label: string;
    metric_type: string;
    unit: string;
    scrape_interval: string;
    is_alertable: boolean;
    dimensions: Record<string, any>[];
    available_aggregate_functions: string[];
}
/**
 * Interface for requesting service metrics
 */
export interface GetServiceMetricsRequest {
    entity_ids: number[];
    start_time: string;
    end_time: string;
    time_granularity?: Record<string, any>;
}
/**
 * Interface for a service token response
 */
export interface ServiceToken {
    token: string;
}
/**
 * Client for Linode Monitor Metrics API
 */
export interface MonitorMetricsClient {
    /**
     * List all monitor dashboards
     * @param params - Pagination parameters
     * @returns A paginated list of dashboards
     */
    listDashboards(params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
    /**
     * Get a specific dashboard
     * @param dashboardId - The ID of the dashboard
     * @returns The dashboard object
     */
    getDashboard(dashboardId: number): Promise<MonitorDashboard>;
    /**
     * List supported service types
     * @param params - Pagination parameters
     * @returns A paginated list of service types
     */
    listServices(params?: PaginationParams): Promise<PaginatedResponse<MonitorService>>;
    /**
     * Get details for a supported service type
     * @param serviceType - The service type
     * @returns The service type details
     */
    getService(serviceType: string): Promise<MonitorService>;
    /**
     * List dashboards for a service type
     * @param serviceType - The service type
     * @param params - Pagination parameters
     * @returns A paginated list of dashboards for the service type
     */
    listServiceDashboards(serviceType: string, params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
    /**
     * List metric definitions for a service type
     * @param serviceType - The service type
     * @returns A paginated list of metric definitions
     */
    listServiceMetricDefinitions(serviceType: string): Promise<PaginatedResponse<MetricDefinition>>;
    /**
     * Get metrics for entities of a service type
     * @param serviceType - The service type
     * @param data - The metrics request body
     * @returns The metrics data
     */
    getServiceMetrics(serviceType: string, data: GetServiceMetricsRequest): Promise<Record<string, any>>;
    /**
     * Create a token for a service type
     * @param serviceType - The service type
     * @returns The service token
     */
    createServiceToken(serviceType: string): Promise<ServiceToken>;
}
/**
 * Create a new Monitor Metrics client
 * @param axios - The Axios instance for API calls
 * @returns A new Monitor Metrics client
 */
export declare function createMonitorMetricsClient(axios: AxiosInstance): MonitorMetricsClient;
