@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.
- package/__native__/__ios__/v4-native-client.js +785 -23
- package/__native__/__ios__/v4-native-client.js.map +1 -1
- package/__tests__/clients/composite-client.test.ts +7 -1
- package/__tests__/helpers/constants.ts +14 -3
- package/__tests__/lib/composer-spot-perp.test.ts +82 -0
- package/__tests__/lib/validation.test.ts +83 -3
- package/build/cjs/__tests__/clients/composite-client.test.js +6 -1
- package/build/cjs/__tests__/helpers/constants.js +14 -5
- package/build/cjs/__tests__/lib/composer-spot-perp.test.js +76 -0
- package/build/cjs/__tests__/lib/validation.test.js +69 -4
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.js +126 -126
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.js +168 -162
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.js +37 -5
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.js +46 -2
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.js +2 -1
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.js +326 -2
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.js +132 -2
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.js +31 -1
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.js +82 -0
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.js +20 -3
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.js +125 -0
- package/build/cjs/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.js +51 -0
- package/build/cjs/src/clients/constants.js +8 -3
- package/build/cjs/src/clients/lib/registry.js +11 -6
- package/build/cjs/src/clients/modules/account.js +13 -1
- package/build/cjs/src/clients/modules/composer.js +47 -1
- package/build/cjs/src/clients/modules/post.js +36 -1
- package/build/cjs/src/clients/types.js +1 -1
- package/build/cjs/src/lib/validation.js +53 -1
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/__tests__/clients/composite-client.test.js +6 -1
- package/build/esm/__tests__/helpers/constants.d.ts +2 -1
- package/build/esm/__tests__/helpers/constants.d.ts.map +1 -1
- package/build/esm/__tests__/helpers/constants.js +13 -4
- package/build/esm/__tests__/lib/composer-spot-perp.test.d.ts +2 -0
- package/build/esm/__tests__/lib/composer-spot-perp.test.d.ts.map +1 -0
- package/build/esm/__tests__/lib/composer-spot-perp.test.js +71 -0
- package/build/esm/__tests__/lib/validation.test.js +71 -6
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.d.ts +158 -158
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/cosmos/bundle.js +126 -126
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.d.ts +551 -476
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/bundle.js +168 -162
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.d.ts +14 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/events/events.js +38 -6
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.d.ts +27 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/indexer/protocol/v1/subaccount.js +45 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.d.ts +1 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/rpc.tx.js +2 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.d.ts +156 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/transfer.js +325 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.d.ts +79 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.js +131 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.d.ts +29 -2
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/sending/tx.rpc.msg.js +33 -3
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.d.ts +30 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.d.ts.map +1 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/spot_position.js +46 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.d.ts +16 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.d.ts.map +1 -1
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/subaccount.js +20 -3
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.d.ts +41 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.d.ts.map +1 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.js +89 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.d.ts +16 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.d.ts.map +1 -0
- package/build/esm/node_modules/@zoguxprotocol/proto/src/codegen/zogux/subaccounts/tx.rpc.msg.js +14 -0
- package/build/esm/src/clients/constants.d.ts +5 -0
- package/build/esm/src/clients/constants.d.ts.map +1 -1
- package/build/esm/src/clients/constants.js +6 -1
- package/build/esm/src/clients/lib/registry.d.ts.map +1 -1
- package/build/esm/src/clients/lib/registry.js +9 -4
- package/build/esm/src/clients/modules/account.d.ts +5 -0
- package/build/esm/src/clients/modules/account.d.ts.map +1 -1
- package/build/esm/src/clients/modules/account.js +13 -1
- package/build/esm/src/clients/modules/composer.d.ts +5 -0
- package/build/esm/src/clients/modules/composer.d.ts.map +1 -1
- package/build/esm/src/clients/modules/composer.js +48 -2
- package/build/esm/src/clients/modules/post.d.ts +10 -0
- package/build/esm/src/clients/modules/post.d.ts.map +1 -1
- package/build/esm/src/clients/modules/post.js +36 -1
- package/build/esm/src/clients/types.d.ts +14 -0
- package/build/esm/src/clients/types.d.ts.map +1 -1
- package/build/esm/src/clients/types.js +1 -1
- package/build/esm/src/lib/validation.d.ts +11 -1
- package/build/esm/src/lib/validation.d.ts.map +1 -1
- package/build/esm/src/lib/validation.js +51 -1
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/clients/constants.ts +5 -0
- package/src/clients/lib/registry.ts +16 -1
- package/src/clients/modules/account.ts +17 -0
- package/src/clients/modules/composer.ts +88 -0
- package/src/clients/modules/post.ts +141 -0
- package/src/clients/types.ts +9 -0
- 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
|
-
|
|
17
|
-
export const
|
|
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: '
|
|
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: '
|
|
260
|
+
owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8', // invalid (truncated)
|
|
256
261
|
number: 0,
|
|
257
262
|
},
|
|
258
263
|
},
|
|
259
|
-
new UserError('Error: Invalid checksum for
|
|
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',
|
|
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,
|
|
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
|
-
|
|
11
|
-
exports.
|
|
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: '
|
|
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,
|
|
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: '
|
|
223
|
+
owner: 'zogux1qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqpnz6w8', // invalid (truncated)
|
|
224
224
|
number: 0,
|
|
225
225
|
},
|
|
226
226
|
},
|
|
227
|
-
new errors_1.UserError('Error: Invalid checksum for
|
|
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',
|
|
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdGlvbi50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2xpYi92YWxpZGF0aW9uLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSwyQ0FReUI7QUFDekIsdURBQTZFO0FBQzdFLGlEQUFpRDtBQUNqRCx5REFRa0M7QUFDbEMsb0RBUThCO0FBQzlCLGdEQUF3QjtBQUV4QixNQUFNLGtCQUFrQixHQUFXLHVCQUFXLEdBQUcsQ0FBQyxDQUFDO0FBQ25ELE1BQU0sNEJBQTRCLEdBQVcsaUNBQXFCLEdBQUcsQ0FBQyxDQUFDO0FBRXZFLFFBQVEsQ0FBQyxhQUFhLEVBQUUsR0FBRyxFQUFFO0lBQzNCLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLE9BQU8sRUFBRSx3QkFBWSxFQUFFLFNBQVMsQ0FBQztRQUNsQyxDQUFDLGtCQUFrQixFQUFFLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDakU7WUFDRSxvQkFBb0I7WUFDcEIsRUFBRSxHQUFHLHdCQUFZLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQyxFQUFFO1lBQ2pDLElBQUksa0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyx3QkFBd0IsQ0FBQztTQUN2RDtRQUNEO1lBQ0UsbUJBQW1CO1lBQ25CLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxrQkFBa0IsRUFBRTtZQUNqRCxJQUFJLGtCQUFTLENBQUMsYUFBYSxrQkFBa0Isd0JBQXdCLENBQUM7U0FDdkU7UUFDRDtZQUNFLG9CQUFvQjtZQUNwQixFQUFFLEdBQUcsd0JBQVksRUFBRSxRQUFRLEVBQUUsY0FBSSxDQUFDLE9BQU8sRUFBRTtZQUMzQyxJQUFJLGtCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsaUJBQWlCLENBQUM7U0FDaEQ7UUFDRDtZQUNFLHdCQUF3QjtZQUN4QixFQUFFLEdBQUcsd0JBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDckMsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsZ0NBQWdDLENBQUM7U0FDbkU7UUFDRDtZQUNFLHVCQUF1QjtZQUN2QixFQUFFLEdBQUcsd0JBQVksRUFBRSxZQUFZLEVBQUUsa0JBQWtCLEVBQUU7WUFDckQsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixrQkFBa0IsZ0NBQWdDLENBQUM7U0FDbkY7UUFDRDtZQUNFLGdCQUFnQjtZQUNoQixFQUFFLEdBQUcsd0JBQVksRUFBRSxZQUFZLEVBQUUsQ0FBQyxFQUFFO1lBQ3BDLElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsQ0FBQyxnQ0FBZ0MsQ0FBQztTQUNsRTtRQUNEO1lBQ0Usb0JBQW9CO1lBQ3BCLEVBQUUsR0FBRyx3QkFBWSxFQUFFLFFBQVEsRUFBRSxjQUFJLENBQUMsT0FBTyxFQUFFO1lBQzNDLElBQUksa0JBQVMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQztTQUNoRDtLQUNGLENBQUMsQ0FDQSxvQkFBb0IsRUFDcEIsQ0FBQyxLQUFhLEVBQUUsS0FBa0IsRUFBRSxhQUFvQyxFQUFFLEVBQUU7UUFDMUUsTUFBTSxlQUFlLEdBQXFCLElBQUEsc0NBQXlCLEVBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzlFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUNGLENBQUM7SUFFRixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxPQUFPLEVBQUUsOEJBQWtCLEVBQUUsU0FBUyxDQUFDO1FBQ3hDLENBQUMsa0JBQWtCLEVBQUUsRUFBRSxHQUFHLDhCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFDLEVBQUUsRUFBRSxTQUFTLENBQUM7UUFDdkU7WUFDRSxvQkFBb0I7WUFDcEIsRUFBRSxHQUFHLDhCQUFrQixFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtZQUN2QyxJQUFJLGtCQUFTLENBQUMsYUFBYSxDQUFDLENBQUMsd0JBQXdCLENBQUM7U0FDdkQ7UUFDRDtZQUNFLG1CQUFtQjtZQUNuQixFQUFFLEdBQUcsOEJBQWtCLEVBQUUsUUFBUSxFQUFFLGtCQUFrQixFQUFFO1lBQ3ZELElBQUksa0JBQVMsQ0FBQyxhQUFhLGtCQUFrQix3QkFBd0IsQ0FBQztTQUN2RTtRQUNEO1lBQ0Usd0JBQXdCO1lBQ3hCLEVBQUUsR0FBRyw4QkFBa0IsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDM0MsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsZ0NBQWdDLENBQUM7U0FDbkU7UUFDRDtZQUNFLHVCQUF1QjtZQUN2QixFQUFFLEdBQUcsOEJBQWtCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFO1lBQzNELElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsa0JBQWtCLGdDQUFnQyxDQUFDO1NBQ25GO1FBQ0Q7WUFDRSxnQkFBZ0I7WUFDaEIsRUFBRSxHQUFHLDhCQUFrQixFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDMUMsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixDQUFDLGdDQUFnQyxDQUFDO1NBQ2xFO1FBQ0Q7WUFDRSwyQkFBMkI7WUFDM0IsRUFBRSxHQUFHLDhCQUFrQixFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRTtZQUMvQyxJQUFJLGtCQUFTLENBQUMsdUVBQXVFLENBQUM7U0FDdkY7UUFDRDtZQUNFLHdCQUF3QjtZQUN4QjtnQkFDRSxHQUFHLDhCQUFrQjtnQkFDckIsVUFBVSxFQUFFLGtCQUFVLENBQUMsU0FBUztnQkFDaEMsWUFBWSxFQUFFLFNBQVM7Z0JBQ3ZCLGdCQUFnQixFQUFFLEVBQUU7YUFDckI7WUFDRCxTQUFTO1NBQ1Y7UUFDRDtZQUNFLDZDQUE2QztZQUM3QyxFQUFFLEdBQUcsOEJBQWtCLEVBQUUsVUFBVSxFQUFFLGtCQUFVLENBQUMsU0FBUyxFQUFFO1lBQzNELElBQUksa0JBQVMsQ0FBQyxxQkFBcUIsU0FBUyxnQ0FBZ0MsQ0FBQztTQUM5RTtRQUNEO1lBQ0Usd0NBQXdDO1lBQ3hDLEVBQUUsR0FBRyw4QkFBa0IsRUFBRSxVQUFVLEVBQUUsa0JBQVUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxFQUFFO1lBQ2hGLElBQUksa0JBQVMsQ0FBQyxxQkFBcUIsQ0FBQyxnQ0FBZ0MsQ0FBQztTQUN0RTtRQUNEO1lBQ0UsNkNBQTZDO1lBQzdDLEVBQUUsR0FBRyw4QkFBa0IsRUFBRSxVQUFVLEVBQUUsa0JBQVUsQ0FBQyxTQUFTLEVBQUUsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDakYsSUFBSSxrQkFBUyxDQUFDLHFCQUFxQixDQUFDLENBQUMsZ0NBQWdDLENBQUM7U0FDdkU7UUFDRDtZQUNFLDRDQUE0QztZQUM1QztnQkFDRSxHQUFHLDhCQUFrQjtnQkFDckIsVUFBVSxFQUFFLGtCQUFVLENBQUMsU0FBUztnQkFDaEMsZ0JBQWdCLEVBQUUsa0JBQWtCO2FBQ3JDO1lBQ0QsSUFBSSxrQkFBUyxDQUFDLHFCQUFxQixrQkFBa0IsZ0NBQWdDLENBQUM7U0FDdkY7UUFDRDtZQUNFLG1DQUFtQztZQUNuQztnQkFDRSxHQUFHLDhCQUFrQjtnQkFDckIsVUFBVSxFQUFFLGtCQUFVLENBQUMsU0FBUztnQkFDaEMsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLGdCQUFnQixFQUFFLEVBQUU7YUFDckI7WUFDRCxJQUFJLGtCQUFTLENBQUMsK0RBQStELENBQUM7U0FDL0U7S0FDRixDQUFDLENBQ0EsMkJBQTJCLEVBQzNCLENBQUMsS0FBYSxFQUFFLEtBQW1CLEVBQUUsYUFBb0MsRUFBRSxFQUFFO1FBQzNFLE1BQU0sZUFBZSxHQUFxQixJQUFBLHVDQUEwQixFQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvRSxNQUFNLENBQUMsZUFBZSxDQUFDLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQ2pELENBQUMsQ0FDRixDQUFDO0lBRUYsRUFBRSxDQUFDLElBQUksQ0FBQztRQUNOLENBQUMsT0FBTyxFQUFFLG1DQUF1QixFQUFFLFNBQVMsQ0FBQztRQUM3QztZQUNFLG1CQUFtQjtZQUNuQjtnQkFDRSxHQUFHLG1DQUF1QjtnQkFDMUIsZUFBZSxFQUFFO29CQUNmLEdBQUcsbUNBQXVCLENBQUMsZUFBZTtvQkFDMUM7d0JBQ0UsVUFBVSxFQUFFLGtCQUFVLENBQUMsc0JBQXNCO3dCQUM3QyxTQUFTLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQztxQkFDaEM7aUJBQ0Y7YUFDRjtZQUNELElBQUksa0JBQVMsQ0FBQyxhQUFhLGtCQUFrQix3QkFBd0IsQ0FBQztTQUN2RTtRQUNEO1lBQ0Usd0JBQXdCO1lBQ3hCLEVBQUUsR0FBRyxtQ0FBdUIsRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUU7WUFDaEQsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixDQUFDLENBQUMsZ0NBQWdDLENBQUM7U0FDbkU7UUFDRDtZQUNFLHVCQUF1QjtZQUN2QixFQUFFLEdBQUcsbUNBQXVCLEVBQUUsWUFBWSxFQUFFLGtCQUFrQixFQUFFO1lBQ2hFLElBQUksa0JBQVMsQ0FBQyxpQkFBaUIsa0JBQWtCLGdDQUFnQyxDQUFDO1NBQ25GO1FBQ0Q7WUFDRSxnQkFBZ0I7WUFDaEIsRUFBRSxHQUFHLG1DQUF1QixFQUFFLFlBQVksRUFBRSxDQUFDLEVBQUU7WUFDL0MsSUFBSSxrQkFBUyxDQUFDLGlCQUFpQixDQUFDLGdDQUFnQyxDQUFDO1NBQ2xFO0tBQ0YsQ0FBQyxDQUNBLGtDQUFrQyxFQUNsQyxDQUFDLEtBQWEsRUFBRSxNQUF5QixFQUFFLGFBQW9DLEVBQUUsRUFBRTtRQUNqRixNQUFNLGVBQWUsR0FBcUIsSUFBQSw0Q0FBK0IsRUFBQyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDckYsTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUNqRCxDQUFDLENBQ0YsQ0FBQztJQUVGLEVBQUUsQ0FBQyxJQUFJLENBQUM7UUFDTixDQUFDLE9BQU8sRUFBRSwyQkFBZSxFQUFFLFNBQVMsQ0FBQztRQUNyQztZQUNFLGtDQUFrQztZQUNsQyxFQUFFLEdBQUcsMkJBQWUsRUFBRSxNQUFNLEVBQUUsRUFBRSxLQUFLLEVBQUUsd0JBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRTtZQUNuRSxJQUFJLGtCQUFTLENBQUMsMkJBQTJCLENBQUMsQ0FBQyx1QkFBdUIsaUNBQXFCLEVBQUUsQ0FBQztTQUMzRjtRQUNEO1lBQ0Usd0RBQXdEO1lBQ3hELEVBQUUsR0FBRywyQkFBZSxFQUFFLE1BQU0sRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBWSxFQUFFLE1BQU0sRUFBRSw0QkFBNEIsRUFBRSxFQUFFO1lBQzdGLElBQUksa0JBQVMsQ0FDWCwyQkFBMkIsNEJBQTRCLHVCQUF1QixpQ0FBcUIsRUFBRSxDQUN0RztTQUNGO1FBQ0Q7WUFDRSwwQkFBMEI7WUFDMUIsRUFBRSxHQUFHLDJCQUFlLEVBQUUsTUFBTSxFQUFFLEVBQUUsS0FBSyxFQUFFLHdCQUFZLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2xFLFNBQVM7U0FDVjtRQUNEO1lBQ0UscUNBQXFDO1lBQ3JDLEVBQUUsR0FBRywyQkFBZSxFQUFFLFNBQVMsRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3RFLElBQUksa0JBQVMsQ0FBQyw4QkFBOEIsQ0FBQyxDQUFDLHVCQUF1QixpQ0FBcUIsRUFBRSxDQUFDO1NBQzlGO1FBQ0Q7WUFDRSw0REFBNEQ7WUFDNUQ7Z0JBQ0UsR0FBRywyQkFBZTtnQkFDbEIsU0FBUyxFQUFFLEVBQUUsS0FBSyxFQUFFLHdCQUFZLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFO2FBQ3pFO1lBQ0QsSUFBSSxrQkFBUyxDQUNYLDhCQUE4Qiw0QkFBNEIsdUJBQXVCLGlDQUFxQixFQUFFLENBQ3pHO1NBQ0Y7UUFDRDtZQUNFLDZCQUE2QjtZQUM3QixFQUFFLEdBQUcsMkJBQWUsRUFBRSxTQUFTLEVBQUUsRUFBRSxLQUFLLEVBQUUsd0JBQVksRUFBRSxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDckUsU0FBUztTQUNWO1FBQ0Q7WUFDRSxtQkFBbUI7WUFDbkIsRUFBRSxHQUFHLDJCQUFlLEVBQUUsT0FBTyxFQUFFLENBQUMsRUFBRTtZQUNsQyxJQUFJLGtCQUFTLENBQUMsYUFBYSxDQUFDLGdCQUFnQixDQUFDO1NBQzlDO1FBQ0Q7WUFDRSxVQUFVO1lBQ1YsRUFBRSxHQUFHLDJCQUFlLEVBQUUsTUFBTSxFQUFFLGNBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekMsSUFBSSxrQkFBUyxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsQ0FBQztTQUM3QztRQUNEO1lBQ0UsNEJBQTRCO1lBQzVCO2dCQUNFLEdBQUcsMkJBQWU7Z0JBQ2xCLFNBQVMsRUFBRTtvQkFDVCxLQUFLLEVBQUUsNkNBQTZDLEVBQUUsc0JBQXNCO29CQUM1RSxNQUFNLEVBQUUsQ0FBQztpQkFDVjthQUNGO1lBQ0QsSUFBSSxrQkFBUyxDQUFDLHlFQUF5RSxDQUFDO1NBQ3pGO1FBQ0Q7WUFDRSwwQkFBMEI7WUFDMUI7Z0JBQ0UsR0FBRywyQkFBZTtnQkFDbEIsU0FBUyxFQUFFO29CQUNULEtBQUssRUFBRSxpQkFBaUI7b0JBQ3hCLE1BQU0sRUFBRSxDQUFDO2lCQUNWO2FBQ0Y7WUFDRCxJQUFJLGtCQUFTLENBQUMsMENBQTBDLENBQUM7U0FDMUQ7S0FDRixDQUFDLENBQ0EsdUJBQXVCLEVBQ3ZCLENBQUMsS0FBYSxFQUFFLFFBQWtCLEVBQUUsYUFBb0MsRUFBRSxFQUFFO1FBQzFFLE1BQU0sZUFBZSxHQUFxQixJQUFBLG9DQUF1QixFQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVFLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakQsQ0FBQyxDQUNGLENBQUM7SUFFRixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxPQUFPLEVBQUUsbUNBQXVCLEVBQUUsU0FBUyxDQUFDO1FBQzdDO1lBQ0Usa0NBQWtDO1lBQ2xDLEVBQUUsR0FBRyxtQ0FBdUIsRUFBRSxrQkFBa0IsRUFBRSxFQUFFLEtBQUssRUFBRSx3QkFBWSxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFO1lBQ3ZGLElBQUksa0JBQVMsQ0FBQywyQkFBMkIsQ0FBQyxDQUFDLHVCQUF1QixpQ0FBcUIsRUFBRSxDQUFDO1NBQzNGO1FBQ0Q7WUFDRSxvQ0FBb0M7WUFDcEM7Z0JBQ0UsR0FBRyxtQ0FBdUI7Z0JBQzFCLGtCQUFrQixFQUFFLEVBQUUsS0FBSyxFQUFFLHdCQUFZLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFO2FBQ2xGO1lBQ0QsSUFBSSxrQkFBUyxDQUNYLDJCQUEyQiw0QkFBNEIsdUJBQXVCLGlDQUFxQixFQUFFLENBQ3RHO1NBQ0Y7UUFDRDtZQUNFLHFDQUFxQztZQUNyQyxFQUFFLEdBQUcsbUNBQXVCLEVBQUUscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsa0NBQXNCLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUU7WUFDcEcsSUFBSSxrQkFBUyxDQUFDLDhCQUE4QixDQUFDLENBQUMsdUJBQXVCLGlDQUFxQixFQUFFLENBQUM7U0FDOUY7UUFDRDtZQUNFLHVDQUF1QztZQUN2QztnQkFDRSxHQUFHLG1DQUF1QjtnQkFDMUIscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsa0NBQXNCLEVBQUUsTUFBTSxFQUFFLDRCQUE0QixFQUFFO2FBQy9GO1lBQ0QsSUFBSSxrQkFBUyxDQUNYLDhCQUE4Qiw0QkFBNEIsdUJBQXVCLGlDQUFxQixFQUFFLENBQ3pHO1NBQ0Y7UUFDRDtZQUNFLHNCQUFzQjtZQUN0QixFQUFFLEdBQUcsbUNBQXVCLEVBQUUsUUFBUSxFQUFFLGNBQUksQ0FBQyxJQUFJLEVBQUU7WUFDbkQsSUFBSSxrQkFBUyxDQUFDLDRCQUE0QixDQUFDO1NBQzVDO1FBQ0Q7WUFDRSx3QkFBd0I7WUFDeEIsRUFBRSxHQUFHLG1DQUF1QixFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUU7WUFDbkQsSUFBSSxrQkFBUyxDQUFDLDRCQUE0QixDQUFDO1NBQzVDO1FBQ0Q7WUFDRSx3QkFBd0I7WUFDeEIsRUFBRSxHQUFHLG1DQUF1QixFQUFFLE1BQU0sRUFBRSxpQkFBaUIsRUFBRTtZQUN6RCxJQUFJLGtCQUFTLENBQUMsMENBQTBDLENBQUM7U0FDMUQ7UUFDRDtZQUNFLHFDQUFxQztZQUNyQztnQkFDRSxHQUFHLG1DQUF1QjtnQkFDMUIscUJBQXFCLEVBQUUsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7YUFDdkQ7WUFDRCxTQUFTLEVBQUUsdUNBQXVDO1NBQ25EO0tBQ0YsQ0FBQyxDQUNBLDJEQUEyRCxFQUMzRCxDQUNFLEtBQWEsRUFDYixHQUE2QixFQUM3QixhQUFvQyxFQUNwQyxFQUFFOztRQUNGLE1BQU0sVUFBVSxHQUFHLElBQUEsOENBQWlDLEVBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUQsTUFBTSxVQUFVLEdBQUcsSUFBQSw4Q0FBaUMsRUFBQyxHQUFHLENBQUMsQ0FBQztRQUMxRCxJQUFJLGFBQWEsS0FBSyxTQUFTLElBQUksQ0FBQSxNQUFBLEdBQUcsQ0FBQyxxQkFBcUIsMENBQUUsS0FBSyxNQUFLLFNBQVMsRUFBRSxDQUFDO1lBQ2xGLG9GQUFvRjtZQUNwRixNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLGtCQUFTLENBQUMsQ0FBQztZQUM3QyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUMsY0FBYyxDQUFDLGtCQUFTLENBQUMsQ0FBQztRQUMvQyxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7WUFDMUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUM1QyxDQUFDO0lBQ0gsQ0FBQyxDQUNGLENBQUM7SUFFRixFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ04sQ0FBQyxPQUFPLEVBQUUsOENBQThDLEVBQUUsSUFBSSxDQUFDO1FBQy9ELENBQUMscUNBQXFDLEVBQUUsOENBQThDLEVBQUUsS0FBSyxDQUFDO1FBQzlGLENBQUMsb0JBQW9CLEVBQUUsNkNBQTZDLEVBQUUsS0FBSyxDQUFDO1FBQzVFLENBQUMsbUJBQW1CLEVBQUUsK0NBQStDLEVBQUUsS0FBSyxDQUFDO0tBQzlFLENBQUMsQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLEtBQWEsRUFBRSxPQUFlLEVBQUUsY0FBdUIsRUFBRSxFQUFFO1FBQ3JGLE1BQU0sZ0JBQWdCLEdBQVksSUFBQSwyQkFBYyxFQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFELE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUNuRCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|