/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (https://www.swig.org).
 * Version 4.2.1
 *
 * Do not make changes to this file unless you know what you are doing - modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

#ifndef SWIG_dittoffi_WRAP_H_
#define SWIG_dittoffi_WRAP_H_

class SwigDirector_Retainable : public Retainable, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_Retainable(JNIEnv *jenv);
    virtual ~SwigDirector_Retainable();
    virtual void java_retain();
    virtual void java_release();
public:
    bool swig_overrides(int n) {
      return (n < 2 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<2> swig_override;
};

class SwigDirector_LoggerCb : public LoggerCb, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_LoggerCb(JNIEnv *jenv);
    virtual ~SwigDirector_LoggerCb();
    virtual void ffiCustomLog(CLogLevel_t arg0,char const *arg1);
public:
    bool swig_overrides(int n) {
      return (n < 1 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<1> swig_override;
};

class SwigDirector_RetainableContinuation : public RetainableContinuation, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_RetainableContinuation(JNIEnv *jenv);
    virtual ~SwigDirector_RetainableContinuation();
    virtual void java_retain();
    virtual void java_release();
    virtual void invoke(dittoffi_result_uint64_t result);
public:
    bool swig_overrides(int n) {
      return (n < 3 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<3> swig_override;
};

class SwigDirector_TransactionCompletionContinuation : public TransactionCompletionContinuation, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_TransactionCompletionContinuation(JNIEnv *jenv);
    virtual ~SwigDirector_TransactionCompletionContinuation();
    virtual void java_retain();
    virtual void java_release();
    virtual void invoke(dittoffi_result_dittoffi_transaction_completion_action_t result);
public:
    bool swig_overrides(int n) {
      return (n < 3 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<3> swig_override;
};

class SwigDirector_TransactionExecuteContinuation : public TransactionExecuteContinuation, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_TransactionExecuteContinuation(JNIEnv *jenv);
    virtual ~SwigDirector_TransactionExecuteContinuation();
    virtual void java_retain();
    virtual void java_release();
    virtual void invoke(dittoffi_result_dittoffi_query_result_ptr_t result);
public:
    bool swig_overrides(int n) {
      return (n < 3 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<3> swig_override;
};

class SwigDirector_BeginTransactionContinuation : public BeginTransactionContinuation, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_BeginTransactionContinuation(JNIEnv *jenv);
    virtual ~SwigDirector_BeginTransactionContinuation();
    virtual void java_retain();
    virtual void java_release();
    virtual void invoke(dittoffi_result_dittoffi_transaction_ptr_t result);
public:
    bool swig_overrides(int n) {
      return (n < 3 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<3> swig_override;
};

class SwigDirector_WifiAwareRust : public WifiAwareRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_WifiAwareRust(JNIEnv *jenv);
    virtual ~SwigDirector_WifiAwareRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void clientStartSearching(char const *hashed_app_name,char const *local_announce);
    virtual void clientStopSearching();
    virtual void clientCreateNetwork(char const *announce);
    virtual void clientUpdatePeer(char const *announce,ConnectState_t state);
    virtual void serverStartAdvertising(char const *announce,char const *hashed_app_name,uint16_t service_port);
    virtual void serverStopAdvertising();
    virtual void serverUpdatePeer(char const *announce,ConnectState_t state);
    virtual void updateParameterU64(dittoffi_wifi_aware_system_parameter_u64 parameter,uint64_t value);
    virtual void addWifiAwareTransport(CDitto *ditto);
    virtual void removeWifiAwareTransport();
    virtual void clientPeerAppeared(char const *announce);
    virtual void clientPeerDisappeared(char const *announce);
    virtual void clientScanningStateChanged(OnlineState_t state,TransportCondition_t result);
    virtual void clientNetworkDidCreate(char const *announce,char const *hostname,uint16_t port);
    virtual void clientNetworkDidNotCreate(char const *announce);
    virtual void serverAdvertisingStateChanged(OnlineState_t state,TransportCondition_t result);
    virtual void serverNetworkScopeIdAdded(uint32_t scope_id);
    virtual void serverNetworkScopeIdRemoved(uint32_t scope_id);
    virtual void goOnlineRequest();
    virtual void goOfflineRequest();
public:
    bool swig_overrides(int n) {
      return (n < 22 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<22> swig_override;
};

class SwigDirector_BluetoothLeRadioRust : public BluetoothLeRadioRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_BluetoothLeRadioRust(JNIEnv *jenv);
    virtual ~SwigDirector_BluetoothLeRadioRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void connectPeripheral(char const peripheralUuid[],size_t uuidLen);
    virtual void disconnectPeripheral(char const peripheralUuid[],size_t uuidLen);
    virtual OnlineState_t getAdvertisingState();
    virtual OnlineState_t getScanningState();
    virtual SendResult_t notifyToCentral(BleDataType_t sendType,char const centralUuid[],size_t uuidLen,char const data[],size_t len);
    virtual void startAdvertising(char const serviceUuid[],size_t uuidLen,char *localName);
    virtual void startScanning(char const serviceUuid[],size_t uuidLen,char *announce);
    virtual void stopAdvertising();
    virtual void stopScanning();
    virtual SendResult_t writeToPeripheral(BleDataType_t sendType,char const peripheralUuid[],size_t uuidLen,char const data[],size_t len);
    virtual bool appIsInForeground();
    virtual int readL2capFromPeripheral(char const peripheralUuid[],size_t uuidLen,slice_mut_uint8_t data);
    virtual int sendL2capToPeripheral(char const peripheralUuid[],size_t uuidLen,char const data[],size_t len);
    virtual int readL2capFromCentral(char const centralUuid[],size_t uuidLen,slice_mut_uint8_t data);
    virtual int sendL2capToCentral(char const centralUuid[],size_t uuidLen,char const data[],size_t len);
    virtual void addBleTransport(CDitto *ditto);
    virtual void dropBleTransport();
    virtual void advertisementHeard(char const peripheralUuid[],size_t uuidLen,char const manufacturerData[],size_t manufacturerDataLen,bool manufacturerDataIncludesId,char *name,float rssi);
    virtual void connectionStateChanged(char const peripheralUuid[],size_t uuidLen,ConnectState_t state,bool l2cap_available,int mtu);
    virtual void peripheralMtuUpdated(char const uuid[],size_t uuidLen,int mtu);
    virtual void receivedFromPeripheral(char const peripheralUuid[],size_t uuidLen,BleDataType_t dataType,char const data[],size_t len);
    virtual void scanningStateChanged(OnlineState_t state,TransportCondition_t result);
    virtual void peripheralReadyToSend(char const uuid[],size_t uuidLen);
    virtual void peripheralL2capReadyToSend(char const uuid[],size_t uuidLen);
    virtual void peripheralL2capDataAvailable(char const uuid[],size_t uuidLen);
    virtual void advertisingStateChanged(OnlineState_t state,TransportCondition_t result);
    virtual void centralMtuUpdated(char const uuid[],size_t uuidLen,int mtu);
    virtual void receivedFromCentral(char const centralUuid[],size_t uuidLen,BleDataType_t dataType,char const data[],size_t len);
    virtual void centralFinishedConnecting(char const centralUuid[],size_t uuidLen,char const data[],size_t len,bool l2capAvailable,int mtu);
    virtual void centralUnsubscribed(char const centralUuid[],size_t uuidLen);
    virtual void centralReadyToSend(char const uuid[],size_t uuidLen);
    virtual void centralL2capReadyToSend(char const uuid[],size_t uuidLen);
    virtual void centralL2capDataAvailable(char const uuid[],size_t uuidLen);
public:
    bool swig_overrides(int n) {
      return (n < 35 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<35> swig_override;
};

class SwigDirector_StatusRust : public StatusRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_StatusRust(JNIEnv *jenv);
    virtual ~SwigDirector_StatusRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void transportConditionDidChange(ConditionSource source,TransportCondition_t condition);
    virtual void submit(CDitto *ditto);
    virtual void shutdown(CDitto *ditto);
public:
    bool swig_overrides(int n) {
      return (n < 5 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<5> swig_override;
};

class SwigDirector_LoginProviderRust : public LoginProviderRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_LoginProviderRust(JNIEnv *jenv);
    virtual ~SwigDirector_LoginProviderRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void authenticationExpiring(unsigned int time_remaining);
    virtual void submit();
public:
    bool swig_overrides(int n) {
      return (n < 4 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<4> swig_override;
};

class SwigDirector_AuthenticationStatusHandlerRust : public AuthenticationStatusHandlerRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_AuthenticationStatusHandlerRust(JNIEnv *jenv);
    virtual ~SwigDirector_AuthenticationStatusHandlerRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void authenticationStatusUpdated(dittoffi_authentication_status_t *ffi_auth_status);
    virtual void submit(CDitto *ditto);
public:
    bool swig_overrides(int n) {
      return (n < 4 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<4> swig_override;
};

class SwigDirector_DiskUsageObserverRust : public DiskUsageObserverRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_DiskUsageObserverRust(JNIEnv *jenv);
    virtual ~SwigDirector_DiskUsageObserverRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void diskUsageUpdated(slice_ref_uint8_t diskUsageBytes);
    virtual void subscribe(CDitto *ditto);
    virtual void stop();
public:
    bool swig_overrides(int n) {
      return (n < 5 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<5> swig_override;
};

class SwigDirector_AttachmentObserverRust : public AttachmentObserverRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_AttachmentObserverRust(JNIEnv *jenv);
    virtual ~SwigDirector_AttachmentObserverRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void completedEventHandler(AttachmentHandle const *ah);
    virtual void progressEventHandler(uint64_t downloadedBytes,uint64_t totalBytes);
    virtual void deletedEventHandler();
    virtual CancelTokenResult_t resolve_attachment(CDitto *ditto_raw,unsigned char const *id_ptr,uintptr_t id_len);
public:
    bool swig_overrides(int n) {
      return (n < 6 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<6> swig_override;
};

class SwigDirector_ConnectionRequestHandlerRust : public ConnectionRequestHandlerRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_ConnectionRequestHandlerRust(JNIEnv *jenv);
    virtual ~SwigDirector_ConnectionRequestHandlerRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void eventHandler(dittoffi_connection_request_t *connection_request);
    virtual void registerConnectionRequestHandler(CDitto *ditto_raw,ConnectionRequestHandlerRust *handler);
public:
    bool swig_overrides(int n) {
      return (n < 4 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<4> swig_override;
};

class SwigDirector_CrashReporterFfi : public CrashReporterFfi, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_CrashReporterFfi(JNIEnv *jenv);
    virtual ~SwigDirector_CrashReporterFfi();
    virtual void java_retain();
    virtual void java_release();
    virtual void reportCrashKotlinImplementation(dittoffi_panic_t *panic);
    virtual void overrideCrashReporter(CDitto *ditto_raw);
public:
    bool swig_overrides(int n) {
      return (n < 4 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<4> swig_override;
};

class SwigDirector_LiveQueryHandlerRust : public LiveQueryHandlerRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_LiveQueryHandlerRust(JNIEnv *jenv);
    virtual ~SwigDirector_LiveQueryHandlerRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void eventHandler(c_cb_params_t c_cb_params);
    virtual I64Result_t registerLiveQuery(CDitto *ditto_raw,char const *coll_name,char const *query,unsigned char const *query_args_cbor,uintptr_t query_args_cbor_len,COrderByParam_t const *order_by,unsigned int order_by_len,int limit,unsigned int offset,LiveQueryAvailability_t lq_availability);
    virtual int startLiveQuery(CDitto *ditto_raw,int64_t id);
public:
    bool swig_overrides(int n) {
      return (n < 5 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<5> swig_override;
};

class SwigDirector_PresenceRust : public PresenceRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_PresenceRust(JNIEnv *jenv,CDitto_t *ditto);
    virtual ~SwigDirector_PresenceRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void v1Callback(char const *const json);
    virtual void v2Callback(char const *const json);
    virtual void v3Callback(char const *const json);
    virtual void register_v1();
    virtual void register_v2();
    virtual void register_v3();
    virtual void requestV1Update();
    virtual void requestV2Update();
    virtual void requestV3Update();
public:
    bool swig_overrides(int n) {
      return (n < 11 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<11> swig_override;
};

class SwigDirector_StoreObserverHandlerRust : public StoreObserverHandlerRust, public Swig::Director {

public:
    void swig_connect_director(JNIEnv *jenv, jobject jself, jclass jcls, bool swig_mem_own, bool weak_global);
    SwigDirector_StoreObserverHandlerRust(JNIEnv *jenv);
    virtual ~SwigDirector_StoreObserverHandlerRust();
    virtual void java_retain();
    virtual void java_release();
    virtual void eventHandler(ChangeHandlerWithQueryResult_t c_cb_params);
    virtual dittoffi_result_int64_t registerStoreObserver(CDitto *ditto_raw,char const *query,unsigned char const *query_args_cbor,uintptr_t query_args_cbor_len,LiveQueryAvailability_t lq_availability);
    virtual int startLiveQuery(CDitto *ditto_raw,int64_t id);
public:
    bool swig_overrides(int n) {
      return (n < 5 ? swig_override[n] : false);
    }
protected:
    Swig::BoolArray<5> swig_override;
};


#endif
