@ritbit/v4-client-js 2.1.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/__tests__/lib/helpers.test.ts +2 -0
- 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/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +10 -10
- package/tsconfig.cjs.json +3 -13
- package/tsconfig.eslint.json +1 -4
- package/tsconfig.esm.json +1 -2
- package/build/cjs/clients/helpers/request-helpers.js +0 -65
- package/build/cjs/network_optimizer.js +0 -96
|
@@ -0,0 +1,42 @@
|
|
|
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 tendermint_rpc_1 = require("@cosmjs/tendermint-rpc");
|
|
7
|
+
const long_1 = __importDefault(require("long"));
|
|
8
|
+
const constants_1 = require("../__tests__/helpers/constants");
|
|
9
|
+
const src_1 = require("../src");
|
|
10
|
+
const constants_2 = require("../src/clients/constants");
|
|
11
|
+
const local_wallet_1 = __importDefault(require("../src/clients/modules/local-wallet"));
|
|
12
|
+
const subaccount_1 = require("../src/clients/subaccount");
|
|
13
|
+
const validator_client_1 = require("../src/clients/validator-client");
|
|
14
|
+
const constants_3 = require("./constants");
|
|
15
|
+
async function test() {
|
|
16
|
+
const wallet = await local_wallet_1.default.fromMnemonic(constants_3.TEST_MNEMONIC, src_1.BECH32_PREFIX);
|
|
17
|
+
console.log(wallet);
|
|
18
|
+
const client = await validator_client_1.ValidatorClient.connect(constants_2.Network.testnet().validatorConfig);
|
|
19
|
+
console.log('**Client**');
|
|
20
|
+
console.log(client);
|
|
21
|
+
const subaccount = subaccount_1.SubaccountInfo.forLocalWallet(wallet, 0);
|
|
22
|
+
const amount = new long_1.default(100000000);
|
|
23
|
+
const msgs = new Promise((resolve) => {
|
|
24
|
+
const msg = client.post.composer.composeMsgWithdrawFromSubaccount(subaccount.address, subaccount.subaccountNumber, 0, amount, constants_1.TEST_RECIPIENT_ADDRESS);
|
|
25
|
+
resolve([msg]);
|
|
26
|
+
});
|
|
27
|
+
const totalFee = await client.post.simulate(subaccount, () => msgs, undefined);
|
|
28
|
+
console.log('**Total Fee**');
|
|
29
|
+
console.log(totalFee);
|
|
30
|
+
const amountAfterFee = amount.sub(long_1.default.fromString(totalFee.amount[0].amount));
|
|
31
|
+
console.log('**Amount after fee**');
|
|
32
|
+
console.log(amountAfterFee);
|
|
33
|
+
const tx = await client.post.withdraw(subaccount, 0, amountAfterFee, constants_1.TEST_RECIPIENT_ADDRESS, tendermint_rpc_1.Method.BroadcastTxCommit);
|
|
34
|
+
console.log('**Withdraw and Send**');
|
|
35
|
+
console.log(tx);
|
|
36
|
+
}
|
|
37
|
+
test()
|
|
38
|
+
.then(() => { })
|
|
39
|
+
.catch((error) => {
|
|
40
|
+
console.log(error.message);
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNmZXJfZXhhbXBsZV93aXRoZHJhd19vdGhlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V4YW1wbGVzL3RyYW5zZmVyX2V4YW1wbGVfd2l0aGRyYXdfb3RoZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFDQSwyREFBZ0Q7QUFDaEQsZ0RBQXdCO0FBRXhCLDhEQUF3RTtBQUN4RSxnQ0FBdUM7QUFDdkMsd0RBQW1EO0FBQ25ELHVGQUE4RDtBQUM5RCwwREFBMkQ7QUFDM0Qsc0VBQWtFO0FBQ2xFLDJDQUE0QztBQUU1QyxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFXLENBQUMsWUFBWSxDQUFDLHlCQUFhLEVBQUUsbUJBQWEsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQ2hGLE9BQU8sQ0FBQyxHQUFHLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDMUIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUVwQixNQUFNLFVBQVUsR0FBRywyQkFBYyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFFNUQsTUFBTSxNQUFNLEdBQUcsSUFBSSxjQUFJLENBQUMsU0FBVyxDQUFDLENBQUM7SUFFckMsTUFBTSxJQUFJLEdBQTRCLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDNUQsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsZ0NBQWdDLENBQy9ELFVBQVUsQ0FBQyxPQUFPLEVBQ2xCLFVBQVUsQ0FBQyxnQkFBZ0IsRUFDM0IsQ0FBQyxFQUNELE1BQU0sRUFDTixrQ0FBc0IsQ0FDdkIsQ0FBQztRQUVGLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDakIsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDL0UsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztJQUM3QixPQUFPLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBRXRCLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsY0FBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDOUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDO0lBQ3BDLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFNUIsTUFBTSxFQUFFLEdBQUcsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDbkMsVUFBVSxFQUNWLENBQUMsRUFDRCxjQUFjLEVBQ2Qsa0NBQXNCLEVBQ3RCLHVCQUFNLENBQUMsaUJBQWlCLENBQ3pCLENBQUM7SUFDRixPQUFPLENBQUMsR0FBRyxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFDckMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNsQixDQUFDO0FBRUQsSUFBSSxFQUFFO0tBQ0gsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQUNkLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Simple JS example demostrating accessing public data with Indexer REST endpoints
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const constants_1 = require("../src/clients/constants");
|
|
7
|
+
const indexer_client_1 = require("../src/clients/indexer-client");
|
|
8
|
+
async function test() {
|
|
9
|
+
const client = new indexer_client_1.IndexerClient(constants_1.Network.testnet().indexerConfig);
|
|
10
|
+
// Get indexer server time
|
|
11
|
+
try {
|
|
12
|
+
const response = await client.utility.getTime();
|
|
13
|
+
console.log(response);
|
|
14
|
+
const timeIso = response.iso;
|
|
15
|
+
const timeEpoch = response.epoch;
|
|
16
|
+
console.log('time');
|
|
17
|
+
console.log(timeIso);
|
|
18
|
+
console.log(timeEpoch);
|
|
19
|
+
}
|
|
20
|
+
catch (error) {
|
|
21
|
+
console.log(error.message);
|
|
22
|
+
}
|
|
23
|
+
// Get indexer server height
|
|
24
|
+
try {
|
|
25
|
+
const response = await client.utility.getHeight();
|
|
26
|
+
console.log(response);
|
|
27
|
+
const height = response.height;
|
|
28
|
+
const heightTime = response.time;
|
|
29
|
+
console.log('height');
|
|
30
|
+
console.log(height);
|
|
31
|
+
console.log(heightTime);
|
|
32
|
+
}
|
|
33
|
+
catch (error) {
|
|
34
|
+
console.log(error.message);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
test()
|
|
38
|
+
.then(() => { })
|
|
39
|
+
.catch((error) => {
|
|
40
|
+
console.log(error.message);
|
|
41
|
+
});
|
|
42
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbGl0eV9lbmRwb2ludHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9leGFtcGxlcy91dGlsaXR5X2VuZHBvaW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7O0dBRUc7O0FBRUgsd0RBQW1EO0FBQ25ELGtFQUE4RDtBQUU5RCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLE1BQU0sR0FBRyxJQUFJLDhCQUFhLENBQUMsbUJBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUVsRSwwQkFBMEI7SUFDMUIsSUFBSSxDQUFDO1FBQ0gsTUFBTSxRQUFRLEdBQUcsTUFBTSxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDdEIsTUFBTSxPQUFPLEdBQUcsUUFBUSxDQUFDLEdBQUcsQ0FBQztRQUM3QixNQUFNLFNBQVMsR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDcEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELDRCQUE0QjtJQUM1QixJQUFJLENBQUM7UUFDSCxNQUFNLFFBQVEsR0FBRyxNQUFNLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7UUFDbEQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixNQUFNLE1BQU0sR0FBRyxRQUFRLENBQUMsTUFBTSxDQUFDO1FBQy9CLE1BQU0sVUFBVSxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUM7UUFDakMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN0QixPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3BCLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDMUIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUM3QixDQUFDO0FBQ0gsQ0FBQztBQUVELElBQUksRUFBRTtLQUNILElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7S0FDZCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtJQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0FBQzdCLENBQUMsQ0FBQyxDQUFDIn0=
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../src/clients/constants");
|
|
4
|
+
const validator_client_1 = require("../src/clients/validator-client");
|
|
5
|
+
const constants_2 = require("./constants");
|
|
6
|
+
async function test() {
|
|
7
|
+
const client = await validator_client_1.ValidatorClient.connect(constants_1.Network.testnet().validatorConfig);
|
|
8
|
+
try {
|
|
9
|
+
const account = await client.get.getAccount(constants_2.TEST_ADDRESS);
|
|
10
|
+
console.log('Account');
|
|
11
|
+
console.log(JSON.stringify(account));
|
|
12
|
+
}
|
|
13
|
+
catch (error) {
|
|
14
|
+
console.log(JSON.stringify(error.message));
|
|
15
|
+
}
|
|
16
|
+
try {
|
|
17
|
+
const coins = await client.get.getAccountBalances(constants_2.TEST_ADDRESS);
|
|
18
|
+
console.log('Balances');
|
|
19
|
+
console.log(JSON.stringify(coins));
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
console.log(JSON.stringify(error.message));
|
|
23
|
+
}
|
|
24
|
+
try {
|
|
25
|
+
const subaccounts = await client.get.getSubaccounts();
|
|
26
|
+
console.log('Subaccounts');
|
|
27
|
+
console.log(JSON.stringify(subaccounts));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
console.log(JSON.stringify(error.message));
|
|
31
|
+
}
|
|
32
|
+
try {
|
|
33
|
+
const subaccount = await client.get.getSubaccount(constants_2.TEST_ADDRESS, 0);
|
|
34
|
+
console.log('Subaccount 0');
|
|
35
|
+
console.log(JSON.stringify(subaccount));
|
|
36
|
+
}
|
|
37
|
+
catch (error) {
|
|
38
|
+
console.log(JSON.stringify(error.message));
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
const subaccount = await client.get.getSubaccount(constants_2.TEST_ADDRESS, 1);
|
|
42
|
+
console.log('Subaccount 1');
|
|
43
|
+
console.log(JSON.stringify(subaccount));
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
console.log(JSON.stringify(error.message));
|
|
47
|
+
}
|
|
48
|
+
try {
|
|
49
|
+
const clobpairs = await client.get.getAllClobPairs();
|
|
50
|
+
console.log('Clobs');
|
|
51
|
+
console.log(JSON.stringify(clobpairs));
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
console.log(JSON.stringify(error.message));
|
|
55
|
+
}
|
|
56
|
+
try {
|
|
57
|
+
const prices = await client.get.getAllPrices();
|
|
58
|
+
console.log('Prices');
|
|
59
|
+
console.log(JSON.stringify(prices));
|
|
60
|
+
}
|
|
61
|
+
catch (error) {
|
|
62
|
+
console.log(JSON.stringify(error.message));
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const feeTiers = await client.get.getFeeTiers();
|
|
66
|
+
console.log('Fee Tiers');
|
|
67
|
+
console.log(JSON.stringify(feeTiers));
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.log(JSON.stringify(error.message));
|
|
71
|
+
}
|
|
72
|
+
try {
|
|
73
|
+
const userfeeTier = await client.get.getUserFeeTier(constants_2.TEST_ADDRESS);
|
|
74
|
+
console.log('User Fee Tiers');
|
|
75
|
+
console.log(JSON.stringify(userfeeTier));
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
console.log(JSON.stringify(error.message));
|
|
79
|
+
}
|
|
80
|
+
try {
|
|
81
|
+
const userStats = await client.get.getUserStats(constants_2.TEST_ADDRESS);
|
|
82
|
+
console.log('User Fee Tiers');
|
|
83
|
+
console.log(JSON.stringify(userStats));
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
console.log(JSON.stringify(error.message));
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
const equityTierLimitConfiguration = await client.get.getEquityTierLimitConfiguration();
|
|
90
|
+
console.log('Equity Tier Limit Configuration');
|
|
91
|
+
console.log(JSON.stringify(equityTierLimitConfiguration));
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
console.log(JSON.stringify(error.message));
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const rewardsParams = await client.get.getRewardsParams();
|
|
98
|
+
console.log('Rewards Params');
|
|
99
|
+
console.log(JSON.stringify(rewardsParams));
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
console.log(JSON.stringify(error.message));
|
|
103
|
+
}
|
|
104
|
+
try {
|
|
105
|
+
const delegations = await client.get.getDelegatorDelegations(constants_2.TEST_ADDRESS);
|
|
106
|
+
console.log('Delegations');
|
|
107
|
+
console.log(JSON.stringify(delegations));
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
console.log(JSON.stringify(error.message));
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const unbondingDelegations = await client.get.getDelegatorUnbondingDelegations(constants_2.TEST_ADDRESS);
|
|
114
|
+
console.log('Unbonding Delegationss');
|
|
115
|
+
console.log(JSON.stringify(unbondingDelegations));
|
|
116
|
+
}
|
|
117
|
+
catch (error) {
|
|
118
|
+
console.log(JSON.stringify(error.message));
|
|
119
|
+
}
|
|
120
|
+
try {
|
|
121
|
+
const delegationsTotalRewards = await client.get.getDelegationTotalRewards(constants_2.TEST_ADDRESS);
|
|
122
|
+
console.log('Delegations total rewards');
|
|
123
|
+
console.log(JSON.stringify(delegationsTotalRewards));
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
console.log(JSON.stringify(error.message));
|
|
127
|
+
}
|
|
128
|
+
try {
|
|
129
|
+
const getAllBondedValidators = await client.get.getAllValidators('BOND_STATUS_BONDED');
|
|
130
|
+
console.log('All Validators');
|
|
131
|
+
console.log(JSON.stringify(getAllBondedValidators));
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
console.log(JSON.stringify(error.message));
|
|
135
|
+
}
|
|
136
|
+
try {
|
|
137
|
+
const delayedCompleteBridgeMessagesParams = await client.get.getDelayedCompleteBridgeMessages();
|
|
138
|
+
console.log('All delayed complete bridge messages');
|
|
139
|
+
console.log(JSON.stringify(delayedCompleteBridgeMessagesParams));
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
console.log(JSON.stringify(error.message));
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
const delayedCompleteBridgeMessagesParams = await client.get.getDelayedCompleteBridgeMessages(constants_2.TEST_ADDRESS);
|
|
146
|
+
console.log('Filtered delayed complete bridge messages');
|
|
147
|
+
console.log(JSON.stringify(delayedCompleteBridgeMessagesParams));
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
console.log(JSON.stringify(error.message));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
test()
|
|
154
|
+
.then(() => { })
|
|
155
|
+
.catch((error) => {
|
|
156
|
+
console.log(error.message);
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yX2dldF9leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXhhbXBsZXMvdmFsaWRhdG9yX2dldF9leGFtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsd0RBQW1EO0FBQ25ELHNFQUFrRTtBQUNsRSwyQ0FBMkM7QUFFM0MsS0FBSyxVQUFVLElBQUk7SUFDakIsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FBZSxDQUFDLE9BQU8sQ0FBQyxtQkFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBRWhGLElBQUksQ0FBQztRQUNILE1BQU0sT0FBTyxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsd0JBQVksQ0FBQyxDQUFDO1FBQzFELE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7UUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDZixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELElBQUksQ0FBQztRQUNILE1BQU0sS0FBSyxHQUFHLE1BQU0sTUFBTSxDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyx3QkFBWSxDQUFDLENBQUM7UUFDaEUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN4QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsT0FBTyxLQUFLLEVBQUUsQ0FBQztRQUNmLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxD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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 protobufjs_1 = __importDefault(require("protobufjs"));
|
|
8
|
+
const src_1 = require("../src");
|
|
9
|
+
const constants_1 = require("../src/clients/constants");
|
|
10
|
+
const local_wallet_1 = __importDefault(require("../src/clients/modules/local-wallet"));
|
|
11
|
+
const subaccount_1 = require("../src/clients/subaccount");
|
|
12
|
+
const validator_client_1 = require("../src/clients/validator-client");
|
|
13
|
+
const utils_1 = require("../src/lib/utils");
|
|
14
|
+
const constants_2 = require("./constants");
|
|
15
|
+
const raw_orders_json_1 = __importDefault(require("./raw_orders.json"));
|
|
16
|
+
// Required for encoding and decoding queries that are of type Long.
|
|
17
|
+
// Must be done once but since the individal modules should be usable
|
|
18
|
+
// - must be set in each module that encounters encoding/decoding Longs.
|
|
19
|
+
// Reference: https://github.com/protobufjs/protobuf.js/issues/921
|
|
20
|
+
protobufjs_1.default.util.Long = long_1.default;
|
|
21
|
+
protobufjs_1.default.configure();
|
|
22
|
+
function dummyOrder(height) {
|
|
23
|
+
const placeOrder = constants_2.defaultOrder;
|
|
24
|
+
placeOrder.clientId = (0, utils_1.randomInt)(1000000000);
|
|
25
|
+
placeOrder.goodTilBlock = height + 3;
|
|
26
|
+
return placeOrder;
|
|
27
|
+
}
|
|
28
|
+
async function sleep(ms) {
|
|
29
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
30
|
+
}
|
|
31
|
+
async function test() {
|
|
32
|
+
const wallet = await local_wallet_1.default.fromMnemonic(constants_2.TEST_MNEMONIC, src_1.BECH32_PREFIX);
|
|
33
|
+
console.log(wallet);
|
|
34
|
+
const client = await validator_client_1.ValidatorClient.connect(constants_1.Network.testnet().validatorConfig);
|
|
35
|
+
console.log('**Client**');
|
|
36
|
+
console.log(client);
|
|
37
|
+
const value1 = long_1.default.fromNumber(400000000000);
|
|
38
|
+
console.log(value1.toString());
|
|
39
|
+
const subaccount = subaccount_1.SubaccountInfo.forLocalWallet(wallet, 0);
|
|
40
|
+
for (const orderParams of raw_orders_json_1.default) {
|
|
41
|
+
const height = await client.get.latestBlockHeight();
|
|
42
|
+
const placeOrder = dummyOrder(height);
|
|
43
|
+
placeOrder.timeInForce = orderParams.timeInForce;
|
|
44
|
+
placeOrder.reduceOnly = false; // reduceOnly is currently disabled
|
|
45
|
+
placeOrder.orderFlags = orderParams.orderFlags;
|
|
46
|
+
placeOrder.side = orderParams.side;
|
|
47
|
+
placeOrder.quantums = long_1.default.fromNumber(orderParams.quantums);
|
|
48
|
+
placeOrder.subticks = long_1.default.fromNumber(orderParams.subticks);
|
|
49
|
+
try {
|
|
50
|
+
if (placeOrder.orderFlags !== 0) {
|
|
51
|
+
placeOrder.goodTilBlock = 0;
|
|
52
|
+
const now = new Date();
|
|
53
|
+
const millisecondsPerSecond = 1000;
|
|
54
|
+
const interval = 60 * millisecondsPerSecond;
|
|
55
|
+
const future = new Date(now.valueOf() + interval);
|
|
56
|
+
placeOrder.goodTilBlockTime = Math.round(future.getTime() / 1000);
|
|
57
|
+
}
|
|
58
|
+
else {
|
|
59
|
+
placeOrder.goodTilBlockTime = 0;
|
|
60
|
+
}
|
|
61
|
+
const tx = await client.post.placeOrderObject(subaccount, placeOrder);
|
|
62
|
+
console.log('**Order Tx**');
|
|
63
|
+
console.log(tx);
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
console.log(error.message);
|
|
67
|
+
}
|
|
68
|
+
await sleep(5000); // wait for placeOrder to complete
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
test()
|
|
72
|
+
.then(() => { })
|
|
73
|
+
.catch((error) => {
|
|
74
|
+
console.log(error.message);
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFsaWRhdG9yX3Bvc3RfZXhhbXBsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL2V4YW1wbGVzL3ZhbGlkYXRvcl9wb3N0X2V4YW1wbGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNERBQWtDO0FBRWxDLGdDQUF1QztBQUN2Qyx3REFBbUQ7QUFDbkQsdUZBQThEO0FBQzlELDBEQUEyRDtBQUUzRCxzRUFBa0U7QUFDbEUsNENBQTZDO0FBQzdDLDJDQUEwRDtBQUMxRCx3RUFBNkM7QUFFN0Msb0VBQW9FO0FBQ3BFLHFFQUFxRTtBQUNyRSx3RUFBd0U7QUFDeEUsa0VBQWtFO0FBQ2xFLG9CQUFRLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxjQUFJLENBQUM7QUFDMUIsb0JBQVEsQ0FBQyxTQUFTLEVBQUUsQ0FBQztBQUVyQixTQUFTLFVBQVUsQ0FBQyxNQUFjO0lBQ2hDLE1BQU0sVUFBVSxHQUFHLHdCQUFZLENBQUM7SUFDaEMsVUFBVSxDQUFDLFFBQVEsR0FBRyxJQUFBLGlCQUFTLEVBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsVUFBVSxDQUFDLFlBQVksR0FBRyxNQUFNLEdBQUcsQ0FBQyxDQUFDO0lBQ3JDLE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFFRCxLQUFLLFVBQVUsS0FBSyxDQUFDLEVBQVU7SUFDN0IsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQzNELENBQUM7QUFFRCxLQUFLLFVBQVUsSUFBSTtJQUNqQixNQUFNLE1BQU0sR0FBRyxNQUFNLHNCQUFXLENBQUMsWUFBWSxDQUFDLHlCQUFhLEVBQUUsbUJBQWEsQ0FBQyxDQUFDO0lBQzVFLE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7SUFFcEIsTUFBTSxNQUFNLEdBQUcsTUFBTSxrQ0FB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
|
|
@@ -0,0 +1,22 @@
|
|
|
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 src_1 = require("../src");
|
|
7
|
+
const local_wallet_1 = __importDefault(require("../src/clients/modules/local-wallet"));
|
|
8
|
+
const constants_1 = require("./constants");
|
|
9
|
+
async function test() {
|
|
10
|
+
const wallet = await local_wallet_1.default.fromMnemonic(constants_1.TEST_MNEMONIC, src_1.BECH32_PREFIX);
|
|
11
|
+
console.log(wallet);
|
|
12
|
+
const address = wallet.address;
|
|
13
|
+
const addressOk = address === constants_1.TEST_ADDRESS;
|
|
14
|
+
console.log(addressOk);
|
|
15
|
+
console.log(address);
|
|
16
|
+
}
|
|
17
|
+
test()
|
|
18
|
+
.then(() => { })
|
|
19
|
+
.catch((error) => {
|
|
20
|
+
console.log(error.message);
|
|
21
|
+
});
|
|
22
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FsbGV0X2FkZHJlc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9leGFtcGxlcy93YWxsZXRfYWRkcmVzcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQUFBLGdDQUF1QztBQUN2Qyx1RkFBOEQ7QUFDOUQsMkNBQTBEO0FBRTFELEtBQUssVUFBVSxJQUFJO0lBQ2pCLE1BQU0sTUFBTSxHQUFHLE1BQU0sc0JBQVcsQ0FBQyxZQUFZLENBQUMseUJBQWEsRUFBRSxtQkFBYSxDQUFDLENBQUM7SUFDNUUsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsT0FBTyxDQUFDO0lBQy9CLE1BQU0sU0FBUyxHQUFHLE9BQU8sS0FBSyx3QkFBWSxDQUFDO0lBQzNDLE9BQU8sQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDdkIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN2QixDQUFDO0FBRUQsSUFBSSxFQUFFO0tBQ0gsSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztLQUNkLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO0lBQ2YsT0FBTyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLENBQUM7QUFDN0IsQ0FBQyxDQUFDLENBQUMifQ==
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const constants_1 = require("../src/clients/constants");
|
|
4
|
+
const socket_client_1 = require("../src/clients/socket-client");
|
|
5
|
+
const constants_2 = require("./constants");
|
|
6
|
+
function test() {
|
|
7
|
+
const mySocket = new socket_client_1.SocketClient(constants_1.Network.testnet().indexerConfig, () => {
|
|
8
|
+
console.log('socket opened');
|
|
9
|
+
}, () => {
|
|
10
|
+
console.log('socket closed');
|
|
11
|
+
}, (message) => {
|
|
12
|
+
console.log(message);
|
|
13
|
+
if (typeof message.data === 'string') {
|
|
14
|
+
const jsonString = message.data;
|
|
15
|
+
try {
|
|
16
|
+
const data = JSON.parse(jsonString);
|
|
17
|
+
if (data.type === socket_client_1.IncomingMessageTypes.CONNECTED) {
|
|
18
|
+
mySocket.subscribeToMarkets();
|
|
19
|
+
mySocket.subscribeToOrderbook('ETH-USD');
|
|
20
|
+
mySocket.subscribeToTrades('ETH-USD');
|
|
21
|
+
mySocket.subscribeToCandles('ETH-USD', socket_client_1.CandlesResolution.FIFTEEN_MINUTES);
|
|
22
|
+
mySocket.subscribeToSubaccount(constants_2.TEST_ADDRESS, 0);
|
|
23
|
+
}
|
|
24
|
+
console.log(data);
|
|
25
|
+
}
|
|
26
|
+
catch (e) {
|
|
27
|
+
console.error('Error parsing JSON message:', e);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}, (event) => {
|
|
31
|
+
console.error('Encountered error:', event.message);
|
|
32
|
+
});
|
|
33
|
+
mySocket.connect();
|
|
34
|
+
}
|
|
35
|
+
test();
|
|
36
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0X2V4YW1wbGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9leGFtcGxlcy93ZWJzb2NrZXRfZXhhbXBsZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHdEQUFtRDtBQUNuRCxnRUFJc0M7QUFDdEMsMkNBQTJDO0FBRTNDLFNBQVMsSUFBSTtJQUNYLE1BQU0sUUFBUSxHQUFHLElBQUksNEJBQVksQ0FDL0IsbUJBQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQyxhQUFhLEVBQy9CLEdBQUcsRUFBRTtRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0IsQ0FBQyxFQUNELEdBQUcsRUFBRTtRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0IsQ0FBQyxFQUNELENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDVixPQUFPLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3JCLElBQUksT0FBTyxPQUFPLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO1lBQ3JDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxJQUFjLENBQUM7WUFDMUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sSUFBSSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBQ3BDLElBQUksSUFBSSxDQUFDLElBQUksS0FBSyxvQ0FBb0IsQ0FBQyxTQUFTLEVBQUUsQ0FBQztvQkFDakQsUUFBUSxDQUFDLGtCQUFrQixFQUFFLENBQUM7b0JBQzlCLFFBQVEsQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztvQkFDekMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUN0QyxRQUFRLENBQUMsa0JBQWtCLENBQUMsU0FBUyxFQUFFLGlDQUFpQixDQUFDLGVBQWUsQ0FBQyxDQUFDO29CQUMxRSxRQUFRLENBQUMscUJBQXFCLENBQUMsd0JBQVksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDbEQsQ0FBQztnQkFDRCxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ3BCLENBQUM7WUFBQyxPQUFPLENBQUMsRUFBRSxDQUFDO2dCQUNYLE9BQU8sQ0FBQyxLQUFLLENBQUMsNkJBQTZCLEVBQUUsQ0FBQyxDQUFDLENBQUM7WUFDbEQsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDLEVBQ0QsQ0FBQyxLQUFLLEVBQUUsRUFBRTtRQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsb0JBQW9CLEVBQUUsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ3JELENBQUMsQ0FDRixDQUFDO0lBQ0YsUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBQ3JCLENBQUM7QUFFRCxJQUFJLEVBQUUsQ0FBQyJ9
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
+
/* eslint-disable no-param-reassign */
|
|
5
|
+
const constants_1 = require("../src/clients/constants");
|
|
6
|
+
const socket_client_1 = require("../src/clients/socket-client");
|
|
7
|
+
function test() {
|
|
8
|
+
let orderBookBidList = [];
|
|
9
|
+
let orderBookAskList = [];
|
|
10
|
+
const mySocket = new socket_client_1.SocketClient(constants_1.Network.mainnet().indexerConfig, () => {
|
|
11
|
+
console.log('socket opened');
|
|
12
|
+
mySocket.subscribeToOrderbook('ETH-USD');
|
|
13
|
+
}, () => {
|
|
14
|
+
console.log('socket closed');
|
|
15
|
+
}, (message) => {
|
|
16
|
+
try {
|
|
17
|
+
if (typeof message.data === 'string') {
|
|
18
|
+
const jsonString = message.data;
|
|
19
|
+
const parsingData = JSON.parse(jsonString);
|
|
20
|
+
const messageId = parsingData.message_id;
|
|
21
|
+
const orderBookDataList = parsingData.contents;
|
|
22
|
+
if (orderBookDataList instanceof Array) {
|
|
23
|
+
// common orderBook data;
|
|
24
|
+
[orderBookBidList, orderBookAskList] = updateOrderBook(orderBookDataList, orderBookBidList, orderBookAskList, messageId);
|
|
25
|
+
// sort
|
|
26
|
+
orderBookBidList = sortByNthElementDesc(orderBookBidList, 0);
|
|
27
|
+
orderBookAskList = sortByNthElementAsc(orderBookAskList, 0);
|
|
28
|
+
// resolving crossed orderBook
|
|
29
|
+
if (orderBookBidList.length > 0 &&
|
|
30
|
+
orderBookAskList.length > 0 &&
|
|
31
|
+
orderBookBidList[0][0] >= orderBookAskList[0][0]) {
|
|
32
|
+
[orderBookBidList, orderBookAskList] = resolveCrossedOrderBook(orderBookBidList, orderBookAskList);
|
|
33
|
+
}
|
|
34
|
+
printOrderBook(orderBookBidList, orderBookAskList);
|
|
35
|
+
if (orderBookBidList.length > 300) {
|
|
36
|
+
orderBookBidList.splice(50);
|
|
37
|
+
}
|
|
38
|
+
if (orderBookAskList.length > 300) {
|
|
39
|
+
orderBookAskList.splice(50);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else if (orderBookDataList !== null && orderBookDataList !== undefined) {
|
|
43
|
+
// initial OrderBook data
|
|
44
|
+
setInitialOrderBook(orderBookDataList, orderBookBidList, orderBookAskList, messageId);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (e) {
|
|
49
|
+
console.error('Error parsing JSON message:', e);
|
|
50
|
+
}
|
|
51
|
+
}, (event) => {
|
|
52
|
+
console.error('Encountered error:', event.message);
|
|
53
|
+
});
|
|
54
|
+
mySocket.connect();
|
|
55
|
+
}
|
|
56
|
+
const sortByNthElementAsc = (arr, n) => {
|
|
57
|
+
return arr.sort((a, b) => {
|
|
58
|
+
if (a[n] < b[n])
|
|
59
|
+
return -1;
|
|
60
|
+
if (a[n] > b[n])
|
|
61
|
+
return 1;
|
|
62
|
+
return 0;
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
const sortByNthElementDesc = (arr, n) => {
|
|
66
|
+
return arr.sort((a, b) => {
|
|
67
|
+
if (a[n] > b[n])
|
|
68
|
+
return -1;
|
|
69
|
+
if (a[n] < b[n])
|
|
70
|
+
return 1;
|
|
71
|
+
return 0;
|
|
72
|
+
});
|
|
73
|
+
};
|
|
74
|
+
const printOrderBook = (orderBookBidList, orderBookAskList) => {
|
|
75
|
+
// print
|
|
76
|
+
console.log(`OrderBook for ETH-USD:`);
|
|
77
|
+
console.log(`Price Qty`);
|
|
78
|
+
for (let i = 4; i > -1; i--) {
|
|
79
|
+
const priceStr = String(orderBookAskList[i][0]);
|
|
80
|
+
const spaces = createSpaces(10 - priceStr.length);
|
|
81
|
+
console.log(`${priceStr}${spaces}${orderBookAskList[i][1]}`);
|
|
82
|
+
}
|
|
83
|
+
console.log('---------------------');
|
|
84
|
+
for (let i = 0; i < 5; i++) {
|
|
85
|
+
const priceStr = String(orderBookBidList[i][0]);
|
|
86
|
+
const spaces = createSpaces(10 - priceStr.length);
|
|
87
|
+
console.log(`${priceStr}${spaces}${orderBookBidList[i][1]}`);
|
|
88
|
+
}
|
|
89
|
+
console.log('');
|
|
90
|
+
};
|
|
91
|
+
function createSpaces(count) {
|
|
92
|
+
if (count <= 0) {
|
|
93
|
+
return '';
|
|
94
|
+
}
|
|
95
|
+
let spaces = '';
|
|
96
|
+
for (let i = 0; i < count; i++) {
|
|
97
|
+
spaces += ' ';
|
|
98
|
+
}
|
|
99
|
+
return spaces;
|
|
100
|
+
}
|
|
101
|
+
const resolveCrossedOrderBook = (orderBookBidList, orderBookAskList) => {
|
|
102
|
+
while (orderBookBidList[0][0] >= orderBookAskList[0][0]) {
|
|
103
|
+
if (orderBookBidList[0][2] < orderBookAskList[0][2]) {
|
|
104
|
+
orderBookBidList.shift();
|
|
105
|
+
}
|
|
106
|
+
else if (orderBookBidList[0][2] > orderBookAskList[0][2]) {
|
|
107
|
+
orderBookAskList.shift();
|
|
108
|
+
}
|
|
109
|
+
else {
|
|
110
|
+
if (orderBookBidList[0][1] > orderBookAskList[0][1]) {
|
|
111
|
+
orderBookBidList[0][1] -= orderBookAskList[0][1];
|
|
112
|
+
orderBookAskList.shift();
|
|
113
|
+
}
|
|
114
|
+
else if (orderBookBidList[0][1] < orderBookAskList[0][1]) {
|
|
115
|
+
orderBookAskList[0][1] -= orderBookBidList[0][1];
|
|
116
|
+
orderBookBidList.shift();
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
orderBookAskList.shift();
|
|
120
|
+
orderBookBidList.shift();
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
return [orderBookBidList, orderBookAskList];
|
|
125
|
+
};
|
|
126
|
+
const setInitialOrderBook = (orderBookDataList, orderBookBidList, orderBookAskList, messageId) => {
|
|
127
|
+
orderBookDataList.bids.forEach((item) => {
|
|
128
|
+
orderBookBidList.push([Number(item.price), Number(item.size), messageId]);
|
|
129
|
+
});
|
|
130
|
+
orderBookDataList.asks.forEach((item) => {
|
|
131
|
+
orderBookAskList.push([Number(item.price), Number(item.size), messageId]);
|
|
132
|
+
});
|
|
133
|
+
};
|
|
134
|
+
const updateOrderBook = (orderBookDataList, orderBookBidList, orderBookAskList, messageId) => {
|
|
135
|
+
orderBookDataList.forEach((entry) => {
|
|
136
|
+
if (entry.bids !== null && entry.bids !== undefined) {
|
|
137
|
+
const flattened = entry.bids.reduce((acc, val) => acc.concat(val), []);
|
|
138
|
+
const entryBidPrice = Number(flattened[0]);
|
|
139
|
+
const entryBidSize = Number(flattened[1]);
|
|
140
|
+
// remove prices with zero Qty
|
|
141
|
+
if (entryBidSize === 0) {
|
|
142
|
+
for (let i = orderBookBidList.length - 1; i >= 0; i--) {
|
|
143
|
+
if (orderBookBidList[i][0] === entryBidPrice) {
|
|
144
|
+
orderBookBidList.splice(i, 1);
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else {
|
|
149
|
+
// The price that already exists in the order book is modified only Qty
|
|
150
|
+
if (orderBookBidList.some((innerArray) => innerArray[0] === entryBidPrice)) {
|
|
151
|
+
orderBookBidList.forEach((item, index) => {
|
|
152
|
+
if (item[0] === entryBidPrice) {
|
|
153
|
+
orderBookBidList[index][1] = entryBidSize;
|
|
154
|
+
orderBookBidList[index][2] = messageId;
|
|
155
|
+
}
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
// Add new data to order book
|
|
160
|
+
orderBookBidList.push([entryBidPrice, entryBidSize, messageId]);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
if (entry.asks !== null && entry.asks !== undefined) {
|
|
165
|
+
const flattened = entry.asks.reduce((acc, val) => acc.concat(val), []);
|
|
166
|
+
const entryAskPrice = Number(flattened[0]);
|
|
167
|
+
const entryAskSize = Number(flattened[1]);
|
|
168
|
+
if (entryAskSize === 0) {
|
|
169
|
+
// remove prices with zero Qty
|
|
170
|
+
for (let i = orderBookAskList.length - 1; i >= 0; i--) {
|
|
171
|
+
if (orderBookAskList[i][0] === entryAskPrice) {
|
|
172
|
+
orderBookAskList.splice(i, 1);
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
else {
|
|
177
|
+
// The price that already exists in the order book is modified only Qty
|
|
178
|
+
if (orderBookAskList.some((innerArray) => innerArray[0] === entryAskPrice)) {
|
|
179
|
+
orderBookAskList.forEach((item, index) => {
|
|
180
|
+
if (item[0] === entryAskPrice) {
|
|
181
|
+
orderBookAskList[index][1] = entryAskSize;
|
|
182
|
+
orderBookAskList[index][2] = messageId;
|
|
183
|
+
}
|
|
184
|
+
});
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// Add new data to order book
|
|
188
|
+
orderBookAskList.push([entryAskPrice, entryAskSize, messageId]);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
});
|
|
193
|
+
return [orderBookBidList, orderBookAskList];
|
|
194
|
+
};
|
|
195
|
+
test();
|
|
196
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2Vic29ja2V0X29yZGVyYm9va19leGFtcGxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vZXhhbXBsZXMvd2Vic29ja2V0X29yZGVyYm9va19leGFtcGxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsdURBQXVEO0FBQ3ZELHNDQUFzQztBQUN0Qyx3REFBbUQ7QUFDbkQsZ0VBQTREO0FBRTVELFNBQVMsSUFBSTtJQUNYLElBQUksZ0JBQWdCLEdBQStCLEVBQUUsQ0FBQztJQUN0RCxJQUFJLGdCQUFnQixHQUErQixFQUFFLENBQUM7SUFFdEQsTUFBTSxRQUFRLEdBQUcsSUFBSSw0QkFBWSxDQUMvQixtQkFBTyxDQUFDLE9BQU8sRUFBRSxDQUFDLGFBQWEsRUFDL0IsR0FBRyxFQUFFO1FBQ0gsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUU3QixRQUFRLENBQUMsb0JBQW9CLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0MsQ0FBQyxFQUNELEdBQUcsRUFBRTtRQUNILE9BQU8sQ0FBQyxHQUFHLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDL0IsQ0FBQyxFQUNELENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDVixJQUFJLENBQUM7WUFDSCxJQUFJLE9BQU8sT0FBTyxDQUFDLElBQUksS0FBSyxRQUFRLEVBQUUsQ0FBQztnQkFDckMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQztnQkFDaEMsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztnQkFDM0MsTUFBTSxTQUFTLEdBQUcsV0FBVyxDQUFDLFVBQVUsQ0FBQztnQkFDekMsTUFBTSxpQkFBaUIsR0FBRyxXQUFXLENBQUMsUUFBUSxDQUFDO2dCQUUvQyxJQUFJLGlCQUFpQixZQUFZLEtBQUssRUFBRSxDQUFDO29CQUN2Qyx5QkFBeUI7b0JBQ3pCLENBQUMsZ0JBQWdCLEVBQUUsZ0JBQWdCLENBQUMs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
|