import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './instances';
export interface LongviewClient {
    id: number;
    label: string;
    api_key: string;
    install_code: string;
    apps: {
        apache: boolean;
        nginx: boolean;
        mysql: boolean;
    };
    created: string;
    updated: string;
}
export interface LongviewSubscription {
    id: string;
    label: string;
    clients_included: number;
    price: {
        hourly: number;
        monthly: number;
    };
}
export interface LongviewData {
    timestamp: number;
    uptime: number;
    packages: {
        updates: number;
    };
    load: [number, number, number];
    cpu: {
        user: number;
        nice: number;
        system: number;
        wait: number;
        idle: number;
    };
    memory: {
        total: number;
        used: number;
        free: number;
        buffers: number;
        cached: number;
        swap_total: number;
        swap_used: number;
        swap_free: number;
    };
    network: {
        [networkInterface: string]: {
            rx_bytes: number;
            tx_bytes: number;
            rx_packets: number;
            tx_packets: number;
        };
    };
    disk: {
        [device: string]: {
            fs: string;
            mount_point: string;
            total: number;
            used: number;
            free: number;
        };
    };
    processes: {
        [process: string]: {
            user: string;
            count: number;
            cpu: number;
            mem: number;
        };
    };
}
export interface CreateLongviewClientRequest {
    label?: string;
}
export interface UpdateLongviewClientRequest {
    label: string;
}
export interface LongviewClientInterface {
    getLongviewClients(params?: PaginationParams): Promise<PaginatedResponse<LongviewClient>>;
    getLongviewClient(id: number): Promise<LongviewClient>;
    createLongviewClient(data?: CreateLongviewClientRequest): Promise<LongviewClient>;
    updateLongviewClient(id: number, data: UpdateLongviewClientRequest): Promise<LongviewClient>;
    deleteLongviewClient(id: number): Promise<void>;
    getLongviewSubscriptions(params?: PaginationParams): Promise<PaginatedResponse<LongviewSubscription>>;
    getLongviewSubscription(id: string): Promise<LongviewSubscription>;
    getLongviewData(id: number): Promise<LongviewData>;
}
export declare function createLongviewClient(axiosInstance: AxiosInstance): LongviewClientInterface;
