import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface NotificationChannel {
    id: number;
    label: string;
    channel_type: string;
    details: Record<string, any>;
    created: string;
    updated: string;
}
export interface CreateNotificationChannelRequest {
    label: string;
    channel_type: string;
    details: Record<string, any>;
}
export interface UpdateNotificationChannelRequest {
    label?: string;
    channel_type?: string;
    details?: Record<string, any>;
}
export interface AlertDefinition {
    id: number;
    label: string;
    description: string;
    service_type: string;
    severity: number;
    trigger_conditions: Record<string, any>;
    channel_ids: number[];
    entity_ids: string[];
    created: string;
    updated: string;
    enabled: boolean;
}
export interface CreateAlertDefinitionRequest {
    label: string;
    description?: string;
    severity?: number;
    trigger_conditions: Record<string, any>;
    channel_ids?: number[];
    entity_ids?: string[];
    enabled?: boolean;
}
export interface UpdateAlertDefinitionRequest {
    label?: string;
    description?: string;
    severity?: number;
    trigger_conditions?: Record<string, any>;
    channel_ids?: number[];
    entity_ids?: string[];
    enabled?: boolean;
}
export interface LogStream {
    id: number;
    label: string;
    filters: Record<string, any>;
    aggregation: Record<string, any>;
    created: string;
    updated: string;
}
export interface CreateLogStreamRequest {
    label: string;
    filters: Record<string, any>;
    aggregation: Record<string, any>;
}
export interface UpdateLogStreamRequest {
    label?: string;
    filters?: Record<string, any>;
    aggregation?: Record<string, any>;
}
export interface LogStreamHistory {
    id: number;
    stream_id: number;
    timestamp: string;
    data: Record<string, any>;
}
export interface LogDestination {
    id: number;
    label: string;
    type: string;
    config: Record<string, any>;
    created: string;
    updated: string;
}
export interface CreateLogDestinationRequest {
    label: string;
    type: string;
    config: Record<string, any>;
}
export interface UpdateLogDestinationRequest {
    label?: string;
    type?: string;
    config?: Record<string, any>;
}
export interface LogDestinationHistory {
    id: number;
    destination_id: number;
    timestamp: string;
    data: Record<string, any>;
}
export interface MonitorDashboard {
    id: number;
    label: string;
    service_type: string;
    type: string;
    widgets: Record<string, any>[];
    created: string;
    updated: string;
}
export interface MonitorService {
    service_type: string;
    label: string;
}
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[];
}
export interface GetServiceMetricsRequest {
    entity_ids: number[];
    start_time: string;
    end_time: string;
    time_granularity?: Record<string, any>;
}
export interface ServiceToken {
    token: string;
}
export interface MonitorClient {
    getNotificationChannels(params?: PaginationParams): Promise<PaginatedResponse<NotificationChannel>>;
    getNotificationChannel(channelId: number): Promise<NotificationChannel>;
    createNotificationChannel(data: CreateNotificationChannelRequest): Promise<NotificationChannel>;
    updateNotificationChannel(channelId: number, data: UpdateNotificationChannelRequest): Promise<NotificationChannel>;
    deleteNotificationChannel(channelId: number): Promise<void>;
    getChannelAlerts(channelId: number, params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
    getAlertDefinitions(params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
    getServiceAlertDefinitions(serviceType: string, params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
    getAlertDefinition(serviceType: string, alertId: number): Promise<AlertDefinition>;
    createAlertDefinition(serviceType: string, data: CreateAlertDefinitionRequest): Promise<AlertDefinition>;
    updateAlertDefinition(serviceType: string, alertId: number, data: UpdateAlertDefinitionRequest): Promise<AlertDefinition>;
    deleteAlertDefinition(serviceType: string, alertId: number): Promise<void>;
    getLogStreams(params?: PaginationParams): Promise<PaginatedResponse<LogStream>>;
    getLogStream(streamId: number): Promise<LogStream>;
    createLogStream(data: CreateLogStreamRequest): Promise<LogStream>;
    updateLogStream(streamId: number, data: UpdateLogStreamRequest): Promise<LogStream>;
    deleteLogStream(streamId: number): Promise<void>;
    getLogStreamHistory(streamId: number, params?: PaginationParams): Promise<PaginatedResponse<LogStreamHistory>>;
    getLogDestinations(params?: PaginationParams): Promise<PaginatedResponse<LogDestination>>;
    getLogDestination(destinationId: number): Promise<LogDestination>;
    createLogDestination(data: CreateLogDestinationRequest): Promise<LogDestination>;
    updateLogDestination(destinationId: number, data: UpdateLogDestinationRequest): Promise<LogDestination>;
    deleteLogDestination(destinationId: number): Promise<void>;
    getLogDestinationHistory(destinationId: number, params?: PaginationParams): Promise<PaginatedResponse<LogDestinationHistory>>;
    listDashboards(params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
    getDashboard(dashboardId: number): Promise<MonitorDashboard>;
    listServices(params?: PaginationParams): Promise<PaginatedResponse<MonitorService>>;
    getService(serviceType: string): Promise<MonitorService>;
    listServiceDashboards(serviceType: string, params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
    listServiceMetricDefinitions(serviceType: string): Promise<PaginatedResponse<MetricDefinition>>;
    getServiceMetrics(serviceType: string, data: GetServiceMetricsRequest): Promise<Record<string, any>>;
    createServiceToken(serviceType: string): Promise<ServiceToken>;
}
export declare function createMonitorClient(axios: AxiosInstance): MonitorClient;
