@dydxprotocol/v4-client-js 1.1.13 → 1.1.15
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/.eslintrc.js +3 -5
- package/.prettierignore +3 -0
- package/.prettierrc.json +6 -0
- package/.telescope.json +2 -4
- package/.vscode/launch.json +10 -10
- package/README.md +3 -1
- package/__native__/__ios__/v4-native-client.js +2680 -799
- package/__tests__/helpers/constants.ts +10 -8
- package/__tests__/lib/helpers.test.ts +22 -23
- package/__tests__/lib/util.test.ts +2 -8
- package/__tests__/lib/validation.test.ts +23 -26
- package/__tests__/modules/client/Transfers.test.ts +4 -19
- package/__tests__/modules/client/ValidatorPostEndpoints.test.ts +2 -5
- package/__tests__/modules/client/constants.ts +4 -2
- package/__tests__/modules/onboarding.test.ts +9 -7
- package/build/__tests__/helpers/constants.js +7 -7
- package/build/__tests__/lib/helpers.test.js +2 -6
- package/build/__tests__/lib/util.test.js +1 -1
- package/build/__tests__/lib/validation.test.js +3 -11
- package/build/__tests__/modules/client/Transfers.test.js +1 -1
- package/build/__tests__/modules/client/ValidatorPostEndpoints.test.js +2 -2
- package/build/__tests__/modules/client/constants.js +1 -1
- package/build/__tests__/modules/onboarding.test.js +2 -3
- package/build/examples/account_endpoints.js +4 -3
- package/build/examples/composite_example.js +5 -4
- package/build/examples/constants.js +1 -1
- package/build/examples/faucet_endpoint.js +4 -3
- package/build/examples/long_term_order_cancel_example.js +4 -3
- package/build/examples/markets_endpoints.js +4 -3
- package/build/examples/native_examples.js +4 -3
- package/build/examples/noble_example.js +1 -1
- package/build/examples/optimal_node.js +4 -12
- package/build/examples/short_term_order_cancel_example.js +4 -3
- package/build/examples/short_term_order_composite_example.js +4 -3
- package/build/examples/test.js +5 -4
- package/build/examples/transfer_example_deposit.js +4 -3
- package/build/examples/transfer_example_send.js +1 -1
- package/build/examples/transfer_example_subaccount_transfer.js +4 -3
- package/build/examples/transfer_example_withdraw.js +4 -3
- package/build/examples/transfer_example_withdraw_other.js +1 -1
- package/build/examples/utility_endpoints.js +4 -3
- package/build/examples/validator_get_example.js +15 -9
- package/build/examples/validator_post_example.js +4 -3
- package/build/examples/wallet_address.js +5 -4
- package/build/examples/websocket_example.js +1 -1
- package/build/src/clients/composite-client.d.ts +222 -222
- package/build/src/clients/composite-client.js +234 -228
- package/build/src/clients/constants.d.ts +3 -0
- package/build/src/clients/constants.js +6 -2
- package/build/src/clients/faucet-client.d.ts +4 -4
- package/build/src/clients/faucet-client.js +5 -5
- package/build/src/clients/helpers/chain-helpers.js +1 -1
- package/build/src/clients/helpers/request-helpers.js +5 -4
- package/build/src/clients/indexer-client.js +1 -1
- package/build/src/clients/lib/axios/axiosRequest.js +1 -1
- package/build/src/clients/lib/axios/errors.js +1 -1
- package/build/src/clients/lib/cctpProto.d.ts +2 -2
- package/build/src/clients/lib/cctpProto.js +287 -237
- package/build/src/clients/lib/errors.js +1 -1
- package/build/src/clients/modules/account.js +1 -1
- package/build/src/clients/modules/composer.d.ts +4 -0
- package/build/src/clients/modules/composer.js +39 -3
- package/build/src/clients/modules/get.d.ts +10 -3
- package/build/src/clients/modules/get.js +41 -54
- package/build/src/clients/modules/local-wallet.js +1 -1
- package/build/src/clients/modules/post.d.ts +6 -0
- package/build/src/clients/modules/post.js +50 -18
- package/build/src/clients/modules/proto-includes.d.ts +1 -0
- package/build/src/clients/modules/proto-includes.js +3 -2
- package/build/src/clients/modules/rest.js +1 -1
- package/build/src/clients/modules/signer.js +1 -1
- package/build/src/clients/modules/tendermintClient.d.ts +5 -5
- package/build/src/clients/modules/tendermintClient.js +6 -6
- package/build/src/clients/native.d.ts +5 -0
- package/build/src/clients/native.js +44 -9
- package/build/src/clients/noble-client.js +1 -1
- package/build/src/clients/socket-client.js +1 -1
- package/build/src/clients/subaccount.js +1 -1
- package/build/src/clients/types.d.ts +1 -1
- package/build/src/clients/types.js +1 -1
- package/build/src/clients/validator-client.d.ts +12 -12
- package/build/src/clients/validator-client.js +13 -13
- package/build/src/lib/errors.js +1 -1
- package/build/src/lib/onboarding.js +1 -1
- package/build/src/lib/utils.js +3 -3
- package/build/src/lib/validation.js +5 -4
- package/build/src/network_optimizer.js +10 -11
- package/build/src/types.d.ts +1 -1
- package/build/src/types.js +1 -1
- package/examples/account_endpoints.ts +5 -4
- package/examples/composite_example.ts +12 -7
- package/examples/constants.ts +10 -4
- package/examples/faucet_endpoint.ts +5 -4
- package/examples/human_readable_orders.json +85 -85
- package/examples/human_readable_short_term_orders.json +41 -41
- package/examples/long_term_order_cancel_example.ts +11 -6
- package/examples/markets_endpoints.ts +5 -4
- package/examples/native_examples.ts +8 -7
- package/examples/noble_example.ts +11 -23
- package/examples/optimal_node.ts +4 -14
- package/examples/raw_orders.json +128 -128
- package/examples/short_term_order_cancel_example.ts +7 -8
- package/examples/short_term_order_composite_example.ts +7 -8
- package/examples/test.ts +12 -7
- package/examples/transfer_example_deposit.ts +6 -9
- package/examples/transfer_example_send.ts +2 -10
- package/examples/transfer_example_subaccount_transfer.ts +6 -11
- package/examples/transfer_example_withdraw.ts +6 -9
- package/examples/transfer_example_withdraw_other.ts +1 -5
- package/examples/utility_endpoints.ts +5 -4
- package/examples/validator_get_example.ts +19 -10
- package/examples/validator_post_example.ts +7 -9
- package/examples/wallet_address.ts +6 -5
- package/examples/websocket_example.ts +5 -1
- package/package.json +4 -1
- package/src/clients/composite-client.ts +272 -329
- package/src/clients/constants.ts +38 -26
- package/src/clients/faucet-client.ts +5 -8
- package/src/clients/helpers/chain-helpers.ts +10 -6
- package/src/clients/helpers/request-helpers.ts +6 -5
- package/src/clients/indexer-client.ts +34 -34
- package/src/clients/lib/axios/axiosRequest.ts +4 -7
- package/src/clients/lib/axios/errors.ts +16 -21
- package/src/clients/lib/cctpProto.ts +655 -387
- package/src/clients/lib/errors.ts +8 -17
- package/src/clients/modules/account.ts +4 -12
- package/src/clients/modules/composer.ts +61 -20
- package/src/clients/modules/get.ts +71 -89
- package/src/clients/modules/local-wallet.ts +41 -56
- package/src/clients/modules/post.ts +684 -634
- package/src/clients/modules/proto-includes.ts +1 -0
- package/src/clients/modules/rest.ts +23 -26
- package/src/clients/modules/signer.ts +8 -22
- package/src/clients/modules/tendermintClient.ts +13 -36
- package/src/clients/native.ts +119 -140
- package/src/clients/noble-client.ts +1 -5
- package/src/clients/socket-client.ts +216 -216
- package/src/clients/subaccount.ts +16 -16
- package/src/clients/types.ts +14 -10
- package/src/clients/validator-client.ts +14 -16
- package/src/codegen/helpers.ts +149 -150
- package/src/codegen/index.ts +4 -5
- package/src/lib/errors.ts +3 -9
- package/src/lib/onboarding.ts +7 -2
- package/src/lib/utils.ts +5 -12
- package/src/lib/validation.ts +21 -19
- package/src/network_optimizer.ts +78 -65
- package/src/types.ts +5 -6
- package/tasks.json +15 -15
- package/tsconfig.eslint.json +1 -4
- package/tsconfig.json +2 -6
|
@@ -20,13 +20,14 @@ class NetworkOptimizer {
|
|
|
20
20
|
CHAINTOKEN_DECIMALS: 18,
|
|
21
21
|
USDC_DENOM: 'uusdc',
|
|
22
22
|
USDC_DECIMALS: 6,
|
|
23
|
-
}))
|
|
24
|
-
.catch((_) => undefined)))).filter(exports.isTruthy);
|
|
23
|
+
})).catch((_) => undefined)))).filter(exports.isTruthy);
|
|
25
24
|
}
|
|
26
25
|
indexerClients(endpointUrls) {
|
|
27
|
-
return endpointUrls
|
|
26
|
+
return endpointUrls
|
|
27
|
+
.map((endpointUrl) => new indexer_client_1.IndexerClient(
|
|
28
28
|
// socket is not used for finding optimal indexer, but required as a parameter to the config
|
|
29
|
-
new types_1.IndexerConfig(endpointUrl, endpointUrl.replace('https://', 'wss://').replace('http://', 'ws://'))))
|
|
29
|
+
new types_1.IndexerConfig(endpointUrl, endpointUrl.replace('https://', 'wss://').replace('http://', 'ws://'))))
|
|
30
|
+
.filter(exports.isTruthy);
|
|
30
31
|
}
|
|
31
32
|
async findOptimalNode(endpointUrls, chainId) {
|
|
32
33
|
if (endpointUrls.length === 0) {
|
|
@@ -53,12 +54,11 @@ class NetworkOptimizer {
|
|
|
53
54
|
throw new Error('Could not connect to endpoints');
|
|
54
55
|
}
|
|
55
56
|
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
56
|
-
return responses
|
|
57
|
+
return (responses
|
|
57
58
|
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
58
59
|
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
59
60
|
// Return the endpoint with the fastest response time
|
|
60
|
-
.sort((a, b) => a.time - b.time)[0]
|
|
61
|
-
.endpoint;
|
|
61
|
+
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
62
62
|
}
|
|
63
63
|
async findOptimalIndexer(endpointUrls) {
|
|
64
64
|
if (endpointUrls.length === 0) {
|
|
@@ -85,13 +85,12 @@ class NetworkOptimizer {
|
|
|
85
85
|
throw new Error('Could not connect to endpoints');
|
|
86
86
|
}
|
|
87
87
|
const maxHeight = Math.max(...responses.map(({ height }) => height));
|
|
88
|
-
return responses
|
|
88
|
+
return (responses
|
|
89
89
|
// Only consider nodes at `maxHeight` or `maxHeight - 1`
|
|
90
90
|
.filter(({ height }) => height === maxHeight || height === maxHeight - 1)
|
|
91
91
|
// Return the endpoint with the fastest response time
|
|
92
|
-
.sort((a, b) => a.time - b.time)[0]
|
|
93
|
-
.endpoint;
|
|
92
|
+
.sort((a, b) => a.time - b.time)[0].endpoint);
|
|
94
93
|
}
|
|
95
94
|
}
|
|
96
95
|
exports.NetworkOptimizer = NetworkOptimizer;
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
96
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmV0d29ya19vcHRpbWl6ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbmV0d29ya19vcHRpbWl6ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXlEO0FBQ3pELGlFQUE2RDtBQUM3RCwyQ0FBMkM7QUFDM0MsbUNBQXlEO0FBRXpELE1BQU0sWUFBWTtJQUtoQixZQUFZLE1BQWM7UUFDeEIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQUVNLE1BQU0sUUFBUSxHQUFHLENBQUksQ0FBb0MsRUFBVSxFQUFFLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQTNFLFFBQUEsUUFBUSxZQUFtRTtBQUV4RixNQUFhLGdCQUFnQjtJQUNuQixLQUFLLENBQUMsZ0JBQWdCLENBQzVCLFlBQXNCLEVBQ3RCLE9BQWU7UUFFZixPQUFPLENBQ0wsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUMvQixrQ0FBZSxDQUFDLE9BQU8sQ0FDckIsSUFBSSx1QkFBZSxDQUFDLFdBQVcsRUFBRSxPQUFPLEVBQUU7WUFDeEMsZ0JBQWdCLEVBQUUsYUFBYTtZQUMvQixtQkFBbUIsRUFBRSxFQUFFO1lBQ3ZCLFVBQVUsRUFBRSxPQUFPO1lBQ25CLGFBQWEsRUFBRSxDQUFDO1NBQ2pCLENBQUMsQ0FDSCxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQzFCLENBQ0YsQ0FDRixDQUFDLE1BQU0sQ0FBQyxnQkFBUSxDQUFDLENBQUM7SUFDckIsQ0FBQztJQUVPLGNBQWMsQ0FBQyxZQUFzQjtRQUMzQyxPQUFPLFlBQVk7YUFDaEIsR0FBRyxDQUNGLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FD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
|
package/build/src/types.d.ts
CHANGED
|
@@ -12,7 +12,7 @@ export interface ApiOptions {
|
|
|
12
12
|
indexerHost?: string;
|
|
13
13
|
timeout?: number;
|
|
14
14
|
}
|
|
15
|
-
export declare type BroadcastMode =
|
|
15
|
+
export declare type BroadcastMode = Method.BroadcastTxAsync | Method.BroadcastTxSync | Method.BroadcastTxCommit;
|
|
16
16
|
export interface Options {
|
|
17
17
|
transactionOptions?: TransactionOptions;
|
|
18
18
|
memo?: string;
|
package/build/src/types.js
CHANGED
|
@@ -21,4 +21,4 @@ var ClobPairId;
|
|
|
21
21
|
(function (ClobPairId) {
|
|
22
22
|
ClobPairId[ClobPairId["PERPETUAL_PAIR_BTC_USD"] = 0] = "PERPETUAL_PAIR_BTC_USD";
|
|
23
23
|
})(ClobPairId = exports.ClobPairId || (exports.ClobPairId = {}));
|
|
24
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
24
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQSxrREFBZ0M7QUFDaEMsc0RBQW9DO0FBa0NwQyxJQUFZLFVBRVg7QUFGRCxXQUFZLFVBQVU7SUFDcEIsK0VBQTBCLENBQUE7QUFDNUIsQ0FBQyxFQUZXLFVBQVUsR0FBVixrQkFBVSxLQUFWLGtCQUFVLFFBRXJCIn0=
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { BECH32_PREFIX } from '../src';
|
|
2
2
|
import { CompositeClient } from '../src/clients/composite-client';
|
|
3
3
|
import {
|
|
4
|
-
Network,
|
|
4
|
+
Network,
|
|
5
|
+
OrderExecution,
|
|
6
|
+
OrderSide,
|
|
7
|
+
OrderTimeInForce,
|
|
8
|
+
OrderType,
|
|
5
9
|
} from '../src/clients/constants';
|
|
6
10
|
import LocalWallet from '../src/clients/modules/local-wallet';
|
|
7
11
|
import { SubaccountInfo } from '../src/clients/subaccount';
|
|
@@ -28,7 +32,7 @@ async function test(): Promise<void> {
|
|
|
28
32
|
const timeInForceString = orderParams.timeInForce ?? 'GTT';
|
|
29
33
|
const timeInForce = OrderTimeInForce[timeInForceString as keyof typeof OrderTimeInForce];
|
|
30
34
|
const price = orderParams.price ?? 1350;
|
|
31
|
-
const timeInForceSeconds =
|
|
35
|
+
const timeInForceSeconds = timeInForce === OrderTimeInForce.GTT ? 60 : 0;
|
|
32
36
|
const postOnly = orderParams.postOnly ?? false;
|
|
33
37
|
const tx = await client.placeOrder(
|
|
34
38
|
subaccount,
|
|
@@ -50,11 +54,12 @@ async function test(): Promise<void> {
|
|
|
50
54
|
console.log(error.message);
|
|
51
55
|
}
|
|
52
56
|
|
|
53
|
-
await sleep(5000);
|
|
57
|
+
await sleep(5000); // wait for placeOrder to complete
|
|
54
58
|
}
|
|
55
59
|
}
|
|
56
60
|
|
|
57
|
-
test()
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
+
test()
|
|
62
|
+
.then(() => {})
|
|
63
|
+
.catch((error) => {
|
|
64
|
+
console.log(error.message);
|
|
65
|
+
});
|
package/examples/constants.ts
CHANGED
|
@@ -1,13 +1,19 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import {
|
|
2
|
+
Order_Side,
|
|
3
|
+
Order_TimeInForce,
|
|
4
|
+
} from '@dydxprotocol/v4-proto/src/codegen/dydxprotocol/clob/order';
|
|
2
5
|
import Long from 'long';
|
|
3
6
|
|
|
4
7
|
import { IPlaceOrder, OrderFlags } from '../src/clients/types';
|
|
5
8
|
|
|
6
9
|
export const DYDX_TEST_ADDRESS = 'dydx14zzueazeh0hj67cghhf9jypslcf9sh2n5k6art';
|
|
7
|
-
export const DYDX_TEST_PRIVATE_KEY =
|
|
8
|
-
|
|
10
|
+
export const DYDX_TEST_PRIVATE_KEY =
|
|
11
|
+
'e92a6595c934c991d3b3e987ea9b3125bf61a076deab3a9cb519787b7b3e8d77';
|
|
12
|
+
export const DYDX_TEST_MNEMONIC =
|
|
13
|
+
'mirror actor skill push coach wait confirm orchard lunch mobile athlete gossip awake miracle matter bus reopen team ladder lazy list timber render wait';
|
|
9
14
|
export const DYDX_LOCAL_ADDRESS = 'dydx199tqg4wdlnu4qjlxchpd7seg454937hjrknju4';
|
|
10
|
-
export const DYDX_LOCAL_MNEMONIC =
|
|
15
|
+
export const DYDX_LOCAL_MNEMONIC =
|
|
16
|
+
'merge panther lobster crazy road hollow amused security before critic about cliff exhibit cause coyote talent happy where lion river tobacco option coconut small';
|
|
11
17
|
|
|
12
18
|
export const MARKET_BTC_USD: string = 'BTC-USD';
|
|
13
19
|
export const PERPETUAL_PAIR_BTC_USD: number = 0;
|
|
@@ -1,86 +1,86 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
]
|
|
2
|
+
{
|
|
3
|
+
"type": "LIMIT",
|
|
4
|
+
"timeInForce": "GTT",
|
|
5
|
+
"postOnly": true,
|
|
6
|
+
"side": "BUY",
|
|
7
|
+
"price": 40000
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"type": "LIMIT",
|
|
11
|
+
"timeInForce": "GTT",
|
|
12
|
+
"postOnly": true,
|
|
13
|
+
"side": "SELL",
|
|
14
|
+
"price": 1000
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "LIMIT",
|
|
18
|
+
"timeInForce": "GTT",
|
|
19
|
+
"postOnly": false,
|
|
20
|
+
"side": "BUY",
|
|
21
|
+
"price": 40000
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"type": "LIMIT",
|
|
25
|
+
"timeInForce": "GTT",
|
|
26
|
+
"postOnly": false,
|
|
27
|
+
"side": "SELL",
|
|
28
|
+
"price": 1000
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"type": "LIMIT",
|
|
32
|
+
"timeInForce": "IOC",
|
|
33
|
+
"postOnly": true,
|
|
34
|
+
"side": "BUY",
|
|
35
|
+
"price": 40000
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"type": "LIMIT",
|
|
39
|
+
"timeInForce": "IOC",
|
|
40
|
+
"postOnly": true,
|
|
41
|
+
"side": "SELL",
|
|
42
|
+
"price": 1000
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"type": "LIMIT",
|
|
46
|
+
"timeInForce": "IOC",
|
|
47
|
+
"postOnly": false,
|
|
48
|
+
"side": "BUY",
|
|
49
|
+
"price": 40000
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"type": "LIMIT",
|
|
53
|
+
"timeInForce": "IOC",
|
|
54
|
+
"postOnly": false,
|
|
55
|
+
"side": "SELL",
|
|
56
|
+
"price": 1000
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
"type": "LIMIT",
|
|
60
|
+
"timeInForce": "FOK",
|
|
61
|
+
"postOnly": true,
|
|
62
|
+
"side": "BUY",
|
|
63
|
+
"price": 40000
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
"type": "LIMIT",
|
|
67
|
+
"timeInForce": "FOK",
|
|
68
|
+
"postOnly": true,
|
|
69
|
+
"side": "SELL",
|
|
70
|
+
"price": 1000
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
"type": "LIMIT",
|
|
74
|
+
"timeInForce": "FOK",
|
|
75
|
+
"postOnly": false,
|
|
76
|
+
"side": "BUY",
|
|
77
|
+
"price": 40000
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"type": "LIMIT",
|
|
81
|
+
"timeInForce": "FOK",
|
|
82
|
+
"postOnly": false,
|
|
83
|
+
"side": "SELL",
|
|
84
|
+
"price": 1000
|
|
85
|
+
}
|
|
86
|
+
]
|
|
@@ -1,42 +1,42 @@
|
|
|
1
1
|
[
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
]
|
|
2
|
+
{
|
|
3
|
+
"timeInForce": "DEFAULT",
|
|
4
|
+
"side": "BUY",
|
|
5
|
+
"price": 40000
|
|
6
|
+
},
|
|
7
|
+
{
|
|
8
|
+
"timeInForce": "DEFAULT",
|
|
9
|
+
"side": "SELL",
|
|
10
|
+
"price": 1000
|
|
11
|
+
},
|
|
12
|
+
{
|
|
13
|
+
"timeInForce": "FOK",
|
|
14
|
+
"side": "BUY",
|
|
15
|
+
"price": 1000
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"timeInForce": "FOK",
|
|
19
|
+
"side": "SELL",
|
|
20
|
+
"price": 40000
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
"timeInForce": "IOC",
|
|
24
|
+
"side": "BUY",
|
|
25
|
+
"price": 40000
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"timeInForce": "IOC",
|
|
29
|
+
"side": "SELL",
|
|
30
|
+
"price": 1000
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"timeInForce": "POST_ONLY",
|
|
34
|
+
"side": "BUY",
|
|
35
|
+
"price": 1000
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
"timeInForce": "POST_ONLY",
|
|
39
|
+
"side": "SELL",
|
|
40
|
+
"price": 40000
|
|
41
|
+
}
|
|
42
|
+
]
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import { BECH32_PREFIX, OrderFlags } from '../src';
|
|
2
2
|
import { CompositeClient } from '../src/clients/composite-client';
|
|
3
3
|
import {
|
|
4
|
-
Network,
|
|
4
|
+
Network,
|
|
5
|
+
OrderExecution,
|
|
6
|
+
OrderSide,
|
|
7
|
+
OrderTimeInForce,
|
|
8
|
+
OrderType,
|
|
5
9
|
} from '../src/clients/constants';
|
|
6
10
|
import LocalWallet from '../src/clients/modules/local-wallet';
|
|
7
11
|
import { SubaccountInfo } from '../src/clients/subaccount';
|
|
@@ -56,7 +60,7 @@ async function test(): Promise<void> {
|
|
|
56
60
|
console.log(error.message);
|
|
57
61
|
}
|
|
58
62
|
|
|
59
|
-
await sleep(5000);
|
|
63
|
+
await sleep(5000); // wait for placeOrder to complete
|
|
60
64
|
|
|
61
65
|
try {
|
|
62
66
|
// cancel the long term order
|
|
@@ -76,7 +80,8 @@ async function test(): Promise<void> {
|
|
|
76
80
|
}
|
|
77
81
|
}
|
|
78
82
|
|
|
79
|
-
test()
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
+
test()
|
|
84
|
+
.then(() => {})
|
|
85
|
+
.catch((error) => {
|
|
86
|
+
console.log(error.message);
|
|
87
|
+
});
|
|
@@ -49,7 +49,7 @@ async function test(): Promise<void> {
|
|
|
49
49
|
|
|
50
50
|
const sendTokenPayload = {
|
|
51
51
|
subaccountNumber: 0,
|
|
52
|
-
amount: '10',
|
|
52
|
+
amount: '10', // Dydx Token
|
|
53
53
|
recipient: 'dydx15ndn9c895f8ntck25qughtuck9spv2d9svw5qx',
|
|
54
54
|
};
|
|
55
55
|
const fees = await simulateTransferNativeToken(JSON.stringify(sendTokenPayload));
|
|
@@ -63,7 +63,7 @@ async function test(): Promise<void> {
|
|
|
63
63
|
|
|
64
64
|
const simulatePayload = {
|
|
65
65
|
subaccountNumber: 0,
|
|
66
|
-
amount: 20,
|
|
66
|
+
amount: 20, // In USDC i.e. $20.00
|
|
67
67
|
};
|
|
68
68
|
let stdFee = await simulateWithdraw(JSON.stringify(simulatePayload));
|
|
69
69
|
console.log(stdFee);
|
|
@@ -114,7 +114,7 @@ async function test(): Promise<void> {
|
|
|
114
114
|
}`;
|
|
115
115
|
console.log(squidPayload);
|
|
116
116
|
|
|
117
|
-
const encode = (str: string):string => Buffer.from(str, 'binary').toString('base64');
|
|
117
|
+
const encode = (str: string): string => Buffer.from(str, 'binary').toString('base64');
|
|
118
118
|
const encoded = encode(squidPayload);
|
|
119
119
|
|
|
120
120
|
tx = await withdrawToIBC(0, '13', encoded);
|
|
@@ -124,10 +124,11 @@ async function test(): Promise<void> {
|
|
|
124
124
|
}
|
|
125
125
|
}
|
|
126
126
|
|
|
127
|
-
test()
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
test()
|
|
128
|
+
.then(() => {})
|
|
129
|
+
.catch((error) => {
|
|
130
|
+
console.log(error.message);
|
|
131
|
+
});
|
|
131
132
|
|
|
132
133
|
const error = new UserError('client is not connected. Call connectClient() first');
|
|
133
134
|
const text = wrappedError(error);
|
|
@@ -10,18 +10,10 @@ import { sleep } from '../src/lib/utils';
|
|
|
10
10
|
import { DYDX_TEST_MNEMONIC } from './constants';
|
|
11
11
|
|
|
12
12
|
async function test(): Promise<void> {
|
|
13
|
-
const dydxClient = await ValidatorClient.connect(
|
|
14
|
-
Network.testnet().validatorConfig,
|
|
15
|
-
);
|
|
13
|
+
const dydxClient = await ValidatorClient.connect(Network.testnet().validatorConfig);
|
|
16
14
|
|
|
17
|
-
const dydxWallet = await LocalWallet.fromMnemonic(
|
|
18
|
-
|
|
19
|
-
BECH32_PREFIX,
|
|
20
|
-
);
|
|
21
|
-
const nobleWallet = await LocalWallet.fromMnemonic(
|
|
22
|
-
DYDX_TEST_MNEMONIC,
|
|
23
|
-
NOBLE_BECH32_PREFIX,
|
|
24
|
-
);
|
|
15
|
+
const dydxWallet = await LocalWallet.fromMnemonic(DYDX_TEST_MNEMONIC, BECH32_PREFIX);
|
|
16
|
+
const nobleWallet = await LocalWallet.fromMnemonic(DYDX_TEST_MNEMONIC, NOBLE_BECH32_PREFIX);
|
|
25
17
|
|
|
26
18
|
const client = new NobleClient('https://rpc.testnet.noble.strange.love', 'Noble example');
|
|
27
19
|
await client.connect(nobleWallet);
|
|
@@ -38,21 +30,17 @@ async function test(): Promise<void> {
|
|
|
38
30
|
sourcePort: 'transfer',
|
|
39
31
|
sourceChannel: 'channel-0',
|
|
40
32
|
token: {
|
|
41
|
-
denom:
|
|
42
|
-
'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
|
|
33
|
+
denom: 'ibc/8E27BA2D5493AF5636760E354E46004562C46AB7EC0CC4C1CA14E9E20E2545B5',
|
|
43
34
|
amount: '1000000',
|
|
44
35
|
},
|
|
45
36
|
sender: dydxWallet.address,
|
|
46
37
|
receiver: nobleWallet.address,
|
|
47
|
-
timeoutTimestamp: Long.fromNumber(
|
|
48
|
-
Math.floor(Date.now() / 1000) * 1e9 + 10 * 60 * 1e9,
|
|
49
|
-
),
|
|
38
|
+
timeoutTimestamp: Long.fromNumber(Math.floor(Date.now() / 1000) * 1e9 + 10 * 60 * 1e9),
|
|
50
39
|
},
|
|
51
40
|
};
|
|
52
41
|
|
|
53
42
|
const msgs = [ibcToNobleMsg];
|
|
54
|
-
const encodeObjects: Promise<EncodeObject[]> = new Promise((resolve) => resolve(msgs)
|
|
55
|
-
);
|
|
43
|
+
const encodeObjects: Promise<EncodeObject[]> = new Promise((resolve) => resolve(msgs));
|
|
56
44
|
|
|
57
45
|
await dydxClient.post.send(
|
|
58
46
|
dydxWallet,
|
|
@@ -84,15 +72,15 @@ async function test(): Promise<void> {
|
|
|
84
72
|
},
|
|
85
73
|
sender: nobleWallet.address,
|
|
86
74
|
receiver: dydxWallet.address,
|
|
87
|
-
timeoutTimestamp: Long.fromNumber(
|
|
88
|
-
Math.floor(Date.now() / 1000) * 1e9 + 10 * 60 * 1e9,
|
|
89
|
-
),
|
|
75
|
+
timeoutTimestamp: Long.fromNumber(Math.floor(Date.now() / 1000) * 1e9 + 10 * 60 * 1e9),
|
|
90
76
|
},
|
|
91
77
|
};
|
|
92
78
|
const fee = await client.simulateTransaction([ibcFromNobleMsg]);
|
|
93
79
|
|
|
94
|
-
ibcFromNobleMsg.value.token.amount = (
|
|
95
|
-
|
|
80
|
+
ibcFromNobleMsg.value.token.amount = (
|
|
81
|
+
parseInt(ibcFromNobleMsg.value.token.amount, 10) -
|
|
82
|
+
Math.floor(parseInt(fee.amount[0].amount, 10) * 1.4)
|
|
83
|
+
).toString();
|
|
96
84
|
|
|
97
85
|
await client.send([ibcFromNobleMsg]);
|
|
98
86
|
} catch (error) {
|
package/examples/optimal_node.ts
CHANGED
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
TESTNET_CHAIN_ID,
|
|
3
|
-
} from '../src/clients/constants';
|
|
1
|
+
import { TESTNET_CHAIN_ID } from '../src/clients/constants';
|
|
4
2
|
import { NetworkOptimizer } from '../src/network_optimizer';
|
|
5
3
|
|
|
6
4
|
async function testNodes(): Promise<void> {
|
|
@@ -37,10 +35,7 @@ async function testNodes(): Promise<void> {
|
|
|
37
35
|
|
|
38
36
|
try {
|
|
39
37
|
const optimizer = new NetworkOptimizer();
|
|
40
|
-
const endpoints = [
|
|
41
|
-
'https://example.com',
|
|
42
|
-
'https://example.org',
|
|
43
|
-
];
|
|
38
|
+
const endpoints = ['https://example.com', 'https://example.org'];
|
|
44
39
|
const optimal = await optimizer.findOptimalNode(endpoints, TESTNET_CHAIN_ID);
|
|
45
40
|
console.log(optimal);
|
|
46
41
|
} catch (error) {
|
|
@@ -52,9 +47,7 @@ async function testIndexers(): Promise<void> {
|
|
|
52
47
|
// all valid endpoints
|
|
53
48
|
try {
|
|
54
49
|
const optimizer = new NetworkOptimizer();
|
|
55
|
-
const endpoints = [
|
|
56
|
-
'https://indexer.v4testnet2.dydx.exchange',
|
|
57
|
-
];
|
|
50
|
+
const endpoints = ['https://indexer.v4testnet2.dydx.exchange'];
|
|
58
51
|
const optimal = await optimizer.findOptimalIndexer(endpoints);
|
|
59
52
|
console.log(optimal);
|
|
60
53
|
} catch (error) {
|
|
@@ -65,10 +58,7 @@ async function testIndexers(): Promise<void> {
|
|
|
65
58
|
|
|
66
59
|
try {
|
|
67
60
|
const optimizer = new NetworkOptimizer();
|
|
68
|
-
const endpoints = [
|
|
69
|
-
'https://example.com',
|
|
70
|
-
'https://example.org',
|
|
71
|
-
];
|
|
61
|
+
const endpoints = ['https://example.com', 'https://example.org'];
|
|
72
62
|
const optimal = await optimizer.findOptimalIndexer(endpoints);
|
|
73
63
|
console.log(optimal);
|
|
74
64
|
} catch (error) {
|