myria-core-sdk
Version:
Latest version SDK
131 lines • 11.3 kB
JavaScript
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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