import { JsPbMessage, OperationResponse, Unregisterable } from '../../shared';
import { Device } from './Device';
export interface Network {
    Device: Device;
    ForceRefresh(): Promise<OperationResponse>;
    ForceTestConnectivity(): void;
    GetProxyInfo(): Promise<ProxyInfo>;
    RegisterForAppSummaryUpdate(callback: (data: AppSummary) => void): Unregisterable;
    /**
     * If `state` is deserialized, returns {@link CGameNetworkingUI_ConnectionState}.
     * @returns an object that can be used to unregister the callback.
     */
    RegisterForConnectionStateUpdate(callback: (state: ArrayBuffer) => void): Unregisterable;
    RegisterForConnectivityTestChanges(callback: (connectivityTest: ConnectivityTest) => void): Unregisterable;
    /**
     * If `data` is deserialized, returns {@link CMsgNetworkDevicesData}.
     * @returns an object that can be used to unregister the callback.
     */
    RegisterForDeviceChanges(callback: (data: ArrayBuffer) => void): Unregisterable;
    SetFakeLocalSystemState(state: ENetFakeLocalSystemState): void;
    SetProxyInfo(mode: number, address: string, port: number, excludeLocal: boolean): void;
    SetWifiEnabled(value: boolean): Promise<OperationResponse>;
    StartScanningForNetworks(): Promise<OperationResponse>;
    StopScanningForNetworks(): Promise<OperationResponse>;
}
export interface ConnectivityTest {
    eConnectivityTestResult: EConnectivityTestResult;
    eFakeState: ENetFakeLocalSystemState;
    bChecking: boolean;
}
export declare enum EConnectivityTestResult {
    Unknown = 0,
    Connected = 1,
    CaptivePortal = 2,
    TimedOut = 3,
    Failed = 4,
    WifiDisabled = 5,
    NoLAN = 6
}
export interface ProxyInfo {
    proxy_mode: number;
    address: string;
    port: number;
    exclude_local: boolean;
}
interface AppSummary {
    nAppID: number;
    /**
     * If deserialized, returns {@link CGameNetworkingUI_AppSummary}.
     */
    serializedMessage: ArrayBuffer;
}
export declare enum ENetFakeLocalSystemState {
    Normal = 0,
    NoLAN = 1,
    CaptivePortal_Redirected = 2,
    CaptivePortal_InPlace = 3,
    NoInternet = 4,
    NoSteam = 5
}
export interface CMsgNetworkDevicesData extends JsPbMessage {
    devices(): NetworkDevice[];
    is_wifi_enabled(): boolean;
    is_wifi_scanning_enabled(): boolean;
}
export interface CGameNetworkingUI_ConnectionSummary {
    transport_kind?: number;
    connection_state?: number;
    sdrpop_local?: number;
    sdrpop_remote?: number;
    ping_ms?: number;
    packet_loss?: number;
    ping_default_internet_route?: number;
    ip_was_shared?: number;
}
export interface CGameNetworkingUI_AppSummary {
    appid?: number;
    ip_was_shared_with_friend?: boolean;
    ip_was_shared_with_nonfriend?: boolean;
    active_connections?: number;
    main_cxn?: CGameNetworkingUI_ConnectionSummary;
}
export interface SteamDatagramLinkInstantaneousStats {
    out_packets_per_sec_x10: number | undefined;
    out_bytes_per_sec: number | undefined;
    in_packets_per_sec_x10: number | undefined;
    in_bytes_per_sec: number | undefined;
    ping_ms: number | undefined;
    packets_dropped_pct: number | undefined;
    packets_weird_sequence_pct: number | undefined;
    peak_jitter_usec: number | undefined;
}
export interface SteamDatagramLinkLifetimeStats {
    connected_seconds: number | undefined;
    packets_sent: number | undefined;
    kb_sent: number | undefined;
    packets_recv: number | undefined;
    kb_recv: number | undefined;
    packets_recv_sequenced: number | undefined;
    packets_recv_dropped: number | undefined;
    packets_recv_out_of_order: number | undefined;
    packets_recv_out_of_order_corrected: number | undefined;
    packets_recv_duplicate: number | undefined;
    packets_recv_lurch: number | undefined;
    multipath_packets_recv_sequenced: number[];
    multipath_packets_recv_later: number[];
    multipath_send_enabled: number | undefined;
    quality_histogram_100: number | undefined;
    quality_histogram_99: number | undefined;
    quality_histogram_97: number | undefined;
    quality_histogram_95: number | undefined;
    quality_histogram_90: number | undefined;
    quality_histogram_75: number | undefined;
    quality_histogram_50: number | undefined;
    quality_histogram_1: number | undefined;
    quality_histogram_dead: number | undefined;
    quality_ntile_2nd: number | undefined;
    quality_ntile_5th: number | undefined;
    quality_ntile_25th: number | undefined;
    quality_ntile_50th: number | undefined;
    ping_histogram_25: number | undefined;
    ping_histogram_50: number | undefined;
    ping_histogram_75: number | undefined;
    ping_histogram_100: number | undefined;
    ping_histogram_125: number | undefined;
    ping_histogram_150: number | undefined;
    ping_histogram_200: number | undefined;
    ping_histogram_300: number | undefined;
    ping_histogram_max: number | undefined;
    ping_ntile_5th: number | undefined;
    ping_ntile_50th: number | undefined;
    ping_ntile_75th: number | undefined;
    ping_ntile_95th: number | undefined;
    ping_ntile_98th: number | undefined;
    jitter_histogram_negligible: number | undefined;
    jitter_histogram_1: number | undefined;
    jitter_histogram_2: number | undefined;
    jitter_histogram_5: number | undefined;
    jitter_histogram_10: number | undefined;
    jitter_histogram_20: number | undefined;
    txspeed_max: number | undefined;
    txspeed_histogram_16: number | undefined;
    txspeed_histogram_32: number | undefined;
    txspeed_histogram_64: number | undefined;
    txspeed_histogram_128: number | undefined;
    txspeed_histogram_256: number | undefined;
    txspeed_histogram_512: number | undefined;
    txspeed_histogram_1024: number | undefined;
    txspeed_histogram_max: number | undefined;
    txspeed_ntile_5th: number | undefined;
    txspeed_ntile_50th: number | undefined;
    txspeed_ntile_75th: number | undefined;
    txspeed_ntile_95th: number | undefined;
    txspeed_ntile_98th: number | undefined;
    rxspeed_max: number | undefined;
    rxspeed_histogram_16: number | undefined;
    rxspeed_histogram_32: number | undefined;
    rxspeed_histogram_64: number | undefined;
    rxspeed_histogram_128: number | undefined;
    rxspeed_histogram_256: number | undefined;
    rxspeed_histogram_512: number | undefined;
    rxspeed_histogram_1024: number | undefined;
    rxspeed_histogram_max: number | undefined;
    rxspeed_ntile_5th: number | undefined;
    rxspeed_ntile_50th: number | undefined;
    rxspeed_ntile_75th: number | undefined;
    rxspeed_ntile_95th: number | undefined;
    rxspeed_ntile_98th: number | undefined;
}
export interface SteamDatagramConnectionQuality {
    instantaneous: SteamDatagramLinkInstantaneousStats | undefined;
    lifetime: SteamDatagramLinkLifetimeStats | undefined;
}
export interface SteamNetworkingICESessionSummary {
    failure_reason_code: number | undefined;
    local_candidate_types: number | undefined;
    remote_candidate_types: number | undefined;
    initial_route_kind: number | undefined;
    initial_ping: number | undefined;
    initial_score: number | undefined;
    negotiation_ms: number | undefined;
    best_route_kind: number | undefined;
    best_ping: number | undefined;
    best_score: number | undefined;
    best_time: number | undefined;
    selected_seconds: number | undefined;
    user_settings: number | undefined;
    ice_enable_var: number | undefined;
    local_candidate_types_allowed: number | undefined;
}
export interface SteamNetworkingP2PSDRRoutingSummary {
    initial_ping: number | undefined;
    initial_ping_front_local: number | undefined;
    initial_ping_front_remote: number | undefined;
    initial_score: number | undefined;
    initial_pop_local: number | undefined;
    initial_pop_remote: number | undefined;
    best_ping: number | undefined;
    best_ping_front_local: number | undefined;
    best_ping_front_remote: number | undefined;
    best_score: number | undefined;
    best_pop_local: number | undefined;
    best_pop_remote: number | undefined;
    best_time: number | undefined;
    negotiation_ms: number | undefined;
    selected_seconds: number | undefined;
}
export interface SteamDatagramP2PRoutingSummary {
    ice: SteamNetworkingICESessionSummary | undefined;
    sdr: SteamNetworkingP2PSDRRoutingSummary | undefined;
}
export interface CGameNetworkingUI_ConnectionState extends JsPbMessage {
    connection_key(): string;
    appid(): number;
    connection_id_local(): number;
    identity_local(): string;
    identity_remote(): string;
    connection_state(): number;
    start_time(): number;
    close_time(): number;
    close_reason(): number;
    close_message(): string;
    status_loc_token(): string;
    transport_kind(): number;
    sdrpopid_local(): string;
    sdrpopid_remote(): string;
    address_remote(): string;
    p2p_routing(): SteamDatagramP2PRoutingSummary;
    ping_interior(): number;
    ping_remote_front(): number;
    ping_default_internet_route(): number;
    e2e_quality_local(): SteamDatagramConnectionQuality;
    e2e_quality_remote(): SteamDatagramConnectionQuality;
    e2e_quality_remote_instantaneous_time(): string;
    e2e_quality_remote_lifetime_time(): string;
    front_quality_local(): SteamDatagramConnectionQuality;
    front_quality_remote(): SteamDatagramConnectionQuality;
    front_quality_remote_instantaneous_time(): string;
    front_quality_remote_lifetime_time(): string;
}
export interface NetworkDevice_Wireless {
    aps: WirelessAP[];
    /**
     * @remarks Not present if wired.
     * @todo enum
     */
    esecurity_supported?: number;
}
export interface WirelessAP {
    esecurity: EWirelessSecurityFlags;
    estrength: EWirelessEndpointStrength;
    id: number;
    is_active: boolean;
    is_autoconnect: boolean;
    password: string;
    ssid: string;
    strength_raw: number;
    user_name?: string;
}
export declare enum EWirelessSecurityFlags {
    None = 0,
    StaticWep = 1,
    DynamicWep = 2,
    Wpa = 4,
    WpaEnterprise = 8,
    Wpa2 = 16,
    Wpa2Enterprise = 32,
    /**
     * Special value to indicate that this platform does not support
     * the security methods required to connect to an access point
     */
    Unsupported = 32768
}
export interface NetworkDevice_Wired {
    friendly_name: string;
    is_cable_present: boolean;
    speed_mbit: number;
}
export interface NetworkDevice {
    estate: ENetworkDeviceState;
    etype: ENetworkDeviceType;
    id: number;
    ipv4: {
        addresses: NetworkDeviceIPv4Address[];
    };
    ipv6: {
        addresses: NetworkDeviceIPv6Address[];
    };
    mac: string;
    product: string;
    vendor: string;
    /**
     * @remarks Present only if wired.
     */
    wired?: NetworkDevice_Wired;
    /**
     * @remarks Present even if wired.
     */
    wireless: NetworkDevice_Wireless;
}
export interface NetworkDeviceIPv4Address {
    ip: number;
    netmask: number;
}
export interface NetworkDeviceIPv6Address {
    ip: string;
}
export interface NetworkDeviceIP {
    dns_ip: number[];
    gateway_ip: number;
    is_default_route: boolean;
    is_dhcp_enabled: boolean;
    is_enabled: boolean;
}
export declare enum ENetworkDeviceState {
    NotPresent = 0,
    Failed = 1,
    Disconnected = 2,
    Disconnecting = 3,
    Connecting = 4,
    Connected = 5,
    Retrying = 6
}
export declare enum ENetworkDeviceType {
    Unknown = 0,
    Wired = 1,
    Wireless = 2,
    Virtual = 3
}
export declare enum EWirelessEndpointStrength {
    None = 0,
    Weak = 1,
    Ok = 2,
    Good = 3,
    Excellent = 4
}
export {};
