UNPKG

myria-core-sdk

Version:

Latest version SDK

131 lines 11.3 kB
import { TradesAPI } from "../core/apis/trades.api"; import { CommonModule } from "./CommonModule"; import { convertAmountToQuantizedAmount } from "../utils/Converter"; import { TransactionManager } from "./TransactionManager"; export class TradeManager { constructor(mClient) { this.tradesAPI = new TradesAPI(mClient.env); this.commonModule = CommonModule.getInstance(mClient); this.transactionManager = new TransactionManager(mClient); } async createTrades(payload) { let createTradesData; if (!payload.orderId) { throw new Error("Missing the orderId"); } if (!payload.amountBuy) { throw new Error("Missing the amountBuy"); } if (!payload.amountSell) { throw new Error("Missing the amountSell"); } if (!payload.starkKey) { throw new Error("Missing the starkKey"); } if (!payload.vaultIdBuy) { throw new Error("Missing the vaultIdBuy"); } if (!payload.vaultIdSell) { throw new Error("Missing the vaultIdSell"); } if (!payload.assetIdBuy) { throw new Error("Missing the assetIDBuy"); } if (!payload.assetIdSell) { throw new Error("Missing the assetIDSell"); } if (!payload.buyerAddress) { throw new Error("Wallet address for buyer is not defined!"); } // Check if asset type is available for listing let isAssetIdBuySupportListing = false; const availableAssetForListing = await this.transactionManager.getSupportedTokens(); if (availableAssetForListing.status === "success") { availableAssetForListing.data.forEach((asset) => { var _a; if (asset.assetType.toLowerCase() === ((_a = payload.assetIdSell) === null || _a === void 0 ? void 0 : _a.toLowerCase()) && asset.isSupportListing) { isAssetIdBuySupportListing = true; } }); } else { throw new Error("Fetch assets listing supported failed, cannot create order currently."); } if (!isAssetIdBuySupportListing) { throw new Error("This currency token is not supporting for trading yet"); } // SET EXPIRATION TO BE EXPIRE IN 12 YEARS const expirationTimestamp = new Date(); expirationTimestamp.setDate(expirationTimestamp.getFullYear() + 12); const expirationTime = Math.floor(expirationTimestamp.getTime() / (3600 * 1000)).toString(); try { const nonce = payload.nonce || Math.floor(Math.random() * 100) + 1; // random INT // const quantizedAmountSell = String(convertAmountToQuantizedAmount(String(payload.amountSell))); let orderPayload = { includeFees: false, walletAddress: "", vaultIdSell: 0, vaultIdBuy: 0, amountSell: "", amountBuy: "", assetIdSell: "", assetIdBuy: "", nonce: 0, expirationTimestamp: 0, }; let starkSignature = undefined; orderPayload = { includeFees: false, walletAddress: payload.buyerAddress, vaultIdSell: payload.vaultIdSell, vaultIdBuy: payload.vaultIdBuy, amountSell: String(convertAmountToQuantizedAmount(payload.amountSell)), amountBuy: String(payload.amountBuy), assetIdSell: payload.assetIdSell, assetIdBuy: payload.assetIdBuy, nonce: nonce, expirationTimestamp: parseInt(expirationTime), }; console.log("orderPayload => ", orderPayload); starkSignature = await this.commonModule.generateStarkSignatureForOrder(orderPayload); if (!starkSignature) { throw new Error("Stark signature generation error "); } const requestBody = { orderId: payload.orderId, amountBuy: String(payload.amountBuy), amountSell: String(convertAmountToQuantizedAmount(payload.amountSell)), includeFees: payload.includeFees, nonce: nonce, feeInfo: payload.feeInfo, starkKey: payload.starkKey, vaultIdBuy: payload.vaultIdBuy, vaultIdSell: payload.vaultIdSell, starkSignature: starkSignature, expirationTimestamp: parseInt(expirationTime), orderType: "BUY", }; const createTradesResponse = await this.tradesAPI.createTrades(requestBody); if ((createTradesResponse === null || createTradesResponse === void 0 ? void 0 : createTradesResponse.status) === "success") { createTradesData = createTradesResponse === null || createTradesResponse === void 0 ? void 0 : createTradesResponse.data; } else { throw new Error("Create Trades failure"); } } catch (err) { throw new Error(err); } return createTradesData; } async getTrades(startKey, tradesType) { const tradesList = await this.tradesAPI.getTrades(startKey, tradesType); return tradesList; } async getTradesById(id) { const tradesDetail = await this.tradesAPI.getTradesById(id); return tradesDetail; } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVHJhZGVNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL21vZHVsZXMvVHJhZGVNYW5hZ2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQVFwRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDOUMsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDcEUsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFMUQsTUFBTSxPQUFPLFlBQVk7SUFLdkIsWUFBWSxPQUFxQjtRQUMvQixJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUM1QyxJQUFJLENBQUMsWUFBWSxHQUFHLFlBQVksQ0FBQyxXQUFXLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDdEQsSUFBSSxDQUFDLGtCQUFrQixHQUFHLElBQUksa0JBQWtCLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDNUQsQ0FBQztJQUVNLEtBQUssQ0FBQyxZQUFZLENBQ3ZCLE9BQTJCO1FBRTNCLElBQUksZ0JBQXFCLENBQUM7UUFDMUIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUU7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxDQUFDO1NBQ3hDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDO1NBQzFDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUU7WUFDdkIsTUFBTSxJQUFJLEtBQUssQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO1NBQzNDO1FBQ0QsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUU7WUFDckIsTUFBTSxJQUFJ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