#ifndef RKT_PROTOCOL_H
#define RKT_PROTOCOL_H

#define CMD_HANDLE_IS_VALID 1
#define CMD_QUIT            2
#define CMD_CONTEXT_NEW     3       // arguments: boilerplate_js: string, has_cert: bool, cert_pem: string -> context: int
#define CMD_CREATE_WV       4       // arguments: context: int, parent: int -> wv: int
#define CMD_CLOSE_WV        5       // arguments: wv: int -> void
#define CMD_SET_URL         6       // arguments: wv: int, url: string -> result_t: int
#define CMD_SET_HTML        7       // arguments: wv: int, html: string -> result_t: int
#define CMD_RUN_JS          8       // arguments: wv: int, js: string -> result_t: int
#define CMD_CALL_JS         9       // arguments: wv: int, js: string -> result_t: int
#define CMD_OPEN_DEVTOOLS  10       // arguments: wv: int -> result_t: int
#define CMD_MOVE           11       // arguments: wv: int, x: int, y: int -> result_t: int
#define CMD_RESIZE         12       // arguments: wv: int, w: int, h: int -> result_t: int
#define CMD_HIDE           13       // arguments: wv: int -> result_t: int
#define CMD_SHOW           14       // arguments: wv: int -> result_t: int
#define CMD_PRESENT        15       // arguments: wv: int -> result_t: int
#define CMD_MAXIMIZE       16       // arguments: wv: int -> result_t: int
#define CMD_MINIMIZE       17       // arguments: wv: int -> result_t: int
#define CMD_SHOW_NORMAL    18       // arguments: wv: int -> result_t: int
#define CMD_WINDOW_STATE   19       // arguments: wv: int -> window_state_t: int
#define CMD_SET_TITLE      20       // arguments: wv: int, title: string -> result_t: int
#define CMD_CHOOSE_DIR     21       // arguments: wv: int, title: string, base_dir: string -> result_t: int
#define CMD_FILE_OPEN      22       // arguments: wv: int, title: string, base_dir: string, permitted_exts: string -> result_t: int
#define CMD_FILE_SAVE      23       // arguments: wv: int, title: string, base_dir: string, permitted_exts: string -> result_t: int
#define CMD_SET_OU_TOKEN   24       // arguments: wv: int, token: string -> result_t: int
#define CMD_MSG_BOX        25       // arguments: wv: int, title:string, message: string, submessage: string, type:int -> result_t: int
#define CMD_SET_LOGLEVEL   26       // arguments: ll: int
#define CMD_INFO           27       // arguments: none
#define CMD_SET_ICON       28       // arguments: wv: int, icon:string (absolute filename to icon in png/jpg/svg)
#define CMD_CREATE_TRAY       29    // arguments: icon: string (path to icon file), tooltip: string -> tray: int
#define CMD_TRAY_SET_ICON     30    // arguments: tray: int, icon: string -> result_t: int
#define CMD_TRAY_SET_TOOLTIP  31    // arguments: tray: int, tooltip: string -> result_t: int
#define CMD_TRAY_SHOW_MESSAGE 32    // arguments: tray: int, title: string, message: string -> result_t: int
#define CMD_TRAY_SET_MENU     33    // arguments: tray: int, menu_json: string -> result_t: int
#define CMD_TRAY_CLEAR_MENU   34    // arguments: tray: int


#define CMD_NOOP        33621
#define RESULT_QUIT     36379
#define CMD_ALIVE_QUIT  -38383


#endif // RKT_PROTOCOL_H
