package chrome;
import js.html.ArrayBuffer;
import chrome.Events;
@:enum abstract ConnectionState(String) from String to String {
var connected = "connected";
var failure = "failure";
}
@:require(chrome_os)
@:native("chrome.vpnProvider")
extern class VpnProvider {
static function createConfig( name : String, callback : String->Void ) : Void;
static function destroyConfig( id : String, ?callback : Void->Void ) : Void;
static function setParameters( parameters : {address:String,?broadcastAddress:String,?mtu:String,exclusionList:Array,inclusionList:Array,?domainSearch:Array,dnsServers:Array}, callback : Void->Void ) : Void;
static function sendPacket( data : ArrayBuffer, ?callback : Void->Void ) : Void;
static function notifyConnectionStateChanged( state : ConnectionState, ?callback : Void->Void ) : Void;
static var onPlatformMessage(default,never) : EventString->String->Void>;
static var onPacketReceived(default,never) : EventVoid>;
static var onConfigRemoved(default,never) : EventVoid>;
static var onConfigCreated(default,never) : EventString->Dynamic->Void>;
static var onUIEvent(default,never) : Event?String->Void>;
}