#include <QtCore>
#include <QString>
#include <QJsonObject>
#include <QHostAddress>
#include "../client/daemon/interfaceconfig.h"

class IpcInterface
{
    SLOT( int createPrivilegedProcess() ); // return local pid

    // Route functions
    SLOT( int routeAddList(const QString &gw, const QStringList &ips) );
    SLOT( bool clearSavedRoutes() );
    SLOT( bool routeDeleteList(const QString &gw, const QStringList &ip) );
    SLOT( void flushDns() );
    SLOT( void resetIpStack() );

    SLOT( bool checkAndInstallDriver() );
    SLOT( QStringList getTapList() );

    SLOT( void cleanUp() );
    SLOT( void setLogsEnabled(bool enabled) );
    SLOT( void clearLogs() );

    SLOT( bool createTun(const QString &dev, const QString &subnet) );
    SLOT( bool deleteTun(const QString &dev) );

    SLOT( void StartRoutingIpv6() );
    SLOT( void StopRoutingIpv6() );

    SLOT( bool disableKillSwitch() );
    SLOT( bool enablePeerTraffic( const QJsonObject &configStr) );
    SLOT( bool enableKillSwitch( const QJsonObject &excludeAddr, int vpnAdapterIndex) );
    SLOT( bool updateResolvers(const QString& ifname, const QList<QHostAddress>& resolvers) );
};

