/* 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.  */











/* 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


// 向SDK设置自定义的CoinType 和 前缀
//
extern void SetCoinTypeCustom(long long int coinType, char* addrPre);
extern char* Init(char* conf, char* addrpre, char* pwd);

// 初始化设置生成配置文件，addpre等等
//
extern char* InitV2(char* conf, char* addrpre, char* pwd, char* impwd);
extern char* InitV3(char* conf, char* addrpre, char* prk);

// 检查是否升级CoinType
//
extern char* CheckUpgradePreAndCoinType(char* conf, char* addrpre);

// 升级CoinType
//
extern char* UpgradePreAndCoinType(char* conf, char* newaddrpre, long long int newcoinType, char* pwd, char* imprik);

// 检查当前地址(ip+port)是否在线
//
extern char* CheckP2pOnline(char* addr);

// 设置im日志等级 0-7, 3 error 4 waring 6 info 7 debug
//
extern void SetLogLevel(long int level);

// 移除本地生成的各种文件及文件夹(包括keystore，wallet，logs等等)
//
extern char* RemoveCache();

// 设置语言
//
extern void SetLang(char* lan);

// 获取默认的钱包地址
//
extern char* GetCoinbase(char* password);

// 检查钱包密码是否正确
//
extern char* CheckPassword(char* password);

// 更改钱包密码
//
extern char* UpdatePassword(char* oldpwd, char* newpwd);

// 导出助记词
//
extern char* ExportMnemonic(char* pwd);

// 导入助记词，从实现角度来看，应该是弃用了
//
extern char* ImportMnemonic(char* pwd, char* word);

// 导入助记词
//
extern char* ImportMnemonicV2(char* pwd, char* impwd, char* minerpwd, char* word);

// 导入助记词V3
//
extern char* ImportMnemonicV3(char* pwd, char* impwd, char* minerpwd, char* word, long int num);

// 创建新的钱包地址
//
extern char* CreateNewAddrV1(char* password, long int walletIndex);

// 获取所有钱包地址
//
extern char* GetAllAddr(long int walletIndex);
extern char* GetMsg();
extern void SetConfPath(char* path);

// 关闭本次area链接（IM使用）
//
extern void Close();
extern char* UUID();
extern char* UUIDS(long int n);
extern char* SnowId();

// 获取本节点信息
//
extern char* GetNodeId();
extern char* GetHash(char* str);

// 删除本地keystore文件
//
extern char* RemoveKey(char* conf);
extern char* RemoveMachineId(char* conf);

// 检查当前area是否在线
//
extern char* CheckOnline();

// 重连P2P
//
extern char* ReConnect();

// 关闭P2P网络
//
extern char* CloseNet();

// 获取连接数量
//
extern char* GetSessionNum();

// 获取超级节点id
//
extern char* GetSuperNodeId();

// 检查助记词
//
extern char* CheckMnemonic(char* content);

// 获取当前版本（这个地方是写死的，没啥用）
//
extern char* Version();
extern void ExportCallbackFunc(GoInterface cbi);
extern char* GetWalletZeroAddrPrk(char* pwd);
extern char* GetNetAddrKeyByMnemonic(char* word);
extern char* InitLinked();
extern char* LPush(char* lKey, char* iKey, char* valByte, char* val);
extern char* LGet(char* itemKey);
extern char* LDel(char* lKey, char* iKey);
extern char* LUpdate(char* lKey, char* iKey, char* valByte, char* val);
extern char* LSetMeta(char* lkey, char* linked);
extern char* LGetMeta(char* lkey);
extern char* GetKeyStorePrv(char* pwd);
extern char* GetPukBase58StrByAddr(char* addr, char* pwd, long int walletIndex);
extern char* GetPukBase58StrByPrikIndex(char* pwd, long int prikIndex);
extern char* GetUseKeystoreIndex();
extern char* BuildNetAddrByPuk(char* puk);
extern char* BuildAddrByPuk(char* pre, char* puk);
extern char* SignByWalleAddr(char* addr, char* text, char* addrpass);
extern char* ResetWalletPassword(char* oldPwd, char* newPwd);
extern char* BuildNetAddrByMnemonic(char* word);
extern char* GetUserAuth();

// 生成DH密钥对
//
extern char* GenerateDHPair();

// 获取HTTP加密DH客户端公钥
//
extern char* GetHTTPDHKeyPublicKey();

// HTTP加密
//
extern void EncryptHTTPData(long long int port, char* data);

// HTTP解密
//
extern void DecryptHTTPData(long long int port, char* data);
extern void StartWsClient(char* serverServer, char* cloudServer);
extern char* SendMsgOfWs(char* data);
extern void ReceiveMsgOfWs();
extern void InitCallBack(GoInt64 port);
extern char* StartWalletConn(char* walletServer);
extern char* StartExchangeConn(char* exchangeServer);
extern char* CloseWalletConn();
extern char* CloseCloudConn();
extern char* CloseExchangeConn();
extern char* CheckWsConnState();
extern char* Compile(char* ContractName, char* Env, char* MacPath);
extern char* CompileInput(char* Abi, char* InputData);
extern char* Analysis(char* Abi, char* Method, char* Comment);
extern char* CreateOfflineTx(char* keyStorePath, long int walletIndex, char* srcaddress, char* address, char* pwd, char* comment, char* amount, char* gas, char* frozenHeight, char* nonce, char* currentHeight, char* domain, char* domainType);
extern char* CreateOfflineTxWithGasPay(char* keyStorePath, long int walletIndex, char* srcaddress, char* address, char* pwd, char* comment, char* amount, char* gas, char* frozenHeight, char* nonce, char* currentHeight, char* domain, char* domainType, char* gasPayAddress);
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* GetComment(char* tag, char* jsonData);
extern char* MultDeal(char* tag, char* jsonData, char* keyStorePath, long int walletIndex, char* srcaddress, char* address, char* pwd, char* comment, long long unsigned int amount, long long unsigned int gas, long long unsigned int frozenHeight, long long unsigned int gasPrice, long long unsigned int nonce, long long unsigned int currentHeight, char* domain, long long unsigned int domainType);

// 针对移动端的构建交易（包含普通交易和合约交易）
//
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 char* GetWalletCoinAddress(long int walletIndex, long int addressIndex, char* pwd);

// 添加地址
//
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();
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);
extern char* OfflineSign(long int port, char* unSignTx, long int walletIndex, long int addressIndex, char* passwd, char* chain);

// 使用USDT购买云储存空间之前的授权
//
extern char* ApproveUsdtForBuySpace(long int port, char* chain, char* passwd, char* amount, char* gas, long int walletIndex, long int addressIndex);

// 使用USDT兑换USR之前的授权
//
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* CreateMultiSignAddr(long int walletIndex, long int gas, long int nonceInt, long int currentHeight, char* pwd, char* comment, char* pukArrays);
extern char* CreateOfflineTxBuild_MultsignPay(long int walletIndex, long int gas, long int amount, long int frozenHeight, char* multAddressStr, char* addressStr, char* pwd, char* multPukStr, char* otherPub);
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 char* RunServer();
extern char* SetP2pPort(char* port);
extern void RunP2p(long long int port, char* remoteaddr, char* nodeAddr, char* devName, char* runEnv);
extern char* RunP2pByPrk(char* conf, char* remoteaddr, char* prk);
extern char* SendMsg(long int msgid, char* tonodeid, char* topuk, char* msg, long long int retry);
extern char* SendMsgByHttp(long int msgid, char* tonodeid, char* topuk, char* msg, long long int retry);
extern char* GroupId();
extern char* GetMegHash(long int msgid, char* tonodeid, char* msgstr);
extern void UpdateUserInfo(long long int port, long int version, char* content);
extern void GetUserinfo(long long int port, char* addrNet, char* content);
extern char* GetTime();
extern char* UpdateIsAllRead(long int needRead);
extern char* GetMachineId(char* content);
extern char* GetServerTime(char* content);
extern char* SetAddrData(long int genre, char* content);
extern char* SetAddrData1(char* content);
extern char* SetNewChamberData(char* content);
extern char* SetNewChamberVer(char* content);
extern char* CreateGroup2(char* content);
extern char* UpdateGroup(char* content);
extern char* ChangeGroupMember(char* content);
extern char* GroupDissolve(char* content);
extern char* ManagerGroupMember(char* content);
extern char* UpdateGroup2(char* content);
extern char* JoinGroupApply(char* content, int isOfficial);
extern void GetGroupInfo(long long int port, char* content);
extern char* IsGroupMembers(char* content);
extern char* InGroupMembers(char* content);
extern char* GetGroupMemberListRemotePic(char* content);
extern void SendGroupMsg2(long long int port, char* content, char* toAddr, long int genre, int isOfficial);
extern char* SendGroupByHttp(char* content, char* toAddr, long int genre);
extern void LoadMoreGroupMsg(long int port, char* groupId);
extern char* GetGroupPasswd(char* content);
extern char* SetAreaName(char* content);
extern void UpdateGroupMemberCallback(char* gid);
extern void AddWhiteList(char* content);
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);
extern char* SetAreaVerByMid(char* content);
extern char* SetAllProxy2(char* content, char* id, char* ip, long int port);
extern void GetDeviceData(long long int port, long long int ver);
extern char* UpdateCloudFileTime(char* content);
extern char* RemoveCloudFileTime(char* content);
extern char* GetAllProxy(char* content);
extern void SetWSMessagePort(long int port);
extern void StartWSMessageServer();
extern void StartGetMessage();
extern char* BindDomain(char* content, char* id, long int version);
extern char* UnBindDomain(char* content, char* id, long int version);
extern char* GetNodeBindDomain(char* content, char* id, long int version);
extern char* FindDomainBindNodes(char* content, char* id, long int version);
extern char* LoadInitData(char* content);
extern char* MessageDataRecv(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();
extern char* CgoHandleStat();
extern char* GetMsgByCgoHandle(GoUintptr handleVal);
extern void CleanCgoHandleByPort(long long int port);
extern char* ClearLoginInfo();
extern char* SetAreaConnType(char* connType);
extern char* SetReadMsgDelVersion(char* connType);
extern char* SetBlockStranger(char* connType);
extern char* GetAllOnlineMachine(long int msgid, char* content);
extern char* CloseOnlineMachine(long int msgid, char* addr, char* machine);
extern char* CloseOnlineMachineV2(long int msgid, char* machine, long int cType, long int version, char* isDel);
extern char* OnlineMachineRcv(long int cmd, char* hash);
extern char* OnlineMachineRcvV2(long int cmd, char* hash, char* isDel);
extern char* AddressCoinToEvmAddress(char* addr);
extern char* EvmAddressToAddressCoin(char* addr);
extern char* AuthLogin(char* proxy, char* toCurPuk);
extern char* SetMainDevice(char* proxy);
extern char* SignatureStr(char* str);
extern char* SignVerificationStr(char* edpuk, char* msg, char* sigMsg);
extern void SaveDeviceData(long long int port, char* proxy);
extern char* BindTempDev(char* proxy);
extern void SendP2pMsgToNode(long long int port, char* recvId, char* machineId, char* data);
extern void SendMediaMsgToNode(long long int port, char* data);
extern char* GetCurProxy();
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* GetCommonDatabase(char* content);
extern char* SetCommonDatabase(char* content);
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* AddErrLog(long long int addTime, long long int ver, char* project, char* file, char* funcName, char* user, char* errLog, char* other);
extern char* GetErrLog();
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, long int waitNum);
extern char* SavePriInfo(char* str);
extern char* GetPriInfo(char* str);
extern char* DelPriInfo();
extern char* GetGroupMemberList(char* str);
extern char* RecoveryMsgByFileContent(char* str);
extern char* EncryptContent(char* key, char* content);
extern char* DecryptContent(char* key, char* content);
extern char* AddImCommonData(char* key, char* value, char* dataType, long int version);
extern char* DelImCommonData(char* key, long int version);
extern char* GetImCommonData(char* key);
extern void NoticeConfig(long long int port, char* data);
extern char* GetConnStatus();
extern void OssIsExit(long long int port, char* param);
extern void ExitAccount();
extern char* RunCloudStoreP2p(char* ip, char* netId, char* confStr, long int port);
extern char* CheckCloudP2p();
extern char* GetStorageConf();
extern char* SetCloudProxy(char* ip);
extern void CloudStartRpc();
extern char* UploadFile(char* path, char* extend, char* thumb, char* password);
extern char* UploadFileByPlatform(char* path, char* extend, char* thumb, char* password, char* platform);
extern char* UploadFileByPlatformV2(char* path, char* extend, char* thumb, char* password, char* folderID, char* videoResolution, int platform);
extern void UploadFileTask(char* path, char* extend, char* thumb, char* pwd, char* taskID);
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* UpdateFileName(char* hash, char* name);
extern char* AsyncUploadSinFile(char* content);
extern char* AsyncGetUploadProcess(char* content);
extern char* DownloadFile(char* hash, char* rePath, char* taskID, char* absPath, char* pwd, long int port);
extern void DownloadFileTask(char* hash, char* rePath, char* taskID, char* absPath, char* pwd);
extern char* DelUploadFile(char* hash);
extern char* GetUploadProgress(char* hash);
extern char* GetDownloadProgress(char* taskID);
extern void GetDownloadProgress2(char* taskID);
extern char* GetFileList(long long int page, long long int limit, char* category);
extern char* GetAllFileDetail();
extern char* GetFileInfo(char* hash, long int port);
extern char* GetUploadStatus(char* hash);
extern char* AsyncGetUploadStatus(char* content);
extern char* AsyncGetUploadStatusWithPwd(char* content);
extern char* SetKeyValue(char* key, char* value, long int port);
extern char* AsyncSetKeyValue(char* content);
extern char* FileCollection(char* fileHash, char* oldPwd, char* newPwd);
extern char* GetFileCollectionInfo(char* fileHash, char* oldPwd, char* newPwd);
extern char* GetKeyValue(char* key, long int port);
extern char* AsyncGetKeyValue(char* content);
extern char* DeleteKeyValue(char* key);
extern char* AsyncDeleteKeyValue(char* content);
extern char* GetValues(char* category);
extern char* GetValuesNotAddPerm(char* category);
extern char* DeleteValue(char* category, char* key);
extern char* AsyncDeleteValue(char* content);
extern char* SetKeyValueByCategory(char* category, char* key, char* value);
extern char* AsyncSetKeyValueByCategory(char* content);
extern char* GetKeyValueByCategory(char* category, char* key, long int port);
extern char* AsyncGetKeyValueByCategory(char* content);
extern char* GetValueNotAddPermissions(char* category, char* key);
extern char* AsyncGetValueNotAddPermissions(char* content);
extern char* KeyValueList();
extern char* KeyValueCount();
extern char* GetAllUploadProgress();
extern char* GetAllUploadProgressByPlatform(char* platform);
extern void GetAllUploadProgressTask(char* taskID);
extern char* AsyncGetAllUploadProgress(char* content);
extern char* DownloadFileList();
extern char* AsyncDownloadFileList(char* content);
extern void GetAllDownloadProcessTask(char* taskID);
extern char* UpdateDownloadDir(char* path);
extern char* GetDownloadDir();
extern char* AddFileDir(char* category, char* dir);
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 int port);
extern char* QueryFolderDetail(char* category);
extern char* CollectFile(char* name, char* hash, char* t, char* source, long long int size);
extern char* GetFileListOfCollection();
extern char* DelCollectedFile(char* hash);
extern char* StopDownloadFile(char* taskID);
extern char* DelProcess(char* hash);
extern char* ReUpload(char* hash);
extern char* StartUpload(char* hash);
extern char* StopUpload(char* hash);
extern char* GetSpaceInfo();
extern char* BatchFileSpace(char* path, long long int num);
extern char* AddFileSpace(char* path);
extern char* BatchDelFileSpace(char* nums);
extern char* DelFileSpace(long long int id);
extern char* DataBySearch();
extern char* BatchDownload(char* hashs, char* category, char* path);
extern char* DownloadImgByUrl(char* content);
extern char* SetDownloadFileNum(int num);
extern char* DownloadImgByUrlProcess(char* content);
extern char* CreateThumbImage(char* path);
extern char* GetFindThumbnailByHash(char* content);
extern char* GetThumbnailByHash(char* fileHash, char* pwd);
extern char* IP2Location(char* ip);
extern char* DeleteDownloadRecord(char* taskID);
extern char* DeleteDownloadFile(char* hash);
extern char* BatchDelProcess(char* hash);
extern char* DelAllProcess();
extern char* DepositSpaceOfflineSign(char* param);
extern char* DepositSpaceOfflineSignV1(char* param);
extern char* ReleaseDepositSpaceOfflineSign(char* param);
extern char* ReleaseDepositSpaceOfflineSignV1(char* param);
extern char* DepositEthOfflineSign(char* param);
extern char* PayoutsOfflineSign(char* param);
extern char* WithRawOfflineSign(char* param);
extern char* UnfrozenOfflineSign(char* param);
extern char* GetUserSpace();
extern char* GetUserSpaceV2(long int port);
extern char* CollectAdd(char* param);
extern char* CollectDel(char* param);
extern char* CollectList(char* param);
extern char* CollectByScore(char* param);
extern char* GetFileUploadMaxSize();

/*//export InitCloudCallBack
func InitCloudCallBack(port int64) {
	cloud2.WsSetCallBack(port, SendToPortOfWs)
}
*/
extern void CancelCloudTask(char* taskID);
extern void ExitProcess();
extern GoUint8 CheckCloudReady();
extern char* GetUserSign(char* fileHash);
extern char* SwapCoin(long long int index, long long int gas, long long int gaslimit, char* token, char* amount, char* code);
extern char* SwapEthCoin(long long int index, long long int gas, long long int gaslimit, char* code, char* amount);
extern char* SendCoin(long long int index, long long int gas, long long int gaslimit, char* token, char* code, char* amount, char* iAddress);
extern char* SendEthCoin(long long int index, long long int gas, long long int gaslimit, char* code, char* amount, char* iAddress);
extern char* AfterSendCoin(long long int index, long long int gas, long long int gaslimit, char* iAddress, char* amount);
extern char* UnfrozenCoin(long long int index, long long int gas, long long int gaslimit);
extern char* DepositCoin(long long int index, long long int gas, long long int gaslimit);
extern char* UnDepositCoin(long long int index, long long int gas, long long int gaslimit);
extern char* ApproveCoin(long long int index, long long int gas, long long int gaslimit, char* amount, char* contractAddress);
extern char* TransferCoin(long long int index, long long int gas, long long int gaslimit, char* amount, char* to, char* contractAddress);
extern char* Allowance(long long int index, long long int gas, long long int gaslimit, char* contractAddress);
extern char* AllowanceV1(char* address, char* contractAddress);
extern char* CheckCode(long long int index, long long int gas, long long int gaslimit, char* code);
extern char* SuggestGasCoin(long long int index, char* method, char* data);
extern char* MockSuggestGasCoin(long long int index, char* method, char* data);
extern char* DepositMinCoin();
extern char* ApproveGas();
extern char* UnDepositTimeCoin();
extern char* UpdateWalletPwd(char* pwd);
extern char* GetFrozenBalance(char* address);
extern char* GetUnFrozenBalance(char* address);
extern char* SetValueRemoteCallData(char* category, char* key, char* value);
extern char* DeleteValueRemoteCallData(char* category, char* key);
extern char* GetValueRemoteCallData(char* category, char* key);
extern char* GetValuesRemoteCallData(char* category, long long int page, long long int limit);
extern char* ZAddRemoteCallData(char* category, char* member, char* value, long long int score);
extern char* ZCardRemoteCallData(char* category);
extern char* ZClearRemoteCallData(char* category);
extern char* ZCountRemoteCallData(char* category);
extern char* ZRangeRemoteCallData(char* category, long long int start, long long int stop);
extern char* ZRangeByScoreRemoteCallData(char* category, long long int min, long long int max, long long int offset, long long int count);
extern char* ZRemRemoteCallData(char* category, char* member);
extern char* ZScanRemoteCallData(char* category);
extern char* ZScoreRemoteCallData(char* category, char* member);
extern char* ZGetRemoteCallData(char* category, char* member);
extern char* CheckFilePwd(char* hash, char* pwd, long int port);
extern char* CheckFileOwner(char* hash);
extern char* FileCollectionV1(char* hash, char* filePwd, char* userPwd, short platform, char* describe, long int port);
extern char* CollectionText(char* hash, short platform, char* describe);
extern char* GetTmpUploadFileInfo();
extern char* GetUploadFileInfo(short platform, long int port);
extern char* IMBackupDeleteFile(char* unique);
extern char* DelUploadFileV1(char* hash, char* unique, short platform, long int port);
extern char* GetDelFileSign(char* hash, char* unique, short platform);
extern char* DelUploadFiles(char* data);
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* IMUploadSize(long long int size);
extern char* CloudUploadSize(long long int size);
extern char* AsyncResetFilePassword(char* content);
extern char* ResetFilePassword(char* hash, char* pwd, long int port);
extern char* GetUploadSpeed();
extern char* GetUploadSpeedByHash(char* taskId);
extern char* GetUploadStatusWithPwd(char* hash, char* pwd);
extern char* GetValue(char* category, char* key);
extern char* SetValue(char* category, char* key, char* value);
extern char* GenSharingLink(char* content, long int port);
extern char* GetSharedInfo(char* link, long int port);
extern char* DelSharedInfo(char* link);
extern char* UpdateSharedInfo(char* link, char* content);
extern char* GetAllShared();
extern char* ClearShared();
extern char* HashSharing(char* content, long int port);
extern char* DelHashSharedInfo(char* link);
extern char* GetAllHashShared();
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 GetValueNotAddPermissionsByCloudChannel(char* category, char* key, char* taskId);
extern void GetValueByCloudChannel(char* category, char* key, char* taskId);
extern void DeleteValueByCloudChannel(char* category, char* key, char* taskId);
extern void SetValueByCloudChannel(char* category, char* key, char* value, char* taskId);
extern void ResetFilePasswordByCloudChannel(char* hash, char* pwd, char* taskId);
extern void GetUploadStatusWithPwdByCloudChannel(char* hash, char* pwd, char* taskId);
extern void DelUploadFileV1ByCloudChannel(char* hash, char* unique, short platform, char* taskId);
extern void GetUploadFileInfoByCloudChannel(short platform, char* taskId);
extern void FileCollectionV1ByCloudChannel(char* hash, char* filePwd, char* userPwd, short platform, char* describe, char* taskId);
extern void CollectionTextByCloudChannel(char* hash, short platform, char* describe, char* taskId);
extern void UploadSinFileByCloudChannel(char* path, char* thumb, short isEncrypt, short isOrigin, short 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 DelSharedInfoByCloudChannel(char* link, char* taskId);
extern void UpdateSharedInfoByCloudChannel(char* link, char* content, char* taskId);
extern void GetAllSharedByCloudChannel(char* taskId);
extern void ClearSharedByCloudChannel(char* taskId);
extern void HashSharingByCloudChannel(char* content, char* taskId);
extern void DelHashSharedInfoByCloudChannel(char* link, char* taskId);
extern void GetAllHashSharedByCloudChannel(char* taskId);

/*
  GetUploadFilesInfoV2 description of function.
  @Param pathFile *C.char Path to the file to be uploaded
  @Return: *C.char JSON response with operation result
*/
extern char* GetUploadFilesInfoV2(char** paths, int count);
extern void DecodeDownloadFile(long int port, char* domain, char* fileHash, char* fPath, char* outDir, char* uPwd);
extern void InitHttpUpload(long int port, char* domain, char* thumbPath, char* fPath, char* outDir, short isEncrypt, short platform);
extern void InitHttpUploadWithCallBack(long int port, char* domain, char* thumbPath, char* fPath, char* outDir, short isEncrypt, short platform, char* callBackUrl);
extern char* Offer(char* content);
extern char* Answer(char* content);
extern char* Candidate(char* content);
extern char* CloseCall(char* content);
extern char* GetCallTime();
extern char* TurnInfo(char* content);
extern char* GetRealIpByTurn();
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();
extern void LkRoomInfo(long long int port, char* param);
extern void LkRoomParticipants(long long int port, char* param);
extern void LkLeaveRoom(char* param);

// 构建"创建新回合"的comment
//
extern char* CreateNewRound(char* userImAddr, char* title, char* imgUrl, long int totalTickets, char* rewardSetsJsonData);

// 构建"审核"的comment
//
extern char* Audit(long int roundId, long int pass, char* noPassReason);

// 构建"下注"的comment
//
extern char* Betting(long int roundId, char* userImAddr, long int payTickets, long int freeTickets, char* inviter);

// 构建"管理员权限转让"的comment
//
extern char* ManagerOwnership(char* newManager);

// 构建"提现奖励"的comment
//
extern char* WithdrawReward(long int roundId, long int amount);

// 构建"提现项目方收益"的comment
//
extern char* WithdrawProjectIncome(long int amount);

// 构建"返还活动创建者押金和分红"的comment
//
extern char* Refund(long int roundId);
extern char* UploadOssFile(long long int port, char* localFilePath, char* dir, long int isForever);
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 char* ReportData(long long int port, long int messageId, char* data);
extern void DeCryptFile(long long int port, char* filePath, char* targetPath);
extern void UploadBigFileBySign(long long int port, char* filePath, char* targetDir, long long int partSize, int isForever);
extern void MergeUploadFile(long long int port, char* objectname, char* uploadID);
extern void SetClientTestFlag();

#ifdef __cplusplus
}
#endif
