@syldel/hl-shared-types 0.0.24 → 0.0.25
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.
|
@@ -20,3 +20,4 @@ __exportStar(require("./l2Book.interfaces"), exports);
|
|
|
20
20
|
__exportStar(require("./active-asset.interfaces"), exports);
|
|
21
21
|
__exportStar(require("./account-abstraction.type"), exports);
|
|
22
22
|
__exportStar(require("./collateral-balance.interfaces"), exports);
|
|
23
|
+
__exportStar(require("./user-fees.interfaces"), exports);
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
import { DecimalString, HexString } from '../common';
|
|
2
|
+
/**
|
|
3
|
+
* ============================================================================
|
|
4
|
+
* LE BARÈME RÉEL D'UN UTILISATEUR
|
|
5
|
+
*
|
|
6
|
+
* Réponse de `userFees`, servie telle quelle par
|
|
7
|
+
* `GET /hyperliquid/info/user-fees` du gateway.
|
|
8
|
+
*
|
|
9
|
+
* Recopiée de la documentation officielle (« Query a user's fees », relevée le
|
|
10
|
+
* 2026-10-11), **pas déduite** de la formule publiée sur la page des frais. Les
|
|
11
|
+
* deux ne portent pas les mêmes noms, et c'est le piège : le pseudo-code de la
|
|
12
|
+
* formule écrit `fees: { makerRate, takerRate }`, alors que le point de
|
|
13
|
+
* terminaison ne connaît ni l'un ni l'autre. Ce sont `userCrossRate` (preneur)
|
|
14
|
+
* et `userAddRate` (apporteur).
|
|
15
|
+
*
|
|
16
|
+
* ⚠️ Tout est en **chaînes décimales**, y compris des taux qui peuvent être
|
|
17
|
+
* négatifs (`tiers.mm[].add` vaut `'-0.00001'` : un rebate). `Number('')` rend
|
|
18
|
+
* `0`, soit un barème parfaitement plausible — donc jamais de conversion sans
|
|
19
|
+
* refuser ce qui n'est pas un nombre.
|
|
20
|
+
* ============================================================================
|
|
21
|
+
*/
|
|
22
|
+
/** Un palier de volume : au-delà de `ntlCutoff`, ces taux s'appliquent. */
|
|
23
|
+
export interface HlVipFeeTier {
|
|
24
|
+
ntlCutoff: DecimalString;
|
|
25
|
+
cross: DecimalString;
|
|
26
|
+
add: DecimalString;
|
|
27
|
+
spotCross: DecimalString;
|
|
28
|
+
spotAdd: DecimalString;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Un palier d'apporteur de liquidité. `add` y est **négatif** : c'est un
|
|
32
|
+
* rebate, payé à l'utilisateur et non prélevé.
|
|
33
|
+
*/
|
|
34
|
+
export interface HlMakerFeeTier {
|
|
35
|
+
makerFractionCutoff: DecimalString;
|
|
36
|
+
add: DecimalString;
|
|
37
|
+
}
|
|
38
|
+
export interface HlStakingDiscountTier {
|
|
39
|
+
bpsOfMaxSupply: DecimalString;
|
|
40
|
+
discount: DecimalString;
|
|
41
|
+
}
|
|
42
|
+
/** Le barème **public**, identique pour tous : les paliers de base et leurs seuils. */
|
|
43
|
+
export interface HlFeeSchedule {
|
|
44
|
+
/** Preneur, perp. `'0.00045'` au palier de base. */
|
|
45
|
+
cross: DecimalString;
|
|
46
|
+
/** Apporteur, perp. `'0.00015'` au palier de base. */
|
|
47
|
+
add: DecimalString;
|
|
48
|
+
spotCross: DecimalString;
|
|
49
|
+
spotAdd: DecimalString;
|
|
50
|
+
tiers: {
|
|
51
|
+
vip: HlVipFeeTier[];
|
|
52
|
+
mm: HlMakerFeeTier[];
|
|
53
|
+
};
|
|
54
|
+
referralDiscount: DecimalString;
|
|
55
|
+
stakingDiscountTiers: HlStakingDiscountTier[];
|
|
56
|
+
}
|
|
57
|
+
/** Le volume d'un jour, tel que le barème le compte. */
|
|
58
|
+
export interface HlDailyUserVolume {
|
|
59
|
+
/** `'2025-05-23'` — une date sans heure ni fuseau. */
|
|
60
|
+
date: string;
|
|
61
|
+
userCross: DecimalString;
|
|
62
|
+
userAdd: DecimalString;
|
|
63
|
+
exchange: DecimalString;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Le lien entre un compte qui stake et un compte qui trade.
|
|
67
|
+
*
|
|
68
|
+
* ⚠️ Lier est **irréversible** et donne au compte de staking le pouvoir de
|
|
69
|
+
* vider le compte de trading — ne jamais proposer cette action depuis l'app.
|
|
70
|
+
*/
|
|
71
|
+
export interface HlStakingLink {
|
|
72
|
+
type: string;
|
|
73
|
+
stakingUser: HexString;
|
|
74
|
+
}
|
|
75
|
+
export interface HlActiveStakingDiscount {
|
|
76
|
+
bpsOfMaxSupply: DecimalString;
|
|
77
|
+
discount: DecimalString;
|
|
78
|
+
}
|
|
79
|
+
export interface HlUserFees {
|
|
80
|
+
dailyUserVlm: HlDailyUserVolume[];
|
|
81
|
+
feeSchedule: HlFeeSchedule;
|
|
82
|
+
/**
|
|
83
|
+
* Le taux **preneur** de cet utilisateur, déjà net de son palier de volume et
|
|
84
|
+
* de sa remise de staking — mais **pas** de sa remise de parrainage, que la
|
|
85
|
+
* formule officielle applique à part, ni du barème propre à un marché HIP-3.
|
|
86
|
+
*
|
|
87
|
+
* Vérifié sur l'exemple de la documentation : `'0.000315'` vaut
|
|
88
|
+
* `0,00045 × 0,7`, et `activeStakingDiscount.discount` y vaut `'0.3'`.
|
|
89
|
+
*/
|
|
90
|
+
userCrossRate: DecimalString;
|
|
91
|
+
/** Le taux **apporteur**, mêmes réserves. Peut être négatif : voir `HlMakerFeeTier`. */
|
|
92
|
+
userAddRate: DecimalString;
|
|
93
|
+
userSpotCrossRate: DecimalString;
|
|
94
|
+
userSpotAddRate: DecimalString;
|
|
95
|
+
/** Entre `'0.0'` et `'1.0'`. C'est le `(1 - activeReferralDiscount)` de la formule. */
|
|
96
|
+
activeReferralDiscount: DecimalString;
|
|
97
|
+
/**
|
|
98
|
+
* `null` quand aucun essai n'est en cours.
|
|
99
|
+
*
|
|
100
|
+
* ⚠️ Seule la valeur `null` a été observée : la forme du cas non nul est
|
|
101
|
+
* **inconnue**, et l'inventer ici donnerait à un consommateur l'illusion de
|
|
102
|
+
* pouvoir la lire. `unknown` force à la vérifier avant d'y toucher — et
|
|
103
|
+
* `unknown | null` se réduirait à `unknown`, donc le `null` est explicite
|
|
104
|
+
* dans ce commentaire plutôt que dans un type qui ne le dirait pas.
|
|
105
|
+
*/
|
|
106
|
+
trial: unknown;
|
|
107
|
+
feeTrialReward: DecimalString;
|
|
108
|
+
/** `null` quand il n'y en a pas de prévu. */
|
|
109
|
+
nextTrialAvailableTimestamp: number | null;
|
|
110
|
+
/** Absent quand le compte ne stake pas depuis un autre compte. */
|
|
111
|
+
stakingLink?: HlStakingLink | null;
|
|
112
|
+
activeStakingDiscount?: HlActiveStakingDiscount | null;
|
|
113
|
+
}
|