@dydxprotocol/v4-client-js 1.1.31 → 1.2.1

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.
Files changed (34) hide show
  1. package/README.md +36 -1
  2. package/__native__/__ios__/v4-native-client.js +85 -10
  3. package/__tests__/helpers/constants.ts +12 -0
  4. package/__tests__/lib/validation.test.ts +49 -1
  5. package/build/__tests__/helpers/constants.d.ts +2 -1
  6. package/build/__tests__/helpers/constants.js +12 -2
  7. package/build/__tests__/lib/validation.test.js +36 -1
  8. package/build/examples/batch_cancel_orders_example.d.ts +1 -0
  9. package/build/examples/batch_cancel_orders_example.js +93 -0
  10. package/build/src/clients/composite-client.d.ts +24 -1
  11. package/build/src/clients/composite-client.js +27 -1
  12. package/build/src/clients/constants.d.ts +1 -0
  13. package/build/src/clients/constants.js +3 -2
  14. package/build/src/clients/lib/registry.js +2 -1
  15. package/build/src/clients/modules/composer.d.ts +2 -0
  16. package/build/src/clients/modules/composer.js +16 -1
  17. package/build/src/clients/modules/post.d.ts +3 -1
  18. package/build/src/clients/modules/post.js +11 -1
  19. package/build/src/clients/types.d.ts +7 -0
  20. package/build/src/clients/types.js +1 -1
  21. package/build/src/lib/validation.d.ts +6 -1
  22. package/build/src/lib/validation.js +23 -2
  23. package/build/src/types.d.ts +2 -1
  24. package/build/src/types.js +2 -1
  25. package/examples/batch_cancel_orders_example.ts +130 -0
  26. package/package.json +1 -1
  27. package/src/clients/composite-client.ts +60 -1
  28. package/src/clients/constants.ts +2 -1
  29. package/src/clients/lib/registry.ts +3 -0
  30. package/src/clients/modules/composer.ts +26 -0
  31. package/src/clients/modules/post.ts +40 -0
  32. package/src/clients/types.ts +5 -0
  33. package/src/lib/validation.ts +42 -3
  34. package/src/types.ts +1 -0
@@ -33,6 +33,7 @@ import {
33
33
  MsgPlaceOrder,
34
34
  MsgCancelOrder,
35
35
  Order_ConditionType,
36
+ OrderBatch,
36
37
  } from './proto-includes';
37
38
 
38
39
  // Required for encoding and decoding queries that are of type Long.
@@ -520,6 +521,45 @@ export class Post {
520
521
  );
521
522
  }
522
523
 
524
+ async batchCancelShortTermOrders(
525
+ subaccount: SubaccountInfo,
526
+ shortTermOrders: OrderBatch[],
527
+ goodTilBlock: number,
528
+ broadcastMode?: BroadcastMode,
529
+ ): Promise<BroadcastTxAsyncResponse | BroadcastTxSyncResponse | IndexedTx> {
530
+ const msg = await this.batchCancelShortTermOrdersMsg(
531
+ subaccount.address,
532
+ subaccount.subaccountNumber,
533
+ shortTermOrders,
534
+ goodTilBlock,
535
+ );
536
+ return this.send(
537
+ subaccount.wallet,
538
+ () => Promise.resolve([msg]),
539
+ true,
540
+ undefined,
541
+ undefined,
542
+ broadcastMode,
543
+ );
544
+ }
545
+
546
+ async batchCancelShortTermOrdersMsg(
547
+ address: string,
548
+ subaccountNumber: number,
549
+ shortTermOrders: OrderBatch[],
550
+ goodTilBlock: number,
551
+ ): Promise<EncodeObject> {
552
+ return new Promise((resolve) => {
553
+ const msg = this.composer.composeMsgBatchCancelShortTermOrders(
554
+ address,
555
+ subaccountNumber,
556
+ shortTermOrders,
557
+ goodTilBlock,
558
+ );
559
+ resolve(msg);
560
+ });
561
+ }
562
+
523
563
  async transfer(
524
564
  subaccount: SubaccountInfo,
525
565
  recipientAddress: string,
@@ -59,6 +59,11 @@ export interface IPlaceOrder extends IBasicOrder {
59
59
 
60
60
  export interface ICancelOrder extends IBasicOrder {}
61
61
 
62
+ export interface IBatchCancelOrder {
63
+ shortTermOrders: { clobPairId: number; clientIds: number[] }[];
64
+ goodTilBlock: number;
65
+ }
66
+
62
67
  // How long to wait and how often to check when calling Broadcast with
63
68
  // Method.BroadcastTxCommit
64
69
  export interface BroadcastOptions {
@@ -2,7 +2,13 @@ import { decode } from 'bech32';
2
2
  import Long from 'long';
3
3
 
4
4
  import { MAX_SUBACCOUNT_NUMBER, MAX_UINT_32 } from '../clients/constants';
5
- import { Transfer, OrderFlags, ICancelOrder, IPlaceOrder } from '../clients/types';
5
+ import {
6
+ Transfer,
7
+ OrderFlags,
8
+ ICancelOrder,
9
+ IPlaceOrder,
10
+ IBatchCancelOrder,
11
+ } from '../clients/types';
6
12
  import { UserError } from './errors';
7
13
 
8
14
  /**
@@ -77,6 +83,35 @@ export function validateCancelOrderMessage(
77
83
  return undefined;
78
84
  }
79
85
 
86
+ /**
87
+ * @describe validateBatchCancelOrderMessage validates that orders to batch cancel have fields that would be
88
+ * valid on-chain.
89
+ */
90
+ export function validateBatchCancelOrderMessage(
91
+ subaccountNumber: number,
92
+ orders: IBatchCancelOrder,
93
+ ): UserError | undefined {
94
+ for (const orderBatch of orders.shortTermOrders) {
95
+ for (const clientId of orderBatch.clientIds) {
96
+ if (!verifyNumberIsUint32(clientId)) {
97
+ return new UserError(`clientId: ${clientId} is not a valid uint32`);
98
+ }
99
+ }
100
+ }
101
+
102
+ if (!verifyGoodTilBlock(orders.goodTilBlock)) {
103
+ return new UserError(`goodTilBlock: ${orders.goodTilBlock} is not a valid uint32 or is 0`);
104
+ }
105
+
106
+ if (!verifySubaccountNumber(subaccountNumber)) {
107
+ return new UserError(
108
+ `subaccountNumber: ${subaccountNumber} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
109
+ );
110
+ }
111
+
112
+ return undefined;
113
+ }
114
+
80
115
  /**
81
116
  * @describe validateTransferMessage validates that a transfer to place has fields that would be
82
117
  * valid on-chain.
@@ -84,12 +119,16 @@ export function validateCancelOrderMessage(
84
119
  export function validateTransferMessage(transfer: Transfer): UserError | undefined {
85
120
  if (!verifySubaccountNumber(transfer.sender!!.number || 0)) {
86
121
  return new UserError(
87
- `senderSubaccountNumber: ${transfer.sender!!.number || 0} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
122
+ `senderSubaccountNumber: ${
123
+ transfer.sender!!.number || 0
124
+ } cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
88
125
  );
89
126
  }
90
127
  if (!verifySubaccountNumber(transfer.recipient!!.number || 0)) {
91
128
  return new UserError(
92
- `recipientSubaccountNumber: ${transfer.recipient!!.number || 0} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
129
+ `recipientSubaccountNumber: ${
130
+ transfer.recipient!!.number || 0
131
+ } cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
93
132
  );
94
133
  }
95
134
  if (transfer.assetId !== 0) {
package/src/types.ts CHANGED
@@ -40,4 +40,5 @@ export interface Options {
40
40
 
41
41
  export enum ClobPairId {
42
42
  PERPETUAL_PAIR_BTC_USD = 0,
43
+ PERPETUAL_PAIR_ETH_USD = 1,
43
44
  }