@syldel/hl-shared-types 0.0.19 → 0.0.21
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.
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { DecimalString } from '../common';
|
|
2
|
+
import { AccountAbstractionMode } from './account-abstraction.type';
|
|
3
|
+
/**
|
|
4
|
+
* ============================================================================
|
|
5
|
+
* LE COLLATÉRAL D'UN MARCHÉ : TROIS RÉPONSES, PAS UN NOMBRE
|
|
6
|
+
*
|
|
7
|
+
* Réponse de `GET /hyperliquid/info/collateral-balance` du gateway.
|
|
8
|
+
*
|
|
9
|
+
* Ce type vit ici parce qu'il **traverse** le réseau : le gateway le produit,
|
|
10
|
+
* le bot le consomme. Une copie de chaque côté finirait par diverger, et la
|
|
11
|
+
* divergence porterait sur un chiffre qui dimensionne des ordres.
|
|
12
|
+
*
|
|
13
|
+
* Trois cas, parce que leurs remèdes sont trois : approvisionner le compte,
|
|
14
|
+
* corriger le nom du marché, ou attendre que le registre soit synchronisé.
|
|
15
|
+
* Jusqu'au 2026-10-01 les trois rendaient `'0'`, donc aucun n'était
|
|
16
|
+
* distinguable d'un compte vide — et `'0'` sur un calcul de taille fait
|
|
17
|
+
* dimensionner un ordre sur un capital qui n'a jamais été lu.
|
|
18
|
+
* ============================================================================
|
|
19
|
+
*/
|
|
20
|
+
export type CollateralBalance =
|
|
21
|
+
/** Le solde a été lu. `total` et `used` sont ceux du collatéral nommé. */
|
|
22
|
+
{
|
|
23
|
+
status: 'ok';
|
|
24
|
+
/** Le mode qui a décidé d'où le solde a été lu — spot, ou état perp du dex. */
|
|
25
|
+
mode: AccountAbstractionMode;
|
|
26
|
+
/** Symbole du collatéral, pour l'affichage et les journaux. */
|
|
27
|
+
collateral: string;
|
|
28
|
+
/**
|
|
29
|
+
* Index du token, qui fait autorité pour apparier un solde.
|
|
30
|
+
* `null` quand l'appelant a imposé un symbole plutôt qu'un index.
|
|
31
|
+
*/
|
|
32
|
+
collateralToken: number | null;
|
|
33
|
+
total: DecimalString;
|
|
34
|
+
used: DecimalString;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Le collatéral est identifié, mais le compte ne porte aucune ligne pour lui.
|
|
38
|
+
*
|
|
39
|
+
* ⚠️ Ce n'est **pas** la même chose qu'un solde nul. Hyperliquid n'énumère
|
|
40
|
+
* que les actifs que le compte a touchés : une absence vaut probablement
|
|
41
|
+
* zéro, mais « probablement » ne se présente pas comme un solde.
|
|
42
|
+
*/
|
|
43
|
+
| {
|
|
44
|
+
status: 'no-balance-entry';
|
|
45
|
+
mode: AccountAbstractionMode;
|
|
46
|
+
collateral: string;
|
|
47
|
+
collateralToken: number | null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Le catalogue ne dit pas dans quoi ce marché se règle — nom inconnu, ou
|
|
51
|
+
* registre pas encore synchronisé.
|
|
52
|
+
*
|
|
53
|
+
* Aucune valeur de repli n'est fournie, et c'est le point : la table en dur
|
|
54
|
+
* que ce contrat remplace répondait « USDC » à cette question.
|
|
55
|
+
*/
|
|
56
|
+
| {
|
|
57
|
+
status: 'unknown-collateral';
|
|
58
|
+
mode: AccountAbstractionMode;
|
|
59
|
+
asset: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Le compte est dans un mode dont ce gateway ne sait pas lire le collatéral.
|
|
63
|
+
*
|
|
64
|
+
* Deux cas, et c'est un refus **délibéré** plutôt qu'une approximation :
|
|
65
|
+
*
|
|
66
|
+
* - **`portfolioMargin`** réunit plusieurs actifs en un seul portefeuille
|
|
67
|
+
* (HYPE, BTC, USDC, USDT à ce jour). Rendre le solde d'un seul d'entre eux
|
|
68
|
+
* sous-estimerait le capital, et les agréger demanderait de valoriser HYPE
|
|
69
|
+
* et BTC en dollars — donc d'introduire une source de **prix** dans un
|
|
70
|
+
* calcul de collatéral. C'est un chantier, pas une ligne ;
|
|
71
|
+
* - **`dexAbstraction`** est arrêté par l'exchange. La doc le décrit (USDC
|
|
72
|
+
* depuis le solde perp, tout autre collatéral depuis le spot), mais aucun
|
|
73
|
+
* compte ne permet de l'éprouver — et une implémentation non exercée d'un
|
|
74
|
+
* mode qu'on ne peut pas tester vaut moins qu'un refus net.
|
|
75
|
+
*
|
|
76
|
+
* L'appelant doit le traiter comme les autres statuts sans montant : ne rien
|
|
77
|
+
* dimensionner, et le dire. Un nombre plausible aurait traversé tout le
|
|
78
|
+
* système sans rien déclencher.
|
|
79
|
+
*/
|
|
80
|
+
| {
|
|
81
|
+
status: 'unsupported-mode';
|
|
82
|
+
mode: AccountAbstractionMode;
|
|
83
|
+
asset: string;
|
|
84
|
+
};
|
|
@@ -19,3 +19,4 @@ __exportStar(require("./portfolio.interfaces"), exports);
|
|
|
19
19
|
__exportStar(require("./l2Book.interfaces"), exports);
|
|
20
20
|
__exportStar(require("./active-asset.interfaces"), exports);
|
|
21
21
|
__exportStar(require("./account-abstraction.type"), exports);
|
|
22
|
+
__exportStar(require("./collateral-balance.interfaces"), exports);
|