@dydxprotocol/v4-client-js 1.15.0 → 1.16.0

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 (115) hide show
  1. package/CHANGELOG.md +6 -3
  2. package/build/examples/constants.d.ts +1 -0
  3. package/build/examples/constants.js +3 -2
  4. package/build/examples/permissioned_keys_example.d.ts +1 -0
  5. package/build/examples/permissioned_keys_example.js +85 -0
  6. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bundle.d.ts +158 -158
  7. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/cosmos/bundle.js +126 -126
  8. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/query.lcd.d.ts +12 -0
  9. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/affiliates/query.lcd.js +34 -0
  10. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/params.d.ts +21 -0
  11. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/params.js +37 -2
  12. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.d.ts +34 -1
  13. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.js +72 -2
  14. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.rpc.msg.d.ts +4 -1
  15. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/blocktime/tx.rpc.msg.js +7 -1
  16. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bundle.d.ts +2021 -1711
  17. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/bundle.js +272 -266
  18. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/finalize_block.d.ts +23 -0
  19. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/finalize_block.js +64 -0
  20. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order_removals.d.ts +5 -0
  21. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order_removals.js +11 -1
  22. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.d.ts +31 -0
  23. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.js +94 -5
  24. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.lcd.d.ts +2 -1
  25. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.lcd.js +7 -1
  26. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.rpc.Query.d.ts +5 -1
  27. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/query.rpc.Query.js +10 -1
  28. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/streaming.d.ts +6 -1
  29. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/streaming.js +19 -2
  30. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/events/events.d.ts +79 -6
  31. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/indexer/events/events.js +78 -2
  32. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/lcd.d.ts +1 -0
  33. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/lcd.js +4 -1
  34. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/genesis.d.ts +4 -0
  35. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/genesis.js +11 -2
  36. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/query.lcd.d.ts +2 -1
  37. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/query.lcd.js +7 -1
  38. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.d.ts +39 -0
  39. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.js +72 -2
  40. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.rpc.msg.d.ts +7 -1
  41. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/listing/tx.rpc.msg.js +7 -1
  42. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.d.ts +25 -0
  43. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.js +64 -2
  44. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.lcd.d.ts +2 -1
  45. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.lcd.js +7 -1
  46. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.rpc.Query.d.ts +5 -1
  47. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/perpetuals/query.rpc.Query.js +10 -1
  48. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_param.d.ts +8 -0
  49. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_param.js +1 -1
  50. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_price.d.ts +3 -0
  51. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/market_price.js +1 -1
  52. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.d.ts +34 -0
  53. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.js +64 -2
  54. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.lcd.d.ts +2 -1
  55. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.lcd.js +7 -1
  56. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.rpc.Query.d.ts +5 -1
  57. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/query.rpc.Query.js +10 -1
  58. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/streaming.d.ts +23 -0
  59. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/prices/streaming.js +81 -0
  60. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.d.ts +25 -1
  61. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.js +63 -2
  62. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.lcd.d.ts +2 -1
  63. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.lcd.js +7 -1
  64. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.rpc.Query.d.ts +5 -1
  65. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/query.rpc.Query.js +10 -1
  66. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/revshare/tx.rpc.msg.d.ts +1 -1
  67. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/rpc.query.d.ts +4 -0
  68. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/streaming.d.ts +1 -1
  69. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/subaccounts/streaming.js +5 -5
  70. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/params.d.ts +21 -0
  71. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/params.js +55 -3
  72. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.d.ts +1 -6
  73. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.js +4 -12
  74. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.lcd.d.ts +1 -2
  75. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/query.lcd.js +1 -13
  76. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/tx.d.ts +51 -24
  77. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/dydxprotocol/vault/tx.js +98 -46
  78. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/gogoproto/bundle.js +2 -2
  79. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/google/bundle.d.ts +174 -174
  80. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/google/bundle.js +12 -12
  81. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/bundle.d.ts +365 -365
  82. package/build/node_modules/@dydxprotocol/v4-proto/src/codegen/tendermint/bundle.js +21 -21
  83. package/build/src/clients/composite-client.d.ts +12 -3
  84. package/build/src/clients/composite-client.js +22 -8
  85. package/build/src/clients/constants.d.ts +10 -0
  86. package/build/src/clients/constants.js +17 -4
  87. package/build/src/clients/lib/registry.js +26 -22
  88. package/build/src/clients/modules/account.d.ts +1 -0
  89. package/build/src/clients/modules/account.js +5 -1
  90. package/build/src/clients/modules/composer.d.ts +3 -0
  91. package/build/src/clients/modules/composer.js +23 -1
  92. package/build/src/clients/modules/get.d.ts +2 -0
  93. package/build/src/clients/modules/get.js +9 -1
  94. package/build/src/clients/modules/local-wallet.d.ts +4 -4
  95. package/build/src/clients/modules/local-wallet.js +3 -3
  96. package/build/src/clients/modules/post.d.ts +4 -2
  97. package/build/src/clients/modules/post.js +15 -6
  98. package/build/src/clients/modules/signer.d.ts +5 -3
  99. package/build/src/clients/modules/signer.js +53 -14
  100. package/build/src/clients/types.d.ts +1 -0
  101. package/build/src/clients/types.js +1 -1
  102. package/build/tsconfig.tsbuildinfo +1 -1
  103. package/examples/constants.ts +2 -0
  104. package/examples/permissioned_keys_example.ts +110 -0
  105. package/package.json +2 -2
  106. package/src/clients/composite-client.ts +40 -3
  107. package/src/clients/constants.ts +16 -1
  108. package/src/clients/lib/registry.ts +8 -0
  109. package/src/clients/modules/account.ts +10 -0
  110. package/src/clients/modules/composer.ts +39 -0
  111. package/src/clients/modules/get.ts +16 -0
  112. package/src/clients/modules/local-wallet.ts +6 -6
  113. package/src/clients/modules/post.ts +44 -1
  114. package/src/clients/modules/signer.ts +79 -13
  115. package/src/clients/types.ts +1 -0
@@ -1,10 +1,15 @@
1
- import { EncodeObject } from '@cosmjs/proto-signing';
1
+ import { Secp256k1Pubkey } from '@cosmjs/amino';
2
+ import { fromBase64 } from '@cosmjs/encoding';
3
+ import { Int53 } from '@cosmjs/math';
4
+ import { EncodeObject, encodePubkey, makeAuthInfoBytes, makeSignDoc, OfflineDirectSigner } from '@cosmjs/proto-signing';
2
5
  import { SigningStargateClient, StdFee } from '@cosmjs/stargate';
3
- import { TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
6
+ import { TxExtension } from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/accountplus/tx';
7
+ import { TxBody, TxRaw } from 'cosmjs-types/cosmos/tx/v1beta1/tx';
8
+ import { Any } from 'cosmjs-types/google/protobuf/any';
4
9
  import Long from 'long';
5
10
  import protobuf from 'protobufjs';
6
11
 
7
- import { UserError } from '../lib/errors';
12
+ import { generateRegistry } from '../lib/registry';
8
13
  import { TransactionOptions } from '../types';
9
14
 
10
15
  // Required for encoding and decoding queries that are of type Long.
@@ -17,10 +22,16 @@ protobuf.configure();
17
22
  export class TransactionSigner {
18
23
  readonly address: string;
19
24
  readonly stargateSigningClient: SigningStargateClient;
25
+ readonly offlineSigner: OfflineDirectSigner;
20
26
 
21
- constructor(address: string, stargateSigningClient: SigningStargateClient) {
27
+ constructor(
28
+ address: string,
29
+ stargateSigningClient: SigningStargateClient,
30
+ offlineSigner: OfflineDirectSigner,
31
+ ) {
22
32
  this.address = address;
23
33
  this.stargateSigningClient = stargateSigningClient;
34
+ this.offlineSigner = offlineSigner;
24
35
  }
25
36
 
26
37
  /**
@@ -35,18 +46,73 @@ export class TransactionSigner {
35
46
  transactionOptions: TransactionOptions,
36
47
  fee?: StdFee,
37
48
  memo: string = '',
49
+ publicKey?: Secp256k1Pubkey,
38
50
  ): Promise<Uint8Array> {
39
- // Verify there is either a fee or a path to getting the fee present.
40
- if (fee === undefined) {
41
- throw new UserError('fee cannot be undefined');
51
+ if (!fee) {
52
+ throw new Error('Fee cannot be undefined');
42
53
  }
43
54
 
44
- // Sign, encode and return the transaction.
45
- const rawTx: TxRaw = await this.stargateSigningClient.sign(this.address, messages, fee, memo, {
46
- accountNumber: transactionOptions.accountNumber,
47
- sequence: transactionOptions.sequence,
48
- chainId: transactionOptions.chainId,
55
+ const registry = generateRegistry();
56
+
57
+ // Encode the messages
58
+ const encodedMessages = messages.map((msg) => registry.encodeAsAny(msg));
59
+
60
+ // Encode the TxExtension message
61
+ const txExtension = TxExtension.encode({
62
+ selectedAuthenticators: transactionOptions.authenticators ?? [],
63
+ }).finish();
64
+
65
+ // Create the non-critical extension message
66
+ const nonCriticalExtensionOptions: Any[] = [
67
+ Any.fromPartial({
68
+ typeUrl: '/dydxprotocol.accountplus.TxExtension',
69
+ value: txExtension,
70
+ }),
71
+ ];
72
+
73
+ // Construct the TxBody
74
+ const txBody: TxBody = TxBody.fromPartial({
75
+ messages: encodedMessages,
76
+ memo,
77
+ extensionOptions: [],
78
+ nonCriticalExtensionOptions,
49
79
  });
50
- return Uint8Array.from(TxRaw.encode(rawTx).finish());
80
+
81
+ // Encode the TxBody
82
+ const txBodyBytes = TxBody.encode(txBody).finish();
83
+
84
+ if (!publicKey) {
85
+ throw new Error('Public key cannot be undefined');
86
+ }
87
+ const pubkey = encodePubkey(publicKey); // Use the public key of the signer
88
+
89
+ const gasLimit = Int53.fromString(String(fee.gas)).toNumber();
90
+ const authInfoBytes = makeAuthInfoBytes(
91
+ [{ pubkey, sequence: transactionOptions.sequence }],
92
+ fee.amount,
93
+ gasLimit,
94
+ undefined,
95
+ undefined,
96
+ );
97
+
98
+ // Create the SignDoc
99
+ const signDoc = makeSignDoc(
100
+ txBodyBytes,
101
+ authInfoBytes,
102
+ transactionOptions.chainId,
103
+ transactionOptions.accountNumber,
104
+ );
105
+
106
+ // Use OfflineSigner to sign the transaction
107
+ const signerAddress = this.address;
108
+ const { signed, signature } = await this.offlineSigner.signDirect(signerAddress, signDoc);
109
+
110
+ const txRaw = TxRaw.fromPartial({
111
+ bodyBytes: signed.bodyBytes,
112
+ authInfoBytes: signed.authInfoBytes,
113
+ signatures: [fromBase64(signature.signature)],
114
+ });
115
+
116
+ return Uint8Array.from(TxRaw.encode(txRaw).finish());
51
117
  }
52
118
  }
@@ -29,6 +29,7 @@ export interface PartialTransactionOptions {
29
29
  // Information for signing a transaction while offline.
30
30
  export interface TransactionOptions extends PartialTransactionOptions {
31
31
  sequence: number;
32
+ authenticators?: Long[];
32
33
  }
33
34
 
34
35
  // OrderFlags, just a number in proto, defined as enum for convenience