import { IWifiDevice } from '../Network/INetworkInfo';
import { WifiEvent } from './IWifiEvent';
export default interface IWifi {
    isClientEnabled(): Promise<boolean>;
    enableClient(): Promise<void>;
    isAPEnabled(): Promise<boolean>;
    enableAP(ssid: string, password: string): Promise<void>;
    disable(): Promise<void>;
    getConnectedTo(): Promise<IWifiDevice | null>;
    connect(ssid: string, password?: string, options?: IWifiConnectOptions): Promise<void>;
    disconnect(): Promise<void>;
    getCountry(): Promise<string | null>;
    setCountry(countryCode: string): Promise<void>;
    scanDevices(): Promise<IScannedDevice[]>;
    on(event: WifiEvent, listener: (...args: []) => void): void;
    once(event: WifiEvent, listener: (...args: []) => void): void;
    removeListener(event: WifiEvent, listener: (...args: []) => void): void;
    removeAllListeners(event?: WifiEvent): void;
}
/**
 * Interface representing a scanned Wi-Fi device.
 */
export interface IScannedDevice {
    /** SSID of the Wi-Fi network */
    ssid: string;
    /** If Wi-Fi SSID is encrypted */
    encrypted: boolean;
}
export type WifiEncryptionType = 'OPEN' | 'WEP' | 'WPA2' | 'WPA2_WPA_MIXED' | 'WPA3' | '802.1X_EAP';
export type EAPMethod = 'PEAP' | 'TLS' | 'TTLS';
export type EAPPhase2Auth = 'PAP' | 'MSCHAP' | 'MSCHAPV2' | 'GTC' | 'CHAP';
/**
 * Options for connecting to a Wi-Fi network.
 */
export interface IWifiConnectOptions<T extends IEAPConfig = IEAPConfig> {
    /** The type of security/encryption used by the network. */
    securityType?: WifiEncryptionType;
    /** Whether the network is hidden. */
    hidden?: boolean;
    /** Authentication details for networks that require EAP. */
    eap?: T;
}
interface IEAPBase {
    /** Username or identity for authentication. */
    identity: string;
    /** Password or passphrase for authentication. */
    identityPassword?: string;
    /** Optional domain for server certificate validation. */
    domain?: string;
}
interface IEAP_PEAP extends IEAPBase {
    /** The type of EAP authentication to use. */
    method: 'PEAP';
    /** Anonymous/outer identity used for initial authentication before the encrypted tunnel is established. */
    anonymousIdentity?: string;
    /** Secondary authentication method.*/
    phase2Auth?: EAPPhase2Auth;
    /** Whether to use a CA certificate for authentication. */
    useCACert: boolean;
    /** CA certificate in PEM format */
    caCertificate?: string;
}
interface IEAP_TTLS extends IEAPBase {
    /** The type of EAP authentication to use. */
    method: 'TTLS';
    /** Anonymous/outer identity used for initial authentication before the encrypted tunnel is established. */
    anonymousIdentity?: string;
    /** Secondary authentication method. */
    phase2Auth?: EAPPhase2Auth;
    /** Whether to use a CA certificate for authentication. */
    useCACert: boolean;
    /** CA certificate in PEM format */
    caCertificate?: string;
}
interface IEAP_TLS extends IEAPBase {
    /** The type of EAP authentication to use. */
    method: 'TLS';
    /** CA certificate in PEM format, if required. */
    caCertificate: string;
    /** Client certificate in PEM format, if required. */
    clientCertificate: string;
    /** Private key in PEM format, if required. */
    privateKey: string;
    /** Password for the private key, if it's encrypted. */
    privateKeyPassword?: string;
}
export type IEAPConfig = IEAP_PEAP | IEAP_TTLS | IEAP_TLS;
export declare const VIWifiConnectOptions: {
    hidden: string;
    securityType: string;
    eap: {
        method: string;
        identity: string;
        identityPassword: string;
        anonymousIdentity: string;
        domain: string;
        phase2Auth: string;
        useCACert: string;
        caCertificate: string;
        clientCertificate: string;
        privateKey: string;
        privateKeyPassword: string;
    };
};
export {};
