myria-core-sdk
Version:
Latest version SDK
226 lines (211 loc) • 16.3 kB
JavaScript
import { UserAPI, UserMarketplaceAPI } from "../core/apis";
/**
* Create DeveloperAccountManager instance object
* @class DeveloperAccountManager
* @param {EnvTypes} env Environment types enum params (Ex: EnvTypes.DEV / EnvTypes.STAGING / EnvTypes.PREPROD / EnvTypes.PROD)
*/
export class DeveloperAccountManager {
constructor(env) {
this.userAPI = new UserAPI(env);
this.userMarketplaceAPI = new UserMarketplaceAPI(env);
}
/**
* @description Perform the retrieve user wallet by the Stark Key
* @param {string} starkKey Stark Key of user in L2 system of Myria
* @example <caption>Sample code</caption>
*
// Sample code on staging:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.STAGING);
const starkKey = '0x.....';
const userWalletData = await developerAccountManager.getUserWalletByStarkKey(starkKey);
console.log('Testnet Data ->', userWalletData);
// Sample code on Production:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.PRODUCTION);
const starkKey = '0x.....';
const userWalletData = await developerAccountManager.getUserWalletByStarkKey(starkKey);
console.log('Production Data ->', userWalletData);
* @returns {UserDataResponse | undefined} The details user data response for registration progress (including signature, stark key, wallet address)
* @throws {string} Exception: Stark Key is required!
* @throws {string} Http Status Code 404: User 0x... is not registered
* @throws {string} Http Status Code 500: Get user data failed - unexpected with internal server error
* @throws {string} Http Status Code 500: Internal Server Error with ${Exception}
*/
async getUserWalletByStarkKey(starkKey) {
if (!starkKey) {
throw new Error("Stark Key is required");
}
let res;
try {
const registerUserResponse = await this.userAPI.getUserByWalletAddress(starkKey);
if ((registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.status) === 'success' && (registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.data)) {
res = registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.data;
}
else {
throw new Error('Get user data failed - unexpected with internal server error');
}
}
catch (err) {
throw new Error('Internal Server Error with ' + err);
}
return res;
}
/**
* @description Perform the retrieve full user information by the Wallet address
* @param {string} ethAddress The ether wallet address of user (such as Metamask wallet address)
* @example <caption>Sample code</caption>
*
// Sample code on staging:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.STAGING);
const ethWalletAddress = '0x.....';
const userWalletData = await developerAccountManager.getUserInfoByWalletAddress(ethWalletAddress);
console.log('Testnet Data ->', userWalletData);
// Sample code on Production:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.PRODUCTION);
const ethWalletAddress = '0x.....';
const userWalletData = await developerAccountManager.getUserInfoByWalletAddress(ethWalletAddress);
console.log('Production Data ->', userWalletData);
* @returns {UserDataResponse | undefined} The details user data response for registration progress (including signature, stark key, wallet address)
* @throws {string} Exception: Eth address is required!
* @throws {string} Http Status Code 404: User 0x... is not registered
* @throws {string} Http Status Code 500: Get user data failed - unexpected with internal server error
* @throws {string} Http Status Code 500: Internal Server Error with ${Exception}
*/
async getUserInfoByWalletAddress(ethAddress) {
if (!ethAddress) {
throw new Error("Eth address is required!");
}
let res;
try {
const registerUserResponse = await this.userAPI.getUserByWalletAddress(ethAddress);
if ((registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.status) === 'success' && (registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.data)) {
res = registerUserResponse === null || registerUserResponse === void 0 ? void 0 : registerUserResponse.data;
}
else {
throw new Error('Get user data failed - unexpected with internal server error');
}
}
catch (err) {
throw new Error('Internal Server Error with ' + err);
}
return res;
}
async getUserId(ethAddress) {
if (!ethAddress) {
throw new Error("Eth address is required!");
}
let res;
try {
const userResponse = await this.userAPI.getUserIDInfo(ethAddress);
if ((userResponse === null || userResponse === void 0 ? void 0 : userResponse.status) === 'success' && (userResponse === null || userResponse === void 0 ? void 0 : userResponse.data)) {
res = userResponse === null || userResponse === void 0 ? void 0 : userResponse.data;
}
else {
throw new Error('Get user data failed - unexpected with internal server error');
}
}
catch (err) {
throw new Error('Internal Server Error with ' + err);
}
return res;
}
/**
* @description Perform the retrieve full user information by the Wallet address
* @param {UserType} userType Type of user references (CUSTOMER/PARTNER)
* @param {string} referrerId Project ID/ReferrerID of referrer that end users have onboard to myria via invitation or games
* @param {string?} limit Limit records per page for paging data
* @param {UserLastEvaluatedKey?} lastEvaluatedKey Last evaluated key to support paging for users
* @example <caption>Sample code</caption>
*
// Sample code on staging:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.STAGING);
const partnerIdOfGameA = '10'; // Project game ID A
const userWalletData = await developerAccountManager.getUserByReferrerId(UserType.PARTNER, partnerIdOfGameA);
console.log('Testnet Data ->', userWalletData);
// Sample code on Production:
const developerAccountManager = new DeveloperAccountManager(EnvTypes.PRODUCTION);
const partnerIdOfGameA = '15'; // Project game ID A
const userWalletData = await developerAccountManager.getUserByReferrerId(UserType.PARTNER, partnerIdOfGameA);
console.log('Production Data ->', userWalletData);
* @returns {UserDataResponse | undefined} The details user data response for registration progress (including signature, stark key, wallet address)
* @throws {string} Exception: Eth address is required!
* @throws {string} Http Status Code 404: User 0x... is not registered
* @throws {string} Http Status Code 500: Get user data failed - unexpected with internal server error
* @throws {string} Http Status Code 500: Internal Server Error with ${Exception}
*/
async getUserByReferrerId(userType, referrerId, limit, lastEvaluatedKey) {
if (!userType) {
throw new Error('User type is required!');
}
if (!referrerId) {
throw new Error('ReferrerId is required!');
}
try {
const result = await this.userAPI.getUserByReferrerIdAndType(userType.toString(), referrerId, limit, lastEvaluatedKey);
if (result.status === 'success') {
return result.data;
}
else {
throw new Error(`GetUserByReferrerId failed: ${result}`);
}
}
catch (err) {
throw new Error(`GetUserByReferrerId failed: ${err}`);
}
}
async getUserAPIKey(myriaUserId) {
if (!myriaUserId) {
throw new Error("Myria User ID is required!");
}
const result = await this.userMarketplaceAPI.getUserInfo(myriaUserId);
try {
if (result.status === 'success' && result.data) {
return result.data;
}
else {
throw new Error(`GetUserAPIKey failed: ${result}`);
}
}
catch (err) {
throw new Error(`GetUserAPIKey failed: ${err}`);
}
}
async getBalanceETH(starkKey) {
if (!starkKey) {
throw new Error("Stark Key is required!");
}
let res;
try {
const balanceResponse = await this.userAPI.getBalanceETH(starkKey);
if ((balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.status) === "success" && (balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.data)) {
res = balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.data;
}
else {
throw new Error("Error");
}
}
catch (err) {
throw new Error(err);
}
return res;
}
async getBalanceERC20(starkKey, assetId) {
if (!starkKey) {
throw new Error("Stark Key is required!");
}
let res;
try {
const balanceResponse = await this.userAPI.getBalanceERC20(starkKey, assetId);
if ((balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.status) === "success" && (balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.data)) {
res = balanceResponse === null || balanceResponse === void 0 ? void 0 : balanceResponse.data;
}
else {
throw new Error("Error");
}
}
catch (err) {
throw new Error(err);
}
return res;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRGV2ZWxvcGVyQWNjb3VudE1hbmFnZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbW9kdWxlcy9EZXZlbG9wZXJBY2NvdW50TWFuYWdlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sY0FBYyxDQUFDO0FBSzNEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sdUJBQXVCO0lBSWxDLFlBQVksR0FBYTtRQUN2QixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2hDLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxJQUFJLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hELENBQUM7SUFHRDs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztTQXlCSztJQUNFLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFnQjtRQUNuRCxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1NBQ3pDO1FBRUQsSUFBSSxHQUFxQixDQUFDO1FBRTFCLElBQUk7WUFDRixNQUFNLG9CQUFvQixHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNqRixJQUFJLENBQUEsb0JBQW9CLGFBQXBCLG9CQUFvQix1QkFBcEIsb0JBQW9CLENBQUUsTUFBTSxNQUFLLFNBQVMsS0FBSSxvQkFBb0IsYUFBcEIsb0JBQW9CLHVCQUFwQixvQkFBb0IsQ0FBRSxJQUFJLENBQUEsRUFBRTtnQkFDNUUsR0FBRyxHQUFHLG9CQUFvQixhQUFwQixvQkFBb0IsdUJBQXBCLG9CQUFvQixDQUFFLElBQUksQ0FBQzthQUNsQztpQkFBTTtnQkFDTCxNQUFNLElBQUksS0FBSyxDQUFDLDhEQUE4RCxDQUFDLENBQUE7YUFDaEY7U0FDRjtRQUFDLE9B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