/* 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_;
extern size_t _GoStringLen(_GoString_ s);
extern const char *_GoStringPtr(_GoString_ s);
#endif

#endif

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



#line 3 "im.go"

#include <stdint.h>

#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
#if !defined(__cplusplus) || _MSVC_LANG <= 201402L
#include <complex.h>
typedef _Fcomplex GoComplex64;
typedef _Dcomplex GoComplex128;
#else
#include <complex>
typedef std::complex<float> GoComplex64;
typedef std::complex<double> GoComplex128;
#endif
#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 SetCoinTypeCustom(long long int coinType, char* addrPre);
extern char* InitV2(char* conf, char* addrpre, char* pwd, char* impwd);
extern char* InitV3(char* conf, char* addrpre, char* prk);
extern char* CheckUpgradePreAndCoinType(char* conf, char* addrpre);
extern char* UpgradePreAndCoinType(char* conf, char* newaddrpre, long long int newcoinType, char* pwd, char* imprik);
extern void SetLogLevel(long int level);
extern char* CheckPassword(char* password);
extern char* ExportMnemonic(char* pwd);
extern char* ImportMnemonicV2(char* pwd, char* impwd, char* minerpwd, char* word);
extern char* CreateNewAddrV1(char* password, long int walletIndex);
extern char* GetAllAddr(long int walletIndex);
extern void Close(void);
extern char* GetNodeId(void);
extern char* GetHash(char* str);
extern char* CheckOnline(void);
extern char* ReConnect(void);
extern char* Version(void);
extern char* GetPukBase58StrByAddr(char* addr, char* pwd, long int walletIndex);
extern char* GetPukBase58StrByPrikIndex(char* pwd, long int prikIndex);
extern char* ResetWalletPassword(char* oldPwd, char* newPwd);
extern char* BuildNetAddrByMnemonic(char* word);
extern char* GetUserAuth(void);
extern char* GenerateDHPair(void);
extern char* GetHTTPDHKeyPublicKey(void);
extern void EncryptHTTPData(long long int port, char* data);
extern void DecryptHTTPData(long long int port, char* data);
extern char* SetP2pPort(char* port);
extern void RunP2p(long long int port, char* remoteaddr, char* nodeAddr, char* devName, char* runEnv, char* ProxyNodeInfo);
extern char* RunP2pByPrk(char* conf, char* remoteaddr, char* prk);
extern char* GroupId(void);
extern char* GetMegHash(long int msgid, char* tonodeid, char* msgstr);
extern char* GetTime(void);
extern char* UpdateIsAllRead(long int needRead);
extern char* GetMachineId(char* content);
extern char* GetServerTime(char* content);
extern char* GetGroupPasswd(char* content);
extern char* SetAreaName(char* content);
extern void UpdateGroupMemberCallback(char* gid);
extern char* CheckImPassword(char* password);
extern char* UpdateImPwd(char* oldpwd, char* newpwd);
extern char* ExportImPrivateKey(char* pwd);
extern char* SetServerPort(char* port);
extern char* SetAllProxy(char* content, char* id, char* ip, long int port, char* ProxyNodeInfo);
extern void SetWSMessagePort(long int port);
extern void StartWSMessageServer(void);
extern void StartGetMessage(void);
extern char* LoadInitData(char* content);
extern void InitDartApi(void* api);
extern void SetMsgSendPort(GoInt64 port);
extern void CleanMessageStructMemory(GoInt64 ptrAddr);
extern void CleanMessageStructMemoryByPort(GoInt64 ptrAddr);
extern char* StatMessageStructMemory(void);
extern char* CgoHandleStat(void);
extern char* GetMsgByCgoHandle(GoUintptr handleVal);
extern void CleanCgoHandleByPort(long long int port);
extern char* ClearLoginInfo(void);
extern char* SetAreaConnType(char* connType);
extern char* AddressCoinToEvmAddress(char* addr);
extern char* EvmAddressToAddressCoin(char* addr);
extern char* SignatureStr(char* str);
extern char* SignVerificationStr(char* edpuk, char* msg, char* sigMsg);
extern char* GetCurProxy(void);
extern char* CreateQR(char* gid);
extern char* EncryptQR(char* str, char* gid, long int gidVer);
extern char* DeleteAppGs(char* gid);
extern char* SetEncryptData(char* key, char* pwd, char* value);
extern char* GetEncryptData(char* key, char* pwd);
extern char* DelEncryptData(char* key);
extern char* GetActivityNum(char* req, char* addr);
extern char* GetActivityRank(char* req, char* addr);
extern char* GetDatabaseToken(char* req, char* addr);
extern char* CommonDatabaseRequest(long int msgID, char* req, char* addr);
extern char* AddTransfer(char* req, char* addr);
extern char* GetTransfer(char* req, char* addr);
extern char* GetTransferEveryDayNum(char* req, char* addr);
extern char* GetProducts(char* addr, char* req);
extern char* CheckinToken(char* req, char* addr);
extern void InitLedisDb(char* dir);
extern char* DelErrLog(long long int min, long long int max);
extern char* UnzipErrLog(char* str);
extern void Ping(long long int port, char* str, char* ProxyNodeStr);
extern char* SavePriInfo(char* str);
extern char* GetPriInfo(char* str);
extern char* DelPriInfo(void);
extern char* EncryptContent(char* key, char* content);
extern char* DecryptContent(char* key, char* content);
extern char* GetConnStatus(void);
extern void OssIsExit(long long int port, char* param);
extern void ExitAccount(void);
extern void SetTestFlag(void);
extern void MessageResp(char* key);
extern void UpdateUserInfoV2(long long int port, uint8_t* content, long int len);
extern void QueryUser(long long int port, uint8_t* content, long int len);
extern void SingleChat(long long int port, uint8_t* content, long int len);
extern void SingleDelByid(long long int port, uint8_t* content, long int len);
extern void SingleDelAll(long long int port, uint8_t* content, long int len);
extern void GroupChat(long long int port, uint8_t* content, long int len);
extern void GroupDelByid(long long int port, uint8_t* content, long int len);
extern void GroupDelAll(long long int port, uint8_t* content, long int len);
extern void SingleDelSection(long long int port, uint8_t* content, long int len);
extern void SingleSend(long long int port, uint8_t* content, long int len);
extern void SingleRead(long long int port, uint8_t* content, long int len);
extern void SingleWithdraw(long long int port, uint8_t* content, long int len);
extern void GetSingleChatMsg(long long int port, uint8_t* content, long int len);
extern void AddContact(long long int port, uint8_t* content, long int len);
extern void BlockContact(long long int port, uint8_t* content, long int len);
extern void RemoveBlockContact(long long int port, uint8_t* content, long int len);
extern void DeleteContact(long long int port, uint8_t* content, long int len);
extern void RemarkContact(long long int port, uint8_t* content, long int len);
extern void DisturbContact(long long int port, uint8_t* content, long int len);
extern void RequestAddContact(long long int port, uint8_t* content, long int len);
extern void QueryContactInfo(long long int port, uint8_t* content, long int len);
extern void ReplyRequestAddContact(long long int port, uint8_t* content, long int len);
extern void HandleRequestAddContact(long long int port, uint8_t* content, long int len);
extern void UpdatePinneMesList(long long int port, uint8_t* content, long int len);
extern void UpdateContactConf(long long int port, uint8_t* content, long int len);
extern void AddDevice(long long int port, uint8_t* content, long int len);
extern void UpdateDevice(long long int port, uint8_t* content, long int len);
extern void DeleteDevice(long long int port, uint8_t* content, long int len);
extern void DeviceInfo(long long int port, uint8_t* content, long int len);
extern void OutLineOtherDev(long long int port, uint8_t* content, long int len);
extern void UpdateNoticeVoiceConfig(long long int port, uint8_t* content, long int len);
extern void CreateGroup(long long int port, uint8_t* content, long int len);
extern void UpdateGroupName(long long int port, uint8_t* content, long int len);
extern void UpdateGroupHeadUrl(long long int port, uint8_t* content, long int len);
extern void UpdateGroupIntroduction(long long int port, uint8_t* content, long int len);
extern void AddGroupMember(long long int port, uint8_t* content, long int len);
extern void RemoveGroupMember(long long int port, uint8_t* content, long int len);
extern void UpdateGroupMemberName(long long int port, uint8_t* content, long int len);
extern void DissolveGroup(long long int port, uint8_t* content, long int len);
extern void QueryGroup(long long int port, uint8_t* content, long int len);
extern void ApplyGroup(long long int port, uint8_t* content, long int len);
extern void UpdateGroupMemberRole(long long int port, uint8_t* content, long int len);
extern void UpdateGroupConf(long long int port, uint8_t* content, long int len);
extern void GroupTransfer(long long int port, uint8_t* content, long int len);
extern void ExitGroup(long long int port, uint8_t* content, long int len);
extern void UpdateGroupPinneMesList(long long int port, uint8_t* content, long int len);
extern void GroupDelSection(long long int port, uint8_t* content, long int len);
extern void GroupWithdraw(long long int port, uint8_t* content, long int len);
extern void GetGroupChatMsg(long long int port, uint8_t* content, long int len);
extern void P2pMsgData(long long int port, uint8_t* content, long int len);
extern char* GetSingleOfflineMsgBody(uint8_t* content, long int len);
extern char* GetGroupOfflineMsgBody(uint8_t* content, long int len);
extern void AddFavoriteContent(long long int port, uint8_t* content, long int len);
extern void UpdateFavoriteContent(long long int port, uint8_t* content, long int len);
extern void DelFavoriteContent(long long int port, uint8_t* content, long int len);
extern void AddFavoriteFolder(long long int port, uint8_t* content, long int len);
extern void DelFavoriteFolder(long long int port, uint8_t* content, long int len);
extern void UpdateFavoriteFolder(long long int port, uint8_t* content, long int len);
extern void GetFavoriteFolders(long long int port, uint8_t* content, long int len);
extern void GetFavoriteAllFolders(long long int port, uint8_t* content, long int len);
extern void CreateSecretRooms(long long int port, uint8_t* content, long int len);
extern void UpdateSecretRoomPwd(long long int port, uint8_t* content, long int len);
extern void UpdateSecretRoomName(long long int port, uint8_t* content, long int len);
extern void DelSecretRoom(long long int port, uint8_t* content, long int len);
extern void SetValidityPeriod(long long int port, uint8_t* content, long int len);
extern void AddContactToSecRoom(long long int port, uint8_t* content, long int len);
extern void DelContactOutSecRoom(long long int port, uint8_t* content, long int len);
extern void UpdateSecRoomHide(long long int port, uint8_t* content, long int len);
extern void SingleSelfDel(long long int port, uint8_t* content, long int len);
extern void UserLogOut(long long int port);

/* Return type for GetByteByCgoHandle */
struct GetByteByCgoHandle_return {
	uint8_t* r0; /* content */
	long int r1; /* len */
};
extern struct GetByteByCgoHandle_return GetByteByCgoHandle(GoUintptr handleVal);
extern void EchoCgoByteFunc(long long int port, uint8_t* content, long int lenth, long int typed, long int min, long int max);
extern char* AddWalletCoinAddress(long int port, long int walletIndex, long int addressIndex, char* pwd, char* nickName);
extern char* ImportPrivateKey(long int port, char* passwd, char* prk, char* chain, char* segwitType, char* nickName);
extern char* DeletePrivateKey(long int port, char* passwd, long int index);
extern char* AddWallet(long int port, char* pwd, char* nickName);
extern char* DeleteWallet(long int port, char* pwd, long int walletIndex);
extern char* AddWalletImportMnemonic(long int port, char* pwd, char* nickName, char* word);
extern char* ExportPrivateKey(long int port, char* passwd, char* chain, char* segwitType, long int walletIndex, long int addressIndex);
extern char* CreateAddrFromPri(char* prk, char* chain, char* segwitType);
extern char* GetPrivIndex(void);
extern char* SignTx(long int port, char* unSignTx, char* to, char* amount, char* coinType, char* fee, long int walletIndex, long int addressIndex, char* passwd, char* chain, char* segwitType, char* maxPriority, char* maxFee, long int gasLimit, long int frozenTime, char* contractAddress, long int decimals);
extern char* OfflineSign(long int port, char* unSignTx, long int walletIndex, long int addressIndex, char* passwd, char* chain);
extern char* ApproveUsdtForBuySpace(long int port, char* chain, char* passwd, char* amount, char* gas, long int walletIndex, long int addressIndex);
extern char* ApproveUsdtForSwapUsr(long int port, char* chain, char* passwd, char* amount, char* gas, long int walletIndex, long int addressIndex);
extern char* Deposit(long int port, char* chain, char* passwd, char* amount, char* addr, char* gas, long int walletIndex, long int addressIndex);
extern char* BuySpace(long int port, char* chain, char* passwd, char* amount, char* gas, char* netId, char* orderId, char* packageId, long int walletIndex, long int addressIndex);
extern char* FreezeTrx(long int port, char* fromAddr, char* passwd, char* resource, char* amount, long int walletIndex, long int addressIndex);
extern char* UnfreezeTrx(long int port, char* fromAddr, char* passwd, char* resource, char* amount, long int walletIndex, long int addressIndex);
extern char* WithdrawExpireUnfreezeTrx(long int port, char* fromAddr, char* passwd, long int walletIndex, long int addressIndex);
extern char* ExportWalletMnemonic(long int port, long int walletIndex, char* pwd);
extern char* InitWallet(char* jsonStr);
extern char* SwitchNetwork(long int network);
extern void UsdtWithdraw(long int port, long int walletIndex, long int addressIndex, char* passwd, char* chain, char* amount, char* toAddr, char* orderId, char* walletAddr, char* gas);
extern void WithdrawApprove(long int port, long int walletIndex, long int addressIndex, char* passwd, char* amount, char* walletAddr, char* gas);
extern void StartWsClient(char* serverServer, char* cloudServer);
extern char* SendMsgOfWs(char* data);
extern void ReceiveMsgOfWs(void);
extern void InitCallBack(GoInt64 port);
extern char* StartWalletConn(char* walletServer);
extern char* StartExchangeConn(char* exchangeServer);
extern char* CloseWalletConn(void);
extern char* CloseCloudConn(void);
extern char* CloseExchangeConn(void);
extern char* CheckWsConnState(void);
extern char* CreateOfflineContractTx(char* keyStorePath, long int walletIndex, char* srcaddress, char* address, char* pwd, char* comment, char* amount, char* gas, char* frozenHeight, char* gasPrice, char* nonce, char* currentHeight, char* domain, char* domainType, char* abi, char* source);
extern char* CreateOfflineContractTxWithGasPay(char* keyStorePath, long int walletIndex, char* srcaddress, char* address, char* pwd, char* comment, char* amount, char* gas, char* frozenHeight, char* gasPrice, char* nonce, char* currentHeight, char* domain, char* domainType, char* abi, char* source, char* gasPayAddress);
extern char* BuildOfflineTx(char* keyStorePath, long int walletIndex, char* pwd, char* nonce, char* currentHeight, char* frozenHeight, char* domainType, char* domain, char* tag, char* jsonData);
extern char* BuildOfflineTxByPirkIndex(char* keyStorePath, long int prikIndex, char* pwd, char* nonce, char* currentHeight, char* frozenHeight, char* domainType, char* domain, char* tag, char* jsonData);
extern char* CheckWalletIsLegality(char* addr);
extern char* CreateOfflineTxBuildAddressBind(char* keyStorePath, long int walletIndex, char* srcaddress, char* bindaddress, char* bindType, char* gas, char* frozenHeight, char* nonceInt, char* currentHeight, char* pwd, char* domain, char* domainType, char* comment);
extern void LkGenerateToken(long long int port, char* param);
extern void UpdateUserState(char* param);
extern void LkDeleteRoom(char* param);
extern void SetLkUrl(char* url);
extern void InitiateCall(long long int port, char* param);
extern void InviteToJoin(char* param);
extern void CancelDialing(void);
extern void LkRoomInfo(long long int port, char* param);
extern void LkRoomParticipants(long long int port, char* param);
extern void LkLeaveRoom(char* param);
extern char* RunCloudStoreP2p(char* ip, char* netId, char* confStr, long long int port);
extern char* CheckCloudP2p(void);
extern char* GetStorageConf(void);
extern char* SetCloudProxy(char* ip);
extern void UploadFileTaskByPlatform(char* path, char* extend, char* thumb, char* pwd, char* taskID, char* platform);
extern void UploadFileTaskByPlatformV2(char* path, char* extend, char* thumb, char* pwd, char* taskID, char* folderID, char* videoResolution, int platform);
extern char* DownloadFile(char* hash, char* rePath, char* taskID, char* absPath, char* pwd, long long int port);
extern char* GetFileInfo(char* hash, long long int port);
extern char* SetKeyValue(char* key, char* value, long long int port);
extern char* AsyncSetKeyValue(char* content);
extern char* GetKeyValue(char* key, long long int port);
extern char* AsyncGetKeyValue(char* content);
extern char* SetKeyValueByCategory(char* category, char* key, char* value);
extern char* GetKeyValueByCategory(char* category, char* key, long long int port);
extern void GetAllDownloadProcessTask(char* taskID);
extern char* MoveFile(char* oldCategory, char* newCategory, char* key);
extern char* DelFile(char* category, char* hash);
extern char* RenameFile(char* category, char* name, char* hash, long long int port);
extern char* StopDownloadFile(char* taskID);
extern char* DelProcess(char* hash);
extern char* ReUpload(char* hash);
extern char* StopUpload(char* hash);
extern char* SetDownloadFileNum(int num);
extern char* CreateThumbImage(char* path);
extern char* DeleteDownloadFile(char* hash);
extern char* DepositSpaceOfflineSign(char* param);
extern char* GetUserSpaceV2(long long int port);
extern char* GetUserSign(char* fileHash);
extern char* TransferCoin(long long int index, long long int gas, long long int gaslimit, char* amount, char* to, char* contractAddress);
extern char* CheckFilePwd(char* hash, char* pwd, long long int port);
extern char* CheckFileOwner(char* hash);
extern char* FileCollectionV1(char* hash, char* filePwd, char* userPwd, short int platform, char* describe, long long int port);
extern char* GetUploadFileInfo(short int platform, long long int port);
extern char* DelUploadFileV1(char* hash, char* unique, short int platform, long long int port);
extern char* GetDelFileSign(char* hash, char* unique, short int platform);
extern char* AddDownloadProcessHash(char* hash);
extern char* DelDownloadProcessHash(char* hash);
extern char* AddUploadProcessHash(char* hash);
extern char* DelUploadProcessHash(char* hash);
extern char* SetUploadLimit(char* eventData);
extern char* ResetFilePassword(char* hash, char* pwd, long long int port);
extern char* GenSharingLink(char* content, long long int port);
extern char* GetSharedInfo(char* link, long long int port);
extern char* HashSharing(char* content, long long int port);
extern void SetKeyValueByCloudChannel(char* key, char* value, char* taskId);
extern void GetKeyValueByCloudChannel(char* key, char* taskId);
extern void DeleteKeyValueByCloudChannel(char* key, char* taskId);
extern void FileCollectionV1ByCloudChannel(char* hash, char* filePwd, char* userPwd, short int platform, char* describe, char* taskId);
extern void UploadSinFileByCloudChannel(char* path, char* thumb, short int isEncrypt, short int isOrigin, short int quality, char* taskId);
extern void GetThumbnailByCloudChannel(char* hash, char* password, char* absPath, char* taskId);
extern void GenSharingLinkByCloudChannel(char* content, char* taskId);
extern void GetSharedInfoByCloudChannel(char* link, char* taskId);
extern void DecodeDownloadFile(long long int port, char* domain, char* fileHash, char* fPath, char* outDir, char* uPwd);
extern void InitHttpUploadWithCallBack(long long int port, char* domain, char* thumbPath, char* fPath, char* outDir, short int isEncrypt, short int platform, char* callBackUrl);
extern void UploadFileTaskByPlatformV3(char* path, char* extend, char* thumb, char* pwd, char* taskID, short int platform, char* callback);
extern void InitHttpUploadWithCallBackV1(long long int port, char* domain, char* thumbPath, char* fPath, char* outDir, char* pwd, short int platform, char* callBackUrl, char* extend);
extern void InitHttpSocialfiUpload(long long int port, char* domain, char* thumbPath, char* fPath, char* outDir, char* pwd, short int platform, char* callBackUrl, char* extend, short int isTranscode, char* transcodeCallback);
extern void HttpSaveFile(long long int port, char* domain, char* fileHash, char* filePwd, char* userPwd, short int platform);
extern void HttpClearFile(long long int port, char* domain);
extern void CloudHttpPing(long long int port, char* proxyStr);
extern char* UploadOssFileV2(long long int port, char* localFilePath, char* dir, long int isForever, char* encryptFileName);
extern void UploadPreSign(long long int port, char* localFilePath, char* dir, long int isForever, char* encryptFileName);
extern void DownloadOssFile(long long int port, char* localFile, char* targetFile);
extern void DeCryptFile(long long int port, char* filePath, char* targetPath);

#ifdef __cplusplus
}
#endif
