// Generated manually and inspired by libwaku.h // Header file for Logos Messaging API (LMAPI) library #pragma once #ifndef __liblogosdelivery__ #define __liblogosdelivery__ #include #include // The possible returned values for the functions that return int #define RET_OK 0 #define RET_ERR 1 #define RET_MISSING_CALLBACK 2 #ifdef __cplusplus extern "C" { #endif typedef void (*FFICallBack)(int callerRet, const char *msg, size_t len, void *userData); // Creates a new instance of the node from the given configuration JSON. // Returns a pointer to the Context needed by the rest of the API functions. // Configuration should be in JSON format using WakuNodeConf field names. // Field names match Nim identifiers from WakuNodeConf (camelCase). // Example: {"mode": "Core", "clusterId": 42, "relay": true} void *logosdelivery_create_node( const char *configJson, FFICallBack callback, void *userData); // Starts the node. int logosdelivery_start_node(void *ctx, FFICallBack callback, void *userData); // Stops the node. int logosdelivery_stop_node(void *ctx, FFICallBack callback, void *userData); // Destroys an instance of a node created with logosdelivery_create_node int logosdelivery_destroy(void *ctx, FFICallBack callback, void *userData); // Subscribe to a content topic. // contentTopic: string representing the content topic (e.g., "/myapp/1/chat/proto") int logosdelivery_subscribe(void *ctx, FFICallBack callback, void *userData, const char *contentTopic); // Unsubscribe from a content topic. int logosdelivery_unsubscribe(void *ctx, FFICallBack callback, void *userData, const char *contentTopic); // Send a message. // messageJson: JSON string with the following structure: // { // "contentTopic": "/myapp/1/chat/proto", // "payload": "base64-encoded-payload", // "ephemeral": false // } // Returns a request ID that can be used to track the message delivery. int logosdelivery_send(void *ctx, FFICallBack callback, void *userData, const char *messageJson); // Sets a callback that will be invoked whenever an event occurs. // It is crucial that the passed callback is fast, non-blocking and potentially thread-safe. void logosdelivery_set_event_callback(void *ctx, FFICallBack callback, void *userData); int logosdelivery_get_available_node_info_ids(void *ctx, FFICallBack callback, void *userData); int logosdelivery_get_node_info(void *ctx, FFICallBack callback, void *userData, const char *nodeInfoId); int logosdelivery_get_available_configs(void *ctx, FFICallBack callback, void *userData); int logosdelivery_init(void); // RLN fetcher: C++ implements this, Nim calls it to get roots/proofs from RLN module. // method: "get_valid_roots" or "get_merkle_proofs" // params: JSON string with method-specific parameters // callback + callbackData: Nim's callback to receive the result // fetcherData: opaque pointer passed during registration (typically the C++ plugin instance) typedef int (*RlnFetcherFunc)(const char *method, const char *params, FFICallBack callback, void *callbackData, void *fetcherData); // Register the RLN fetcher callback (called by C++ delivery module at startup). void logosdelivery_set_rln_fetcher(void *ctx, RlnFetcherFunc fetcher, void *fetcherData); // Set RLN configuration: config account ID and leaf index for this node. int logosdelivery_set_rln_config(void *ctx, const char *configAccountId, int leafIndex); #ifdef __cplusplus } #endif #endif /* __liblogosdelivery__ */