@bluefin-exchange/bluefin-v2-client
Version:
The Bluefin client Library allows traders to sign, create, retrieve and listen to orders on Bluefin Exchange.
112 lines • 6.27 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.VaultTVLInterval = exports.APIErrorMessages = exports.VerificationStatus = exports.SuccessMessages = exports.TransformToResponseSchema = exports.handleResponse = exports.LOCKED_ERROR_MESSAGE = void 0;
const library_sui_1 = require("@firefly-exchange/library-sui");
const lockErrorRetryDelayMS = 2000;
const lockErrorMaxRetries = 5;
exports.LOCKED_ERROR_MESSAGE = "Failed to sign transaction by a quorum of validators because of locked objects";
const handleResponse = (response, ok, customMessage) => {
const mutatedResponse = {
ok,
data: (0, library_sui_1.getValue)(response.data, "originalError.transaction", response.data),
message: customMessage ||
(0, library_sui_1.getValue)(response.data, "originalError.reason", response.message),
code: (0, library_sui_1.getValue)(response.data, "originalError.code", response.code),
stack: response.message,
};
return mutatedResponse;
};
exports.handleResponse = handleResponse;
const TransformToResponseSchema = (contactCall, successMessage, isSponsored) => __awaiter(void 0, void 0, void 0, function* () {
for (let retryNo = 0; retryNo < lockErrorMaxRetries; retryNo++) {
if (!isSponsored) {
const tx = yield contactCall();
if (library_sui_1.Transaction.getStatus(tx) === "success") {
return (0, exports.handleResponse)({
data: tx,
message: successMessage,
code: 200,
}, true);
}
if (library_sui_1.Transaction.getError(tx)) {
return (0, exports.handleResponse)({
data: tx,
message: library_sui_1.Transaction.getError(tx),
code: 400,
}, false);
}
const errorMessage = tx.toString();
if (errorMessage.includes("MoveAbort") &&
errorMessage.includes("deposit_to_asset_bank") &&
errorMessage.includes("1030")) {
return (0, exports.handleResponse)({
data: tx,
message: tx,
code: 400,
}, false, "Minimum deposit to Pro is 1 USDC");
}
return (0, exports.handleResponse)({
data: tx,
message: tx,
code: 400,
}, false);
}
const res = yield contactCall();
const obj = {
data: res,
code: 200,
message: "",
ok: true,
};
return obj;
}
});
exports.TransformToResponseSchema = TransformToResponseSchema;
var SuccessMessages;
(function (SuccessMessages) {
SuccessMessages["adjustLeverage"] = "Leverage Adjusted to {leverage}x.";
SuccessMessages["adjustMarginAdd"] = "{amount} USDC margin Added to position.";
SuccessMessages["adjustMarginRemove"] = "{amount} USDC margin Removed from position.";
SuccessMessages["withdrawMargin"] = "{amount} USDC withdrawn.";
SuccessMessages["claimFundsFromVault"] = "{amount} claimed from vault.";
SuccessMessages["claimRewardsFromRewardPool"] = "Rewards claimed from reward pool.";
SuccessMessages["withdrawFundsFromVault"] = "{amount} {symbol} withdraw request sent to pool.";
SuccessMessages["approveUSDC"] = "{amount} USDC approved.";
SuccessMessages["depositToBank"] = "{amount} USDC deposited to Margin Bank.";
SuccessMessages["depositToVault"] = "{amount} {symbol} deposited to pool.";
SuccessMessages["setSubAccounts"] = "This {address} is successfully {status} as a subaccount";
SuccessMessages["transferCoins"] = "{balance} {coin} transferred to {walletAddress}";
SuccessMessages["swapAndDepositToPro"] = "Successfully swapped and deposited {amount} USDC to Pro.";
SuccessMessages["withdrawAllSwapAndDepositToPro"] = "Successfully withdrew funds, swapped, and deposited {amount} USDC to Pro.";
SuccessMessages["closedDelistedPositionsSwapAndDepositToPro"] = "Successfully closed remaining positions, swapped and deposited {amount} USDC to Pro.";
SuccessMessages["closedDelistedPositionsAndWithdrawMargin"] = "Successfully closed remaining positions and withdrew {amount} margin.";
SuccessMessages["closeDelistedPosition"] = "Successfully closed {symbol} position.";
})(SuccessMessages || (exports.SuccessMessages = SuccessMessages = {}));
var VerificationStatus;
(function (VerificationStatus) {
VerificationStatus["Success"] = "success";
VerificationStatus["Restricted"] = "restricted";
VerificationStatus["Blocked"] = "blocked";
})(VerificationStatus || (exports.VerificationStatus = VerificationStatus = {}));
var APIErrorMessages;
(function (APIErrorMessages) {
// eslint-disable-next-line max-len
APIErrorMessages["restrictedUser"] = "This wallet address has been identified as high-risk. You will not be able to open any new positions or deposit funds on the exchange. You may, however, close out any open positions and withdraw free collateral";
})(APIErrorMessages || (exports.APIErrorMessages = APIErrorMessages = {}));
var VaultTVLInterval;
(function (VaultTVLInterval) {
VaultTVLInterval["DAY"] = "TWENTY_MINUTES";
VaultTVLInterval["WEEK"] = "THREE_HOURS";
VaultTVLInterval["MONTH"] = "TWELVE_HOURS";
VaultTVLInterval["ALL"] = "FOUR_DAYS";
})(VaultTVLInterval || (exports.VaultTVLInterval = VaultTVLInterval = {}));
//# sourceMappingURL=contractErrorHandling.service.js.map