@zoguxprotocol/client-js 0.2.6 → 0.2.7

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 (102) hide show
  1. package/__native__/__ios__/v4-native-client.js +785 -23
  2. package/__native__/__ios__/v4-native-client.js.map +1 -1
  3. package/__tests__/clients/composite-client.test.ts +7 -1
  4. package/__tests__/helpers/constants.ts +14 -3
  5. package/__tests__/lib/composer-spot-perp.test.ts +82 -0
  6. package/__tests__/lib/validation.test.ts +83 -3
  7. package/build/cjs/__tests__/clients/composite-client.test.js +6 -1
  8. package/build/cjs/__tests__/helpers/constants.js +14 -5
  9. package/build/cjs/__tests__/lib/composer-spot-perp.test.js +76 -0
  10. package/build/cjs/__tests__/lib/validation.test.js +69 -4
  11. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.js +126 -126
  12. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.js +168 -162
  13. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.js +37 -5
  14. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.js +46 -2
  15. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.js +2 -1
  16. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.js +326 -2
  17. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.js +132 -2
  18. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.js +31 -1
  19. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.js +82 -0
  20. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.js +20 -3
  21. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.js +125 -0
  22. package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.js +51 -0
  23. package/build/cjs/src/clients/constants.js +8 -3
  24. package/build/cjs/src/clients/lib/registry.js +11 -6
  25. package/build/cjs/src/clients/modules/account.js +13 -1
  26. package/build/cjs/src/clients/modules/composer.js +47 -1
  27. package/build/cjs/src/clients/modules/post.js +36 -1
  28. package/build/cjs/src/clients/types.js +1 -1
  29. package/build/cjs/src/lib/validation.js +53 -1
  30. package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
  31. package/build/esm/__tests__/clients/composite-client.test.js +6 -1
  32. package/build/esm/__tests__/helpers/constants.d.ts +2 -1
  33. package/build/esm/__tests__/helpers/constants.d.ts.map +1 -1
  34. package/build/esm/__tests__/helpers/constants.js +13 -4
  35. package/build/esm/__tests__/lib/composer-spot-perp.test.d.ts +2 -0
  36. package/build/esm/__tests__/lib/composer-spot-perp.test.d.ts.map +1 -0
  37. package/build/esm/__tests__/lib/composer-spot-perp.test.js +71 -0
  38. package/build/esm/__tests__/lib/validation.test.js +71 -6
  39. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.d.ts +158 -158
  40. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.js +126 -126
  41. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.d.ts +551 -476
  42. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.d.ts.map +1 -1
  43. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.js +168 -162
  44. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.d.ts +14 -1
  45. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.d.ts.map +1 -1
  46. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.js +38 -6
  47. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.d.ts +27 -0
  48. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.d.ts.map +1 -1
  49. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.js +45 -1
  50. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.d.ts +1 -0
  51. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.d.ts.map +1 -1
  52. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.js +2 -1
  53. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.d.ts +156 -0
  54. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.d.ts.map +1 -1
  55. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.js +325 -1
  56. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.d.ts +79 -0
  57. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.d.ts.map +1 -1
  58. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.js +131 -1
  59. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.d.ts +29 -2
  60. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.d.ts.map +1 -1
  61. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.js +33 -3
  62. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.d.ts +30 -0
  63. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.d.ts.map +1 -0
  64. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.js +46 -0
  65. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.d.ts +16 -1
  66. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.d.ts.map +1 -1
  67. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.js +20 -3
  68. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.d.ts +41 -0
  69. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.d.ts.map +1 -0
  70. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.js +89 -0
  71. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.d.ts +16 -0
  72. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.d.ts.map +1 -0
  73. package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.js +14 -0
  74. package/build/esm/src/clients/constants.d.ts +5 -0
  75. package/build/esm/src/clients/constants.d.ts.map +1 -1
  76. package/build/esm/src/clients/constants.js +6 -1
  77. package/build/esm/src/clients/lib/registry.d.ts.map +1 -1
  78. package/build/esm/src/clients/lib/registry.js +9 -4
  79. package/build/esm/src/clients/modules/account.d.ts +5 -0
  80. package/build/esm/src/clients/modules/account.d.ts.map +1 -1
  81. package/build/esm/src/clients/modules/account.js +13 -1
  82. package/build/esm/src/clients/modules/composer.d.ts +5 -0
  83. package/build/esm/src/clients/modules/composer.d.ts.map +1 -1
  84. package/build/esm/src/clients/modules/composer.js +48 -2
  85. package/build/esm/src/clients/modules/post.d.ts +10 -0
  86. package/build/esm/src/clients/modules/post.d.ts.map +1 -1
  87. package/build/esm/src/clients/modules/post.js +36 -1
  88. package/build/esm/src/clients/types.d.ts +14 -0
  89. package/build/esm/src/clients/types.d.ts.map +1 -1
  90. package/build/esm/src/clients/types.js +1 -1
  91. package/build/esm/src/lib/validation.d.ts +11 -1
  92. package/build/esm/src/lib/validation.d.ts.map +1 -1
  93. package/build/esm/src/lib/validation.js +51 -1
  94. package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
  95. package/package.json +2 -2
  96. package/src/clients/constants.ts +5 -0
  97. package/src/clients/lib/registry.ts +16 -1
  98. package/src/clients/modules/account.ts +17 -0
  99. package/src/clients/modules/composer.ts +88 -0
  100. package/src/clients/modules/post.ts +141 -0
  101. package/src/clients/types.ts +9 -0
  102. package/src/lib/validation.ts +62 -0
@@ -1,5 +1,11 @@
1
1
  import { Authenticator, AuthenticatorType, Network } from '../../src';
2
- import { CompositeClient } from '../../src/clients/composite-client'
2
+ import { CompositeClient } from '../../src/clients/composite-client';
3
+
4
+ jest.mock('../../src/clients/validator-client', () => ({
5
+ ValidatorClient: {
6
+ connect: jest.fn().mockResolvedValue({}),
7
+ },
8
+ }));
3
9
 
4
10
  describe('CompositeClient', () => {
5
11
  describe('validateAuthenticators', () => {
@@ -11,10 +11,12 @@ import {
11
11
  Order_Side,
12
12
  Order_TimeInForce,
13
13
  IBatchCancelOrder,
14
+ ISpotPerpTransferMessage,
14
15
  } from '../../src/types';
15
16
 
16
- export const TEST_ADDRESS: string = 'zogux1vl9h9nkmau4e9v7tm30wekespu3d2qhd9404wa';
17
- export const TEST_RECIPIENT_ADDRESS: string = 'zogux1slanxj8x9ntk9knwa6cvfv2tzlsq5gk3dshml0';
17
+ // Valid bech32 (zogux) addresses for tests - checksum-safe
18
+ export const TEST_ADDRESS: string = 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8h';
19
+ export const TEST_RECIPIENT_ADDRESS: string = 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqza30cfg';
18
20
  export const TEST_CHAIN_ID: string = 'zogux';
19
21
  export const TEST_HOST: string = 'http://localhost:26657';
20
22
 
@@ -95,13 +97,22 @@ export const defaultTransfer: Transfer = {
95
97
  number: 0,
96
98
  },
97
99
  recipient: {
98
- owner: 'zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23t',
100
+ owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrq8md56',
99
101
  number: 0,
100
102
  },
101
103
  assetId: 0,
102
104
  amount: Long.fromNumber(1000),
103
105
  };
104
106
 
107
+ // Spot–perp transfer (MsgTransferSpotToPerp / MsgTransferPerpToSpot) variables
108
+ export const defaultSpotPerpTransfer: ISpotPerpTransferMessage = {
109
+ sender: TEST_ADDRESS,
110
+ senderSubaccountId: { owner: TEST_ADDRESS, number: 0 },
111
+ recipientSubaccountId: { owner: TEST_RECIPIENT_ADDRESS, number: 0 },
112
+ assetId: 0,
113
+ quantums: Long.fromNumber(1_000_000),
114
+ };
115
+
105
116
  // ------ Onboarding Constants ------ //
106
117
  // Base Signature Result
107
118
  export const SIGNATURE_RESULT =
@@ -0,0 +1,82 @@
1
+ import Long from 'long';
2
+ import { Composer } from '../../src/clients/modules/composer';
3
+ import {
4
+ TYPE_URL_MSG_TRANSFER_SPOT_TO_PERP,
5
+ TYPE_URL_MSG_TRANSFER_PERP_TO_SPOT,
6
+ TYPE_URL_MSG_CREATE_TRANSFER_SPOT,
7
+ TYPE_URL_MSG_DEPOSIT_TO_SPOT,
8
+ TYPE_URL_MSG_WITHDRAW_FROM_SPOT,
9
+ } from '../../src/clients/constants';
10
+
11
+ describe('Composer spot–perp and spot messages', () => {
12
+ const composer = new Composer();
13
+ const sender = 'zogux1sender';
14
+ const recipient = 'zogux1recipient';
15
+ const assetId = 0;
16
+ const quantums = Long.fromNumber(1_000_000);
17
+
18
+ describe('composeMsgTransferSpotToPerp', () => {
19
+ it('returns correct typeUrl and value shape', () => {
20
+ const msg = composer.composeMsgTransferSpotToPerp(sender, 0, recipient, 0, assetId, quantums);
21
+ expect(msg.typeUrl).toBe(TYPE_URL_MSG_TRANSFER_SPOT_TO_PERP);
22
+ expect(msg.value).toMatchObject({
23
+ sender,
24
+ assetId,
25
+ senderSubaccountId: { owner: sender, number: 0 },
26
+ recipientSubaccountId: { owner: recipient, number: 0 },
27
+ });
28
+ expect(typeof (msg.value as { quantums: bigint }).quantums).toBe('bigint');
29
+ });
30
+ });
31
+
32
+ describe('composeMsgTransferPerpToSpot', () => {
33
+ it('returns correct typeUrl and value shape', () => {
34
+ const msg = composer.composeMsgTransferPerpToSpot(sender, 0, recipient, 0, assetId, quantums);
35
+ expect(msg.typeUrl).toBe(TYPE_URL_MSG_TRANSFER_PERP_TO_SPOT);
36
+ expect(msg.value).toMatchObject({
37
+ sender,
38
+ assetId,
39
+ senderSubaccountId: { owner: sender, number: 0 },
40
+ recipientSubaccountId: { owner: recipient, number: 0 },
41
+ });
42
+ expect(typeof (msg.value as { quantums: bigint }).quantums).toBe('bigint');
43
+ });
44
+ });
45
+
46
+ describe('composeMsgCreateTransferSpot', () => {
47
+ it('returns correct typeUrl and value shape', () => {
48
+ const msg = composer.composeMsgCreateTransferSpot(sender, 0, recipient, 0, assetId, quantums);
49
+ expect(msg.typeUrl).toBe(TYPE_URL_MSG_CREATE_TRANSFER_SPOT);
50
+ expect(msg.value).toMatchObject({
51
+ sender,
52
+ assetId,
53
+ senderSubaccountId: { owner: sender, number: 0 },
54
+ recipientSubaccountId: { owner: recipient, number: 0 },
55
+ });
56
+ });
57
+ });
58
+
59
+ describe('composeMsgDepositToSpot', () => {
60
+ it('returns correct typeUrl and value shape', () => {
61
+ const msg = composer.composeMsgDepositToSpot(sender, 0, assetId, quantums);
62
+ expect(msg.typeUrl).toBe(TYPE_URL_MSG_DEPOSIT_TO_SPOT);
63
+ expect(msg.value).toMatchObject({
64
+ sender,
65
+ assetId,
66
+ recipient: { owner: sender, number: 0 },
67
+ });
68
+ });
69
+ });
70
+
71
+ describe('composeMsgWithdrawFromSpot', () => {
72
+ it('returns correct typeUrl and value shape', () => {
73
+ const msg = composer.composeMsgWithdrawFromSpot(sender, 0, assetId, quantums, recipient);
74
+ expect(msg.typeUrl).toBe(TYPE_URL_MSG_WITHDRAW_FROM_SPOT);
75
+ expect(msg.value).toMatchObject({
76
+ recipient,
77
+ assetId,
78
+ sender: { owner: sender, number: 0 },
79
+ });
80
+ });
81
+ });
82
+ });
@@ -3,6 +3,7 @@ import {
3
3
  IBatchCancelOrder,
4
4
  ICancelOrder,
5
5
  IPlaceOrder,
6
+ ISpotPerpTransferMessage,
6
7
  OrderFlags,
7
8
  Transfer,
8
9
  } from '../../src/types';
@@ -14,13 +15,17 @@ import {
14
15
  validateCancelOrderMessage,
15
16
  validatePlaceOrderMessage,
16
17
  validateTransferMessage,
18
+ validateTransferSpotToPerpMessage,
19
+ validateTransferPerpToSpotMessage,
17
20
  } from '../../src/lib/validation';
18
21
  import {
19
22
  TEST_ADDRESS,
23
+ TEST_RECIPIENT_ADDRESS,
20
24
  defaultCancelOrder,
21
25
  defaultBatchCancelOrder,
22
26
  defaultOrder,
23
27
  defaultTransfer,
28
+ defaultSpotPerpTransfer,
24
29
  } from '../helpers/constants';
25
30
  import Long from 'long';
26
31
 
@@ -252,11 +257,11 @@ describe('Validations', () => {
252
257
  {
253
258
  ...defaultTransfer,
254
259
  recipient: {
255
- owner: 'zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23',
260
+ owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8', // invalid (truncated)
256
261
  number: 0,
257
262
  },
258
263
  },
259
- new UserError('Error: Invalid checksum for zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23'),
264
+ new UserError('Error: Invalid checksum for zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8'),
260
265
  ],
261
266
  [
262
267
  'invalid recipientAddress',
@@ -278,7 +283,82 @@ describe('Validations', () => {
278
283
  );
279
284
 
280
285
  it.each([
281
- ['valid', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt2', true],
286
+ ['valid', defaultSpotPerpTransfer, undefined],
287
+ [
288
+ 'underflow senderSubaccountNumber',
289
+ { ...defaultSpotPerpTransfer, senderSubaccountId: { owner: TEST_ADDRESS, number: -1 } },
290
+ new UserError(`senderSubaccountNumber: ${-1} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`),
291
+ ],
292
+ [
293
+ 'exceeds max senderSubaccountNumber',
294
+ {
295
+ ...defaultSpotPerpTransfer,
296
+ senderSubaccountId: { owner: TEST_ADDRESS, number: MAX_SUBACCOUNT_NUMBER_PLUS_1 },
297
+ },
298
+ new UserError(
299
+ `senderSubaccountNumber: ${MAX_SUBACCOUNT_NUMBER_PLUS_1} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
300
+ ),
301
+ ],
302
+ [
303
+ 'underflow recipientSubaccountNumber',
304
+ { ...defaultSpotPerpTransfer, recipientSubaccountId: { owner: TEST_RECIPIENT_ADDRESS, number: -1 } },
305
+ new UserError(`recipientSubaccountNumber: ${-1} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`),
306
+ ],
307
+ [
308
+ 'exceeds max recipientSubaccountNumber',
309
+ {
310
+ ...defaultSpotPerpTransfer,
311
+ recipientSubaccountId: { owner: TEST_RECIPIENT_ADDRESS, number: MAX_SUBACCOUNT_NUMBER_PLUS_1 },
312
+ },
313
+ new UserError(
314
+ `recipientSubaccountNumber: ${MAX_SUBACCOUNT_NUMBER_PLUS_1} cannot be < 0 or > ${MAX_SUBACCOUNT_NUMBER}`,
315
+ ),
316
+ ],
317
+ [
318
+ 'zero quantums (Long)',
319
+ { ...defaultSpotPerpTransfer, quantums: Long.ZERO },
320
+ new UserError('quantums: 0 cannot be <= 0'),
321
+ ],
322
+ [
323
+ 'zero quantums (bigint)',
324
+ { ...defaultSpotPerpTransfer, quantums: BigInt(0) },
325
+ new UserError('quantums: 0 cannot be <= 0'),
326
+ ],
327
+ [
328
+ 'invalid sender address',
329
+ { ...defaultSpotPerpTransfer, sender: 'fakeAddress1234' },
330
+ new UserError('Error: Mixed-case string fakeAddress1234'),
331
+ ],
332
+ [
333
+ 'invalid recipientSubaccountId.owner',
334
+ {
335
+ ...defaultSpotPerpTransfer,
336
+ recipientSubaccountId: { owner: 'badaddr', number: 0 },
337
+ },
338
+ undefined, // expect some UserError; checked below
339
+ ],
340
+ ])(
341
+ 'Validate spot–perp transfer (SpotToPerp / PerpToSpot): %s',
342
+ (
343
+ _name: string,
344
+ msg: ISpotPerpTransferMessage,
345
+ expectedError: UserError | undefined,
346
+ ) => {
347
+ const spotToPerp = validateTransferSpotToPerpMessage(msg);
348
+ const perpToSpot = validateTransferPerpToSpotMessage(msg);
349
+ if (expectedError === undefined && msg.recipientSubaccountId?.owner === 'badaddr') {
350
+ // Bech32 error message can vary by env; just assert both validators return an error
351
+ expect(spotToPerp).toBeInstanceOf(UserError);
352
+ expect(perpToSpot).toBeInstanceOf(UserError);
353
+ } else {
354
+ expect(spotToPerp).toEqual(expectedError);
355
+ expect(perpToSpot).toEqual(expectedError);
356
+ }
357
+ },
358
+ );
359
+
360
+ it.each([
361
+ ['valid', 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8h', true],
282
362
  ['invalid: does not start with zogux1', 'zogux27xpfvakm2amg962yls6f84z3kell8c5leqdyt2', false],
283
363
  ['invalid: too short', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt', false],
284
364
  ['invalid: too long', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt2s', false],
@@ -2,6 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const src_1 = require("../../src");
4
4
  const composite_client_1 = require("../../src/clients/composite-client");
5
+ jest.mock('../../src/clients/validator-client', () => ({
6
+ ValidatorClient: {
7
+ connect: jest.fn().mockResolvedValue({}),
8
+ },
9
+ }));
5
10
  describe('CompositeClient', () => {
6
11
  describe('validateAuthenticators', () => {
7
12
  const network = src_1.Network.staging();
@@ -127,4 +132,4 @@ describe('CompositeClient', () => {
127
132
  });
128
133
  });
129
134
  });
130
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWNsaWVudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2NsaWVudHMvY29tcG9zaXRlLWNsaWVudC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQXNFO0FBQ3RFLHlFQUFvRTtBQUVwRSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDdEMsTUFBTSxPQUFPLEdBQUcsYUFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWxDLEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtDQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE1BQU0sSUFBSSxHQUFrQjtnQkFDMUIsSUFBSSxFQUFFLHVCQUFpQixDQUFDLE1BQU07Z0JBQzlCLE1BQU0sRUFBRTtvQkFDTixFQUFFLElBQUksRUFBRSx1QkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO29CQUM5RCxFQUFFLElBQUksRUFBRSx1QkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2lCQUMvRDthQUNGLENBQUE7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhFQUE4RSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQWtCO2dCQUMxQixJQUFJLEVBQUUsdUJBQWlCLENBQUMsTUFBTTtnQkFDOUIs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
135
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWNsaWVudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2NsaWVudHMvY29tcG9zaXRlLWNsaWVudC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQXNFO0FBQ3RFLHlFQUFxRTtBQUVyRSxJQUFJLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUM7SUFDckQsZUFBZSxFQUFFO1FBQ2YsT0FBTyxFQUFFLElBQUksQ0FBQyxFQUFFLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQUM7S0FDekM7Q0FDRixDQUFDLENBQUMsQ0FBQztBQUVKLFFBQVEsQ0FBQyxpQkFBaUIsRUFBRSxHQUFHLEVBQUU7SUFDL0IsUUFBUSxDQUFDLHdCQUF3QixFQUFFLEdBQUcsRUFBRTtRQUN0QyxNQUFNLE9BQU8sR0FBRyxhQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7UUFFbEMsRUFBRSxDQUFDLDBDQUEwQyxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQ3hELE1BQU0sTUFBTSxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQWtCO2dCQUMxQixJQUFJLEVBQUUsdUJBQWlCLENBQUMsTUFBTTtnQkFDOUIsTUFBTSxFQUFFO29CQUNOLEVBQUUsSUFBSSxFQUFFLHVCQUFpQixDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7b0JBQzlELEVBQUUsSUFBSSxFQUFFLHVCQUFpQixDQUFDLHNCQUFzQixFQUFFLE1BQU0sRUFBRSxFQUFFLEVBQUU7aUJBQy9EO2FBQ0YsQ0FBQTtZQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDM0QsQ0FBQyxDQUFDLENBQUM7UUFFSCxF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
@@ -3,12 +3,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.MNEMONIC_FROM_SIGNATURE_RESULT = exports.PUBLIC_KEY_FROM_SIGNATURE_RESULT = exports.PRIVATE_KEY_FROM_SIGNATURE_RESULT = exports.ENTROPY_FROM_SIGNATURE_RESULT = exports.SIGNATURE_RESULT = exports.defaultTransfer = exports.defaultBatchCancelOrder = exports.defaultCancelOrder = exports.orderRouterOrder = exports.builderOrder = exports.twapOrder = exports.defaultOrder = exports.defaultTransactionOptions = exports.TEST_HOST = exports.TEST_CHAIN_ID = exports.TEST_RECIPIENT_ADDRESS = exports.TEST_ADDRESS = void 0;
6
+ exports.MNEMONIC_FROM_SIGNATURE_RESULT = exports.PUBLIC_KEY_FROM_SIGNATURE_RESULT = exports.PRIVATE_KEY_FROM_SIGNATURE_RESULT = exports.ENTROPY_FROM_SIGNATURE_RESULT = exports.SIGNATURE_RESULT = exports.defaultSpotPerpTransfer = exports.defaultTransfer = exports.defaultBatchCancelOrder = exports.defaultCancelOrder = exports.orderRouterOrder = exports.builderOrder = exports.twapOrder = exports.defaultOrder = exports.defaultTransactionOptions = exports.TEST_HOST = exports.TEST_CHAIN_ID = exports.TEST_RECIPIENT_ADDRESS = exports.TEST_ADDRESS = void 0;
7
7
  const long_1 = __importDefault(require("long"));
8
8
  const utils_1 = require("../../src/lib/utils");
9
9
  const types_1 = require("../../src/types");
10
- exports.TEST_ADDRESS = 'zogux1vl9h9nkmau4e9v7tm30wekespu3d2qhd9404wa';
11
- exports.TEST_RECIPIENT_ADDRESS = 'zogux1slanxj8x9ntk9knwa6cvfv2tzlsq5gk3dshml0';
10
+ // Valid bech32 (zogux) addresses for tests - checksum-safe
11
+ exports.TEST_ADDRESS = 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8h';
12
+ exports.TEST_RECIPIENT_ADDRESS = 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqza30cfg';
12
13
  exports.TEST_CHAIN_ID = 'zogux';
13
14
  exports.TEST_HOST = 'http://localhost:26657';
14
15
  exports.defaultTransactionOptions = {
@@ -81,12 +82,20 @@ exports.defaultTransfer = {
81
82
  number: 0,
82
83
  },
83
84
  recipient: {
84
- owner: 'zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23t',
85
+ owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqrq8md56',
85
86
  number: 0,
86
87
  },
87
88
  assetId: 0,
88
89
  amount: long_1.default.fromNumber(1000),
89
90
  };
91
+ // Spot–perp transfer (MsgTransferSpotToPerp / MsgTransferPerpToSpot) variables
92
+ exports.defaultSpotPerpTransfer = {
93
+ sender: exports.TEST_ADDRESS,
94
+ senderSubaccountId: { owner: exports.TEST_ADDRESS, number: 0 },
95
+ recipientSubaccountId: { owner: exports.TEST_RECIPIENT_ADDRESS, number: 0 },
96
+ assetId: 0,
97
+ quantums: long_1.default.fromNumber(1000000),
98
+ };
90
99
  // ------ Onboarding Constants ------ //
91
100
  // Base Signature Result
92
101
  exports.SIGNATURE_RESULT = '0xf2006b4fc0afa08a6048b40d3d67e437ac2e20e6bacf3f947f9b33aa2756d204287f5fb2155bec067d879a25d7ddac791826cf28e2786919065e19848020f1531b';
@@ -107,4 +116,4 @@ exports.PUBLIC_KEY_FROM_SIGNATURE_RESULT = new Uint8Array([
107
116
  ]);
108
117
  // Derived HDKey mnemonic from Base Signature Result
109
118
  exports.MNEMONIC_FROM_SIGNATURE_RESULT = 'waste sample once ocean tenant mushroom festival hollow regret convince stage able candy jazz champion isolate diary group under entry decorate glare quiz job';
110
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2hlbHBlcnMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUV4QiwrQ0FBNkQ7QUFDN0QsMkNBVXlCO0FBRVosUUFBQSxZQUFZLEdBQVcsOENBQThDLENBQUM7QUFDdEUsUUFBQSxzQkFBc0IsR0FBVyw4Q0FBOEMsQ0FBQztBQUNoRixRQUFBLGFBQWEsR0FBVyxPQUFPLENBQUM7QUFDaEMsUUFBQSxTQUFTLEdBQVcsd0JBQXdCLENBQUM7QUFFN0MsUUFBQSx5QkFBeUIsR0FBdUI7SUFDM0QsYUFBYSxFQUFFLENBQUM7SUFDaEIsUUFBUSxFQUFFLEVBQUU7SUFDWixPQUFPLEVBQUUscUJBQWE7Q0FDdkIsQ0FBQztBQUVGLHVCQUF1QjtBQUNWLFFBQUEsWUFBWSxHQUFnQjtJQUN2QyxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxrQkFBVSxDQUFDLFVBQVU7SUFDakMsVUFBVSxFQUFFLGtCQUFVLENBQUMsc0JBQXNCO0lBQzdDLElBQUksRUFBRSxrQkFBVSxDQUFDLFFBQVE7SUFDekIsUUFBUSxFQUFFLGNBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQzdCLFFBQVEsRUFBRSxjQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUM5QixZQUFZLEVBQUUsS0FBSztJQUNuQixXQUFXLEVBQUUseUJBQWlCLENBQUMseUJBQXlCO0lBQ3hELFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLHNCQUFzQjtJQUN0QixjQUFjLEVBQUUsU0FBUztJQUN6QixxQkFBcUIsRUFBRSxTQUFTO0lBQ2hDLGtCQUFrQixFQUFFLFNBQVM7Q0FDOUIsQ0FBQztBQUVGLDhDQUE4QztBQUNqQyxRQUFBLFNBQVMsR0FBZ0I7SUFDcEMsR0FBRyxvQkFBWTtJQUNmLFFBQVEsRUFB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
119
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2hlbHBlcnMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUV4QiwrQ0FBNkQ7QUFDN0QsMkNBV3lCO0FBRXpCLDJEQUEyRDtBQUM5QyxRQUFBLFlBQVksR0FBVyw4Q0FBOEMsQ0FBQztBQUN0RSxRQUFBLHNCQUFzQixHQUFXLDhDQUE4QyxDQUFDO0FBQ2hGLFFBQUEsYUFBYSxHQUFXLE9BQU8sQ0FBQztBQUNoQyxRQUFBLFNBQVMsR0FBVyx3QkFBd0IsQ0FBQztBQUU3QyxRQUFBLHlCQUF5QixHQUF1QjtJQUMzRCxhQUFhLEVBQUUsQ0FBQztJQUNoQixRQUFRLEVBQUUsRUFBRTtJQUNaLE9BQU8sRUFBRSxxQkFBYTtDQUN2QixDQUFDO0FBRUYsdUJBQXVCO0FBQ1YsUUFBQSxZQUFZLEdBQWdCO0lBQ3ZDLFFBQVEsRUFBRSxDQUFDO0lBQ1gsVUFBVSxFQUFFLGtCQUFVLENBQUMsVUFBVTtJQUNqQyxVQUFVLEVBQUUsa0JBQVUsQ0FBQyxzQkFBc0I7SUFDN0MsSUFBSSxFQUFFLGtCQUFVLENBQUMsUUFBUTtJQUN6QixRQUFRLEVBQUUsY0FBSSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7SUFDN0IsUUFBUSxFQUFFLGNBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO0lBQzlCLFlBQVksRUFBRSxLQUFLO0lBQ25CLFdBQVcsRUFBRSx5QkFBaUIsQ0FBQyx5QkFBeUI7SUFDeEQsVUFBVSxFQUFFLEtBQUs7SUFDakIsY0FBYyxFQUFFLENBQUM7SUFDakIsc0JBQXNCO0lBQ3RCLGNBQWMsRUFBRSxTQUFTO0lBQ3pCLHFCQUFxQixFQUFFLFNBQVM7SUFDaEMsa0JBQWtCLEVBQUUsU0FBUztDQUM5QixDQUFDO0FBRUYsOENBQThDO0FBQ2pDLFFBQUEsU0FBUyxHQUFnQjtJQUNwQyxHQUFHLG9CQUFZ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
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const long_1 = __importDefault(require("long"));
7
+ const composer_1 = require("../../src/clients/modules/composer");
8
+ const constants_1 = require("../../src/clients/constants");
9
+ describe('Composer spot–perp and spot messages', () => {
10
+ const composer = new composer_1.Composer();
11
+ const sender = 'zogux1sender';
12
+ const recipient = 'zogux1recipient';
13
+ const assetId = 0;
14
+ const quantums = long_1.default.fromNumber(1000000);
15
+ describe('composeMsgTransferSpotToPerp', () => {
16
+ it('returns correct typeUrl and value shape', () => {
17
+ const msg = composer.composeMsgTransferSpotToPerp(sender, 0, recipient, 0, assetId, quantums);
18
+ expect(msg.typeUrl).toBe(constants_1.TYPE_URL_MSG_TRANSFER_SPOT_TO_PERP);
19
+ expect(msg.value).toMatchObject({
20
+ sender,
21
+ assetId,
22
+ senderSubaccountId: { owner: sender, number: 0 },
23
+ recipientSubaccountId: { owner: recipient, number: 0 },
24
+ });
25
+ expect(typeof msg.value.quantums).toBe('bigint');
26
+ });
27
+ });
28
+ describe('composeMsgTransferPerpToSpot', () => {
29
+ it('returns correct typeUrl and value shape', () => {
30
+ const msg = composer.composeMsgTransferPerpToSpot(sender, 0, recipient, 0, assetId, quantums);
31
+ expect(msg.typeUrl).toBe(constants_1.TYPE_URL_MSG_TRANSFER_PERP_TO_SPOT);
32
+ expect(msg.value).toMatchObject({
33
+ sender,
34
+ assetId,
35
+ senderSubaccountId: { owner: sender, number: 0 },
36
+ recipientSubaccountId: { owner: recipient, number: 0 },
37
+ });
38
+ expect(typeof msg.value.quantums).toBe('bigint');
39
+ });
40
+ });
41
+ describe('composeMsgCreateTransferSpot', () => {
42
+ it('returns correct typeUrl and value shape', () => {
43
+ const msg = composer.composeMsgCreateTransferSpot(sender, 0, recipient, 0, assetId, quantums);
44
+ expect(msg.typeUrl).toBe(constants_1.TYPE_URL_MSG_CREATE_TRANSFER_SPOT);
45
+ expect(msg.value).toMatchObject({
46
+ sender,
47
+ assetId,
48
+ senderSubaccountId: { owner: sender, number: 0 },
49
+ recipientSubaccountId: { owner: recipient, number: 0 },
50
+ });
51
+ });
52
+ });
53
+ describe('composeMsgDepositToSpot', () => {
54
+ it('returns correct typeUrl and value shape', () => {
55
+ const msg = composer.composeMsgDepositToSpot(sender, 0, assetId, quantums);
56
+ expect(msg.typeUrl).toBe(constants_1.TYPE_URL_MSG_DEPOSIT_TO_SPOT);
57
+ expect(msg.value).toMatchObject({
58
+ sender,
59
+ assetId,
60
+ recipient: { owner: sender, number: 0 },
61
+ });
62
+ });
63
+ });
64
+ describe('composeMsgWithdrawFromSpot', () => {
65
+ it('returns correct typeUrl and value shape', () => {
66
+ const msg = composer.composeMsgWithdrawFromSpot(sender, 0, assetId, quantums, recipient);
67
+ expect(msg.typeUrl).toBe(constants_1.TYPE_URL_MSG_WITHDRAW_FROM_SPOT);
68
+ expect(msg.value).toMatchObject({
69
+ recipient,
70
+ assetId,
71
+ sender: { owner: sender, number: 0 },
72
+ });
73
+ });
74
+ });
75
+ });
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zZXItc3BvdC1wZXJwLnRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9fX3Rlc3RzX18vbGliL2NvbXBvc2VyLXNwb3QtcGVycC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLGlFQUE4RDtBQUM5RCwyREFNcUM7QUFFckMsUUFBUSxDQUFDLHNDQUFzQyxFQUFFLEdBQUcsRUFBRTtJQUNwRCxNQUFNLFFBQVEsR0FBRyxJQUFJLG1CQUFRLEVBQUUsQ0FBQztJQUNoQyxNQUFNLE1BQU0sR0FBRyxjQUFjLENBQUM7SUFDOUIsTUFBTSxTQUFTLEdBQUcsaUJBQWlCLENBQUM7SUFDcEMsTUFBTSxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ2xCLE1BQU0sUUFBUSxHQUFHLGNBQUksQ0FBQyxVQUFVLENBQUMsT0FBUyxDQUFDLENBQUM7SUFFNUMsUUFBUSxDQUFDLDhCQUE4QixFQUFFLEdBQUcsRUFBRTtRQUM1QyxFQUFFLENBQUMseUNBQXlDLEVBQUUsR0FBRyxFQUFFO1lBQ2pELE1BQU0sR0FBRyxHQUFHLFFBQVEsQ0FBQyw0QkFBNEIsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsT0FBTyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1lBQzlGLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxDQUFDLDhDQUFrQyxDQUFDLENBQUM7WUFDN0QsTUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQyxhQUFhLENBQUM7Z0JBQzlCLE1BQU07Z0JBQ04sT0FBTztnQkFDUCxrQkFBa0IsRUFBRSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRTtnQkFDaEQscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7YUFDdkQsQ0FBQyxDQUFDO1lB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
@@ -220,11 +220,11 @@ describe('Validations', () => {
220
220
  {
221
221
  ...constants_2.defaultTransfer,
222
222
  recipient: {
223
- owner: 'zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23',
223
+ owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8', // invalid (truncated)
224
224
  number: 0,
225
225
  },
226
226
  },
227
- new errors_1.UserError('Error: Invalid checksum for zogux14063jves4u9zhm7eja5ltf3t8zspxd92qnk23'),
227
+ new errors_1.UserError('Error: Invalid checksum for zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8'),
228
228
  ],
229
229
  [
230
230
  'invalid recipientAddress',
@@ -242,7 +242,72 @@ describe('Validations', () => {
242
242
  expect(validationError).toEqual(expectedError);
243
243
  });
244
244
  it.each([
245
- ['valid', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt2', true],
245
+ ['valid', constants_2.defaultSpotPerpTransfer, undefined],
246
+ [
247
+ 'underflow senderSubaccountNumber',
248
+ { ...constants_2.defaultSpotPerpTransfer, senderSubaccountId: { owner: constants_2.TEST_ADDRESS, number: -1 } },
249
+ new errors_1.UserError(`senderSubaccountNumber: ${-1} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`),
250
+ ],
251
+ [
252
+ 'exceeds max senderSubaccountNumber',
253
+ {
254
+ ...constants_2.defaultSpotPerpTransfer,
255
+ senderSubaccountId: { owner: constants_2.TEST_ADDRESS, number: MAX_SUBACCOUNT_NUMBER_PLUS_1 },
256
+ },
257
+ new errors_1.UserError(`senderSubaccountNumber: ${MAX_SUBACCOUNT_NUMBER_PLUS_1} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`),
258
+ ],
259
+ [
260
+ 'underflow recipientSubaccountNumber',
261
+ { ...constants_2.defaultSpotPerpTransfer, recipientSubaccountId: { owner: constants_2.TEST_RECIPIENT_ADDRESS, number: -1 } },
262
+ new errors_1.UserError(`recipientSubaccountNumber: ${-1} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`),
263
+ ],
264
+ [
265
+ 'exceeds max recipientSubaccountNumber',
266
+ {
267
+ ...constants_2.defaultSpotPerpTransfer,
268
+ recipientSubaccountId: { owner: constants_2.TEST_RECIPIENT_ADDRESS, number: MAX_SUBACCOUNT_NUMBER_PLUS_1 },
269
+ },
270
+ new errors_1.UserError(`recipientSubaccountNumber: ${MAX_SUBACCOUNT_NUMBER_PLUS_1} cannot be < 0 or > ${constants_1.MAX_SUBACCOUNT_NUMBER}`),
271
+ ],
272
+ [
273
+ 'zero quantums (Long)',
274
+ { ...constants_2.defaultSpotPerpTransfer, quantums: long_1.default.ZERO },
275
+ new errors_1.UserError('quantums: 0 cannot be <= 0'),
276
+ ],
277
+ [
278
+ 'zero quantums (bigint)',
279
+ { ...constants_2.defaultSpotPerpTransfer, quantums: BigInt(0) },
280
+ new errors_1.UserError('quantums: 0 cannot be <= 0'),
281
+ ],
282
+ [
283
+ 'invalid sender address',
284
+ { ...constants_2.defaultSpotPerpTransfer, sender: 'fakeAddress1234' },
285
+ new errors_1.UserError('Error: Mixed-case string fakeAddress1234'),
286
+ ],
287
+ [
288
+ 'invalid recipientSubaccountId.owner',
289
+ {
290
+ ...constants_2.defaultSpotPerpTransfer,
291
+ recipientSubaccountId: { owner: 'badaddr', number: 0 },
292
+ },
293
+ undefined, // expect some UserError; checked below
294
+ ],
295
+ ])('Validate spot–perp transfer (SpotToPerp / PerpToSpot): %s', (_name, msg, expectedError) => {
296
+ var _a;
297
+ const spotToPerp = (0, validation_1.validateTransferSpotToPerpMessage)(msg);
298
+ const perpToSpot = (0, validation_1.validateTransferPerpToSpotMessage)(msg);
299
+ if (expectedError === undefined && ((_a = msg.recipientSubaccountId) === null || _a === void 0 ? void 0 : _a.owner) === 'badaddr') {
300
+ // Bech32 error message can vary by env; just assert both validators return an error
301
+ expect(spotToPerp).toBeInstanceOf(errors_1.UserError);
302
+ expect(perpToSpot).toBeInstanceOf(errors_1.UserError);
303
+ }
304
+ else {
305
+ expect(spotToPerp).toEqual(expectedError);
306
+ expect(perpToSpot).toEqual(expectedError);
307
+ }
308
+ });
309
+ it.each([
310
+ ['valid', 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8h', true],
246
311
  ['invalid: does not start with zogux1', 'zogux27xpfvakm2amg962yls6f84z3kell8c5leqdyt2', false],
247
312
  ['invalid: too short', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt', false],
248
313
  ['invalid: too long', 'zogux17xpfvakm2amg962yls6f84z3kell8c5leqdyt2s', false],
@@ -251,4 +316,4 @@ describe('Validations', () => {
251
316
  expect(validationResult).toEqual(expectedResult);
252
317
  });
253
318
  });
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2xpYi92YWxpZGF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FPeUI7QUFDekIsdURBQTZFO0FBQzdFLGlEQUFpRDtBQUNqRCx5REFNa0M7QUFDbEMsb0RBTThCO0FBQzlCLGdEQUF3QjtBQUV4QixNQUFNLGtCQUFrQixHQUFXLHVCQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sNEJBQTRCLEdBQVcsaUNBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRXZFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLE9BQU8sRUFBRSx3QkFBWSxFQUFFLFNBQVMsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDakU7WUFDRSxvQkFBb0I7WUFDcEIsRUFBRSxHQUFHLHdCQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksa0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztTQUN2RDtRQUNEO1lBQ0UsbUJBQW1CO1lBQ25CLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtZQUNqRCxJQUFJLGtCQUFTLENBQUMsYUFBYSxrQkFBa0Isd0JBQXdCLENBQUM7U0FDdkU7UUFDRDtZQUNFLG9CQUFvQjtZQUNwQixFQUFFLEdBQUcsd0JBQVksRUFBRSxRQUFRLEVBQUUsY0FBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQyxJQUFJLGtCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsaUJBQWlCLENBQUM7U0FDaEQ7UUFDRDtZQUNFLHdCQUF3QjtZQUN4QixFQUFFLEdBQUcsd0JB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
319
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2xpYi92YWxpZGF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FReUI7QUFDekIsdURBQTZFO0FBQzdFLGlEQUFpRDtBQUNqRCx5REFRa0M7QUFDbEMsb0RBUThCO0FBQzlCLGdEQUF3QjtBQUV4QixNQUFNLGtCQUFrQixHQUFXLHVCQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sNEJBQTRCLEdBQVcsaUNBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRXZFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLE9BQU8sRUFBRSx3QkFBWSxFQUFFLFNBQVMsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDakU7WUFDRSxvQkFBb0I7WUFDcEIsRUFBRSxHQUFHLHdCQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksa0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztTQUN2RDtRQUNEO1lBQ0UsbUJBQW1CO1lBQ25CLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtZQUNqRCxJQUFJLGtCQUFTLENBQUMsYUFBYSxrQkFBa0Isd0JBQXdCLENBQUM7U0FDdkU7UUFDRDtZQUNFLG9CQUFvQjtZQUNwQixFQUFFLEdBQUcsd0JBQVksRUFBRSxRQUFRLEVBQUUsY0FBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQyxJQUFJLGtCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsaUJBQWlCLENBQUM7U0FDaEQ7UUFDRDtZQUNFLHdCQUF3QjtZQUN4QixFQUFFLEdBQUcsd0JB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