@@ -259,6 +259,59 @@ export interface VaultTransferParameters {
259
259
usd : number ;
260
260
}
261
261
262
+ /**
263
+ * Successful variant of {@link CancelResponse}.
264
+ */
265
+ export interface CancelResponseSuccess extends CancelResponse {
266
+ status : "ok" ;
267
+ response : {
268
+ type : "cancel" ;
269
+ data : {
270
+ statuses : "success" [ ] ;
271
+ } ;
272
+ } ;
273
+ }
274
+
275
+ /**
276
+ * Successful variant of {@link OrderResponse}.
277
+ */
278
+ export interface OrderResponseSuccess extends OrderResponse {
279
+ status : "ok" ;
280
+ response : {
281
+ type : "order" ;
282
+ data : {
283
+ statuses : (
284
+ | {
285
+ /** Status for a resting order. */
286
+ resting : {
287
+ /** Order ID. */
288
+ oid : number ;
289
+
290
+ /** Client Order ID. */
291
+ cloid ?: Hex ;
292
+ } ;
293
+ }
294
+ | {
295
+ /** Status for a filled order. */
296
+ filled : {
297
+ /** Total size filled. */
298
+ totalSz : string ;
299
+
300
+ /** Average price of fill. */
301
+ avgPx : string ;
302
+
303
+ /** Order ID. */
304
+ oid : number ;
305
+
306
+ /** Client Order ID. */
307
+ cloid ?: Hex ;
308
+ } ;
309
+ }
310
+ ) [ ] ;
311
+ } ;
312
+ } ;
313
+ }
314
+
262
315
/**
263
316
* A client to interact with the Hyperliquid exchange APIs.
264
317
*/
@@ -295,7 +348,7 @@ export class HyperliquidExchangeClient {
295
348
* @requestWeight 1
296
349
* @throws {HyperliquidBatchAPIError } If the API returns an error.
297
350
*/
298
- async order ( args : OrderParameters ) : Promise < OrderResponse > {
351
+ async order ( args : OrderParameters ) : Promise < OrderResponseSuccess > {
299
352
const action : OrderRequest [ "action" ] = {
300
353
type : "order" ,
301
354
orders : args . orders . map ( ( order ) => {
@@ -329,7 +382,7 @@ export class HyperliquidExchangeClient {
329
382
* @requestWeight 1
330
383
* @throws {HyperliquidBatchAPIError } If the API returns an error.
331
384
*/
332
- async cancel ( args : CancelParameters ) : Promise < CancelResponse > {
385
+ async cancel ( args : CancelParameters ) : Promise < CancelResponseSuccess > {
333
386
const action : CancelRequest [ "action" ] = {
334
387
type : "cancel" ,
335
388
cancels : args . cancels . map ( ( cancel ) => ( { a : cancel . a , o : cancel . o } ) ) ,
@@ -345,7 +398,7 @@ export class HyperliquidExchangeClient {
345
398
* @requestWeight 1
346
399
* @throws {HyperliquidBatchAPIError } If the API returns an error.
347
400
*/
348
- async cancelByCloid ( args : CancelByCloidParameters ) : Promise < CancelResponse > {
401
+ async cancelByCloid ( args : CancelByCloidParameters ) : Promise < CancelResponseSuccess > {
349
402
const action : CancelByCloidRequest [ "action" ] = {
350
403
type : "cancelByCloid" ,
351
404
cancels : args . cancels . map ( ( cancel ) => ( { asset : cancel . asset , cloid : cancel . cloid } ) ) ,
@@ -408,7 +461,7 @@ export class HyperliquidExchangeClient {
408
461
* @requestWeight 1
409
462
* @throws {HyperliquidBatchAPIError } If the API returns an error.
410
463
*/
411
- async batchModify ( args : BatchModifyParameters ) : Promise < OrderResponse > {
464
+ async batchModify ( args : BatchModifyParameters ) : Promise < OrderResponseSuccess > {
412
465
const action : BatchModifyRequest [ "action" ] = {
413
466
type : "batchModify" ,
414
467
modifies : args . modifies . map ( ( modify ) => {
@@ -600,12 +653,12 @@ export class HyperliquidExchangeClient {
600
653
return await this . request ( { action, signature, nonce } ) ;
601
654
}
602
655
603
- protected async request < T extends OrderRequest > ( body : T ) : Promise < OrderResponse > ;
604
- protected async request < T extends CancelRequest > ( body : T ) : Promise < CancelResponse > ;
605
- protected async request < T extends CancelByCloidRequest > ( body : T ) : Promise < CancelResponse > ;
656
+ protected async request < T extends OrderRequest > ( body : T ) : Promise < OrderResponseSuccess > ;
657
+ protected async request < T extends CancelRequest > ( body : T ) : Promise < CancelResponseSuccess > ;
658
+ protected async request < T extends CancelByCloidRequest > ( body : T ) : Promise < CancelResponseSuccess > ;
606
659
protected async request < T extends ScheduleCancelRequest > ( body : T ) : Promise < SuccessResponse > ;
607
660
protected async request < T extends ModifyRequest > ( body : T ) : Promise < SuccessResponse > ;
608
- protected async request < T extends BatchModifyRequest > ( body : T ) : Promise < OrderResponse > ;
661
+ protected async request < T extends BatchModifyRequest > ( body : T ) : Promise < OrderResponseSuccess > ;
609
662
protected async request < T extends UpdateLeverageRequest > ( body : T ) : Promise < SuccessResponse > ;
610
663
protected async request < T extends UpdateIsolatedMarginRequest > ( body : T ) : Promise < SuccessResponse > ;
611
664
protected async request < T extends UsdSendRequest > ( body : T ) : Promise < SuccessResponse > ;
@@ -629,11 +682,10 @@ export class HyperliquidExchangeClient {
629
682
630
683
const data = await res . json ( ) as SuccessResponse | ErrorResponse | OrderResponse | CancelResponse ;
631
684
632
- if ( data . status === "err ") {
685
+ if ( data . status !== "ok ") {
633
686
throw new HyperliquidAPIError ( data . response ) ;
634
687
}
635
688
if (
636
- data . status === "ok" &&
637
689
data . response . type !== "default" &&
638
690
data . response . data . statuses . some ( ( status ) => typeof status === "object" && status !== null && "error" in status )
639
691
) {
@@ -643,7 +695,7 @@ export class HyperliquidExchangeClient {
643
695
throw new HyperliquidBatchAPIError ( messages ) ;
644
696
}
645
697
646
- return data ;
698
+ return data as SuccessResponse | OrderResponseSuccess | CancelResponseSuccess ;
647
699
}
648
700
649
701
protected async signL1Action (
0 commit comments