/* Code generated by cmd/cgo; DO NOT EDIT. */

/* package command-line-arguments */


#line 1 "cgo-builtin-export-prolog"

#include <stddef.h>

#ifndef GO_CGO_EXPORT_PROLOGUE_H
#define GO_CGO_EXPORT_PROLOGUE_H

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef struct { const char *p; ptrdiff_t n; } _GoString_;
#endif

#endif

/* Start of preamble from import "C" comments.  */


#line 3 "export.go"

#include <stdio.h>
typedef void (*CB_S)(char *);
typedef void (*CB_I_S)(int,char *);
typedef void (*CB_S_I_S_S)(char *,int,char *,char *);
typedef void (*CB_S_I_S_S_I)(char *,int,char *,char *,int);
extern void Call_CB_S(CB_S func,char* data);
extern void Call_CB_I_S(CB_I_S func,int event,char* data);
extern void Call_CB_S_I_S_S(CB_S_I_S_S func,char *,int errCode,char* errMsg,char* data);
extern void Call_CB_S_I_S_S_I(CB_S_I_S_S_I func,char *,int errCode,char* errMsg,char* data,int progress);
extern CB_S DebugPrint;


#line 1 "cgo-generated-wrapper"


/* End of preamble from import "C" comments.  */


/* Start of boilerplate cgo prologue.  */
#line 1 "cgo-gcc-export-header-prolog"

#ifndef GO_CGO_PROLOGUE_H
#define GO_CGO_PROLOGUE_H

typedef signed char GoInt8;
typedef unsigned char GoUint8;
typedef short GoInt16;
typedef unsigned short GoUint16;
typedef int GoInt32;
typedef unsigned int GoUint32;
typedef long long GoInt64;
typedef unsigned long long GoUint64;
typedef GoInt64 GoInt;
typedef GoUint64 GoUint;
typedef size_t GoUintptr;
typedef float GoFloat32;
typedef double GoFloat64;
#ifdef _MSC_VER
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
typedef float _Complex GoComplex64;
typedef double _Complex GoComplex128;
#endif

/*
  static assertion to make sure the file is being used on architecture
  at least with matching size of GoInt.
*/
typedef char _check_for_64_bit_pointer_matching_GoInt[sizeof(void*)==64/8 ? 1:-1];

#ifndef GO_CGO_GOSTRING_TYPEDEF
typedef _GoString_ GoString;
#endif
typedef void *GoMap;
typedef void *GoChan;
typedef struct { void *t; void *v; } GoInterface;
typedef struct { void *data; GoInt len; GoInt cap; } GoSlice;

#endif

/* End of boilerplate cgo prologue.  */

#ifdef __cplusplus
extern "C" {
#endif

extern void set_print(CB_S print);
extern void set_group_listener(CB_I_S cCallback);
extern void set_conversation_listener(CB_I_S cCallback);
extern void set_advanced_msg_listener(CB_I_S cCallback);
extern void set_batch_msg_listener(CB_I_S cCallback);
extern void set_user_listener(CB_I_S cCallback);
extern void set_friend_listener(CB_I_S cCallback);
extern void set_custom_business_listener(CB_I_S cCallback);
extern GoUint8 init_sdk(CB_I_S cCallback, char* operationID, char* config);
extern void un_init_sdk(char* operationID);
extern void login(CB_S_I_S_S cCallback, char* operationID, char* uid, char* token);
extern void logout(CB_S_I_S_S cCallback, char* operationID);
extern void set_app_background_status(CB_S_I_S_S cCallback, char* operationID, int isBackground);
extern void network_status_changed(CB_S_I_S_S cCallback, char* operationID);
extern GoInt get_login_status(char* operationID);
extern char* get_login_user();
extern char* create_text_message(char* operationID, char* text);
extern char* create_advanced_text_message(char* operationID, char* text, char* messageEntityList);
extern char* create_text_at_message(char* operationID, char* text, char* atUserList, char* atUsersInfo, char* message);
extern char* create_location_message(char* operationID, char* description, double longitude, double latitude);
extern char* create_custom_message(char* operationID, char* data, char* extension, char* description);
extern char* create_quote_message(char* operationID, char* text, char* message);
extern char* create_advanced_quote_message(char* operationID, char* text, char* message, char* messageEntityList);
extern char* create_card_message(char* operationID, char* cardInfo);
extern char* create_video_message_from_full_path(char* operationID, char* videoFullPath, char* videoType, long long int duration, char* snapshotFullPath);
extern char* create_image_message_from_full_path(char* operationID, char* imageFullPath);
extern char* create_sound_message_from_full_path(char* operationID, char* soundPath, long long int duration);
extern char* create_file_message_from_full_path(char* operationID, char* fileFullPath, char* fileName);
extern char* create_image_message(char* operationID, char* imagePath);
extern char* create_image_message_by_url(char* operationID, char* sourcePath, char* sourcePicture, char* bigPicture, char* snapshotPicture);
extern char* create_sound_message_by_url(char* operationID, char* soundBaseInfo);
extern char* create_sound_message(char* operationID, char* soundPath, long long int duration);
extern char* create_video_message_by_url(char* operationID, char* videoBaseInfo);
extern char* create_video_message(char* operationID, char* videoPath, char* videoType, long long int duration, char* snapshotPath);
extern char* create_file_message_by_url(char* operationID, char* fileBaseInfo);
extern char* create_file_message(char* operationID, char* filePath, char* fileName);
extern char* create_merger_message(char* operationID, char* messageList, char* title, char* summaryList);
extern char* create_face_message(char* operationID, int index, char* data);
extern char* create_forward_message(char* operationID, char* m);
extern void get_all_conversation_list(CB_S_I_S_S cCallback, char* operationID);
extern void get_conversation_list_split(CB_S_I_S_S cCallback, char* operationID, int offset, int count);
extern void get_one_conversation(CB_S_I_S_S cCallback, char* operationID, int sessionType, char* sourceID);
extern void get_multiple_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationIDList);
extern void set_conversation_msg_destruct_time(CB_S_I_S_S cCallback, char* operationID, char* conversationID, long long int msgDestructTime);
extern void set_conversation_is_msg_destruct(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isMsgDestruct);
extern void hide_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
extern void get_conversation_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, char* conversationIDList);
extern void set_conversation_draft(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* draftText);
extern void reset_conversation_group_at_type(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
extern void pin_conversation(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isPinned);
extern void set_conversation_private_chat(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int isPrivate);
extern void set_conversation_burn_duration(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int duration);
extern void set_conversation_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, char* conversationID, int opt);
extern void get_total_unread_msg_count(CB_S_I_S_S cCallback, char* operationID);
extern char* get_at_all_tag(char* operationID);
extern char* get_conversation_id_by_session_type(char* operationID, char* sourceID, int sessionType);
extern void send_message(CB_S_I_S_S_I cCallback, char* operationID, char* message, char* recvID, char* groupID, char* offlinePushInfo);
extern void send_message_not_oss(CB_S_I_S_S_I cCallback, char* operationID, char* message, char* recvID, char* groupID, char* offlinePushInfo);
extern void find_message_list(CB_S_I_S_S cCallback, char* operationID, char* findMessageOptions);
extern void get_advanced_history_message_list(CB_S_I_S_S cCallback, char* operationID, char* getMessageOptions);
extern void get_advanced_history_message_list_reverse(CB_S_I_S_S cCallback, char* operationID, char* getMessageOptions);
extern void revoke_message(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
extern void typing_status_update(CB_S_I_S_S cCallback, char* operationID, char* recvID, char* msgTip);
extern void mark_conversation_message_as_read(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
extern void delete_message_from_local_storage(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
extern void delete_message(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID);
extern void hide_all_conversations(CB_S_I_S_S cCallback, char* operationID);
extern void delete_all_msg_from_local_and_svr(CB_S_I_S_S cCallback, char* operationID);
extern void delete_all_msg_from_local(CB_S_I_S_S cCallback, char* operationID);
extern void clear_conversation_and_delete_all_msg(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
extern void delete_conversation_and_delete_all_msg(CB_S_I_S_S cCallback, char* operationID, char* conversationID);
extern void insert_single_message_to_local_storage(CB_S_I_S_S cCallback, char* operationID, char* message, char* recvID, char* sendID);
extern void insert_group_message_to_local_storage(CB_S_I_S_S cCallback, char* operationID, char* message, char* groupID, char* sendID);
extern void search_local_messages(CB_S_I_S_S cCallback, char* operationID, char* searchParam);
extern void set_message_local_ex(CB_S_I_S_S cCallback, char* operationID, char* conversationID, char* clientMsgID, char* localEx);
extern void get_users_info(CB_S_I_S_S cCallback, char* operationID, char* userIDs);
extern void get_users_info_with_cache(CB_S_I_S_S cCallback, char* operationID, char* userIDs, char* groupID);
extern void get_users_info_from_srv(CB_S_I_S_S cCallback, char* operationID, char* userIDs);
extern void set_self_info(CB_S_I_S_S cCallback, char* operationID, char* userInfo);
extern void set_global_recv_message_opt(CB_S_I_S_S cCallback, char* operationID, int opt);
extern void get_self_user_info(CB_S_I_S_S cCallback, char* operationID);
extern void update_msg_sender_info(CB_S_I_S_S cCallback, char* operationID, char* nickname, char* faceURL);
extern void subscribe_users_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs);
extern void unsubscribe_users_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs);
extern void get_subscribe_users_status(CB_S_I_S_S cCallback, char* operationID);
extern void get_user_status(CB_S_I_S_S cCallback, char* operationID, char* userIDs);

// =====================================================friend===============================================
//
extern void get_specified_friends_info(CB_S_I_S_S cCallback, char* operationID, char* userIDList);
extern void get_friend_list(CB_S_I_S_S cCallback, char* operationID);
extern void get_friend_list_page(CB_S_I_S_S cCallback, char* operationID, int offset, int count);
extern void search_friends(CB_S_I_S_S cCallback, char* operationID, char* searchParam);
extern void check_friend(CB_S_I_S_S cCallback, char* operationID, char* userIDList);
extern void add_friend(CB_S_I_S_S cCallback, char* operationID, char* userIDReqMsg);
extern void set_friend_remark(CB_S_I_S_S cCallback, char* operationID, char* userIDRemark);
extern void delete_friend(CB_S_I_S_S cCallback, char* operationID, char* friendUserID);
extern void get_friend_application_list_as_recipient(CB_S_I_S_S cCallback, char* operationID);
extern void get_friend_application_list_as_applicant(CB_S_I_S_S cCallback, char* operationID);
extern void accept_friend_application(CB_S_I_S_S cCallback, char* operationID, char* userIDHandleMsg);
extern void refuse_friend_application(CB_S_I_S_S cCallback, char* operationID, char* userIDHandleMsg);
extern void add_black(CB_S_I_S_S cCallback, char* operationID, char* blackUserID);
extern void get_black_list(CB_S_I_S_S cCallback, char* operationID);
extern void remove_black(CB_S_I_S_S cCallback, char* operationID, char* removeUserID);

// =====================================================group===============================================
// CreateGroup creates a group
//
extern void create_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupReqInfo);

// JoinGroup joins a group
//
extern void join_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReqMsg, int cJoinSource);

// QuitGroup quits a group
//
extern void quit_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID);

// DismissGroup dismisses a group
//
extern void dismiss_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID);

// ChangeGroupMute changes the mute status of a group
//
extern void change_group_mute(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cIsMute);

// ChangeGroupMemberMute changes the mute status of a group member
//
extern void change_group_member_mute(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, int cMutedSeconds);

// SetGroupMemberRoleLevel sets the role level of a group member
//
extern void set_group_member_role_level(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, int cRoleLevel);

// SetGroupMemberInfo sets the information of a group member
//
extern void set_group_member_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupMemberInfo);

// GetJoinedGroupList retrieves the list of joined groups
//
extern void get_joined_group_list(CB_S_I_S_S cCallback, char* operationID);

// GetSpecifiedGroupsInfo retrieves the information of specified groups
//
extern void get_specified_groups_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupIDList);

// SearchGroups searches for groups
//
extern void search_groups(CB_S_I_S_S cCallback, char* operationID, char* cSearchParam);

// SetGroupInfo sets the information of a group
//
extern void set_group_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupInfo);

// SetGroupVerification sets the verification mode of a group
//
extern void set_group_verification(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cVerification);

// SetGroupLookMemberInfo sets the member information visibility of a group
//
extern void set_group_look_member_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cRule);

// SetGroupApplyMemberFriend sets the friend rule for group applicants
//
extern void set_group_apply_member_friend(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cRule);

// GetGroupMemberList retrieves the list of group members
//
extern void get_group_member_list(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cFilter, int cOffset, int cCount);

// GetGroupMemberOwnerAndAdmin retrieves the owner and admin members of a group
//
extern void get_group_member_owner_and_admin(CB_S_I_S_S cCallback, char* operationID, char* cGroupID);

// GetGroupMemberListByJoinTimeFilter retrieves the list of group members filtered by join time
//
extern void get_group_member_list_by_join_time_filter(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, int cOffset, int cCount, long long int cJoinTimeBegin, long long int cJoinTimeEnd, char* cFilterUserIDList);

// GetSpecifiedGroupMembersInfo retrieves the information of specified group members
//
extern void get_specified_group_members_info(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserIDList);

// KickGroupMember kicks group members
//
extern void kick_group_member(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReason, char* cUserIDList);

// TransferGroupOwner transfers the ownership of a group
//
extern void transfer_group_owner(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cNewOwnerUserID);

// InviteUserToGroup invites users to a group
//
extern void invite_user_to_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cReason, char* cUserIDList);

// GetGroupApplicationListAsRecipient retrieves the group application list as a recipient
//
extern void get_group_application_list_as_recipient(CB_S_I_S_S cCallback, char* operationID);

// GetGroupApplicationListAsApplicant retrieves the group application list as an applicant
//
extern void get_group_application_list_as_applicant(CB_S_I_S_S cCallback, char* operationID);

// AcceptGroupApplication accepts a group application
//
extern void accept_group_application(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cFromUserID, char* cHandleMsg);

// RefuseGroupApplication refuses a group application
//
extern void refuse_group_application(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cFromUserID, char* cHandleMsg);

// SetGroupMemberNickname sets the nickname of a group member
//
extern void set_group_member_nickname(CB_S_I_S_S cCallback, char* operationID, char* cGroupID, char* cUserID, char* cGroupMemberNickname);

// SearchGroupMembers searches for group members
//
extern void search_group_members(CB_S_I_S_S cCallback, char* operationID, char* cSearchParam);

// IsJoinGroup checks if the user has joined a group
//
extern void is_join_group(CB_S_I_S_S cCallback, char* operationID, char* cGroupID);

#ifdef __cplusplus
}
#endif
