// @generated by flare-im-core-sdk-xtask
// Source: bindings/contract/*.json

#![allow(dead_code)]

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ApiOperation {
    pub id: &'static str,
    pub module: &'static str,
    pub core: Option<&'static str>,
    pub c_symbol: Option<&'static str>,
    pub c_dispatch_op: Option<&'static str>,
    pub tauri: Option<&'static str>,
    pub dev_only: bool,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct MessageBuildCatalogEntry {
    pub op: &'static str,
    pub method: &'static str,
    pub stability: &'static str,
    pub source_operation: &'static str,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct EventDescriptor {
    pub id: &'static str,
    pub c_code: i32,
    pub c_code_name: &'static str,
    pub tauri: Option<&'static str>,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct ErrorCode {
    pub name: &'static str,
    pub code: i32,
    pub meaning: &'static str,
}

pub const BINDING_CONTRACT_VERSION: &str = "flare-im-ffi/v1";
pub const API_CONTRACT_VERSION: &str = "flare-im-api/v1";
pub const EVENT_CONTRACT_VERSION: &str = "flare-im-events/v1";
pub const ERROR_CONTRACT_VERSION: &str = "flare-im-errors/v1";

pub const API_OPERATIONS: &[ApiOperation] = &[
    ApiOperation {
        id: "sdk.create",
        module: "session",
        core: Some("IMClient::new"),
        c_symbol: Some("flare_sdk_create"),
        c_dispatch_op: None,
        tauri: Some("SdkState::new"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.dispose",
        module: "session",
        core: Some("registry release"),
        c_symbol: Some("flare_sdk_release"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.hard_reset",
        module: "session",
        core: Some("registry hard reset"),
        c_symbol: Some("flare_sdk_hard_reset"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.init",
        module: "session",
        core: Some("IMClient::init"),
        c_symbol: Some("flare_sdk_init"),
        c_dispatch_op: None,
        tauri: Some("sdk_init"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.uninit",
        module: "session",
        core: Some("IMClient::uninit"),
        c_symbol: Some("flare_sdk_uninit"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.login",
        module: "session",
        core: Some("IMClient::login"),
        c_symbol: Some("flare_sdk_login"),
        c_dispatch_op: None,
        tauri: Some("sdk_login"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.prepare",
        module: "session",
        core: Some("IMClient::prepare"),
        c_symbol: Some("flare_sdk_prepare"),
        c_dispatch_op: None,
        tauri: Some("sdk_prepare"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.connect",
        module: "session",
        core: Some("IMClient::connect"),
        c_symbol: Some("flare_sdk_connect"),
        c_dispatch_op: None,
        tauri: Some("sdk_connect"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.logout",
        module: "session",
        core: Some("IMClient::logout"),
        c_symbol: Some("flare_sdk_logout"),
        c_dispatch_op: None,
        tauri: Some("sdk_logout"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.update_access_token",
        module: "session",
        core: Some("IMClient::update_access_token"),
        c_symbol: Some("flare_sdk_update_access_token"),
        c_dispatch_op: None,
        tauri: Some("sdk_update_access_token"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.set_heartbeat_app_state",
        module: "session",
        core: Some("IMClient::set_heartbeat_app_state"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.set_heartbeat_nat_timeout",
        module: "session",
        core: Some("IMClient::set_heartbeat_nat_timeout"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.heartbeat_effective_interval",
        module: "session",
        core: Some("IMClient::heartbeat_effective_interval"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "connection.notify_network_change",
        module: "session",
        core: Some("IMClient::notify_network_change"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "diagnostics.sdk_version",
        module: "session",
        core: Some("crate version"),
        c_symbol: Some("flare_sdk_version"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "diagnostics.ffi_contract_version",
        module: "session",
        core: Some("bindings/c contract"),
        c_symbol: Some("flare_sdk_ffi_contract_version"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "diagnostics.data_root",
        module: "session",
        core: Some("IMClient::data_root"),
        c_symbol: Some("flare_sdk_data_root"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "diagnostics.runtime_health",
        module: "session",
        core: Some("IMClient::runtime_health_snapshot"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.is_connected",
        module: "session",
        core: Some("IMClient::is_connected/state"),
        c_symbol: Some("flare_sdk_is_connected"),
        c_dispatch_op: None,
        tauri: Some("sdk_is_connected"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.session_active",
        module: "session",
        core: Some("IMClient::session_active_sync"),
        c_symbol: Some("flare_sdk_session_active"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.current_user_id",
        module: "session",
        core: Some("IMClient::current_user_id"),
        c_symbol: Some("flare_sdk_current_user_id"),
        c_dispatch_op: None,
        tauri: Some("sdk_current_user_id"),
        dev_only: false,
    },
    ApiOperation {
        id: "sdk.generate_core_token",
        module: "session",
        core: Some("IMClient::generate_core_token"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "connection.get_state",
        module: "session",
        core: Some("IMClient::state"),
        c_symbol: Some("flare_sdk_state"),
        c_dispatch_op: None,
        tauri: Some("sdk_engine_state"),
        dev_only: false,
    },
    ApiOperation {
        id: "connection.disconnect",
        module: "session",
        core: Some("IMClient::disconnect"),
        c_symbol: Some("flare_sdk_disconnect"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sync.conversation",
        module: "sync",
        core: Some("IMClient::sync_conversation"),
        c_symbol: Some("flare_sdk_sync_conversation"),
        c_dispatch_op: None,
        tauri: Some("sdk_sync_conversation"),
        dev_only: false,
    },
    ApiOperation {
        id: "sync.messages",
        module: "sync",
        core: Some("IMClient::sync_messages"),
        c_symbol: Some("flare_sdk_sync_messages"),
        c_dispatch_op: None,
        tauri: Some("sdk_sync_messages"),
        dev_only: false,
    },
    ApiOperation {
        id: "sync.bootstrap_startup_home",
        module: "sync",
        core: Some("IMClient::bootstrap_startup_home"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "sync.conversation_history_backfill",
        module: "sync",
        core: Some("IMClient::backfill_conversation_history"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "event.subscribe",
        module: "events",
        core: Some("EventBus::subscribe"),
        c_symbol: Some("flare_event_subscribe"),
        c_dispatch_op: None,
        tauri: Some("sdk_login event forwarder"),
        dev_only: false,
    },
    ApiOperation {
        id: "event.subscribe_batch",
        module: "events",
        core: Some("EventBus::subscribe_shared_raw"),
        c_symbol: Some("flare_event_subscribe_batch"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "event.unsubscribe",
        module: "events",
        core: Some("subscription cancel"),
        c_symbol: Some("flare_event_unsubscribe"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "event.unsubscribe_all",
        module: "events",
        core: Some("subscription cancel all"),
        c_symbol: Some("flare_event_unsubscribe_all"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "presence.get",
        module: "presence",
        core: Some("IMClient::get_user_presence"),
        c_symbol: Some("flare_sdk_get_user_presence"),
        c_dispatch_op: None,
        tauri: Some("sdk_get_user_presence"),
        dev_only: false,
    },
    ApiOperation {
        id: "presence.batch_get",
        module: "presence",
        core: Some("IMClient::batch_get_user_presence"),
        c_symbol: Some("flare_sdk_batch_get_user_presence"),
        c_dispatch_op: None,
        tauri: Some("sdk_batch_get_user_presence"),
        dev_only: false,
    },
    ApiOperation {
        id: "presence.subscribe",
        module: "presence",
        core: Some("IMClient::subscribe_user_presence"),
        c_symbol: Some("flare_sdk_subscribe_user_presence"),
        c_dispatch_op: None,
        tauri: Some("sdk_subscribe_user_presence"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_text",
        module: "message_builder",
        core: Some("MessageBuildApi::create_text"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_text"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_quote",
        module: "message_builder",
        core: Some("MessageBuildApi::create_quote"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_quote"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_thread_reply",
        module: "message_builder",
        core: Some("MessageBuildApi::create_thread_reply"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_thread_reply"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_forward",
        module: "message_builder",
        core: Some("MessageBuildApi::create_forward"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_forward"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_image",
        module: "message_builder",
        core: Some("MessageBuildApi::create_image"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_image"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_image_group",
        module: "message_builder",
        core: Some("MessageBuildApi::create_image_group"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_image_group"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_video",
        module: "message_builder",
        core: Some("MessageBuildApi::create_video"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_video"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_audio",
        module: "message_builder",
        core: Some("MessageBuildApi::create_audio"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_audio"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_file",
        module: "message_builder",
        core: Some("MessageBuildApi::create_file"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_file"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_emoji",
        module: "message_builder",
        core: Some("MessageBuildApi::create_emoji"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_emoji"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_location",
        module: "message_builder",
        core: Some("MessageBuildApi::create_location"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_location"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_sticker",
        module: "message_builder",
        core: Some("MessageBuildApi::create_sticker"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_sticker"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_link_card",
        module: "message_builder",
        core: Some("MessageBuildApi::create_link_card"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_link_card"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_card",
        module: "message_builder",
        core: Some("MessageBuildApi::create_card"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_card"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_mini_program",
        module: "message_builder",
        core: Some("MessageBuildApi::create_mini_program"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_mini_program"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_rich_doc",
        module: "message_builder",
        core: Some("MessageBuildApi::create_rich_doc"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_rich_doc"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_system",
        module: "message_builder",
        core: Some("MessageBuildApi::create_system"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_system"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_notification",
        module: "message_builder",
        core: Some("MessageBuildApi::create_notification"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_notification"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_vote",
        module: "message_builder",
        core: Some("MessageBuildApi::create_vote"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_vote"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_task",
        module: "message_builder",
        core: Some("MessageBuildApi::create_task"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_task"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_schedule",
        module: "message_builder",
        core: Some("MessageBuildApi::create_schedule"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_schedule"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_announcement",
        module: "message_builder",
        core: Some("MessageBuildApi::create_announcement"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_announcement"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_custom",
        module: "message_builder",
        core: Some("MessageBuildApi::create_custom"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_custom"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_placeholder",
        module: "message_builder",
        core: Some("MessageBuildApi::create_placeholder"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_placeholder"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message_builder.create_with_content",
        module: "message_builder",
        core: Some("MessageBuildApi::create_with_content"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_with_content"),
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.create_text",
        module: "message",
        core: Some("MessageBuildApi::create_text"),
        c_symbol: Some("flare_message_create_text"),
        c_dispatch_op: None,
        tauri: Some("sdk_message_build_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.send",
        module: "message",
        core: Some("MessageApi::send"),
        c_symbol: Some("flare_message_send"),
        c_dispatch_op: None,
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.send_no_oss",
        module: "message",
        core: Some("MessageApi::send_no_oss"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("send_no_oss"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.recall",
        module: "message",
        core: Some("MessageApi::recall"),
        c_symbol: Some("flare_message_recall"),
        c_dispatch_op: None,
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.edit_text_by_message_id",
        module: "message",
        core: Some("MessageApi::edit_text_by_message_id"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("edit_text_by_message_id"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.delete",
        module: "message",
        core: Some("MessageApi::delete"),
        c_symbol: Some("flare_message_delete"),
        c_dispatch_op: None,
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.delete_for_self",
        module: "message",
        core: Some("MessageApi::delete_for_self"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("delete_for_self"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.delete_for_everyone",
        module: "message",
        core: Some("MessageApi::delete_for_everyone"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("delete_for_everyone"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.mark_read_and_burn",
        module: "message",
        core: Some("MessageApi::mark_read_and_burn"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("mark_read_and_burn"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.typing",
        module: "message",
        core: Some("MessageApi::typing"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("typing"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.add_reaction",
        module: "message",
        core: Some("MessageApi::add_reaction"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("add_reaction"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.remove_reaction",
        module: "message",
        core: Some("MessageApi::remove_reaction"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("remove_reaction"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.pin",
        module: "message",
        core: Some("MessageApi::pin"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("pin"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.unpin",
        module: "message",
        core: Some("MessageApi::unpin"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("unpin"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.pin_by_message_id",
        module: "message",
        core: Some("MessageApi::pin_by_message_id"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("pin_by_message_id"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.unpin_by_message_id",
        module: "message",
        core: Some("MessageApi::unpin_by_message_id"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("unpin_by_message_id"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.mark",
        module: "message",
        core: Some("MessageApi::mark"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("mark"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.mark_with_color",
        module: "message",
        core: Some("MessageApi::mark_with_color"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("mark_with_color"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.unmark",
        module: "message",
        core: Some("MessageApi::unmark"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("unmark"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.mark_by_message_id",
        module: "message",
        core: Some("MessageApi::mark_by_message_id"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("mark_by_message_id"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.unmark_by_message_id",
        module: "message",
        core: Some("MessageApi::unmark_by_message_id"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("unmark_by_message_id"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.get",
        module: "message",
        core: Some("MessageApi::get"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("get"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.get_raw",
        module: "message",
        core: Some("MessageApi::get_raw"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("get_raw"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.list",
        module: "message",
        core: Some("MessageApi::list"),
        c_symbol: Some("flare_message_list"),
        c_dispatch_op: None,
        tauri: Some("sdk_list_messages"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.search",
        module: "message",
        core: Some("MessageApi::search"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("search"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.search_by_query",
        module: "message",
        core: Some("MessageApi::search_by_query"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("search_by_query"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "message.search_in_conversation",
        module: "message",
        core: Some("MessageApi::search_in_conversation"),
        c_symbol: Some("flare_message_dispatch_json"),
        c_dispatch_op: Some("search_in_conversation"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.list",
        module: "conversation",
        core: Some("ConversationApi::list"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.list_by_query",
        module: "conversation",
        core: Some("ConversationApi::list_by_query"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.list_including_archived",
        module: "conversation",
        core: Some("ConversationApi::list_including_archived"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.get",
        module: "conversation",
        core: Some("ConversationApi::get"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.get_one",
        module: "conversation",
        core: Some("ConversationApi::get_one"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.get_group_by_user_ids",
        module: "conversation",
        core: Some("ConversationApi::get_group_by_user_ids"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.get_multiple",
        module: "conversation",
        core: Some("ConversationApi::get_multiple"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.list_paginated",
        module: "conversation",
        core: Some("ConversationApi::list_paginated"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.list_raw",
        module: "conversation",
        core: Some("ConversationApi::list_raw"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.mark_read",
        module: "conversation",
        core: Some("ConversationApi::mark_read"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.delete",
        module: "conversation",
        core: Some("ConversationApi::delete"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.set_pinned",
        module: "conversation",
        core: Some("ConversationApi::set_pinned"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.set_muted",
        module: "conversation",
        core: Some("ConversationApi::set_muted"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.set_archived",
        module: "conversation",
        core: Some("ConversationApi::set_archived"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.mark_unread",
        module: "conversation",
        core: Some("ConversationApi::mark_unread"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.update_draft",
        module: "conversation",
        core: Some("ConversationApi::update_draft"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "conversation.clear_local_chat_history",
        module: "conversation",
        core: Some("ConversationApi::clear_local_chat_history"),
        c_symbol: Some("flare_sdk_invoke_json"),
        c_dispatch_op: None,
        tauri: Some("sdk_invoke_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.upload_file",
        module: "media",
        core: Some("MediaApi::upload_file_from_path"),
        c_symbol: Some("flare_media_upload_file"),
        c_dispatch_op: None,
        tauri: Some("sdk_media_upload_file"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.upload_image",
        module: "media",
        core: Some("MediaApi::upload_image_from_path_with_progress"),
        c_symbol: Some("flare_media_upload_image"),
        c_dispatch_op: None,
        tauri: Some("sdk_media_upload_image"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.upload_video",
        module: "media",
        core: Some("MediaApi::upload_video_from_path_with_progress"),
        c_symbol: Some("flare_media_upload_video"),
        c_dispatch_op: None,
        tauri: Some("sdk_media_upload_video"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.upload_bytes",
        module: "media",
        core: Some("MediaApi::upload_bytes"),
        c_symbol: Some("flare_media_upload_bytes"),
        c_dispatch_op: None,
        tauri: None,
        dev_only: false,
    },
    ApiOperation {
        id: "media.delete_file",
        module: "media",
        core: Some("MediaApi::delete_file"),
        c_symbol: Some("flare_media_delete_file"),
        c_dispatch_op: None,
        tauri: Some("sdk_media_delete_file"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.get_url",
        module: "media",
        core: Some("MediaApi::get_file_url"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("get_url"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.temp_download_url",
        module: "media",
        core: Some("MediaApi::get_temp_url_for_file_download"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("temp_download_url"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.resolve_access",
        module: "media",
        core: Some("MediaApi::resolve_media_access"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("resolve_access"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.cache_remote",
        module: "media",
        core: Some("MediaApi::cache_remote_media"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("cache_remote"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.cache_stats",
        module: "media",
        core: Some("MediaApi::media_cache_stats"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("cache_stats"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.set_cache_max_bytes",
        module: "media",
        core: Some("MediaApi::set_media_cache_max_bytes"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("set_cache_max_bytes"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.set_cache_root",
        module: "media",
        core: Some("MediaApi::set_media_cache_root"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("set_cache_root"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.clear_cache",
        module: "media",
        core: Some("MediaApi::clear_media_cache"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("clear_cache"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.user_download_get_subfolder",
        module: "media",
        core: Some("MediaApi::user_download_get_subfolder"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("user_download_get_subfolder"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.user_download_set_subfolder",
        module: "media",
        core: Some("MediaApi::user_download_set_subfolder"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("user_download_set_subfolder"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.user_download_get_saved_path",
        module: "media",
        core: Some("MediaApi::user_download_get_saved_path"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("user_download_get_saved_path"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.user_download_delete_record",
        module: "media",
        core: Some("MediaApi::user_download_delete_record"),
        c_symbol: Some("flare_media_dispatch_json"),
        c_dispatch_op: Some("user_download_delete_record"),
        tauri: Some("sdk_media_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.cancel_user_file_download",
        module: "media",
        core: Some("MediaApi::cancel_user_file_download"),
        c_symbol: Some("flare_media_cancel_user_file_download"),
        c_dispatch_op: None,
        tauri: Some("sdk_cancel_user_file_download"),
        dev_only: false,
    },
    ApiOperation {
        id: "media.download_file_to_downloads",
        module: "media",
        core: Some("MediaApi::download_file_to_user_downloads_folder"),
        c_symbol: Some("flare_media_download_file_to_downloads"),
        c_dispatch_op: None,
        tauri: Some("sdk_download_file_to_downloads"),
        dev_only: false,
    },
    ApiOperation {
        id: "capability.list",
        module: "capability",
        core: Some("CapabilityApi::list_capabilities"),
        c_symbol: Some("flare_capability_dispatch_json"),
        c_dispatch_op: Some("capability_list"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "capability.list_user",
        module: "capability",
        core: Some("CapabilityApi::list_user_capabilities"),
        c_symbol: Some("flare_capability_dispatch_json"),
        c_dispatch_op: Some("capability_list_user"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "capability.dispatch",
        module: "capability",
        core: Some("CapabilityApi::dispatch"),
        c_symbol: Some("flare_capability_dispatch_json"),
        c_dispatch_op: Some("capability_dispatch"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "capability.grant",
        module: "capability",
        core: Some("CapabilityApi::grant_user_capability"),
        c_symbol: Some("flare_capability_dispatch_json"),
        c_dispatch_op: Some("capability_grant"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "capability.revoke",
        module: "capability",
        core: Some("CapabilityApi::revoke_user_capability"),
        c_symbol: Some("flare_capability_dispatch_json"),
        c_dispatch_op: Some("capability_revoke"),
        tauri: Some("sdk_message_dispatch_json"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.start_audio",
        module: "capability",
        core: Some("CapabilityApi::rtc_start_audio"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_start_audio"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.start_video",
        module: "capability",
        core: Some("CapabilityApi::rtc_start_video"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_start_video"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.accept_call",
        module: "capability",
        core: Some("CapabilityApi::rtc_accept_call"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_accept_call"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.reject_call",
        module: "capability",
        core: Some("CapabilityApi::rtc_reject_call"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_reject_call"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.end_call",
        module: "capability",
        core: Some("CapabilityApi::rtc_end_call"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_end_call"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_join_room",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_join_room"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_join_room"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_leave_room",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_leave_room"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_leave_room"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_handle_sdp_offer",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_handle_sdp_offer"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_handle_sdp_offer"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_add_ice_candidate",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_add_ice_candidate"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_add_ice_candidate"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_get_room_state",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_get_room_state"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_get_room_state"),
        dev_only: false,
    },
    ApiOperation {
        id: "rtc.sfu_set_subscription",
        module: "capability",
        core: Some("CapabilityApi::rtc_sfu_set_subscription"),
        c_symbol: Some("capability_dispatch payload"),
        c_dispatch_op: None,
        tauri: Some("sdk_rtc_sfu_set_subscription"),
        dev_only: false,
    },
    ApiOperation {
        id: "rich_doc_v2.normalize_from_markdown",
        module: "rich_doc_v2",
        core: Some("rich_doc_v2::normalize_from_markdown"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_rich_doc"),
        tauri: Some("sdk_rich_doc_v2_normalize_from_markdown"),
        dev_only: false,
    },
    ApiOperation {
        id: "rich_doc_v2.normalize_from_html",
        module: "rich_doc_v2",
        core: Some("rich_doc_v2::normalize_from_html"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_rich_doc"),
        tauri: Some("sdk_rich_doc_v2_normalize_from_html"),
        dev_only: false,
    },
    ApiOperation {
        id: "rich_doc_v2.normalize_from_doc_json",
        module: "rich_doc_v2",
        core: Some("rich_doc_v2::normalize_from_doc_json"),
        c_symbol: Some("flare_message_build_json"),
        c_dispatch_op: Some("create_rich_doc"),
        tauri: Some("sdk_rich_doc_v2_normalize_from_doc_json"),
        dev_only: false,
    },
];

pub const MESSAGE_BUILD_OPS: &[MessageBuildCatalogEntry] = &[
    MessageBuildCatalogEntry {
        op: "create_announcement",
        method: "buildAnnouncement",
        stability: "stable",
        source_operation: "message_builder.create_announcement",
    },
    MessageBuildCatalogEntry {
        op: "create_audio",
        method: "buildAudio",
        stability: "stable",
        source_operation: "message_builder.create_audio",
    },
    MessageBuildCatalogEntry {
        op: "create_card",
        method: "buildCard",
        stability: "stable",
        source_operation: "message_builder.create_card",
    },
    MessageBuildCatalogEntry {
        op: "create_custom",
        method: "buildCustom",
        stability: "stable",
        source_operation: "message_builder.create_custom",
    },
    MessageBuildCatalogEntry {
        op: "create_emoji",
        method: "buildEmoji",
        stability: "stable",
        source_operation: "message_builder.create_emoji",
    },
    MessageBuildCatalogEntry {
        op: "create_file",
        method: "buildFile",
        stability: "stable",
        source_operation: "message_builder.create_file",
    },
    MessageBuildCatalogEntry {
        op: "create_forward",
        method: "buildForward",
        stability: "stable",
        source_operation: "message_builder.create_forward",
    },
    MessageBuildCatalogEntry {
        op: "create_image",
        method: "buildImage",
        stability: "stable",
        source_operation: "message_builder.create_image",
    },
    MessageBuildCatalogEntry {
        op: "create_image_group",
        method: "buildImageGroup",
        stability: "stable",
        source_operation: "message_builder.create_image_group",
    },
    MessageBuildCatalogEntry {
        op: "create_link_card",
        method: "buildLinkCard",
        stability: "stable",
        source_operation: "message_builder.create_link_card",
    },
    MessageBuildCatalogEntry {
        op: "create_location",
        method: "buildLocation",
        stability: "stable",
        source_operation: "message_builder.create_location",
    },
    MessageBuildCatalogEntry {
        op: "create_mini_program",
        method: "buildMiniProgram",
        stability: "stable",
        source_operation: "message_builder.create_mini_program",
    },
    MessageBuildCatalogEntry {
        op: "create_notification",
        method: "buildNotification",
        stability: "stable",
        source_operation: "message_builder.create_notification",
    },
    MessageBuildCatalogEntry {
        op: "create_placeholder",
        method: "buildPlaceholder",
        stability: "stable",
        source_operation: "message_builder.create_placeholder",
    },
    MessageBuildCatalogEntry {
        op: "create_quote",
        method: "buildQuote",
        stability: "stable",
        source_operation: "message_builder.create_quote",
    },
    MessageBuildCatalogEntry {
        op: "create_rich_doc",
        method: "buildRichDoc",
        stability: "stable",
        source_operation: "message_builder.create_rich_doc",
    },
    MessageBuildCatalogEntry {
        op: "create_schedule",
        method: "buildSchedule",
        stability: "stable",
        source_operation: "message_builder.create_schedule",
    },
    MessageBuildCatalogEntry {
        op: "create_sticker",
        method: "buildSticker",
        stability: "stable",
        source_operation: "message_builder.create_sticker",
    },
    MessageBuildCatalogEntry {
        op: "create_system",
        method: "buildSystem",
        stability: "stable",
        source_operation: "message_builder.create_system",
    },
    MessageBuildCatalogEntry {
        op: "create_task",
        method: "buildTask",
        stability: "stable",
        source_operation: "message_builder.create_task",
    },
    MessageBuildCatalogEntry {
        op: "create_text",
        method: "buildText",
        stability: "stable",
        source_operation: "message_builder.create_text",
    },
    MessageBuildCatalogEntry {
        op: "create_thread_reply",
        method: "buildThreadReply",
        stability: "stable",
        source_operation: "message_builder.create_thread_reply",
    },
    MessageBuildCatalogEntry {
        op: "create_video",
        method: "buildVideo",
        stability: "stable",
        source_operation: "message_builder.create_video",
    },
    MessageBuildCatalogEntry {
        op: "create_vote",
        method: "buildVote",
        stability: "stable",
        source_operation: "message_builder.create_vote",
    },
    MessageBuildCatalogEntry {
        op: "create_with_content",
        method: "buildWithContent",
        stability: "stable",
        source_operation: "message_builder.create_with_content",
    },
];

pub const EVENT_DESCRIPTORS: &[EventDescriptor] = &[
    EventDescriptor {
        id: "connection.connected",
        c_code: 1001,
        c_code_name: "FLARE_EVENT_CONNECTION_CONNECTED",
        tauri: Some("im://connected"),
    },
    EventDescriptor {
        id: "connection.disconnected",
        c_code: 1002,
        c_code_name: "FLARE_EVENT_CONNECTION_DISCONNECTED",
        tauri: Some("im://disconnected"),
    },
    EventDescriptor {
        id: "connection.reconnecting",
        c_code: 1003,
        c_code_name: "FLARE_EVENT_CONNECTION_RECONNECTING",
        tauri: Some("im://reconnecting"),
    },
    EventDescriptor {
        id: "connection.state_changed",
        c_code: 1004,
        c_code_name: "FLARE_EVENT_CONNECTION_STATE_CHANGED",
        tauri: Some("im://state"),
    },
    EventDescriptor {
        id: "connection.sync_state_changed",
        c_code: 1005,
        c_code_name: "FLARE_EVENT_CONNECTION_SYNC_STATE_CHANGED",
        tauri: Some("im://sync_state_changed"),
    },
    EventDescriptor {
        id: "connection.server_error",
        c_code: 1006,
        c_code_name: "FLARE_EVENT_CONNECTION_SERVER_ERROR",
        tauri: Some("im://server_error"),
    },
    EventDescriptor {
        id: "connection.kicked_off",
        c_code: 1007,
        c_code_name: "FLARE_EVENT_CONNECTION_KICKED_OFF",
        tauri: Some("im://kicked_off"),
    },
    EventDescriptor {
        id: "connection.token_expired",
        c_code: 1008,
        c_code_name: "FLARE_EVENT_CONNECTION_TOKEN_EXPIRED",
        tauri: Some("im://token_expired"),
    },
    EventDescriptor {
        id: "message.received",
        c_code: 2001,
        c_code_name: "FLARE_EVENT_MESSAGE_RECEIVED",
        tauri: Some("im://message"),
    },
    EventDescriptor {
        id: "message.received_batch",
        c_code: 2002,
        c_code_name: "FLARE_EVENT_MESSAGE_RECEIVED_BATCH",
        tauri: Some("im://message_batch"),
    },
    EventDescriptor {
        id: "message.send_ack",
        c_code: 2003,
        c_code_name: "FLARE_EVENT_MESSAGE_SEND_ACK",
        tauri: Some("im://send_ack"),
    },
    EventDescriptor {
        id: "message.send_failed",
        c_code: 2004,
        c_code_name: "FLARE_EVENT_MESSAGE_SEND_FAILED",
        tauri: Some("im://send_failed"),
    },
    EventDescriptor {
        id: "message.recalled",
        c_code: 2005,
        c_code_name: "FLARE_EVENT_MESSAGE_RECALLED",
        tauri: Some("im://message_recalled"),
    },
    EventDescriptor {
        id: "message.typing",
        c_code: 2006,
        c_code_name: "FLARE_EVENT_MESSAGE_TYPING",
        tauri: Some("im://typing"),
    },
    EventDescriptor {
        id: "message.capability",
        c_code: 2007,
        c_code_name: "FLARE_EVENT_MESSAGE_CAPABILITY",
        tauri: Some("im://message_capability"),
    },
    EventDescriptor {
        id: "message.edited",
        c_code: 2008,
        c_code_name: "FLARE_EVENT_MESSAGE_EDITED",
        tauri: Some("im://message_edited"),
    },
    EventDescriptor {
        id: "message.reaction_changed",
        c_code: 2009,
        c_code_name: "FLARE_EVENT_MESSAGE_REACTION_CHANGED",
        tauri: Some("im://message_reaction_changed"),
    },
    EventDescriptor {
        id: "message.deleted",
        c_code: 2010,
        c_code_name: "FLARE_EVENT_MESSAGE_DELETED",
        tauri: Some("im://message_deleted"),
    },
    EventDescriptor {
        id: "message.read_receipt",
        c_code: 2011,
        c_code_name: "FLARE_EVENT_MESSAGE_READ_RECEIPT",
        tauri: Some("im://message_read_receipt"),
    },
    EventDescriptor {
        id: "message.typing_aggregate",
        c_code: 2021,
        c_code_name: "FLARE_EVENT_MESSAGE_TYPING_AGGREGATE",
        tauri: Some("im://message_typing_aggregate"),
    },
    EventDescriptor {
        id: "message.retention_scheduled",
        c_code: 2012,
        c_code_name: "FLARE_EVENT_MESSAGE_RETENTION_SCHEDULED",
        tauri: Some("im://message_retention_scheduled"),
    },
    EventDescriptor {
        id: "message.retention_expired",
        c_code: 2013,
        c_code_name: "FLARE_EVENT_MESSAGE_RETENTION_EXPIRED",
        tauri: Some("im://message_retention_expired"),
    },
    EventDescriptor {
        id: "message.retention_purged",
        c_code: 2014,
        c_code_name: "FLARE_EVENT_MESSAGE_RETENTION_PURGED",
        tauri: Some("im://message_retention_purged"),
    },
    EventDescriptor {
        id: "message.pinned",
        c_code: 2015,
        c_code_name: "FLARE_EVENT_MESSAGE_PINNED",
        tauri: Some("im://message_pinned"),
    },
    EventDescriptor {
        id: "message.unpinned",
        c_code: 2016,
        c_code_name: "FLARE_EVENT_MESSAGE_UNPINNED",
        tauri: Some("im://message_unpinned"),
    },
    EventDescriptor {
        id: "message.marked",
        c_code: 2017,
        c_code_name: "FLARE_EVENT_MESSAGE_MARKED",
        tauri: Some("im://message_marked"),
    },
    EventDescriptor {
        id: "message.unmarked",
        c_code: 2018,
        c_code_name: "FLARE_EVENT_MESSAGE_UNMARKED",
        tauri: Some("im://message_unmarked"),
    },
    EventDescriptor {
        id: "message.presence_changed",
        c_code: 2019,
        c_code_name: "FLARE_EVENT_MESSAGE_PRESENCE_CHANGED",
        tauri: Some("im://presence_changed"),
    },
    EventDescriptor {
        id: "message.custom",
        c_code: 2020,
        c_code_name: "FLARE_EVENT_MESSAGE_CUSTOM",
        tauri: Some("im://message_custom_event"),
    },
    EventDescriptor {
        id: "conversation.synced",
        c_code: 3001,
        c_code_name: "FLARE_EVENT_CONVERSATION_SYNCED",
        tauri: Some("im://conversations_synced"),
    },
    EventDescriptor {
        id: "conversation.created",
        c_code: 3002,
        c_code_name: "FLARE_EVENT_CONVERSATION_CREATED",
        tauri: Some("im://conversation_created"),
    },
    EventDescriptor {
        id: "conversation.updated",
        c_code: 3003,
        c_code_name: "FLARE_EVENT_CONVERSATION_UPDATED",
        tauri: Some("im://conversation_updated"),
    },
    EventDescriptor {
        id: "conversation.unread_count_changed",
        c_code: 3004,
        c_code_name: "FLARE_EVENT_CONVERSATION_UNREAD_COUNT_CHANGED",
        tauri: Some("im://unread_count_changed"),
    },
    EventDescriptor {
        id: "conversation.deleted",
        c_code: 3005,
        c_code_name: "FLARE_EVENT_CONVERSATION_DELETED",
        tauri: Some("im://conversation_deleted"),
    },
    EventDescriptor {
        id: "notification.received",
        c_code: 3501,
        c_code_name: "FLARE_EVENT_NOTIFICATION_RECEIVED",
        tauri: Some("im://notification"),
    },
    EventDescriptor {
        id: "sync.started",
        c_code: 4001,
        c_code_name: "FLARE_EVENT_SYNC_STARTED",
        tauri: Some("im://sync_started"),
    },
    EventDescriptor {
        id: "sync.finished",
        c_code: 4002,
        c_code_name: "FLARE_EVENT_SYNC_FINISHED",
        tauri: Some("im://sync_finished"),
    },
    EventDescriptor {
        id: "sync.failed",
        c_code: 4003,
        c_code_name: "FLARE_EVENT_SYNC_FAILED",
        tauri: Some("im://sync_failed"),
    },
    EventDescriptor {
        id: "sync.progress",
        c_code: 4004,
        c_code_name: "FLARE_EVENT_SYNC_PROGRESS",
        tauri: Some("im://sync_progress"),
    },
    EventDescriptor {
        id: "sync.task_completed",
        c_code: 4005,
        c_code_name: "FLARE_EVENT_SYNC_TASK_COMPLETED",
        tauri: Some("im://sync_completed"),
    },
    EventDescriptor {
        id: "sync.state_changed",
        c_code: 4006,
        c_code_name: "FLARE_EVENT_SYNC_STATE_CHANGED",
        tauri: Some("im://sync_notify_state_changed"),
    },
    EventDescriptor {
        id: "sync.resync_needed",
        c_code: 4007,
        c_code_name: "FLARE_EVENT_SYNC_RESYNC_NEEDED",
        tauri: Some("im://resync_needed"),
    },
    EventDescriptor {
        id: "sync.readiness",
        c_code: 4008,
        c_code_name: "FLARE_EVENT_SYNC_READINESS",
        tauri: Some("im://sync_readiness"),
    },
    EventDescriptor {
        id: "view.updated",
        c_code: 6001,
        c_code_name: "FLARE_EVENT_VIEW_UPDATED",
        tauri: Some("im://view_updated"),
    },
    EventDescriptor {
        id: "extension.event",
        c_code: 5001,
        c_code_name: "FLARE_EVENT_EXTENSION",
        tauri: Some("im://extension"),
    },
];

pub const ERROR_CODES: &[ErrorCode] = &[
    ErrorCode {
        name: "FLARE_OK",
        code: 0,
        meaning: "success",
    },
    ErrorCode {
        name: "FLARE_ERR_INVALID_HANDLE",
        code: 1,
        meaning: "invalid or released SDK handle",
    },
    ErrorCode {
        name: "FLARE_ERR_INVALID_PARAM",
        code: 2,
        meaning: "invalid pointer, missing field, invalid enum, or invalid argument",
    },
    ErrorCode {
        name: "FLARE_ERR_NOT_CONNECTED",
        code: 3,
        meaning: "operation requires a logged-in/connected SDK session",
    },
    ErrorCode {
        name: "FLARE_ERR_OPERATION_TIMEOUT",
        code: 4,
        meaning: "operation timed out",
    },
    ErrorCode {
        name: "FLARE_ERR_NETWORK_ERROR",
        code: 5,
        meaning: "transport or network failure",
    },
    ErrorCode {
        name: "FLARE_ERR_AUTH_FAILED",
        code: 6,
        meaning: "login/authentication failed",
    },
    ErrorCode {
        name: "FLARE_ERR_TOKEN_EXPIRED",
        code: 7,
        meaning: "access token expired; caller should refresh token or relogin",
    },
    ErrorCode {
        name: "FLARE_ERR_INTERNAL",
        code: 8,
        meaning: "internal or currently unmapped core error",
    },
    ErrorCode {
        name: "FLARE_ERR_JSON_PARSE",
        code: 9,
        meaning: "invalid JSON input or failed JSON serialization",
    },
    ErrorCode {
        name: "FLARE_ERR_NULL_POINTER",
        code: 10,
        meaning: "required pointer argument is null",
    },
    ErrorCode {
        name: "FLARE_ERR_FFI_PANIC",
        code: 11,
        meaning: "panic was caught at the FFI boundary",
    },
];
