@d8x/perpetuals-sdk 0.1.12 → 0.2.0
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/dist/cjs/abi/testnet/IPerpetualManager.json +5215 -0
- package/dist/cjs/abi/testnet/LimitOrderBook.json +1075 -0
- package/dist/cjs/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
- package/dist/cjs/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
- package/dist/cjs/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
- package/dist/cjs/accountTrade.js +441 -0
- package/dist/cjs/accountTrade.js.map +1 -0
- package/dist/{src → cjs}/brokerTool.js +31 -84
- package/dist/cjs/brokerTool.js.map +1 -0
- package/dist/cjs/config/defaultConfig.json +47 -0
- package/dist/cjs/config/mockSwap.json +4 -0
- package/dist/cjs/config/priceFeedConfig.json +104 -0
- package/dist/cjs/config/symbolList.json +13 -0
- package/dist/cjs/d8XMath.js.map +1 -0
- package/dist/cjs/index.js +29 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/liquidatorTool.js +287 -0
- package/dist/cjs/liquidatorTool.js.map +1 -0
- package/dist/{src → cjs}/liquidityProviderTool.js +12 -65
- package/dist/cjs/liquidityProviderTool.js.map +1 -0
- package/dist/{src → cjs}/marketData.js +52 -134
- package/dist/cjs/marketData.js.map +1 -0
- package/dist/{src → cjs}/nodeSDKTypes.d.ts +5 -5
- package/dist/cjs/nodeSDKTypes.js +64 -0
- package/dist/cjs/nodeSDKTypes.js.map +1 -0
- package/dist/{src → cjs}/orderReferrerTool.d.ts +12 -5
- package/dist/{src → cjs}/orderReferrerTool.js +114 -112
- package/dist/cjs/orderReferrerTool.js.map +1 -0
- package/dist/{src → cjs}/perpetualDataHandler.d.ts +1 -1
- package/dist/{src → cjs}/perpetualDataHandler.js +47 -109
- package/dist/cjs/perpetualDataHandler.js.map +1 -0
- package/dist/{src → cjs}/perpetualEventHandler.d.ts +3 -3
- package/dist/{src → cjs}/perpetualEventHandler.js +12 -74
- package/dist/cjs/perpetualEventHandler.js.map +1 -0
- package/dist/cjs/priceFeeds.js +466 -0
- package/dist/cjs/priceFeeds.js.map +1 -0
- package/dist/{src → cjs}/traderDigests.js +7 -43
- package/dist/cjs/traderDigests.js.map +1 -0
- package/dist/{src → cjs}/traderInterface.js +13 -66
- package/dist/cjs/traderInterface.js.map +1 -0
- package/dist/{src → cjs}/triangulator.js +2 -17
- package/dist/cjs/triangulator.js.map +1 -0
- package/dist/{src → cjs}/utils.js +3 -29
- package/dist/cjs/utils.js.map +1 -0
- package/dist/cjs/version.d.ts +1 -0
- package/dist/{src → cjs}/version.js +1 -1
- package/dist/cjs/version.js.map +1 -0
- package/dist/{src → cjs}/writeAccessHandler.js +12 -65
- package/dist/cjs/writeAccessHandler.js.map +1 -0
- package/dist/esm/abi/ERC20.json +288 -0
- package/dist/esm/abi/MockTokenSwap.json +186 -0
- package/dist/{abi/testnet → esm/abi/central-park}/IPerpetualManager.json +404 -214
- package/dist/{abi/testnet → esm/abi/central-park}/LimitOrderBook.json +197 -15
- package/dist/esm/abi/central-park/LimitOrderBookFactory.json +135 -0
- package/dist/esm/abi/testnet/IPerpetualManager.json +5215 -0
- package/dist/esm/abi/testnet/LimitOrderBook.json +1075 -0
- package/dist/esm/abi/testnet/LimitOrderBookFactory.json +135 -0
- package/dist/esm/abi/zkevmTestnet/IPerpetualManager.json +5215 -0
- package/dist/esm/abi/zkevmTestnet/LimitOrderBook.json +1075 -0
- package/dist/esm/abi/zkevmTestnet/LimitOrderBookFactory.json +135 -0
- package/dist/esm/accountTrade.d.ts +221 -0
- package/dist/{src → esm}/accountTrade.js +22 -93
- package/dist/esm/accountTrade.js.map +1 -0
- package/dist/esm/brokerTool.d.ts +318 -0
- package/dist/esm/brokerTool.js +572 -0
- package/dist/esm/brokerTool.js.map +1 -0
- package/dist/esm/config/defaultConfig.json +47 -0
- package/dist/esm/config/mockSwap.json +4 -0
- package/dist/esm/config/priceFeedConfig.json +104 -0
- package/dist/esm/config/symbolList.json +13 -0
- package/dist/esm/d8XMath.d.ts +122 -0
- package/dist/esm/d8XMath.js +247 -0
- package/dist/esm/d8XMath.js.map +1 -0
- package/{src/index.ts → dist/esm/index.d.ts} +1 -15
- package/dist/esm/index.js +16 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/liquidatorTool.d.ts +158 -0
- package/dist/{src → esm}/liquidatorTool.js +10 -65
- package/dist/esm/liquidatorTool.js.map +1 -0
- package/dist/esm/liquidityProviderTool.d.ts +126 -0
- package/dist/esm/liquidityProviderTool.js +218 -0
- package/dist/esm/liquidityProviderTool.js.map +1 -0
- package/dist/esm/marketData.d.ts +309 -0
- package/dist/esm/marketData.js +1007 -0
- package/dist/esm/marketData.js.map +1 -0
- package/dist/esm/nodeSDKTypes.d.ts +266 -0
- package/dist/esm/nodeSDKTypes.js +60 -0
- package/dist/esm/nodeSDKTypes.js.map +1 -0
- package/dist/esm/orderReferrerTool.d.ts +196 -0
- package/dist/esm/orderReferrerTool.js +491 -0
- package/dist/esm/orderReferrerTool.js.map +1 -0
- package/dist/esm/perpetualDataHandler.d.ts +220 -0
- package/dist/esm/perpetualDataHandler.js +1060 -0
- package/dist/esm/perpetualDataHandler.js.map +1 -0
- package/dist/esm/perpetualEventHandler.d.ts +179 -0
- package/dist/esm/perpetualEventHandler.js +435 -0
- package/dist/esm/perpetualEventHandler.js.map +1 -0
- package/dist/esm/priceFeeds.d.ts +115 -0
- package/dist/{src → esm}/priceFeeds.js +16 -83
- package/dist/esm/priceFeeds.js.map +1 -0
- package/dist/esm/traderDigests.d.ts +21 -0
- package/dist/esm/traderDigests.js +80 -0
- package/dist/esm/traderDigests.js.map +1 -0
- package/dist/esm/traderInterface.d.ts +79 -0
- package/dist/esm/traderInterface.js +196 -0
- package/dist/esm/traderInterface.js.map +1 -0
- package/dist/esm/triangulator.d.ts +27 -0
- package/dist/esm/triangulator.js +110 -0
- package/dist/esm/triangulator.js.map +1 -0
- package/dist/esm/utils.d.ts +59 -0
- package/dist/esm/utils.js +138 -0
- package/dist/esm/utils.js.map +1 -0
- package/dist/esm/version.d.ts +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/dist/esm/writeAccessHandler.d.ts +50 -0
- package/dist/esm/writeAccessHandler.js +157 -0
- package/dist/esm/writeAccessHandler.js.map +1 -0
- package/package.json +16 -26
- package/dist/bundle.js +0 -36793
- package/dist/config/defaultConfig.json +0 -47
- package/dist/config/mockSwap.json +0 -4
- package/dist/config/priceFeedConfig.json +0 -104
- package/dist/config/symbolList.json +0 -13
- package/dist/src/index.js +0 -45
- package/dist/src/nodeSDKTypes.js +0 -115
- package/dist/src/version.d.ts +0 -1
- package/module.d.ts +0 -1
- package/src/accountTrade.ts +0 -392
- package/src/brokerTool.ts +0 -507
- package/src/d8XMath.ts +0 -319
- package/src/liquidatorTool.ts +0 -258
- package/src/liquidityProviderTool.ts +0 -186
- package/src/marketData.ts +0 -946
- package/src/nodeSDKTypes.ts +0 -293
- package/src/orderReferrerTool.ts +0 -389
- package/src/perpetualDataHandler.ts +0 -1061
- package/src/perpetualEventHandler.ts +0 -455
- package/src/priceFeeds.ts +0 -381
- package/src/traderDigests.ts +0 -91
- package/src/traderInterface.ts +0 -159
- package/src/triangulator.ts +0 -105
- package/src/utils.ts +0 -134
- package/src/version.ts +0 -1
- package/src/writeAccessHandler.ts +0 -127
- /package/dist/{abi → cjs/abi}/ERC20.json +0 -0
- /package/dist/{abi → cjs/abi}/MockTokenSwap.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/IPerpetualManager.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/LimitOrderBook.json +0 -0
- /package/dist/{abi → cjs/abi}/central-park/LimitOrderBookFactory.json +0 -0
- /package/dist/{abi → cjs/abi}/testnet/LimitOrderBookFactory.json +0 -0
- /package/dist/{src → cjs}/accountTrade.d.ts +0 -0
- /package/dist/{src → cjs}/brokerTool.d.ts +0 -0
- /package/dist/{src → cjs}/d8XMath.d.ts +0 -0
- /package/dist/{src → cjs}/d8XMath.js +0 -0
- /package/dist/{src → cjs}/index.d.ts +0 -0
- /package/dist/{src → cjs}/liquidatorTool.d.ts +0 -0
- /package/dist/{src → cjs}/liquidityProviderTool.d.ts +0 -0
- /package/dist/{src → cjs}/marketData.d.ts +0 -0
- /package/dist/{src → cjs}/priceFeeds.d.ts +0 -0
- /package/dist/{src → cjs}/traderDigests.d.ts +0 -0
- /package/dist/{src → cjs}/traderInterface.d.ts +0 -0
- /package/dist/{src → cjs}/triangulator.d.ts +0 -0
- /package/dist/{src → cjs}/utils.d.ts +0 -0
- /package/dist/{src → cjs}/writeAccessHandler.d.ts +0 -0
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"anonymous": false,
|
|
4
|
+
"inputs": [
|
|
5
|
+
{
|
|
6
|
+
"indexed": true,
|
|
7
|
+
"internalType": "address",
|
|
8
|
+
"name": "previousOwner",
|
|
9
|
+
"type": "address"
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"indexed": true,
|
|
13
|
+
"internalType": "address",
|
|
14
|
+
"name": "newOwner",
|
|
15
|
+
"type": "address"
|
|
16
|
+
}
|
|
17
|
+
],
|
|
18
|
+
"name": "OwnershipTransferred",
|
|
19
|
+
"type": "event"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"anonymous": false,
|
|
23
|
+
"inputs": [
|
|
24
|
+
{
|
|
25
|
+
"indexed": true,
|
|
26
|
+
"internalType": "uint24",
|
|
27
|
+
"name": "perpetualId",
|
|
28
|
+
"type": "uint24"
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
"indexed": false,
|
|
32
|
+
"internalType": "address",
|
|
33
|
+
"name": "perpManagerAddress",
|
|
34
|
+
"type": "address"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"indexed": false,
|
|
38
|
+
"internalType": "address",
|
|
39
|
+
"name": "limitOrderBookAddress",
|
|
40
|
+
"type": "address"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
"name": "PerpetualLimitOrderBookDeployed",
|
|
44
|
+
"type": "event"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"inputs": [
|
|
48
|
+
{
|
|
49
|
+
"internalType": "address",
|
|
50
|
+
"name": "_perpetualManagerAddr",
|
|
51
|
+
"type": "address"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"internalType": "uint24",
|
|
55
|
+
"name": "_perpetualId",
|
|
56
|
+
"type": "uint24"
|
|
57
|
+
}
|
|
58
|
+
],
|
|
59
|
+
"name": "deployLimitOrderBookProxy",
|
|
60
|
+
"outputs": [],
|
|
61
|
+
"stateMutability": "nonpayable",
|
|
62
|
+
"type": "function"
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
"inputs": [
|
|
66
|
+
{
|
|
67
|
+
"internalType": "uint24",
|
|
68
|
+
"name": "_perpetualId",
|
|
69
|
+
"type": "uint24"
|
|
70
|
+
}
|
|
71
|
+
],
|
|
72
|
+
"name": "getOrderBookAddress",
|
|
73
|
+
"outputs": [
|
|
74
|
+
{
|
|
75
|
+
"internalType": "address",
|
|
76
|
+
"name": "",
|
|
77
|
+
"type": "address"
|
|
78
|
+
}
|
|
79
|
+
],
|
|
80
|
+
"stateMutability": "view",
|
|
81
|
+
"type": "function"
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
"inputs": [
|
|
85
|
+
{
|
|
86
|
+
"internalType": "uint24",
|
|
87
|
+
"name": "",
|
|
88
|
+
"type": "uint24"
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"name": "orderBooks",
|
|
92
|
+
"outputs": [
|
|
93
|
+
{
|
|
94
|
+
"internalType": "address",
|
|
95
|
+
"name": "",
|
|
96
|
+
"type": "address"
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"stateMutability": "view",
|
|
100
|
+
"type": "function"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"inputs": [],
|
|
104
|
+
"name": "owner",
|
|
105
|
+
"outputs": [
|
|
106
|
+
{
|
|
107
|
+
"internalType": "address",
|
|
108
|
+
"name": "",
|
|
109
|
+
"type": "address"
|
|
110
|
+
}
|
|
111
|
+
],
|
|
112
|
+
"stateMutability": "view",
|
|
113
|
+
"type": "function"
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"inputs": [],
|
|
117
|
+
"name": "renounceOwnership",
|
|
118
|
+
"outputs": [],
|
|
119
|
+
"stateMutability": "nonpayable",
|
|
120
|
+
"type": "function"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"inputs": [
|
|
124
|
+
{
|
|
125
|
+
"internalType": "address",
|
|
126
|
+
"name": "newOwner",
|
|
127
|
+
"type": "address"
|
|
128
|
+
}
|
|
129
|
+
],
|
|
130
|
+
"name": "transferOwnership",
|
|
131
|
+
"outputs": [],
|
|
132
|
+
"stateMutability": "nonpayable",
|
|
133
|
+
"type": "function"
|
|
134
|
+
}
|
|
135
|
+
]
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { ethers } from "ethers";
|
|
2
|
+
import { NodeSDKConfig, Order, OrderResponse, PerpetualStaticInfo, PriceFeedSubmission } from "./nodeSDKTypes";
|
|
3
|
+
import TraderDigests from "./traderDigests";
|
|
4
|
+
import WriteAccessHandler from "./writeAccessHandler";
|
|
5
|
+
/**
|
|
6
|
+
* Functions to create, submit and cancel orders on the exchange.
|
|
7
|
+
* This class requires a private key and executes smart-contract interactions that
|
|
8
|
+
* require gas-payments.
|
|
9
|
+
* @extends WriteAccessHandler
|
|
10
|
+
*/
|
|
11
|
+
export default class AccountTrade extends WriteAccessHandler {
|
|
12
|
+
protected digestTool: TraderDigests;
|
|
13
|
+
/**
|
|
14
|
+
* Constructor
|
|
15
|
+
* @param {NodeSDKConfig} config Configuration object, see PerpetualDataHandler.
|
|
16
|
+
* readSDKConfig.
|
|
17
|
+
* @example
|
|
18
|
+
* import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
|
|
19
|
+
* async function main() {
|
|
20
|
+
* console.log(AccountTrade);
|
|
21
|
+
* // load configuration for testnet
|
|
22
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
23
|
+
* // AccountTrade (authentication required, PK is an environment variable with a private key)
|
|
24
|
+
* const pk: string = <string>process.env.PK;
|
|
25
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
26
|
+
* // Create a proxy instance to access the blockchain
|
|
27
|
+
* await accTrade.createProxyInstance();
|
|
28
|
+
* }
|
|
29
|
+
* main();
|
|
30
|
+
*
|
|
31
|
+
* @param {string} privateKey Private key of account that trades.
|
|
32
|
+
*/
|
|
33
|
+
constructor(config: NodeSDKConfig, privateKey: string);
|
|
34
|
+
/**
|
|
35
|
+
* Cancels an existing order on the exchange.
|
|
36
|
+
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
37
|
+
* @param {string} orderId ID of the order to be cancelled.
|
|
38
|
+
* @example
|
|
39
|
+
* import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
|
|
40
|
+
* async function main() {
|
|
41
|
+
* console.log(AccountTrade);
|
|
42
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
43
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
44
|
+
* const pk: string = <string>process.env.PK;
|
|
45
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
46
|
+
* await accTrade.createProxyInstance();
|
|
47
|
+
* // cancel order
|
|
48
|
+
* let cancelTransaction = accTrade.cancelOrder("MATIC-USD-MATIC",
|
|
49
|
+
* "0x4639061a58dcf34f4c9c703f49f1cb00d6a4fba490d62c0eb4a4fb06e1c76c19")
|
|
50
|
+
* console.log(cancelTransaction);
|
|
51
|
+
* }
|
|
52
|
+
* main();
|
|
53
|
+
* @returns {ContractTransaction} Contract Transaction (containing events).
|
|
54
|
+
*/
|
|
55
|
+
cancelOrder(symbol: string, orderId: string, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
|
|
56
|
+
/**
|
|
57
|
+
* Submits an order to the exchange.
|
|
58
|
+
* @param {Order} order Order structure. As a minimum the structure needs to
|
|
59
|
+
* specify symbol, side, type and quantity.
|
|
60
|
+
* @example
|
|
61
|
+
* import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
|
|
62
|
+
* async function main() {
|
|
63
|
+
* console.log(AccountTrade);
|
|
64
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
65
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
66
|
+
* const pk: string = <string>process.env.PK;
|
|
67
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
68
|
+
* await accTrade.createProxyInstance();
|
|
69
|
+
* // set allowance
|
|
70
|
+
* await accTrade.setAllowance("MATIC");
|
|
71
|
+
* // set an order
|
|
72
|
+
* let order: Order = {
|
|
73
|
+
* symbol: "MATIC-USD-MATIC",
|
|
74
|
+
* side: "BUY",
|
|
75
|
+
* type: "MARKET",
|
|
76
|
+
* quantity: 100,
|
|
77
|
+
* leverage: 2,
|
|
78
|
+
* timestamp: Date.now()/1000,
|
|
79
|
+
* };
|
|
80
|
+
* let orderTransaction = await accTrade.order(order);
|
|
81
|
+
* console.log(orderTransaction);
|
|
82
|
+
* }
|
|
83
|
+
* main();
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* import { AccountTrade, PerpetualDataHandler, Order } from '@d8x/perpetuals-sdk';
|
|
87
|
+
* async function main() {
|
|
88
|
+
* console.log(AccountTrade);
|
|
89
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
90
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
91
|
+
* const pk: string = <string>process.env.PK;
|
|
92
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
93
|
+
* await accTrade.createProxyInstance();
|
|
94
|
+
* // set allowance
|
|
95
|
+
* await accTrade.setAllowance("MATIC");
|
|
96
|
+
* // set an order
|
|
97
|
+
* let order: Order = {
|
|
98
|
+
* symbol: "MATIC-USD-MATIC",
|
|
99
|
+
* side: "BUY",
|
|
100
|
+
* type: "LIMIT",
|
|
101
|
+
* limitPrice: 1,
|
|
102
|
+
* quantity: 5,
|
|
103
|
+
* leverage: 2,
|
|
104
|
+
* timestamp: Date.now() / 1000,
|
|
105
|
+
* deadline: Date.now() / 1000 + 8*60*60, // order expires 8 hours from now
|
|
106
|
+
* };
|
|
107
|
+
* let orderTransaction = await accTrade.order(order);
|
|
108
|
+
* console.log(orderTransaction);
|
|
109
|
+
* }
|
|
110
|
+
* main();
|
|
111
|
+
*
|
|
112
|
+
* @returns {ContractTransaction} Contract Transaction (containing events).
|
|
113
|
+
*/
|
|
114
|
+
order(order: Order, parentChildIds?: [string, string]): Promise<OrderResponse>;
|
|
115
|
+
/**
|
|
116
|
+
* Fee charged by the exchange for trading any perpetual on a given pool.
|
|
117
|
+
* It accounts for the current trader's fee tier (based on the trader's D8X balance and trading volume).
|
|
118
|
+
* If trading with a broker, it also accounts for the selected broker's fee tier.
|
|
119
|
+
* Note that this result only includes exchange fees, additional broker fees are not included.
|
|
120
|
+
* @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
|
|
121
|
+
* @param {string=} brokerAddr Optional address of a broker this trader may use to trade under.
|
|
122
|
+
* @example
|
|
123
|
+
* import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
|
|
124
|
+
* async function main() {
|
|
125
|
+
* console.log(AccountTrade);
|
|
126
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
127
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
128
|
+
* const pk: string = <string>process.env.PK;
|
|
129
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
130
|
+
* await accTrade.createProxyInstance();
|
|
131
|
+
* // query exchange fee
|
|
132
|
+
* let fees = await accTrade.queryExchangeFee("MATIC");
|
|
133
|
+
* console.log(fees);
|
|
134
|
+
* }
|
|
135
|
+
* main();
|
|
136
|
+
*
|
|
137
|
+
* @returns Exchange fee, in decimals (i.e. 0.1% is 0.001).
|
|
138
|
+
*/
|
|
139
|
+
queryExchangeFee(poolSymbolName: string, brokerAddr?: string): Promise<number>;
|
|
140
|
+
/**
|
|
141
|
+
* Exponentially weighted EMA of the total USD trading volume of all trades performed by this trader.
|
|
142
|
+
* The weights are chosen so that in average this coincides with the 30 day volume.
|
|
143
|
+
* @param {string} poolSymbolName Pool symbol name (e.g. MATIC, USDC, etc).
|
|
144
|
+
* @example
|
|
145
|
+
* import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
|
|
146
|
+
* async function main() {
|
|
147
|
+
* console.log(AccountTrade);
|
|
148
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
149
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
150
|
+
* const pk: string = <string>process.env.PK;
|
|
151
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
152
|
+
* await accTrade.createProxyInstance();
|
|
153
|
+
* // query 30 day volume
|
|
154
|
+
* let vol = await accTrade.getCurrentTraderVolume("MATIC");
|
|
155
|
+
* console.log(vol);
|
|
156
|
+
* }
|
|
157
|
+
* main();
|
|
158
|
+
*
|
|
159
|
+
* @returns {number} Current trading volume for this trader, in USD.
|
|
160
|
+
*/
|
|
161
|
+
getCurrentTraderVolume(poolSymbolName: string): Promise<number>;
|
|
162
|
+
/**
|
|
163
|
+
*
|
|
164
|
+
* @param symbol Symbol of the form ETH-USD-MATIC.
|
|
165
|
+
* @example
|
|
166
|
+
* import { AccountTrade, PerpetualDataHandler } from '@d8x/perpetuals-sdk';
|
|
167
|
+
* async function main() {
|
|
168
|
+
* console.log(AccountTrade);
|
|
169
|
+
* // setup (authentication required, PK is an environment variable with a private key)
|
|
170
|
+
* const config = PerpetualDataHandler.readSDKConfig("testnet");
|
|
171
|
+
* const pk: string = <string>process.env.PK;
|
|
172
|
+
* let accTrade = new AccountTrade(config, pk);
|
|
173
|
+
* await accTrade.createProxyInstance();
|
|
174
|
+
* // get order IDs
|
|
175
|
+
* let orderIds = await accTrade.getOrderIds("MATIC-USD-MATIC");
|
|
176
|
+
* console.log(orderIds);
|
|
177
|
+
* }
|
|
178
|
+
* main();
|
|
179
|
+
*
|
|
180
|
+
* @returns {string[]} Array of Ids for all the orders currently open by this trader.
|
|
181
|
+
*/
|
|
182
|
+
getOrderIds(symbol: string): Promise<string[]>;
|
|
183
|
+
/**
|
|
184
|
+
* Static order function
|
|
185
|
+
* @param order order type (not SmartContractOrder but Order)
|
|
186
|
+
* @param traderAddr trader address
|
|
187
|
+
* @param symbolToPerpetualMap maps the symbol (MATIC-USD-MATIC)-type format to the perpetual id
|
|
188
|
+
* @param proxyContract contract instance of D8X perpetuals
|
|
189
|
+
* @param orderBookContract order book contract or null
|
|
190
|
+
* @param chainId chain Id of network
|
|
191
|
+
* @param signer instance of ethers wallet that can write
|
|
192
|
+
* @param gasLimit gas limit to be used for the trade
|
|
193
|
+
* @returns [transaction hash, order id]
|
|
194
|
+
* @ignore
|
|
195
|
+
*/
|
|
196
|
+
_order(order: Order, traderAddr: string, symbolToPerpetualMap: Map<string, PerpetualStaticInfo>, proxyContract: ethers.Contract, orderBookContract: ethers.Contract, chainId: number, signer: ethers.Signer, gasLimit: number, parentChildIds?: [string, string]): Promise<OrderResponse>;
|
|
197
|
+
protected _cancelOrder(symbol: string, orderId: string, orderBookContract: ethers.Contract | null, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
|
|
198
|
+
/**
|
|
199
|
+
* Creates a signature
|
|
200
|
+
* @param order smart-contract-type order
|
|
201
|
+
* @param chainId chainId of network
|
|
202
|
+
* @param isNewOrder true unless we cancel
|
|
203
|
+
* @param signer ethereum-type wallet
|
|
204
|
+
* @param proxyAddress address of the contract
|
|
205
|
+
* @returns signature as string
|
|
206
|
+
* @ignore
|
|
207
|
+
*/
|
|
208
|
+
private _createSignature;
|
|
209
|
+
/**
|
|
210
|
+
*
|
|
211
|
+
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
212
|
+
* @param {number} amount How much collateral to add, in units of collateral currency, e.g. MATIC
|
|
213
|
+
*/
|
|
214
|
+
addCollateral(symbol: string, amount: number, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
|
|
215
|
+
/**
|
|
216
|
+
*
|
|
217
|
+
* @param {string} symbol Symbol of the form ETH-USD-MATIC.
|
|
218
|
+
* @param {number} amount How much collateral to remove, in units of collateral currency, e.g. MATIC
|
|
219
|
+
*/
|
|
220
|
+
removeCollateral(symbol: string, amount: number, submission?: PriceFeedSubmission): Promise<ethers.ContractTransaction>;
|
|
221
|
+
}
|
|
@@ -1,82 +1,11 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
return function (d, b) {
|
|
10
|
-
if (typeof b !== "function" && b !== null)
|
|
11
|
-
throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
|
|
12
|
-
extendStatics(d, b);
|
|
13
|
-
function __() { this.constructor = d; }
|
|
14
|
-
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
|
15
|
-
};
|
|
16
|
-
})();
|
|
17
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
18
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
19
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
20
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
21
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
22
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
23
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
24
|
-
});
|
|
25
|
-
};
|
|
26
|
-
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
27
|
-
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
28
|
-
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
29
|
-
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
30
|
-
function step(op) {
|
|
31
|
-
if (f) throw new TypeError("Generator is already executing.");
|
|
32
|
-
while (g && (g = 0, op[0] && (_ = 0)), _) try {
|
|
33
|
-
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
|
34
|
-
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
35
|
-
switch (op[0]) {
|
|
36
|
-
case 0: case 1: t = op; break;
|
|
37
|
-
case 4: _.label++; return { value: op[1], done: false };
|
|
38
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
39
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
40
|
-
default:
|
|
41
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
42
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
43
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
44
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
45
|
-
if (t[2]) _.ops.pop();
|
|
46
|
-
_.trys.pop(); continue;
|
|
47
|
-
}
|
|
48
|
-
op = body.call(thisArg, _);
|
|
49
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
50
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
51
|
-
}
|
|
52
|
-
};
|
|
53
|
-
var __read = (this && this.__read) || function (o, n) {
|
|
54
|
-
var m = typeof Symbol === "function" && o[Symbol.iterator];
|
|
55
|
-
if (!m) return o;
|
|
56
|
-
var i = m.call(o), r, ar = [], e;
|
|
57
|
-
try {
|
|
58
|
-
while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
|
|
59
|
-
}
|
|
60
|
-
catch (error) { e = { error: error }; }
|
|
61
|
-
finally {
|
|
62
|
-
try {
|
|
63
|
-
if (r && !r.done && (m = i["return"])) m.call(i);
|
|
64
|
-
}
|
|
65
|
-
finally { if (e) throw e.error; }
|
|
66
|
-
}
|
|
67
|
-
return ar;
|
|
68
|
-
};
|
|
69
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
70
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
71
|
-
};
|
|
72
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
73
|
-
var d8XMath_1 = require("./d8XMath");
|
|
74
|
-
var marketData_1 = __importDefault(require("./marketData"));
|
|
75
|
-
var nodeSDKTypes_1 = require("./nodeSDKTypes");
|
|
76
|
-
var perpetualDataHandler_1 = __importDefault(require("./perpetualDataHandler"));
|
|
77
|
-
var traderDigests_1 = __importDefault(require("./traderDigests"));
|
|
78
|
-
var writeAccessHandler_1 = __importDefault(require("./writeAccessHandler"));
|
|
79
|
-
var buffer_1 = require("buffer");
|
|
1
|
+
import { __awaiter, __extends, __generator, __read } from "tslib";
|
|
2
|
+
import { ABK64x64ToFloat, floatToABK64x64 } from "./d8XMath";
|
|
3
|
+
import MarketData from "./marketData";
|
|
4
|
+
import { ZERO_ADDRESS, } from "./nodeSDKTypes";
|
|
5
|
+
import PerpetualDataHandler from "./perpetualDataHandler";
|
|
6
|
+
import TraderDigests from "./traderDigests";
|
|
7
|
+
import WriteAccessHandler from "./writeAccessHandler";
|
|
8
|
+
import { Buffer } from "buffer";
|
|
80
9
|
/**
|
|
81
10
|
* Functions to create, submit and cancel orders on the exchange.
|
|
82
11
|
* This class requires a private key and executes smart-contract interactions that
|
|
@@ -107,7 +36,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
107
36
|
*/
|
|
108
37
|
function AccountTrade(config, privateKey) {
|
|
109
38
|
var _this = _super.call(this, config, privateKey) || this;
|
|
110
|
-
_this.digestTool = new
|
|
39
|
+
_this.digestTool = new TraderDigests();
|
|
111
40
|
return _this;
|
|
112
41
|
}
|
|
113
42
|
/**
|
|
@@ -221,7 +150,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
221
150
|
if (this.proxyContract == null || this.signer == null) {
|
|
222
151
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
223
152
|
}
|
|
224
|
-
minSize =
|
|
153
|
+
minSize = PerpetualDataHandler._getMinimalPositionSize(order.symbol, this.symbolToPerpStaticInfo);
|
|
225
154
|
if (Math.abs(order.quantity) < minSize) {
|
|
226
155
|
throw Error("order size too small");
|
|
227
156
|
}
|
|
@@ -268,9 +197,9 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
268
197
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
269
198
|
}
|
|
270
199
|
if (typeof brokerAddr == "undefined") {
|
|
271
|
-
brokerAddr =
|
|
200
|
+
brokerAddr = ZERO_ADDRESS;
|
|
272
201
|
}
|
|
273
|
-
poolId =
|
|
202
|
+
poolId = PerpetualDataHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
274
203
|
return [4 /*yield*/, this.proxyContract.queryExchangeFee(poolId, this.traderAddr, brokerAddr)];
|
|
275
204
|
case 1:
|
|
276
205
|
feeTbps = _a.sent();
|
|
@@ -309,11 +238,11 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
309
238
|
if (this.proxyContract == null || this.signer == null) {
|
|
310
239
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
311
240
|
}
|
|
312
|
-
poolId =
|
|
241
|
+
poolId = WriteAccessHandler._getPoolIdFromSymbol(poolSymbolName, this.poolStaticInfos);
|
|
313
242
|
return [4 /*yield*/, this.proxyContract.getCurrentTraderVolume(poolId, this.traderAddr)];
|
|
314
243
|
case 1:
|
|
315
244
|
volume = _a.sent();
|
|
316
|
-
return [2 /*return*/,
|
|
245
|
+
return [2 /*return*/, ABK64x64ToFloat(volume)];
|
|
317
246
|
}
|
|
318
247
|
});
|
|
319
248
|
});
|
|
@@ -348,7 +277,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
348
277
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
349
278
|
}
|
|
350
279
|
orderBookContract = this.getOrderBookContract(symbol);
|
|
351
|
-
return [4 /*yield*/,
|
|
280
|
+
return [4 /*yield*/, MarketData.orderIdsOfTrader(this.traderAddr, orderBookContract)];
|
|
352
281
|
case 1: return [2 /*return*/, _a.sent()];
|
|
353
282
|
}
|
|
354
283
|
});
|
|
@@ -391,7 +320,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
391
320
|
};
|
|
392
321
|
AccountTrade.prototype._cancelOrder = function (symbol, orderId, orderBookContract, submission) {
|
|
393
322
|
return __awaiter(this, void 0, void 0, function () {
|
|
394
|
-
var scOrder, _a, signature
|
|
323
|
+
var scOrder, _a, signature;
|
|
395
324
|
return __generator(this, function (_b) {
|
|
396
325
|
switch (_b.label) {
|
|
397
326
|
case 0:
|
|
@@ -408,7 +337,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
408
337
|
scOrder = _b.sent();
|
|
409
338
|
return [4 /*yield*/, this._createSignature(scOrder, this.chainId, false, this.signer, this.proxyAddr)];
|
|
410
339
|
case 4:
|
|
411
|
-
_a = __read.apply(void 0, [_b.sent(),
|
|
340
|
+
_a = __read.apply(void 0, [_b.sent(), 1]), signature = _a[0];
|
|
412
341
|
return [4 /*yield*/, orderBookContract.cancelOrder(orderId, signature, submission.priceFeedVaas, submission.timestamps, {
|
|
413
342
|
value: submission.timestamps.length * this.PRICE_UPDATE_FEE_GWEI,
|
|
414
343
|
})];
|
|
@@ -435,7 +364,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
435
364
|
case 0: return [4 /*yield*/, this.digestTool.createDigest(order, chainId, isNewOrder, proxyAddress)];
|
|
436
365
|
case 1:
|
|
437
366
|
digest = _a.sent();
|
|
438
|
-
digestBuffer =
|
|
367
|
+
digestBuffer = Buffer.from(digest.substring(2, digest.length), "hex");
|
|
439
368
|
return [4 /*yield*/, signer.signMessage(digestBuffer)];
|
|
440
369
|
case 2:
|
|
441
370
|
signature = _a.sent();
|
|
@@ -459,7 +388,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
459
388
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
460
389
|
}
|
|
461
390
|
perpId = this.getPerpIdFromSymbol(symbol);
|
|
462
|
-
fAmountCC =
|
|
391
|
+
fAmountCC = floatToABK64x64(amount);
|
|
463
392
|
if (!(submission == undefined)) return [3 /*break*/, 2];
|
|
464
393
|
return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
|
|
465
394
|
case 1:
|
|
@@ -489,7 +418,7 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
489
418
|
throw Error("no proxy contract or wallet initialized. Use createProxyInstance().");
|
|
490
419
|
}
|
|
491
420
|
perpId = this.getPerpIdFromSymbol(symbol);
|
|
492
|
-
fAmountCC =
|
|
421
|
+
fAmountCC = floatToABK64x64(amount);
|
|
493
422
|
if (!(submission == undefined)) return [3 /*break*/, 2];
|
|
494
423
|
return [4 /*yield*/, this.fetchLatestFeedPriceInfo(symbol)];
|
|
495
424
|
case 1:
|
|
@@ -505,6 +434,6 @@ var AccountTrade = /** @class */ (function (_super) {
|
|
|
505
434
|
});
|
|
506
435
|
};
|
|
507
436
|
return AccountTrade;
|
|
508
|
-
}(
|
|
509
|
-
|
|
437
|
+
}(WriteAccessHandler));
|
|
438
|
+
export default AccountTrade;
|
|
510
439
|
//# sourceMappingURL=accountTrade.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accountTrade.js","sourceRoot":"","sources":["../../src/accountTrade.ts"],"names":[],"mappings":"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"}
|