(self, response, type=None, marginMode=None, isPortfolioMargin=False)
| 3663 | return account |
| 3664 | |
| 3665 | def parse_balance_custom(self, response, type=None, marginMode=None, isPortfolioMargin=False) -> Balances: |
| 3666 | result = { |
| 3667 | 'info': response, |
| 3668 | } |
| 3669 | timestamp = None |
| 3670 | isolated = marginMode == 'isolated' |
| 3671 | cross = (type == 'margin') or (marginMode == 'cross') |
| 3672 | if isPortfolioMargin: |
| 3673 | for i in range(0, len(response)): |
| 3674 | entry = response[i] |
| 3675 | account = self.account() |
| 3676 | currencyId = self.safe_string(entry, 'asset') |
| 3677 | code = self.safe_currency_code(currencyId) |
| 3678 | if type == 'linear': |
| 3679 | account['free'] = self.safe_string(entry, 'umWalletBalance') |
| 3680 | account['used'] = self.safe_string(entry, 'umUnrealizedPNL') |
| 3681 | elif type == 'inverse': |
| 3682 | account['free'] = self.safe_string(entry, 'cmWalletBalance') |
| 3683 | account['used'] = self.safe_string(entry, 'cmUnrealizedPNL') |
| 3684 | elif cross: |
| 3685 | borrowed = self.safe_string(entry, 'crossMarginBorrowed') |
| 3686 | interest = self.safe_string(entry, 'crossMarginInterest') |
| 3687 | account['debt'] = Precise.string_add(borrowed, interest) |
| 3688 | account['free'] = self.safe_string(entry, 'crossMarginFree') |
| 3689 | account['used'] = self.safe_string(entry, 'crossMarginLocked') |
| 3690 | account['total'] = self.safe_string(entry, 'crossMarginAsset') |
| 3691 | else: |
| 3692 | usedLinear = self.safe_string(entry, 'umUnrealizedPNL') |
| 3693 | usedInverse = self.safe_string(entry, 'cmUnrealizedPNL') |
| 3694 | totalUsed = Precise.string_add(usedLinear, usedInverse) |
| 3695 | totalWalletBalance = self.safe_string(entry, 'totalWalletBalance') |
| 3696 | account['total'] = Precise.string_add(totalUsed, totalWalletBalance) |
| 3697 | result[code] = account |
| 3698 | elif not isolated and ((type == 'spot') or cross): |
| 3699 | timestamp = self.safe_integer(response, 'updateTime') |
| 3700 | balances = self.safe_list_2(response, 'balances', 'userAssets', []) |
| 3701 | for i in range(0, len(balances)): |
| 3702 | balance = balances[i] |
| 3703 | currencyId = self.safe_string(balance, 'asset') |
| 3704 | code = self.safe_currency_code(currencyId) |
| 3705 | account = self.account() |
| 3706 | account['free'] = self.safe_string(balance, 'free') |
| 3707 | account['used'] = self.safe_string(balance, 'locked') |
| 3708 | if cross: |
| 3709 | debt = self.safe_string(balance, 'borrowed') |
| 3710 | interest = self.safe_string(balance, 'interest') |
| 3711 | account['debt'] = Precise.string_add(debt, interest) |
| 3712 | result[code] = account |
| 3713 | elif isolated: |
| 3714 | assets = self.safe_list(response, 'assets', []) |
| 3715 | for i in range(0, len(assets)): |
| 3716 | asset = assets[i] |
| 3717 | marketId = self.safe_string(asset, 'symbol') |
| 3718 | symbol = self.safe_symbol(marketId, None, None, 'spot') |
| 3719 | base = self.safe_dict(asset, 'baseAsset', {}) |
| 3720 | quote = self.safe_dict(asset, 'quoteAsset', {}) |
| 3721 | baseCode = self.safe_currency_code(self.safe_string(base, 'asset')) |
| 3722 | quoteCode = self.safe_currency_code(self.safe_string(quote, 'asset')) |
no test coverage detected