/// <reference types="node" />
/// <reference types="node" />
/// <reference types="node" />
import * as _ from 'lodash';
import * as os from 'os';
import { HtkConfig } from "../config";
import { Interceptor } from "../interceptors";
import * as Client from '../client/client-types';
import { HttpClient } from '../client/http-client';
export declare class ApiModel {
    private config;
    private interceptors;
    private getRuleParamKeys;
    private httpClient;
    private callbacks;
    constructor(config: HtkConfig, interceptors: _.Dictionary<Interceptor>, getRuleParamKeys: () => string[], httpClient: HttpClient, callbacks: {
        onTriggerUpdate: () => void;
        onTriggerShutdown: () => void;
    });
    getVersion(): string;
    updateServer(): void;
    shutdownServer(): void;
    getConfig(proxyPort?: number): Promise<{
        certificatePath: string;
        certificateContent: string;
        certificateExpiry: number;
        certificateFingerprint: string;
        networkInterfaces: NodeJS.Dict<os.NetworkInterfaceInfo[]>;
        systemProxy: import("os-proxy-config").ProxyConfig | undefined;
        dnsServers: string[];
        ruleParameterKeys: string[];
        toolPaths: {
            ctl: string[];
            mcp: string[];
        };
    }>;
    getDnsServers(proxyPort: number): Promise<string[]>;
    getNetworkInterfaces(): NodeJS.Dict<os.NetworkInterfaceInfo[]>;
    getInterceptors(proxyPort?: number): Promise<{
        id: string;
        version: string;
        metadata: any;
        isActivable: boolean;
        isActive: boolean | undefined;
    }[]>;
    getInterceptor(id: string, options?: {
        metadataType?: 'summary' | 'detailed';
        proxyPort?: number;
    }): Promise<{
        id: string;
        version: string;
        metadata: any;
        isActivable: boolean;
        isActive: boolean | undefined;
    }>;
    isInterceptorActive(id: string, proxyPort: number): Promise<boolean | undefined>;
    getInterceptorMetadata(id: string, metadataType: 'summary' | 'detailed', subId?: string): Promise<any>;
    activateInterceptor(id: string, proxyPort: number, options: unknown): Promise<{
        success: boolean;
        metadata: any;
    }>;
    deactivateInterceptor(id: string, proxyPort: number, options: unknown): Promise<{
        success: boolean;
    }>;
    sendRequest(requestDefinition: Client.RequestDefinition, requestOptions: Client.RequestOptions): Promise<import("stream").Readable>;
}
