#include <stdarg.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
typedef void webui_protocol_t;
typedef void webui_streaming_session_t;
typedef void webui_streaming_step_t;
typedef uint32_t webui_boundary_mode_t;
typedef uint32_t webui_boundary_key_type_t;
#define WEBUI_BOUNDARY_MODE_FINAL 0
#define WEBUI_BOUNDARY_MODE_UPDATABLE 1
#define WEBUI_BOUNDARY_KEY_NONE 0
#define WEBUI_BOUNDARY_KEY_STRING 1
#define WEBUI_BOUNDARY_KEY_NUMBER 2
#ifdef __cplusplus
extern "C" {
#endif
const char *webui_last_error(void);
void *webui_handler_create(void);
void *webui_handler_create_with_plugin(const char *plugin_id);
void webui_handler_destroy(void *handler_ptr);
webui_protocol_t *webui_protocol_create(const uint8_t *protocol_data, uintptr_t protocol_len);
void webui_protocol_destroy(webui_protocol_t *protocol_ptr);
void webui_handler_set_nonce(void *handler_ptr, const char *nonce);
char *webui_handler_render(void *handler_ptr,
const webui_protocol_t *protocol_ptr,
const char *data_json,
const char *entry_id,
const char *request_path);
char *webui_protocol_render_partial(const webui_protocol_t *protocol_ptr,
const char *state_json,
const char *entry_id,
const char *request_path,
const char *inventory_hex);
char *webui_protocol_render_component_templates(const webui_protocol_t *protocol_ptr,
const char *component_tags_json,
const char *inventory_hex);
void webui_free(char *string_ptr);
char *webui_protocol_tokens(const webui_protocol_t *protocol_ptr);
webui_streaming_session_t *webui_streaming_session_create(void *handler_ptr,
const webui_protocol_t *protocol_ptr,
const char *entry_id,
const char *request_path);
void webui_streaming_session_destroy(webui_streaming_session_t *session_ptr);
webui_streaming_step_t *webui_streaming_session_start(webui_streaming_session_t *session_ptr,
const char *state_json);
webui_streaming_step_t *webui_streaming_session_resume(webui_streaming_session_t *session_ptr,
uint32_t instance_id,
const char *state_json,
webui_boundary_mode_t mode);
webui_streaming_step_t *webui_streaming_session_advance(webui_streaming_session_t *session_ptr);
char *webui_streaming_session_update(webui_streaming_session_t *session_ptr,
uint32_t instance_id,
const char *patch_json,
uintptr_t *out_len);
void webui_streaming_step_destroy(webui_streaming_step_t *step_ptr);
const uint8_t *webui_streaming_step_bytes(const webui_streaming_step_t *step_ptr,
uintptr_t *out_len);
bool webui_streaming_step_done(const webui_streaming_step_t *step_ptr);
bool webui_streaming_step_has_boundary(const webui_streaming_step_t *step_ptr);
bool webui_streaming_step_boundary_instance_id(const webui_streaming_step_t *step_ptr,
uint32_t *out_instance_id);
bool webui_streaming_step_boundary_declaration_id(const webui_streaming_step_t *step_ptr,
uint32_t *out_declaration_id);
const char *webui_streaming_step_boundary_owner(const webui_streaming_step_t *step_ptr,
uintptr_t *out_len);
const char *webui_streaming_step_boundary_name(const webui_streaming_step_t *step_ptr,
uintptr_t *out_len);
bool webui_streaming_step_boundary_key_type(const webui_streaming_step_t *step_ptr,
webui_boundary_key_type_t *out_key_type);
const char *webui_streaming_step_boundary_key_string(const webui_streaming_step_t *step_ptr,
uintptr_t *out_len);
bool webui_streaming_step_boundary_key_number(const webui_streaming_step_t *step_ptr,
double *out_value);
#ifdef __cplusplus
} #endif