@drift-labs/sdk
Version:
SDK for Drift Protocol
33 lines (32 loc) • 1.22 kB
JavaScript
Object.defineProperty(exports, "__esModule", { value: true });
exports.isUserBankrupt = void 0;
const numericConstants_1 = require("../constants/numericConstants");
const position_1 = require("./position");
const types_1 = require("../types");
function isUserBankrupt(user) {
const userAccount = user.getUserAccount();
let hasLiability = false;
for (const position of userAccount.spotPositions) {
if (position.scaledBalance.gt(numericConstants_1.ZERO)) {
if ((0, types_1.isVariant)(position.balanceType, 'deposit')) {
return false;
}
if ((0, types_1.isVariant)(position.balanceType, 'borrow')) {
hasLiability = true;
}
}
}
for (const position of userAccount.perpPositions) {
if (!position.baseAssetAmount.eq(numericConstants_1.ZERO) ||
position.quoteAssetAmount.gt(numericConstants_1.ZERO) ||
(0, position_1.hasOpenOrders)(position)) {
return false;
}
if (position.quoteAssetAmount.lt(numericConstants_1.ZERO)) {
hasLiability = true;
}
}
return hasLiability;
}
exports.isUserBankrupt = isUserBankrupt;
;