@blackcube/xgate-sdk 0.56.1 → 0.56.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +38 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +21 -0
- package/dist/index.d.ts +21 -0
- package/dist/index.js +38 -1
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.d.cts
CHANGED
|
@@ -1682,8 +1682,29 @@ declare class TradingService {
|
|
|
1682
1682
|
* disent la même chose**. La forme native complète reste dans `xtras`, rien n'est perdu.
|
|
1683
1683
|
*
|
|
1684
1684
|
* **blofin ne l'expose pas** et lève ; les sept autres le servent.
|
|
1685
|
+
*
|
|
1686
|
+
* **hyperliquid en compte unifié lit le spot** (`unifiedAccountState`) : son état perp y vaut 0.
|
|
1685
1687
|
*/
|
|
1686
1688
|
accountInfo(access: ITradingAccess): Promise<IAccountState>;
|
|
1689
|
+
/**
|
|
1690
|
+
* HYPERLIQUID EN COMPTE UNIFIÉ — l'argent vit dans le spot, et l'état perp affiche 0.
|
|
1691
|
+
*
|
|
1692
|
+
* La doc HL : « unified account and portfolio margin show all balances and holds in the spot
|
|
1693
|
+
* clearinghouse state. Individual perp dex user states are not meaningful ». Lu côté perp, un
|
|
1694
|
+
* compte unifié de 101 USDC rend une équité de 0 — et tout appelant qui dimensionne une mise sur
|
|
1695
|
+
* l'équité refuse d'ouvrir (Blips, 2026-10-01 : « plafond d'engagement » sur un compte financé).
|
|
1696
|
+
*
|
|
1697
|
+
* Le mode est DEMANDÉ à HL (`getAbstraction`), jamais déduit des soldes : en mode standard
|
|
1698
|
+
* (`disabled`), le spot ne finance pas les perps, et le compter fausserait l'équité dans l'autre
|
|
1699
|
+
* sens. Hors `unifiedAccount`/`portfolioMargin`, l'état perp est rendu tel quel.
|
|
1700
|
+
*
|
|
1701
|
+
* L'équité est le total USDC du spot, le disponible ce total moins ce que HL bloque (`hold`).
|
|
1702
|
+
* **Le PnL latent n'y est pas ajouté** (décision Philippe, 2026-10-01) : la doc ne dit pas si le
|
|
1703
|
+
* total spot le contient déjà, et l'ajouter risquerait de le compter deux fois. En portfolio
|
|
1704
|
+
* margin, les autres actifs éligibles (HYPE, BTC, USDT) ne sont pas comptés non plus : seul l'USDC
|
|
1705
|
+
* finance ici. Le mode et le solde lu restent dans `xtras`.
|
|
1706
|
+
*/
|
|
1707
|
+
private unifiedAccountState;
|
|
1687
1708
|
/**
|
|
1688
1709
|
* RÈGLE LE LEVIER d'une paire, avant d'ouvrir.
|
|
1689
1710
|
*
|
package/dist/index.d.ts
CHANGED
|
@@ -1682,8 +1682,29 @@ declare class TradingService {
|
|
|
1682
1682
|
* disent la même chose**. La forme native complète reste dans `xtras`, rien n'est perdu.
|
|
1683
1683
|
*
|
|
1684
1684
|
* **blofin ne l'expose pas** et lève ; les sept autres le servent.
|
|
1685
|
+
*
|
|
1686
|
+
* **hyperliquid en compte unifié lit le spot** (`unifiedAccountState`) : son état perp y vaut 0.
|
|
1685
1687
|
*/
|
|
1686
1688
|
accountInfo(access: ITradingAccess): Promise<IAccountState>;
|
|
1689
|
+
/**
|
|
1690
|
+
* HYPERLIQUID EN COMPTE UNIFIÉ — l'argent vit dans le spot, et l'état perp affiche 0.
|
|
1691
|
+
*
|
|
1692
|
+
* La doc HL : « unified account and portfolio margin show all balances and holds in the spot
|
|
1693
|
+
* clearinghouse state. Individual perp dex user states are not meaningful ». Lu côté perp, un
|
|
1694
|
+
* compte unifié de 101 USDC rend une équité de 0 — et tout appelant qui dimensionne une mise sur
|
|
1695
|
+
* l'équité refuse d'ouvrir (Blips, 2026-10-01 : « plafond d'engagement » sur un compte financé).
|
|
1696
|
+
*
|
|
1697
|
+
* Le mode est DEMANDÉ à HL (`getAbstraction`), jamais déduit des soldes : en mode standard
|
|
1698
|
+
* (`disabled`), le spot ne finance pas les perps, et le compter fausserait l'équité dans l'autre
|
|
1699
|
+
* sens. Hors `unifiedAccount`/`portfolioMargin`, l'état perp est rendu tel quel.
|
|
1700
|
+
*
|
|
1701
|
+
* L'équité est le total USDC du spot, le disponible ce total moins ce que HL bloque (`hold`).
|
|
1702
|
+
* **Le PnL latent n'y est pas ajouté** (décision Philippe, 2026-10-01) : la doc ne dit pas si le
|
|
1703
|
+
* total spot le contient déjà, et l'ajouter risquerait de le compter deux fois. En portfolio
|
|
1704
|
+
* margin, les autres actifs éligibles (HYPE, BTC, USDT) ne sont pas comptés non plus : seul l'USDC
|
|
1705
|
+
* finance ici. Le mode et le solde lu restent dans `xtras`.
|
|
1706
|
+
*/
|
|
1707
|
+
private unifiedAccountState;
|
|
1687
1708
|
/**
|
|
1688
1709
|
* RÈGLE LE LEVIER d'une paire, avant d'ouvrir.
|
|
1689
1710
|
*
|
package/dist/index.js
CHANGED
|
@@ -1621,6 +1621,8 @@ var TradingService = class {
|
|
|
1621
1621
|
* disent la même chose**. La forme native complète reste dans `xtras`, rien n'est perdu.
|
|
1622
1622
|
*
|
|
1623
1623
|
* **blofin ne l'expose pas** et lève ; les sept autres le servent.
|
|
1624
|
+
*
|
|
1625
|
+
* **hyperliquid en compte unifié lit le spot** (`unifiedAccountState`) : son état perp y vaut 0.
|
|
1624
1626
|
*/
|
|
1625
1627
|
async accountInfo(access) {
|
|
1626
1628
|
const perp = this.perpOf(access);
|
|
@@ -1630,7 +1632,42 @@ var TradingService = class {
|
|
|
1630
1632
|
);
|
|
1631
1633
|
}
|
|
1632
1634
|
const brut = await perp.getAccountInfo();
|
|
1633
|
-
|
|
1635
|
+
const etat = this.toAccountState(brut, access.xex);
|
|
1636
|
+
return access.xex === "hyperliquid" /* Hyperliquid */ ? this.unifiedAccountState(access, etat) : etat;
|
|
1637
|
+
}
|
|
1638
|
+
/**
|
|
1639
|
+
* HYPERLIQUID EN COMPTE UNIFIÉ — l'argent vit dans le spot, et l'état perp affiche 0.
|
|
1640
|
+
*
|
|
1641
|
+
* La doc HL : « unified account and portfolio margin show all balances and holds in the spot
|
|
1642
|
+
* clearinghouse state. Individual perp dex user states are not meaningful ». Lu côté perp, un
|
|
1643
|
+
* compte unifié de 101 USDC rend une équité de 0 — et tout appelant qui dimensionne une mise sur
|
|
1644
|
+
* l'équité refuse d'ouvrir (Blips, 2026-10-01 : « plafond d'engagement » sur un compte financé).
|
|
1645
|
+
*
|
|
1646
|
+
* Le mode est DEMANDÉ à HL (`getAbstraction`), jamais déduit des soldes : en mode standard
|
|
1647
|
+
* (`disabled`), le spot ne finance pas les perps, et le compter fausserait l'équité dans l'autre
|
|
1648
|
+
* sens. Hors `unifiedAccount`/`portfolioMargin`, l'état perp est rendu tel quel.
|
|
1649
|
+
*
|
|
1650
|
+
* L'équité est le total USDC du spot, le disponible ce total moins ce que HL bloque (`hold`).
|
|
1651
|
+
* **Le PnL latent n'y est pas ajouté** (décision Philippe, 2026-10-01) : la doc ne dit pas si le
|
|
1652
|
+
* total spot le contient déjà, et l'ajouter risquerait de le compter deux fois. En portfolio
|
|
1653
|
+
* margin, les autres actifs éligibles (HYPE, BTC, USDT) ne sont pas comptés non plus : seul l'USDC
|
|
1654
|
+
* finance ici. Le mode et le solde lu restent dans `xtras`.
|
|
1655
|
+
*/
|
|
1656
|
+
async unifiedAccountState(access, etat) {
|
|
1657
|
+
const source = createAccountXex(access.xex, access);
|
|
1658
|
+
const abstraction = await source.native.account().getAbstraction();
|
|
1659
|
+
if (abstraction.mode !== "unifiedAccount" && abstraction.mode !== "portfolioMargin") {
|
|
1660
|
+
return etat;
|
|
1661
|
+
}
|
|
1662
|
+
const usdc = (await source.account().getBalances()).find((balance) => balance.asset === "USDC");
|
|
1663
|
+
const total = usdc?.total ?? "0";
|
|
1664
|
+
const hold = Number(usdc?.xtras?.hold ?? 0);
|
|
1665
|
+
return {
|
|
1666
|
+
...etat,
|
|
1667
|
+
equity: total,
|
|
1668
|
+
available: String(Math.max(0, Number(total) - hold)),
|
|
1669
|
+
xtras: { ...etat.xtras, abstraction: abstraction.mode, spotUsdc: usdc ?? null }
|
|
1670
|
+
};
|
|
1634
1671
|
}
|
|
1635
1672
|
/**
|
|
1636
1673
|
* RÈGLE LE LEVIER d'une paire, avant d'ouvrir.
|