@ritbit/v4-client-js 2.0.0 → 2.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__native__/__ios__/v4-native-client.js +462 -462
- package/__native__/__ios__/v4-native-client.js.map +1 -1
- package/__tests__/lib/helpers.test.ts +2 -0
- package/__tests__/modules/client/AccountEndpoints.test.ts +16 -16
- package/__tests__/modules/client/FaucetEndpoint.test.ts +2 -2
- package/__tests__/modules/client/Transfers.test.ts +2 -2
- package/__tests__/modules/client/UtilityEndpoints.test.ts +2 -2
- package/__tests__/modules/client/ValidatorGetEndpoints.test.ts +5 -5
- package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +2 -2
- package/__tests__/modules/client/constants.ts +3 -3
- package/build/cjs/__tests__/clients/composite-client.test.js +130 -0
- package/build/cjs/__tests__/helpers/baseClients.js +29 -0
- package/build/cjs/__tests__/helpers/constants.js +110 -0
- package/build/cjs/__tests__/lib/helpers.test.js +46 -0
- package/build/cjs/__tests__/lib/util.test.js +67 -0
- package/build/cjs/__tests__/lib/validation.test.js +254 -0
- package/build/cjs/__tests__/modules/client/AccountEndpoints.test.js +171 -0
- package/build/cjs/__tests__/modules/client/FaucetEndpoint.test.js +15 -0
- package/build/cjs/__tests__/modules/client/MarketsEndpoints.test.js +69 -0
- package/build/cjs/__tests__/modules/client/Transfers.test.js +44 -0
- package/build/cjs/__tests__/modules/client/UtilityEndpoints.test.js +28 -0
- package/build/cjs/__tests__/modules/client/ValidatorGetEndpoints.test.js +46 -0
- package/build/cjs/__tests__/modules/client/ValidatorPostEndpoints.test.js +53 -0
- package/build/cjs/__tests__/modules/client/constants.js +7 -0
- package/build/cjs/__tests__/modules/onboarding.test.js +50 -0
- package/build/cjs/examples/account_endpoints.js +129 -0
- package/build/cjs/examples/batch_cancel_orders_example.js +93 -0
- package/build/cjs/examples/composite_example.js +50 -0
- package/build/cjs/examples/constants.js +35 -0
- package/build/cjs/examples/faucet_endpoint.js +23 -0
- package/build/cjs/examples/gov_add_new_market.js +77 -0
- package/build/cjs/examples/human_readable_orders.json +86 -0
- package/build/cjs/examples/human_readable_short_term_orders.json +42 -0
- package/build/cjs/examples/json-encoding.js +32 -0
- package/build/cjs/examples/long_term_order_cancel_example.js +63 -0
- package/build/cjs/examples/markets_endpoints.js +134 -0
- package/build/cjs/examples/native_examples.js +112 -0
- package/build/cjs/examples/noble_example.js +88 -0
- package/build/cjs/examples/optimal_node.js +70 -0
- package/build/cjs/examples/permissioned_keys_example.js +104 -0
- package/build/cjs/examples/raw_orders.json +130 -0
- package/build/cjs/examples/short_term_order_cancel_example.js +54 -0
- package/build/cjs/examples/short_term_order_composite_example.js +68 -0
- package/build/cjs/examples/test.js +50 -0
- package/build/cjs/examples/transfer_example_deposit.js +29 -0
- package/build/cjs/examples/transfer_example_send.js +42 -0
- package/build/cjs/examples/transfer_example_subaccount_transfer.js +29 -0
- package/build/cjs/examples/transfer_example_withdraw.js +30 -0
- package/build/cjs/examples/transfer_example_withdraw_other.js +42 -0
- package/build/cjs/examples/utility_endpoints.js +42 -0
- package/build/cjs/examples/validator_get_example.js +158 -0
- package/build/cjs/examples/validator_post_example.js +76 -0
- package/build/cjs/examples/wallet_address.js +22 -0
- package/build/cjs/examples/websocket_example.js +36 -0
- package/build/cjs/examples/websocket_orderbook_example.js +196 -0
- package/build/cjs/{clients → src/clients}/composite-client.js +1 -1
- package/build/cjs/{clients → src/clients}/constants.js +1 -1
- package/build/cjs/{clients → src/clients}/faucet-client.js +1 -1
- package/build/cjs/{clients → src/clients}/helpers/chain-helpers.js +1 -1
- package/build/cjs/src/clients/helpers/request-helpers.js +65 -0
- package/build/cjs/{clients → src/clients}/indexer-client.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/axiosRequest.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/errors.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/index.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/axios/types.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/cctpProto.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/errors.js +1 -1
- package/build/cjs/{clients → src/clients}/lib/registry.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/account.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/composer.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/get.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/local-wallet.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/markets.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/post.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/proto-includes.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/rest.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/signer.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/tendermintClient.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/utility.js +1 -1
- package/build/cjs/{clients → src/clients}/modules/vault.js +1 -1
- package/build/cjs/src/clients/native.js +1330 -0
- package/build/cjs/{clients → src/clients}/noble-client.js +1 -1
- package/build/cjs/{clients → src/clients}/socket-client.js +1 -1
- package/build/cjs/{clients → src/clients}/subaccount.js +1 -1
- package/build/cjs/{clients → src/clients}/types.js +1 -1
- package/build/cjs/{clients → src/clients}/validator-client.js +1 -1
- package/build/cjs/{index.js → src/index.js} +1 -1
- package/build/cjs/{lib → src/lib}/constants.js +1 -1
- package/build/cjs/{lib → src/lib}/errors.js +1 -1
- package/build/cjs/{lib → src/lib}/helpers.js +1 -1
- package/build/cjs/{lib → src/lib}/onboarding.js +1 -1
- package/build/cjs/{lib → src/lib}/trading-key-utils.js +1 -1
- package/build/cjs/{lib → src/lib}/utils.js +1 -1
- package/build/cjs/{lib → src/lib}/validation.js +1 -1
- package/build/cjs/src/network_optimizer.js +96 -0
- package/build/cjs/{types.js → src/types.js} +1 -1
- package/build/cjs/tsconfig.cjs.tsbuildinfo +1 -1
- package/build/esm/__tests__/lib/helpers.test.js +2 -1
- package/build/esm/__tests__/modules/client/AccountEndpoints.test.js +17 -17
- package/build/esm/__tests__/modules/client/FaucetEndpoint.test.js +3 -3
- package/build/esm/__tests__/modules/client/Transfers.test.js +3 -3
- package/build/esm/__tests__/modules/client/UtilityEndpoints.test.js +3 -3
- package/build/esm/__tests__/modules/client/ValidatorGetEndpoints.test.js +6 -6
- package/build/esm/__tests__/modules/client/ValidatorPostEndpoints.test.js +3 -3
- package/build/esm/__tests__/modules/client/constants.d.ts +3 -3
- package/build/esm/__tests__/modules/client/constants.d.ts.map +1 -1
- package/build/esm/__tests__/modules/client/constants.js +4 -4
- package/build/esm/examples/account_endpoints.js +3 -3
- package/build/esm/examples/batch_cancel_orders_example.js +3 -3
- package/build/esm/examples/composite_example.js +3 -3
- package/build/esm/examples/constants.d.ts +7 -7
- package/build/esm/examples/constants.d.ts.map +1 -1
- package/build/esm/examples/constants.js +9 -9
- package/build/esm/examples/faucet_endpoint.js +3 -3
- package/build/esm/examples/gov_add_new_market.js +3 -3
- package/build/esm/examples/long_term_order_cancel_example.js +3 -3
- package/build/esm/examples/native_examples.js +5 -5
- package/build/esm/examples/noble_example.js +4 -4
- package/build/esm/examples/permissioned_keys_example.js +4 -4
- package/build/esm/examples/short_term_order_cancel_example.js +3 -3
- package/build/esm/examples/short_term_order_composite_example.js +3 -3
- package/build/esm/examples/test.js +3 -3
- package/build/esm/examples/transfer_example_deposit.js +3 -3
- package/build/esm/examples/transfer_example_send.js +3 -3
- package/build/esm/examples/transfer_example_subaccount_transfer.js +3 -3
- package/build/esm/examples/transfer_example_withdraw.js +3 -3
- package/build/esm/examples/transfer_example_withdraw_other.js +3 -3
- package/build/esm/examples/validator_get_example.js +12 -12
- package/build/esm/examples/validator_post_example.js +3 -3
- package/build/esm/examples/wallet_address.js +4 -4
- package/build/esm/examples/websocket_example.js +3 -3
- package/build/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/examples/account_endpoints.ts +2 -2
- package/examples/batch_cancel_orders_example.ts +2 -2
- package/examples/composite_example.ts +2 -2
- package/examples/constants.ts +8 -8
- package/examples/faucet_endpoint.ts +2 -2
- package/examples/gov_add_new_market.json +6 -6
- package/examples/gov_add_new_market.ts +2 -2
- package/examples/long_term_order_cancel_example.ts +2 -2
- package/examples/native_examples.ts +4 -4
- package/examples/noble_example.ts +3 -3
- package/examples/permissioned_keys_example.ts +3 -3
- package/examples/short_term_order_cancel_example.ts +2 -2
- package/examples/short_term_order_composite_example.ts +2 -2
- package/examples/test.ts +2 -2
- package/examples/transfer_example_deposit.ts +2 -2
- package/examples/transfer_example_send.ts +2 -2
- package/examples/transfer_example_subaccount_transfer.ts +2 -2
- package/examples/transfer_example_withdraw.ts +2 -2
- package/examples/transfer_example_withdraw_other.ts +2 -2
- package/examples/validator_get_example.ts +11 -11
- package/examples/validator_post_example.ts +2 -2
- package/examples/wallet_address.ts +3 -3
- package/examples/websocket_example.ts +2 -2
- package/package.json +11 -11
- package/tsconfig.base.json +2 -1
- package/tsconfig.cjs.json +3 -13
- package/build/cjs/clients/helpers/request-helpers.js +0 -65
- package/build/cjs/network_optimizer.js +0 -96
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { Network } from '../../../src/clients/constants';
|
|
2
2
|
import { IndexerClient } from '../../../src/clients/indexer-client';
|
|
3
|
-
import {
|
|
3
|
+
import { TEST_ADDRESS } from './constants';
|
|
4
4
|
|
|
5
5
|
describe('IndexerClient', () => {
|
|
6
6
|
const client = new IndexerClient(Network.testnet().indexerConfig);
|
|
7
7
|
|
|
8
8
|
describe('Private Endpoints', () => {
|
|
9
9
|
it('Subaccounts', async () => {
|
|
10
|
-
const response = await client.account.getSubaccounts(
|
|
10
|
+
const response = await client.account.getSubaccounts(TEST_ADDRESS);
|
|
11
11
|
const subaccounts = response.subaccounts;
|
|
12
12
|
expect(subaccounts.size).not.toBeNull();
|
|
13
13
|
const subaccount0 = subaccounts[0];
|
|
@@ -16,7 +16,7 @@ describe('IndexerClient', () => {
|
|
|
16
16
|
});
|
|
17
17
|
|
|
18
18
|
it('Subaccount 0', async () => {
|
|
19
|
-
const response = await client.account.getSubaccount(
|
|
19
|
+
const response = await client.account.getSubaccount(TEST_ADDRESS, 0);
|
|
20
20
|
const subaccount = response.subaccount;
|
|
21
21
|
expect(subaccount).not.toBeNull();
|
|
22
22
|
const subaccountNumber = subaccount.subaccountNumber;
|
|
@@ -24,7 +24,7 @@ describe('IndexerClient', () => {
|
|
|
24
24
|
});
|
|
25
25
|
|
|
26
26
|
it('Asset Positions', async () => {
|
|
27
|
-
const response = await client.account.getSubaccountAssetPositions(
|
|
27
|
+
const response = await client.account.getSubaccountAssetPositions(TEST_ADDRESS, 0);
|
|
28
28
|
expect(response).not.toBeNull();
|
|
29
29
|
const positions = response.positions;
|
|
30
30
|
expect(positions).not.toBeNull();
|
|
@@ -35,7 +35,7 @@ describe('IndexerClient', () => {
|
|
|
35
35
|
});
|
|
36
36
|
|
|
37
37
|
it('Perpetual Positions', async () => {
|
|
38
|
-
const response = await client.account.getSubaccountPerpetualPositions(
|
|
38
|
+
const response = await client.account.getSubaccountPerpetualPositions(TEST_ADDRESS, 0);
|
|
39
39
|
expect(response).not.toBeNull();
|
|
40
40
|
const positions = response.positions;
|
|
41
41
|
expect(positions).not.toBeNull();
|
|
@@ -46,7 +46,7 @@ describe('IndexerClient', () => {
|
|
|
46
46
|
});
|
|
47
47
|
|
|
48
48
|
it('Transfers', async () => {
|
|
49
|
-
const response = await client.account.getSubaccountTransfers(
|
|
49
|
+
const response = await client.account.getSubaccountTransfers(TEST_ADDRESS, 0);
|
|
50
50
|
expect(response).not.toBeNull();
|
|
51
51
|
const transfers = response.transfers;
|
|
52
52
|
expect(transfers).not.toBeNull();
|
|
@@ -57,7 +57,7 @@ describe('IndexerClient', () => {
|
|
|
57
57
|
});
|
|
58
58
|
|
|
59
59
|
it('Transfers ParentSubaccountNumber', async () => {
|
|
60
|
-
const response = await client.account.getParentSubaccountNumberTransfers(
|
|
60
|
+
const response = await client.account.getParentSubaccountNumberTransfers(TEST_ADDRESS, 0);
|
|
61
61
|
expect(response).not.toBeNull();
|
|
62
62
|
const transfers = response.transfers;
|
|
63
63
|
expect(transfers).not.toBeNull();
|
|
@@ -69,7 +69,7 @@ describe('IndexerClient', () => {
|
|
|
69
69
|
|
|
70
70
|
it('Transfers Pagination', async () => {
|
|
71
71
|
const response = await client.account.getSubaccountTransfers(
|
|
72
|
-
|
|
72
|
+
TEST_ADDRESS,
|
|
73
73
|
0,
|
|
74
74
|
1,
|
|
75
75
|
undefined,
|
|
@@ -93,7 +93,7 @@ describe('IndexerClient', () => {
|
|
|
93
93
|
|
|
94
94
|
it('Transfers ParentSubaccountNumber Pagination', async () => {
|
|
95
95
|
const response = await client.account.getParentSubaccountNumberTransfers(
|
|
96
|
-
|
|
96
|
+
TEST_ADDRESS,
|
|
97
97
|
0,
|
|
98
98
|
1,
|
|
99
99
|
undefined,
|
|
@@ -116,7 +116,7 @@ describe('IndexerClient', () => {
|
|
|
116
116
|
});
|
|
117
117
|
|
|
118
118
|
it('Orders', async () => {
|
|
119
|
-
const response = await client.account.getSubaccountOrders(
|
|
119
|
+
const response = await client.account.getSubaccountOrders(TEST_ADDRESS, 0);
|
|
120
120
|
expect(response).not.toBeNull();
|
|
121
121
|
const orders = response;
|
|
122
122
|
expect(orders).not.toBeNull();
|
|
@@ -127,7 +127,7 @@ describe('IndexerClient', () => {
|
|
|
127
127
|
});
|
|
128
128
|
|
|
129
129
|
it('Fills', async () => {
|
|
130
|
-
const response = await client.account.getSubaccountFills(
|
|
130
|
+
const response = await client.account.getSubaccountFills(TEST_ADDRESS, 0);
|
|
131
131
|
expect(response).not.toBeNull();
|
|
132
132
|
const fills = response.fills;
|
|
133
133
|
expect(fills).not.toBeNull();
|
|
@@ -138,7 +138,7 @@ describe('IndexerClient', () => {
|
|
|
138
138
|
});
|
|
139
139
|
|
|
140
140
|
it('Fills ParentSubaccountNumber', async () => {
|
|
141
|
-
const response = await client.account.getParentSubaccountNumberFills(
|
|
141
|
+
const response = await client.account.getParentSubaccountNumberFills(TEST_ADDRESS, 0);
|
|
142
142
|
expect(response).not.toBeNull();
|
|
143
143
|
const fills = response.fills;
|
|
144
144
|
expect(fills).not.toBeNull();
|
|
@@ -150,7 +150,7 @@ describe('IndexerClient', () => {
|
|
|
150
150
|
|
|
151
151
|
it('Fills Pagination', async () => {
|
|
152
152
|
const response = await client.account.getSubaccountFills(
|
|
153
|
-
|
|
153
|
+
TEST_ADDRESS,
|
|
154
154
|
0,
|
|
155
155
|
undefined,
|
|
156
156
|
undefined,
|
|
@@ -175,7 +175,7 @@ describe('IndexerClient', () => {
|
|
|
175
175
|
|
|
176
176
|
it('Fills ParentSubaccountNumber Pagination', async () => {
|
|
177
177
|
const response = await client.account.getParentSubaccountNumberFills(
|
|
178
|
-
|
|
178
|
+
TEST_ADDRESS,
|
|
179
179
|
0,
|
|
180
180
|
undefined,
|
|
181
181
|
undefined,
|
|
@@ -199,7 +199,7 @@ describe('IndexerClient', () => {
|
|
|
199
199
|
});
|
|
200
200
|
|
|
201
201
|
it('Historical PNL', async () => {
|
|
202
|
-
const response = await client.account.getSubaccountHistoricalPNLs(
|
|
202
|
+
const response = await client.account.getSubaccountHistoricalPNLs(TEST_ADDRESS, 0);
|
|
203
203
|
expect(response).not.toBeNull();
|
|
204
204
|
const historicalPnl = response.historicalPnl;
|
|
205
205
|
expect(historicalPnl).not.toBeNull();
|
|
@@ -211,7 +211,7 @@ describe('IndexerClient', () => {
|
|
|
211
211
|
|
|
212
212
|
it('Historical PNL Pagination', async () => {
|
|
213
213
|
const response = await client.account.getSubaccountHistoricalPNLs(
|
|
214
|
-
|
|
214
|
+
TEST_ADDRESS,
|
|
215
215
|
0,
|
|
216
216
|
undefined,
|
|
217
217
|
undefined,
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { FaucetApiHost } from '../../../src/clients/constants';
|
|
2
2
|
import { FaucetClient } from '../../../src/clients/faucet-client';
|
|
3
|
-
import {
|
|
3
|
+
import { TEST_ADDRESS } from './constants';
|
|
4
4
|
|
|
5
5
|
describe('FaucetClient', () => {
|
|
6
6
|
const client = new FaucetClient(FaucetApiHost.TESTNET);
|
|
7
7
|
|
|
8
8
|
describe('Faucet Endpoints', () => {
|
|
9
9
|
it('Fill', async () => {
|
|
10
|
-
const response = await client.fill(
|
|
10
|
+
const response = await client.fill(TEST_ADDRESS, 0, 2000);
|
|
11
11
|
expect(response?.status).toBe(202);
|
|
12
12
|
});
|
|
13
13
|
});
|
|
@@ -2,7 +2,7 @@ import { Network } from '../../../src/clients/constants';
|
|
|
2
2
|
import LocalWallet from '../../../src/clients/modules/local-wallet';
|
|
3
3
|
import { SubaccountInfo } from '../../../src/clients/subaccount';
|
|
4
4
|
import { ValidatorClient } from '../../../src/clients/validator-client';
|
|
5
|
-
import {
|
|
5
|
+
import { TEST_MNEMONIC } from '../../../examples/constants';
|
|
6
6
|
import Long from 'long';
|
|
7
7
|
import { BECH32_PREFIX } from '../../../src';
|
|
8
8
|
|
|
@@ -17,7 +17,7 @@ describe('Validator Client', () => {
|
|
|
17
17
|
|
|
18
18
|
describe('Transfers', () => {
|
|
19
19
|
beforeEach(async () => {
|
|
20
|
-
wallet = await LocalWallet.fromMnemonic(
|
|
20
|
+
wallet = await LocalWallet.fromMnemonic(TEST_MNEMONIC, BECH32_PREFIX);
|
|
21
21
|
subaccount = SubaccountInfo.forLocalWallet(wallet, 0);
|
|
22
22
|
client = await ValidatorClient.connect(Network.testnet().validatorConfig);
|
|
23
23
|
await sleep(5000); // wait for withdraw to complete
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IndexerClient } from '../../../src';
|
|
2
2
|
import { Network } from '../../../src/clients/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { TEST_ADDRESS } from './constants';
|
|
4
4
|
|
|
5
5
|
describe('IndexerClient', () => {
|
|
6
6
|
const client = new IndexerClient(Network.testnet().indexerConfig);
|
|
@@ -21,7 +21,7 @@ describe('IndexerClient', () => {
|
|
|
21
21
|
});
|
|
22
22
|
|
|
23
23
|
it('Screen Address', async () => {
|
|
24
|
-
const response = await client.utility.screen(
|
|
24
|
+
const response = await client.utility.screen(TEST_ADDRESS);
|
|
25
25
|
const { restricted } = response ?? {};
|
|
26
26
|
expect(restricted).toBeDefined();
|
|
27
27
|
});
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ValidatorClient } from '../../../src/clients/validator-client';
|
|
2
2
|
import { Network } from '../../../src/clients/constants';
|
|
3
|
-
import {
|
|
3
|
+
import { TEST_ADDRESS } from './constants';
|
|
4
4
|
|
|
5
5
|
describe('Validator Client', () => {
|
|
6
6
|
let client: ValidatorClient;
|
|
@@ -10,12 +10,12 @@ describe('Validator Client', () => {
|
|
|
10
10
|
});
|
|
11
11
|
|
|
12
12
|
it('Account', async () => {
|
|
13
|
-
const account = await client.get.getAccount(
|
|
14
|
-
expect(account.address).toBe(
|
|
13
|
+
const account = await client.get.getAccount(TEST_ADDRESS);
|
|
14
|
+
expect(account.address).toBe(TEST_ADDRESS);
|
|
15
15
|
});
|
|
16
16
|
|
|
17
17
|
it('Balance', async () => {
|
|
18
|
-
const balances = await client.get.getAccountBalances(
|
|
18
|
+
const balances = await client.get.getAccountBalances(TEST_ADDRESS);
|
|
19
19
|
expect(balances).not.toBeUndefined();
|
|
20
20
|
});
|
|
21
21
|
|
|
@@ -25,7 +25,7 @@ describe('Validator Client', () => {
|
|
|
25
25
|
});
|
|
26
26
|
|
|
27
27
|
it('Subaccount', async () => {
|
|
28
|
-
const subaccount = await client.get.getSubaccount(
|
|
28
|
+
const subaccount = await client.get.getSubaccount(TEST_ADDRESS, 0);
|
|
29
29
|
expect(subaccount.subaccount).not.toBeUndefined();
|
|
30
30
|
});
|
|
31
31
|
|
|
@@ -6,7 +6,7 @@ import { SubaccountInfo } from '../../../src/clients/subaccount';
|
|
|
6
6
|
import { IPlaceOrder } from '../../../src/clients/types';
|
|
7
7
|
import { ValidatorClient } from '../../../src/clients/validator-client';
|
|
8
8
|
import { randomInt } from '../../../src/lib/utils';
|
|
9
|
-
import {
|
|
9
|
+
import { TEST_MNEMONIC, defaultOrder } from '../../../examples/constants';
|
|
10
10
|
import { BECH32_PREFIX } from '../../../src';
|
|
11
11
|
|
|
12
12
|
function dummyOrder(height: number): IPlaceOrder {
|
|
@@ -29,7 +29,7 @@ describe('Validator Client', () => {
|
|
|
29
29
|
|
|
30
30
|
describe('Post', () => {
|
|
31
31
|
beforeEach(async () => {
|
|
32
|
-
wallet = await LocalWallet.fromMnemonic(
|
|
32
|
+
wallet = await LocalWallet.fromMnemonic(TEST_MNEMONIC, BECH32_PREFIX);
|
|
33
33
|
client = await ValidatorClient.connect(Network.testnet().validatorConfig);
|
|
34
34
|
});
|
|
35
35
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export const
|
|
2
|
-
export const
|
|
1
|
+
export const TEST_ADDRESS = 'rit14zzueazeh0hj67cghhf9jypslcf9sh2n5k6art';
|
|
2
|
+
export const TEST_PRIVATE_KEY =
|
|
3
3
|
'e92a6595c934c991d3b3e987ea9b3125bf61a076deab3a9cb519787b7b3e8d77';
|
|
4
|
-
export const
|
|
4
|
+
export const TEST_MNEMONIC =
|
|
5
5
|
'mirror actor skill push coach wait confirm orchard lunch mobile athlete gossip awake miracle matter bus reopen team ladder lazy list timber render wait';
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const src_1 = require("../../src");
|
|
4
|
+
const composite_client_1 = require("../../src/clients/composite-client");
|
|
5
|
+
describe('CompositeClient', () => {
|
|
6
|
+
describe('validateAuthenticators', () => {
|
|
7
|
+
const network = src_1.Network.staging();
|
|
8
|
+
it('Validates top level AnyOf authenticators', async () => {
|
|
9
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
10
|
+
const auth = {
|
|
11
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
12
|
+
config: [
|
|
13
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
14
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
15
|
+
],
|
|
16
|
+
};
|
|
17
|
+
expect(client.validateAuthenticator(auth)).toEqual(true);
|
|
18
|
+
});
|
|
19
|
+
it('Fails top level AnyOf authenticators with non-signature nested authenticator', async () => {
|
|
20
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
21
|
+
const auth = {
|
|
22
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
23
|
+
config: [
|
|
24
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
25
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
26
|
+
],
|
|
27
|
+
};
|
|
28
|
+
expect(client.validateAuthenticator(auth)).toEqual(false);
|
|
29
|
+
});
|
|
30
|
+
it('Validates top level AllOf authenticators', async () => {
|
|
31
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
32
|
+
const auth = {
|
|
33
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
34
|
+
config: [
|
|
35
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
36
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
37
|
+
],
|
|
38
|
+
};
|
|
39
|
+
expect(client.validateAuthenticator(auth)).toEqual(true);
|
|
40
|
+
});
|
|
41
|
+
it('Fails top level AllOf authenticators, without signature verification', async () => {
|
|
42
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
43
|
+
const auth = {
|
|
44
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
45
|
+
config: [
|
|
46
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
47
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
48
|
+
],
|
|
49
|
+
};
|
|
50
|
+
expect(client.validateAuthenticator(auth)).toEqual(false);
|
|
51
|
+
});
|
|
52
|
+
it('Validates nested anyOf authenticators', async () => {
|
|
53
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
54
|
+
const nestedAnyOf = {
|
|
55
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
56
|
+
config: [
|
|
57
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
58
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
59
|
+
]
|
|
60
|
+
};
|
|
61
|
+
const signatureVerification = {
|
|
62
|
+
type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION,
|
|
63
|
+
config: ""
|
|
64
|
+
};
|
|
65
|
+
const auth = {
|
|
66
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
67
|
+
config: [signatureVerification, nestedAnyOf],
|
|
68
|
+
};
|
|
69
|
+
expect(client.validateAuthenticator(auth)).toEqual(true);
|
|
70
|
+
});
|
|
71
|
+
it('Validates nested allOf authenticators', async () => {
|
|
72
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
73
|
+
const nestedAllOf = {
|
|
74
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
75
|
+
config: [
|
|
76
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
77
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
78
|
+
]
|
|
79
|
+
};
|
|
80
|
+
const messageVerification = {
|
|
81
|
+
type: src_1.AuthenticatorType.MESSAGE_FILTER,
|
|
82
|
+
config: ""
|
|
83
|
+
};
|
|
84
|
+
const auth = {
|
|
85
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
86
|
+
config: [messageVerification, nestedAllOf],
|
|
87
|
+
};
|
|
88
|
+
expect(client.validateAuthenticator(auth)).toEqual(true);
|
|
89
|
+
});
|
|
90
|
+
it('Fails nested anyOf signatureVerification authenticators', async () => {
|
|
91
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
92
|
+
const nestedAnyOf = {
|
|
93
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
94
|
+
config: [
|
|
95
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
96
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
97
|
+
]
|
|
98
|
+
};
|
|
99
|
+
const messageVerification = {
|
|
100
|
+
type: src_1.AuthenticatorType.MESSAGE_FILTER,
|
|
101
|
+
config: ""
|
|
102
|
+
};
|
|
103
|
+
const auth = {
|
|
104
|
+
type: src_1.AuthenticatorType.ALL_OF,
|
|
105
|
+
config: [messageVerification, nestedAnyOf],
|
|
106
|
+
};
|
|
107
|
+
expect(client.validateAuthenticator(auth)).toEqual(false);
|
|
108
|
+
});
|
|
109
|
+
it('Fails nested anyOf authenticators', async () => {
|
|
110
|
+
const client = await composite_client_1.CompositeClient.connect(network);
|
|
111
|
+
const nestedAnyOf = {
|
|
112
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
113
|
+
config: [
|
|
114
|
+
{ type: src_1.AuthenticatorType.MESSAGE_FILTER, config: "" },
|
|
115
|
+
{ type: src_1.AuthenticatorType.SIGNATURE_VERIFICATION, config: "" },
|
|
116
|
+
]
|
|
117
|
+
};
|
|
118
|
+
const messageVerification = {
|
|
119
|
+
type: src_1.AuthenticatorType.MESSAGE_FILTER,
|
|
120
|
+
config: ""
|
|
121
|
+
};
|
|
122
|
+
const auth = {
|
|
123
|
+
type: src_1.AuthenticatorType.ANY_OF,
|
|
124
|
+
config: [messageVerification, nestedAnyOf],
|
|
125
|
+
};
|
|
126
|
+
expect(client.validateAuthenticator(auth)).toEqual(false);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcG9zaXRlLWNsaWVudC50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2NsaWVudHMvY29tcG9zaXRlLWNsaWVudC50ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsbUNBQXNFO0FBQ3RFLHlFQUFvRTtBQUVwRSxRQUFRLENBQUMsaUJBQWlCLEVBQUUsR0FBRyxFQUFFO0lBQy9CLFFBQVEsQ0FBQyx3QkFBd0IsRUFBRSxHQUFHLEVBQUU7UUFDdEMsTUFBTSxPQUFPLEdBQUcsYUFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBRWxDLEVBQUUsQ0FBQywwQ0FBMEMsRUFBRSxLQUFLLElBQUksRUFBRTtZQUN4RCxNQUFNLE1BQU0sR0FBRyxNQUFNLGtDQUFlLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ3RELE1BQU0sSUFBSSxHQUFrQjtnQkFDMUIsSUFBSSxFQUFFLHVCQUFpQixDQUFDLE1BQU07Z0JBQzlCLE1BQU0sRUFBRTtvQkFDTixFQUFFLElBQUksRUFBRSx1QkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO29CQUM5RCxFQUFFLElBQUksRUFBRSx1QkFBaUIsQ0FBQyxzQkFBc0IsRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFO2lCQUMvRDthQUNGLENBQUE7WUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLHFCQUFxQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzNELENBQUMsQ0FBQyxDQUFDO1FBRUgsRUFBRSxDQUFDLDhFQUE4RSxFQUFFLEtBQUssSUFBSSxFQUFFO1lBQzVGLE1BQU0sTUFBTSxHQUFHLE1BQU0sa0NBQWUsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7WUFDdEQsTUFBTSxJQUFJLEdBQWtCO2dCQUMxQixJQUFJLEVBQUUsdUJBQWlCLENBQUMsTUFBTTtnQkFDOUIs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
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BaseWallet = exports.BaseStargateSigningClient = exports.BaseQueryClient = exports.BaseTendermintClient = void 0;
|
|
4
|
+
/* eslint-disable @typescript-eslint/no-empty-function */
|
|
5
|
+
class BaseTendermintClient {
|
|
6
|
+
async block() { }
|
|
7
|
+
async broadcastTxSync() { }
|
|
8
|
+
async broadcastTxAsync() { }
|
|
9
|
+
async txSearchAll() { }
|
|
10
|
+
}
|
|
11
|
+
exports.BaseTendermintClient = BaseTendermintClient;
|
|
12
|
+
class BaseQueryClient {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.tx = {
|
|
15
|
+
async simulate() { },
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
async queryUnverified() { }
|
|
19
|
+
}
|
|
20
|
+
exports.BaseQueryClient = BaseQueryClient;
|
|
21
|
+
class BaseStargateSigningClient {
|
|
22
|
+
async sign() { }
|
|
23
|
+
}
|
|
24
|
+
exports.BaseStargateSigningClient = BaseStargateSigningClient;
|
|
25
|
+
class BaseWallet {
|
|
26
|
+
async getAccounts() { }
|
|
27
|
+
}
|
|
28
|
+
exports.BaseWallet = BaseWallet;
|
|
29
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZUNsaWVudHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9fX3Rlc3RzX18vaGVscGVycy9iYXNlQ2xpZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5REFBeUQ7QUFDekQsTUFBYSxvQkFBb0I7SUFDL0IsS0FBSyxDQUFDLEtBQUssS0FBbUIsQ0FBQztJQUMvQixLQUFLLENBQUMsZUFBZSxLQUFtQixDQUFDO0lBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsS0FBbUIsQ0FBQztJQUMxQyxLQUFLLENBQUMsV0FBVyxLQUFtQixDQUFDO0NBQ3RDO0FBTEQsb0RBS0M7QUFFRCxNQUFhLGVBQWU7SUFBNUI7UUFDRSxPQUFFLEdBQUc7WUFDSCxLQUFLLENBQUMsUUFBUSxLQUFtQixDQUFDO1NBQ25DLENBQUM7SUFHSixDQUFDO0lBREMsS0FBSyxDQUFDLGVBQWUsS0FBbUIsQ0FBQztDQUMxQztBQU5ELDBDQU1DO0FBRUQsTUFBYSx5QkFBeUI7SUFDcEMsS0FBSyxDQUFDLElBQUksS0FBbUIsQ0FBQztDQUMvQjtBQUZELDhEQUVDO0FBRUQsTUFBYSxVQUFVO0lBQ3JCLEtBQUssQ0FBQyxXQUFXLEtBQW1CLENBQUM7Q0FDdEM7QUFGRCxnQ0FFQyJ9
|
|
@@ -0,0 +1,110 @@
|
|
|
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
|
+
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;
|
|
7
|
+
const long_1 = __importDefault(require("long"));
|
|
8
|
+
const utils_1 = require("../../src/lib/utils");
|
|
9
|
+
const types_1 = require("../../src/types");
|
|
10
|
+
exports.TEST_ADDRESS = 'dydx1vl9h9nkmau4e9v7tm30wekespu3d2qhd9404wa';
|
|
11
|
+
exports.TEST_RECIPIENT_ADDRESS = 'dydx1slanxj8x9ntk9knwa6cvfv2tzlsq5gk3dshml0';
|
|
12
|
+
exports.TEST_CHAIN_ID = 'ritbit';
|
|
13
|
+
exports.TEST_HOST = 'http://localhost:26657';
|
|
14
|
+
exports.defaultTransactionOptions = {
|
|
15
|
+
accountNumber: 1,
|
|
16
|
+
sequence: 10,
|
|
17
|
+
chainId: exports.TEST_CHAIN_ID,
|
|
18
|
+
};
|
|
19
|
+
// PlaceOrder variables
|
|
20
|
+
exports.defaultOrder = {
|
|
21
|
+
clientId: 0,
|
|
22
|
+
orderFlags: types_1.OrderFlags.SHORT_TERM,
|
|
23
|
+
clobPairId: types_1.ClobPairId.PERPETUAL_PAIR_BTC_USD,
|
|
24
|
+
side: types_1.Order_Side.SIDE_BUY,
|
|
25
|
+
quantums: long_1.default.fromNumber(10),
|
|
26
|
+
subticks: long_1.default.fromNumber(100),
|
|
27
|
+
goodTilBlock: 10000,
|
|
28
|
+
timeInForce: types_1.Order_TimeInForce.TIME_IN_FORCE_UNSPECIFIED,
|
|
29
|
+
reduceOnly: false,
|
|
30
|
+
clientMetadata: 0,
|
|
31
|
+
// New optional fields
|
|
32
|
+
twapParameters: undefined,
|
|
33
|
+
builderCodeParameters: undefined,
|
|
34
|
+
orderRouterAddress: undefined,
|
|
35
|
+
};
|
|
36
|
+
// PlaceOrder with TWAP parameters for testing
|
|
37
|
+
exports.twapOrder = {
|
|
38
|
+
...exports.defaultOrder,
|
|
39
|
+
clientId: 1,
|
|
40
|
+
twapParameters: {
|
|
41
|
+
duration: 3600, // 1 hour
|
|
42
|
+
interval: 300, // 5 minutes
|
|
43
|
+
priceTolerance: 50000, // 5% in ppm
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
// PlaceOrder with builder code parameters for testing
|
|
47
|
+
exports.builderOrder = {
|
|
48
|
+
...exports.defaultOrder,
|
|
49
|
+
clientId: 2,
|
|
50
|
+
builderCodeParameters: {
|
|
51
|
+
builderAddress: 'dydx1test_builder_address',
|
|
52
|
+
feePpm: 1000, // 0.1% fee
|
|
53
|
+
}
|
|
54
|
+
};
|
|
55
|
+
exports.orderRouterOrder = {
|
|
56
|
+
...exports.defaultOrder,
|
|
57
|
+
clientId: 2,
|
|
58
|
+
orderRouterAddress: 'dydx1test_router_address',
|
|
59
|
+
};
|
|
60
|
+
// CancelOrder variables
|
|
61
|
+
exports.defaultCancelOrder = {
|
|
62
|
+
clientId: (0, utils_1.generateRandomClientId)(),
|
|
63
|
+
orderFlags: types_1.OrderFlags.SHORT_TERM,
|
|
64
|
+
clobPairId: types_1.ClobPairId.PERPETUAL_PAIR_BTC_USD,
|
|
65
|
+
goodTilBlock: 4250,
|
|
66
|
+
};
|
|
67
|
+
// BatchCancelOrder variables
|
|
68
|
+
exports.defaultBatchCancelOrder = {
|
|
69
|
+
shortTermOrders: [
|
|
70
|
+
{
|
|
71
|
+
clobPairId: types_1.ClobPairId.PERPETUAL_PAIR_BTC_USD,
|
|
72
|
+
clientIds: [(0, utils_1.generateRandomClientId)(), (0, utils_1.generateRandomClientId)()],
|
|
73
|
+
},
|
|
74
|
+
],
|
|
75
|
+
goodTilBlock: 4250,
|
|
76
|
+
};
|
|
77
|
+
// Transfer variables
|
|
78
|
+
exports.defaultTransfer = {
|
|
79
|
+
sender: {
|
|
80
|
+
owner: exports.TEST_ADDRESS,
|
|
81
|
+
number: 0,
|
|
82
|
+
},
|
|
83
|
+
recipient: {
|
|
84
|
+
owner: 'dydx14063jves4u9zhm7eja5ltf3t8zspxd92qnk23t',
|
|
85
|
+
number: 0,
|
|
86
|
+
},
|
|
87
|
+
assetId: 0,
|
|
88
|
+
amount: long_1.default.fromNumber(1000),
|
|
89
|
+
};
|
|
90
|
+
// ------ Onboarding Constants ------ //
|
|
91
|
+
// Base Signature Result
|
|
92
|
+
exports.SIGNATURE_RESULT = '0xf2006b4fc0afa08a6048b40d3d67e437ac2e20e6bacf3f947f9b33aa2756d204287f5fb2155bec067d879a25d7ddac791826cf28e2786919065e19848020f1531b';
|
|
93
|
+
// Derived privateKeyBytes from Base Signature Result
|
|
94
|
+
exports.ENTROPY_FROM_SIGNATURE_RESULT = new Uint8Array([
|
|
95
|
+
247, 183, 226, 106, 76, 125, 241, 35, 149, 75, 103, 180, 165, 243, 80, 128, 34, 20, 238, 201, 131,
|
|
96
|
+
180, 61, 76, 223, 179, 37, 211, 144, 197, 171, 251,
|
|
97
|
+
]);
|
|
98
|
+
// Derived HDKey privateKey from Base Signature Result
|
|
99
|
+
exports.PRIVATE_KEY_FROM_SIGNATURE_RESULT = new Uint8Array([
|
|
100
|
+
14, 92, 178, 198, 64, 65, 27, 153, 11, 45, 118, 194, 71, 194, 10, 140, 145, 40, 203, 107, 231,
|
|
101
|
+
191, 138, 220, 168, 104, 28, 69, 58, 193, 203, 213,
|
|
102
|
+
]);
|
|
103
|
+
// Derived HDKey publicKey from Base Signature Result
|
|
104
|
+
exports.PUBLIC_KEY_FROM_SIGNATURE_RESULT = new Uint8Array([
|
|
105
|
+
2, 204, 94, 45, 7, 83, 196, 55, 195, 107, 10, 35, 169, 32, 24, 37, 193, 196, 34, 210, 84, 26, 107,
|
|
106
|
+
89, 119, 240, 211, 63, 187, 34, 162, 197, 36,
|
|
107
|
+
]);
|
|
108
|
+
// Derived HDKey mnemonic from Base Signature Result
|
|
109
|
+
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2hlbHBlcnMvY29uc3RhbnRzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUF3QjtBQUV4QiwrQ0FBNkQ7QUFDN0QsMkNBVXlCO0FBRVosUUFBQSxZQUFZLEdBQVcsNkNBQTZDLENBQUM7QUFDckUsUUFBQSxzQkFBc0IsR0FBVyw2Q0FBNkMsQ0FBQztBQUMvRSxRQUFBLGFBQWEsR0FBVyxRQUFRLENBQUM7QUFDakMsUUFBQSxTQUFTLEdBQVcsd0JBQXdCLENBQUM7QUFFN0MsUUFBQSx5QkFBeUIsR0FBdUI7SUFDM0QsYUFBYSxFQUFFLENBQUM7SUFDaEIsUUFBUSxFQUFFLEVBQUU7SUFDWixPQUFPLEVBQUUscUJBQWE7Q0FDdkIsQ0FBQztBQUVGLHVCQUF1QjtBQUNWLFFBQUEsWUFBWSxHQUFnQjtJQUN2QyxRQUFRLEVBQUUsQ0FBQztJQUNYLFVBQVUsRUFBRSxrQkFBVSxDQUFDLFVBQVU7SUFDakMsVUFBVSxFQUFFLGtCQUFVLENBQUMsc0JBQXNCO0lBQzdDLElBQUksRUFBRSxrQkFBVSxDQUFDLFFBQVE7SUFDekIsUUFBUSxFQUFFLGNBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDO0lBQzdCLFFBQVEsRUFBRSxjQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztJQUM5QixZQUFZLEVBQUUsS0FBSztJQUNuQixXQUFXLEVBQUUseUJBQWlCLENBQUMseUJBQXlCO0lBQ3hELFVBQVUsRUFBRSxLQUFLO0lBQ2pCLGNBQWMsRUFBRSxDQUFDO0lBQ2pCLHNCQUFzQjtJQUN0QixjQUFjLEVBQUUsU0FBUztJQUN6QixxQkFBcUIsRUFBRSxTQUFTO0lBQ2hDLGtCQUFrQixFQUFFLFNBQVM7Q0FDOUIsQ0FBQztBQUVGLDhDQUE4QztBQUNqQyxRQUFBLFNBQVMsR0FBZ0I7SUFDcEMsR0FBRyxvQkFBWTtJQUNmLFFBQVEsRUFB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
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/// <reference types="jest" />
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const constants_1 = require("../../src/lib/constants");
|
|
8
|
+
const helpers_1 = require("../../src/lib/helpers");
|
|
9
|
+
const constants_2 = require("../helpers/constants");
|
|
10
|
+
const chain_helpers_1 = require("../../src/clients/helpers/chain-helpers");
|
|
11
|
+
const long_1 = __importDefault(require("long"));
|
|
12
|
+
describe('helpers', () => {
|
|
13
|
+
describe('calculateSubticks', () => {
|
|
14
|
+
it('correctly handles decimals', () => {
|
|
15
|
+
expect((0, chain_helpers_1.calculateSubticks)(8.45, -7, -9, 1000000)).toEqual(new long_1.default(845000000));
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
describe('calculateQuantums', () => {
|
|
19
|
+
it('correctly handles decimals', () => {
|
|
20
|
+
expect((0, chain_helpers_1.calculateQuantums)(0.0003, -10, 1000000)).toEqual(new long_1.default(3000000));
|
|
21
|
+
});
|
|
22
|
+
});
|
|
23
|
+
describe('convertPartialTransactionOptionsToFull', () => it.each([
|
|
24
|
+
[
|
|
25
|
+
'partial transactionOptions',
|
|
26
|
+
{
|
|
27
|
+
accountNumber: constants_2.defaultTransactionOptions.accountNumber,
|
|
28
|
+
chainId: constants_2.defaultTransactionOptions.chainId,
|
|
29
|
+
},
|
|
30
|
+
{ ...constants_2.defaultTransactionOptions, sequence: constants_1.DEFAULT_SEQUENCE },
|
|
31
|
+
],
|
|
32
|
+
['undefined transactionOptions', undefined, undefined],
|
|
33
|
+
])('convertPartialTransactionOptionsToFull: %s', (_name, partialTransactionOptions, expectedResult) => {
|
|
34
|
+
const transactionOptions = (0, helpers_1.convertPartialTransactionOptionsToFull)(partialTransactionOptions);
|
|
35
|
+
expect(expectedResult).toEqual(transactionOptions);
|
|
36
|
+
}));
|
|
37
|
+
describe('stripHexPrefix', () => {
|
|
38
|
+
it('strips 0x prefix', () => {
|
|
39
|
+
expect((0, helpers_1.stripHexPrefix)('0x123')).toEqual('123');
|
|
40
|
+
});
|
|
41
|
+
it('returns input if no prefix', () => {
|
|
42
|
+
expect((0, helpers_1.stripHexPrefix)('10x23')).toEqual('10x23');
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVycy50ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vX190ZXN0c19fL2xpYi9oZWxwZXJzLnRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLDhCQUE4Qjs7Ozs7QUFHOUIsdURBQTJEO0FBQzNELG1EQUErRjtBQUMvRixvREFBaUU7QUFDakUsMkVBQStGO0FBQy9GLGdEQUF3QjtBQUV4QixRQUFRLENBQUMsU0FBUyxFQUFFLEdBQUcsRUFBRTtJQUN2QixRQUFRLENBQUMsbUJBQW1CLEVBQUUsR0FBRyxFQUFFO1FBQ2pDLEVBQUUsQ0FBQyw0QkFBNEIsRUFBRSxHQUFHLEVBQUU7WUFDcEMsTUFBTSxDQUFDLElBQUEsaUNBQWlCLEVBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLElBQUksY0FBSSxDQUFDLFNBQVcsQ0FBQyxDQUFDLENBQUM7UUFDbEYsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztJQUVILFFBQVEsQ0FBQyxtQkFBbUIsRUFBRSxHQUFHLEVBQUU7UUFDakMsRUFBRSxDQUFDLDRCQUE0QixFQUFFLEdBQUcsRUFBRTtZQUNwQyxNQUFNLENBQUMsSUFBQSxpQ0FBaUIsRUFBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxjQUFJLENBQUMsT0FBUyxDQUFDLENBQUMsQ0FBQztRQUMvRSxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUMsQ0FBQyxDQUFDO0lBRUgsUUFBUSxDQUFDLHdDQUF3QyxFQUFFLEdBQUcsRUFBRSxDQUN0RCxFQUFFLENBQUMsSUFBSSxDQUFDO1FBQ047WUFDRSw0QkFBNEI7WUFDNUI7Z0JBQ0UsYUFBYSxFQUFFLHFDQUF5QixDQUFDLGFBQWE7Z0JBQ3RELE9BQU8sRUFBRSxxQ0FBeUIsQ0FBQyxPQUFPO2FBQzNDO1lBQ0QsRUFBRSxHQUFHLHFDQUF5QixFQUFFLFFBQVEsRUFBRSw0QkFBZ0IsRUFBRTtTQUM3RDtRQUNELENBQUMsOEJBQThCLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQztLQUN2RCxDQUFDLENBQ0EsNENBQTRDLEVBQzVDLENBQ0UsS0FBYSxFQUNiLHlCQUFnRSxFQUNoRSxjQUE4QyxFQUM5QyxFQUFFO1FBQ0YsTUFBTSxrQkFBa0IsR0FDdEIsSUFBQSxnREFBc0MsRUFBQyx5QkFBeUIsQ0FBQyxDQUFDO1FBQ3BFLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsQ0FBQztJQUNyRCxDQUFDLENBQ0YsQ0FBQyxDQUFDO0lBRUwsUUFBUSxDQUFDLGdCQUFnQixFQUFFLEdBQUcsRUFBRTtRQUM5QixFQUFFLENBQUMsa0JBQWtCLEVBQUUsR0FBRyxFQUFFO1lBQzFCLE1BQU0sQ0FBQyxJQUFBLHdCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsQ0FBQyxDQUFDLENBQUM7UUFDSCxFQUFFLENBQUMsNEJBQTRCLEVBQUUsR0FBRyxFQUFFO1lBQ3BDLE1BQU0sQ0FBQyxJQUFBLHdCQUFjLEVBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDbkQsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDIn0=
|