/**
* Exposes the WireGuard interface on top of the Generic Protocol layer
* @module
*/
///
import { EventEmitter } from 'events';
import { RawNetlinkSocketOptions } from '../raw';
import { NetlinkSocketOptions, RequestOptions } from '../netlink';
import { Commands, Device } from './structs';
import { GenericNetlinkSocketOptions, GenericNetlinkSocket, GenericNetlinkSendOptions } from '../genl/genl';
import { genl } from '..';
export declare const WG_GENL_NAME = "wireguard";
export declare const WG_GENL_VERSION = 1;
export declare const WG_KEY_LEN = 32;
export interface WireGuardSocketOptions {
}
export interface WireGuardSendOptions extends GenericNetlinkSendOptions {
}
export declare class WireGuardSocket extends EventEmitter {
readonly socket: GenericNetlinkSocket;
private readonly familyId;
constructor(socket: GenericNetlinkSocket, familyData: genl.Message, options?: WireGuardSocketOptions);
private _receive;
send(cmd: Commands, msg: Device, options?: WireGuardSendOptions): number;
request(cmd: Commands, msg?: Device, options?: WireGuardSendOptions & RequestOptions): Promise;
/** gets a wireguard interface */
getDevice(iface: number | string, options?: WireGuardSendOptions & RequestOptions): Promise;
/** sets a wireguard interface */
setDevice(iface: number | string, msg: Device, options?: WireGuardSendOptions & RequestOptions): Promise;
}
export declare function createWireGuard(options?: WireGuardSocketOptions & GenericNetlinkSocketOptions & NetlinkSocketOptions & RawNetlinkSocketOptions): Promise;