import { FWDataPlan } from "../models/index.js";
import { FWGroupService } from "./FWGroupService.js";
export interface FWSpeedResult {
    timestamp: number;
    client: {
        publicIp: string;
        isp: string;
    };
    server: {
        location: string;
        country: string;
        sponsor: string;
        id: string;
        host: string;
    };
    result: {
        upload: number;
        download: number;
        latency: number;
        jitter: number;
        ploss: number;
        dlMbytes: number;
        ulMbytes: number;
    };
    success: boolean;
    vendor: string;
    manual?: boolean;
}
export interface FWGetMonthlyDataUsageResult {
    monthlyBeginTs: number;
    monthlyEndTs: number;
    totalUpload: number;
    totalDownload: number;
    upload: [number, number];
    download: [number, number];
}
export interface FWGetMonthlyDateUsageResult {
    ts: number;
    stats: {
        totalUpload: number;
        totalDownload: number;
        upload: [number, number];
        download: [number, number];
    };
}
export interface FWGetNetworkMonitorDataResult {
    [metric: string]: {
        [timestamp: string]: {
            stat: {
                median: number;
                min: number;
                max: number;
                mean: number;
                lossrate: number;
            };
        };
    };
}
export declare class NetworkService extends FWGroupService {
    ping(): Promise<{
        uptime: number;
        timestamp: string;
    }>;
    /**
     * @param {string} wanUUID - the UUID of the WAN interface to run the speedtest on
     * @param {string} serverId - the ID of the remote server to run the speedtest on
     * @param {boolean} noUpload - whether to skip upload for the speedtest
     * @param {boolean} noDownload - whether to skip download for the speedtest
     */
    runSpeedtest(wanUUID?: string, serverId?: string, noUpload?: boolean, noDownload?: boolean): Promise<{
        result: FWSpeedResult;
    }>;
    /**
     * @param {Date} begin - Only return speedtests after this date
     */
    getSpeedtestResults(begin?: Date): Promise<{
        results: [FWSpeedResult];
    }>;
    getMonthlyDataUsage(): Promise<FWGetMonthlyDataUsageResult>;
    /**
     * @param {Date} acl - ?? unknown parameter
     */
    getLast12MonthlyDateUsage(acl?: boolean): Promise<[FWGetMonthlyDateUsageResult]>;
    getNetworkMonitorData(): Promise<[FWGetNetworkMonitorDataResult]>;
    getDataPlan(): Promise<{
        enable: boolean;
        dataPlan: FWDataPlan;
    }>;
    getMyPublicKey(): Promise<{
        key: string;
    }>;
}
//# sourceMappingURL=NetworkService.d.ts.map