#pragma once

// Call this function at first to initialize security.
// Param: armour_dll_path: the path of armour.dll to be loadded. If is null calls get_default_path()
// Param: sid: session id (0 terminated string) or NULL
//
// return values 
// 0. if success
// 1. armour load failed
// 2. get sardInitialize failed

int sardInitialize(const wchar_t* armour_dll_path, const char* sid);

// Funtions types of "sardSetUserName" and "sardSetUserNameW" exported by armour.dll
// Call to set user name when you will get it from user
void sardSetUserName(const char* uname);
void sardSetUserNameW(const wchar_t* unameW);

// Funtions types of "sardSetUserID" and "sardSetUserIDW" exported by armour.dll
// Call to set user id when you will get it from user
void sardSetUserId(const char* uid);
void sardSetUserIdW(const wchar_t* uid);

// Funtions types of "sardSetSessionID" and "sardSetSessionIDW" exported by armour.dll
// Call to register your session id
void sardSetSessionId(const char* sid);
void sardSetSessionIdW(const wchar_t* sid);

// Funtion type of "sardGetSecureSessionID" exported by armour.dll
// Call to get secure session id created and synchronized by Sard security
// in case of error returns NULL
const char* sardGetSecureSessionId();

// Funtions types of "sardRelogin" and "sardReloginw" exported by armour.dll
// Call this after you relogin with another account
// parameters can be NULL, in this case you should sepatately call 
// sardSetUserName/sardSetUserID and sardSetSessionID
void sardRelogin(const char* uname, const char* sid);
void sardReloginW(const wchar_t* uname, const wchar_t* sid);

// Funtion type of "sardFinalize" exported by armour.dll
// Call this at the end before game close
void sardFinalize();


