@drift-labs/sdk 0.2.0-master.25 → 0.2.0-master.26
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/lib/accounts/pollingClearingHouseAccountSubscriber.d.ts +13 -13
- package/lib/accounts/pollingClearingHouseAccountSubscriber.js +27 -27
- package/lib/accounts/types.d.ts +8 -9
- package/lib/accounts/webSocketClearingHouseAccountSubscriber.d.ts +14 -14
- package/lib/accounts/webSocketClearingHouseAccountSubscriber.js +35 -34
- package/lib/addresses/pda.d.ts +7 -6
- package/lib/addresses/pda.js +31 -27
- package/lib/admin.d.ts +9 -6
- package/lib/admin.js +83 -42
- package/lib/clearingHouse.d.ts +69 -42
- package/lib/clearingHouse.js +753 -277
- package/lib/clearingHouseConfig.d.ts +2 -2
- package/lib/clearingHouseUser.d.ts +16 -16
- package/lib/clearingHouseUser.js +139 -119
- package/lib/config.d.ts +7 -7
- package/lib/config.js +20 -20
- package/lib/constants/numericConstants.d.ts +12 -12
- package/lib/constants/numericConstants.js +13 -13
- package/lib/constants/{markets.d.ts → perpMarkets.d.ts} +5 -5
- package/{src/constants/markets.js → lib/constants/perpMarkets.js} +4 -4
- package/lib/constants/{banks.d.ts → spotMarkets.d.ts} +6 -6
- package/lib/constants/{banks.js → spotMarkets.js} +16 -16
- package/lib/events/types.d.ts +2 -1
- package/lib/events/types.js +1 -0
- package/lib/examples/makeTradeExample.js +7 -7
- package/lib/idl/clearing_house.json +1008 -279
- package/lib/index.d.ts +5 -3
- package/lib/index.js +5 -3
- package/lib/math/amm.d.ts +2 -2
- package/lib/math/amm.js +1 -1
- package/lib/math/funding.d.ts +6 -6
- package/lib/math/funding.js +2 -1
- package/lib/math/margin.d.ts +4 -4
- package/lib/math/margin.js +18 -11
- package/lib/math/market.d.ts +10 -9
- package/lib/math/market.js +29 -6
- package/lib/math/oracles.d.ts +2 -1
- package/lib/math/oracles.js +11 -1
- package/lib/math/orders.d.ts +5 -5
- package/lib/math/position.d.ts +13 -13
- package/lib/math/position.js +19 -19
- package/lib/math/spotBalance.d.ts +19 -0
- package/lib/math/spotBalance.js +176 -0
- package/lib/math/spotMarket.d.ts +4 -0
- package/lib/math/spotMarket.js +8 -0
- package/lib/math/spotPosition.d.ts +2 -0
- package/lib/math/spotPosition.js +8 -0
- package/lib/math/state.js +2 -2
- package/lib/math/trade.d.ts +4 -4
- package/lib/orderParams.d.ts +4 -4
- package/lib/orderParams.js +12 -4
- package/lib/serum/serumSubscriber.d.ts +23 -0
- package/lib/serum/serumSubscriber.js +41 -0
- package/lib/serum/types.d.ts +11 -0
- package/lib/serum/types.js +2 -0
- package/lib/tx/retryTxSender.d.ts +1 -1
- package/lib/tx/retryTxSender.js +4 -2
- package/lib/tx/types.d.ts +1 -1
- package/lib/types.d.ts +123 -33
- package/lib/types.js +31 -9
- package/my-script/.env +7 -0
- package/my-script/getUserStats.ts +106 -0
- package/my-script/multiConnections.ts +119 -0
- package/my-script/test-regex.ts +11 -0
- package/my-script/utils.ts +52 -0
- package/package.json +1 -1
- package/src/accounts/bulkAccountLoader.js +249 -0
- package/src/accounts/bulkUserStatsSubscription.js +75 -0
- package/src/accounts/bulkUserSubscription.js +75 -0
- package/src/accounts/fetch.js +92 -0
- package/src/accounts/pollingClearingHouseAccountSubscriber.js +465 -0
- package/src/accounts/pollingClearingHouseAccountSubscriber.ts +38 -38
- package/src/accounts/pollingOracleSubscriber.js +156 -0
- package/src/accounts/pollingTokenAccountSubscriber.js +141 -0
- package/src/accounts/pollingUserAccountSubscriber.js +208 -0
- package/src/accounts/pollingUserStatsAccountSubscriber.js +208 -0
- package/src/accounts/types.js +28 -0
- package/src/accounts/types.ts +11 -9
- package/src/accounts/utils.js +7 -0
- package/src/accounts/webSocketAccountSubscriber.js +138 -0
- package/src/accounts/webSocketClearingHouseAccountSubscriber.js +433 -0
- package/src/accounts/webSocketClearingHouseAccountSubscriber.ts +59 -52
- package/src/accounts/webSocketUserAccountSubscriber.js +113 -0
- package/src/accounts/webSocketUserStatsAccountSubsriber.js +113 -0
- package/src/addresses/pda.js +186 -0
- package/src/addresses/pda.ts +49 -44
- package/src/admin.js +1284 -0
- package/src/admin.ts +140 -47
- package/src/assert/assert.js +1 -1
- package/src/clearingHouse.js +3433 -0
- package/src/clearingHouse.ts +1083 -378
- package/src/clearingHouseConfig.js +2 -0
- package/src/clearingHouseConfig.ts +2 -2
- package/src/clearingHouseUser.js +874 -0
- package/src/clearingHouseUser.ts +232 -168
- package/src/clearingHouseUserConfig.js +2 -0
- package/src/clearingHouseUserStats.js +115 -0
- package/src/clearingHouseUserStatsConfig.js +2 -0
- package/src/config.js +80 -0
- package/src/config.ts +29 -29
- package/src/constants/numericConstants.js +18 -11
- package/src/constants/numericConstants.ts +17 -15
- package/{lib/constants/markets.js → src/constants/perpMarkets.js} +11 -11
- package/src/constants/{markets.ts → perpMarkets.ts} +5 -5
- package/src/constants/spotMarkets.js +51 -0
- package/src/constants/{banks.ts → spotMarkets.ts} +19 -19
- package/src/events/eventList.js +66 -23
- package/src/events/eventSubscriber.js +202 -0
- package/src/events/fetchLogs.js +117 -0
- package/src/events/pollingLogProvider.js +113 -0
- package/src/events/sort.js +41 -0
- package/src/events/txEventCache.js +22 -19
- package/src/events/types.js +25 -0
- package/src/events/types.ts +3 -0
- package/src/events/webSocketLogProvider.js +76 -0
- package/src/examples/makeTradeExample.ts +10 -8
- package/src/factory/bigNum.js +183 -180
- package/src/factory/oracleClient.js +9 -9
- package/src/idl/clearing_house.json +1008 -279
- package/src/index.js +75 -0
- package/src/index.ts +5 -3
- package/src/math/amm.js +422 -0
- package/src/math/amm.ts +6 -3
- package/src/math/auction.js +10 -10
- package/src/math/conversion.js +4 -3
- package/src/math/funding.js +223 -175
- package/src/math/funding.ts +7 -7
- package/src/math/insurance.js +27 -0
- package/src/math/margin.js +77 -0
- package/src/math/margin.ts +34 -23
- package/src/math/market.js +105 -0
- package/src/math/market.ts +71 -19
- package/src/math/oracles.js +40 -10
- package/src/math/oracles.ts +18 -1
- package/src/math/orders.js +153 -0
- package/src/math/orders.ts +5 -5
- package/src/math/position.js +172 -0
- package/src/math/position.ts +31 -31
- package/src/math/repeg.js +40 -40
- package/src/math/spotBalance.js +176 -0
- package/src/math/spotBalance.ts +290 -0
- package/src/math/spotMarket.js +8 -0
- package/src/math/spotMarket.ts +9 -0
- package/src/math/spotPosition.js +8 -0
- package/src/math/spotPosition.ts +6 -0
- package/src/math/state.ts +2 -2
- package/src/math/trade.js +81 -74
- package/src/math/trade.ts +4 -4
- package/src/math/utils.js +8 -7
- package/src/oracles/oracleClientCache.js +10 -9
- package/src/oracles/pythClient.js +52 -17
- package/src/oracles/quoteAssetOracleClient.js +44 -13
- package/src/oracles/switchboardClient.js +69 -37
- package/src/oracles/types.js +1 -1
- package/src/orderParams.js +14 -6
- package/src/orderParams.ts +16 -8
- package/src/serum/serumSubscriber.js +102 -0
- package/src/serum/serumSubscriber.ts +80 -0
- package/src/serum/types.js +2 -0
- package/src/serum/types.ts +13 -0
- package/src/slot/SlotSubscriber.js +67 -20
- package/src/token/index.js +4 -4
- package/src/tokenFaucet.js +288 -154
- package/src/tx/retryTxSender.js +280 -0
- package/src/tx/retryTxSender.ts +5 -2
- package/src/tx/types.js +1 -1
- package/src/tx/types.ts +2 -1
- package/src/tx/utils.js +7 -6
- package/src/types.js +216 -0
- package/src/types.ts +110 -33
- package/src/userName.js +5 -5
- package/src/util/computeUnits.js +46 -11
- package/src/util/promiseTimeout.js +5 -5
- package/src/util/tps.js +46 -12
- package/src/wallet.js +55 -18
- package/lib/math/bankBalance.d.ts +0 -15
- package/lib/math/bankBalance.js +0 -150
- package/src/addresses/marketAddresses.js +0 -26
- package/src/constants/banks.js +0 -42
- package/src/examples/makeTradeExample.js +0 -80
- package/src/math/bankBalance.ts +0 -258
- package/src/math/state.js +0 -15
- package/src/math/utils.js.map +0 -1
- package/src/util/getTokenAddress.js +0 -9
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __generator = (this && this.__generator) || function (thisArg, body) {
|
|
12
|
+
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
|
13
|
+
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
|
14
|
+
function verb(n) { return function (v) { return step([n, v]); }; }
|
|
15
|
+
function step(op) {
|
|
16
|
+
if (f) throw new TypeError("Generator is already executing.");
|
|
17
|
+
while (_) try {
|
|
18
|
+
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;
|
|
19
|
+
if (y = 0, t) op = [op[0] & 2, t.value];
|
|
20
|
+
switch (op[0]) {
|
|
21
|
+
case 0: case 1: t = op; break;
|
|
22
|
+
case 4: _.label++; return { value: op[1], done: false };
|
|
23
|
+
case 5: _.label++; y = op[1]; op = [0]; continue;
|
|
24
|
+
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
|
25
|
+
default:
|
|
26
|
+
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
|
27
|
+
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
|
28
|
+
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
|
29
|
+
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
|
30
|
+
if (t[2]) _.ops.pop();
|
|
31
|
+
_.trys.pop(); continue;
|
|
32
|
+
}
|
|
33
|
+
op = body.call(thisArg, _);
|
|
34
|
+
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
|
35
|
+
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
exports.__esModule = true;
|
|
39
|
+
exports.ClearingHouseUserStats = void 0;
|
|
40
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
41
|
+
var pollingUserStatsAccountSubscriber_1 = require("./accounts/pollingUserStatsAccountSubscriber");
|
|
42
|
+
var webSocketUserStatsAccountSubsriber_1 = require("./accounts/webSocketUserStatsAccountSubsriber");
|
|
43
|
+
var pda_1 = require("./addresses/pda");
|
|
44
|
+
var ClearingHouseUserStats = /** @class */ (function () {
|
|
45
|
+
function ClearingHouseUserStats(config) {
|
|
46
|
+
var _a;
|
|
47
|
+
this.clearingHouse = config.clearingHouse;
|
|
48
|
+
this.userStatsAccountPublicKey = config.userStatsAccountPublicKey;
|
|
49
|
+
if (((_a = config.accountSubscription) === null || _a === void 0 ? void 0 : _a.type) === 'polling') {
|
|
50
|
+
this.accountSubscriber = new pollingUserStatsAccountSubscriber_1.PollingUserStatsAccountSubscriber(config.clearingHouse.program, config.userStatsAccountPublicKey, config.accountSubscription.accountLoader);
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
this.accountSubscriber = new webSocketUserStatsAccountSubsriber_1.WebSocketUserStatsAccountSubscriber(config.clearingHouse.program, config.userStatsAccountPublicKey);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
ClearingHouseUserStats.prototype.subscribe = function () {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
58
|
+
var _a;
|
|
59
|
+
return __generator(this, function (_b) {
|
|
60
|
+
switch (_b.label) {
|
|
61
|
+
case 0:
|
|
62
|
+
_a = this;
|
|
63
|
+
return [4 /*yield*/, this.accountSubscriber.subscribe()];
|
|
64
|
+
case 1:
|
|
65
|
+
_a.isSubscribed = _b.sent();
|
|
66
|
+
return [2 /*return*/, this.isSubscribed];
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
});
|
|
70
|
+
};
|
|
71
|
+
ClearingHouseUserStats.prototype.fetchAccounts = function () {
|
|
72
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
73
|
+
return __generator(this, function (_a) {
|
|
74
|
+
switch (_a.label) {
|
|
75
|
+
case 0: return [4 /*yield*/, this.accountSubscriber.fetch()];
|
|
76
|
+
case 1:
|
|
77
|
+
_a.sent();
|
|
78
|
+
return [2 /*return*/];
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
};
|
|
83
|
+
ClearingHouseUserStats.prototype.unsubscribe = function () {
|
|
84
|
+
return __awaiter(this, void 0, void 0, function () {
|
|
85
|
+
return __generator(this, function (_a) {
|
|
86
|
+
switch (_a.label) {
|
|
87
|
+
case 0: return [4 /*yield*/, this.accountSubscriber.unsubscribe()];
|
|
88
|
+
case 1:
|
|
89
|
+
_a.sent();
|
|
90
|
+
this.isSubscribed = false;
|
|
91
|
+
return [2 /*return*/];
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
};
|
|
96
|
+
ClearingHouseUserStats.prototype.getAccountAndSlot = function () {
|
|
97
|
+
return this.accountSubscriber.getUserStatsAccountAndSlot();
|
|
98
|
+
};
|
|
99
|
+
ClearingHouseUserStats.prototype.getAccount = function () {
|
|
100
|
+
return this.accountSubscriber.getUserStatsAccountAndSlot().data;
|
|
101
|
+
};
|
|
102
|
+
ClearingHouseUserStats.prototype.getReferrerInfo = function () {
|
|
103
|
+
if (this.getAccount().referrer.equals(web3_js_1.PublicKey["default"])) {
|
|
104
|
+
return undefined;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
return {
|
|
108
|
+
referrer: (0, pda_1.getUserAccountPublicKeySync)(this.clearingHouse.program.programId, this.getAccount().referrer, 0),
|
|
109
|
+
referrerStats: (0, pda_1.getUserStatsAccountPublicKey)(this.clearingHouse.program.programId, this.getAccount().referrer)
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
return ClearingHouseUserStats;
|
|
114
|
+
}());
|
|
115
|
+
exports.ClearingHouseUserStats = ClearingHouseUserStats;
|
package/src/config.js
ADDED
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __assign = (this && this.__assign) || function () {
|
|
3
|
+
__assign = Object.assign || function(t) {
|
|
4
|
+
for (var s, i = 1, n = arguments.length; i < n; i++) {
|
|
5
|
+
s = arguments[i];
|
|
6
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
|
|
7
|
+
t[p] = s[p];
|
|
8
|
+
}
|
|
9
|
+
return t;
|
|
10
|
+
};
|
|
11
|
+
return __assign.apply(this, arguments);
|
|
12
|
+
};
|
|
13
|
+
exports.__esModule = true;
|
|
14
|
+
exports.getMarketsAndOraclesForSubscription = exports.initialize = exports.getConfig = exports.configs = void 0;
|
|
15
|
+
var perpMarkets_1 = require("./constants/perpMarkets");
|
|
16
|
+
var spotMarkets_1 = require("./constants/spotMarkets");
|
|
17
|
+
exports.configs = {
|
|
18
|
+
devnet: {
|
|
19
|
+
ENV: 'devnet',
|
|
20
|
+
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
21
|
+
CLEARING_HOUSE_PROGRAM_ID: '3v1iEjbSSLSSYyt1pmx4UB5rqJGurmz71RibXF7X6UF3',
|
|
22
|
+
USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
|
|
23
|
+
PERP_MARKETS: perpMarkets_1.DevnetPerpMarkets,
|
|
24
|
+
SPOT_MARKETS: spotMarkets_1.DevnetSpotMarkets
|
|
25
|
+
},
|
|
26
|
+
'mainnet-beta': {
|
|
27
|
+
ENV: 'mainnet-beta',
|
|
28
|
+
PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
|
|
29
|
+
CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
|
|
30
|
+
USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
31
|
+
PERP_MARKETS: perpMarkets_1.MainnetMarkets,
|
|
32
|
+
SPOT_MARKETS: spotMarkets_1.MainnetSpotMarkets
|
|
33
|
+
}
|
|
34
|
+
};
|
|
35
|
+
var currentConfig = exports.configs.devnet;
|
|
36
|
+
var getConfig = function () { return currentConfig; };
|
|
37
|
+
exports.getConfig = getConfig;
|
|
38
|
+
/**
|
|
39
|
+
* Allows customization of the SDK's environment and endpoints. You can pass individual settings to override the settings with your own presets.
|
|
40
|
+
*
|
|
41
|
+
* Defaults to master environment if you don't use this function.
|
|
42
|
+
* @param props
|
|
43
|
+
* @returns
|
|
44
|
+
*/
|
|
45
|
+
var initialize = function (props) {
|
|
46
|
+
var _a, _b;
|
|
47
|
+
//@ts-ignore
|
|
48
|
+
if (props.env === 'master')
|
|
49
|
+
return __assign(__assign({}, exports.configs['devnet']), ((_a = props.overrideEnv) !== null && _a !== void 0 ? _a : {}));
|
|
50
|
+
currentConfig = __assign(__assign({}, exports.configs[props.env]), ((_b = props.overrideEnv) !== null && _b !== void 0 ? _b : {}));
|
|
51
|
+
return currentConfig;
|
|
52
|
+
};
|
|
53
|
+
exports.initialize = initialize;
|
|
54
|
+
function getMarketsAndOraclesForSubscription(env) {
|
|
55
|
+
var perpMarketIndexes = [];
|
|
56
|
+
var spotMarketIndexes = [];
|
|
57
|
+
var oracleInfos = new Map();
|
|
58
|
+
for (var _i = 0, _a = perpMarkets_1.PerpMarkets[env]; _i < _a.length; _i++) {
|
|
59
|
+
var market = _a[_i];
|
|
60
|
+
perpMarketIndexes.push(market.marketIndex);
|
|
61
|
+
oracleInfos.set(market.oracle.toString(), {
|
|
62
|
+
publicKey: market.oracle,
|
|
63
|
+
source: market.oracleSource
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
for (var _b = 0, _c = spotMarkets_1.SpotMarkets[env]; _b < _c.length; _b++) {
|
|
67
|
+
var spotMarket = _c[_b];
|
|
68
|
+
spotMarketIndexes.push(spotMarket.marketIndex);
|
|
69
|
+
oracleInfos.set(spotMarket.oracle.toString(), {
|
|
70
|
+
publicKey: spotMarket.oracle,
|
|
71
|
+
source: spotMarket.oracleSource
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
return {
|
|
75
|
+
perpMarketIndexes: perpMarketIndexes,
|
|
76
|
+
spotMarketIndexes: spotMarketIndexes,
|
|
77
|
+
oracleInfos: Array.from(oracleInfos.values())
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
exports.getMarketsAndOraclesForSubscription = getMarketsAndOraclesForSubscription;
|
package/src/config.ts
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
DevnetPerpMarkets,
|
|
3
3
|
MainnetMarkets,
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
} from './constants/
|
|
4
|
+
PerpMarketConfig,
|
|
5
|
+
PerpMarkets,
|
|
6
|
+
} from './constants/perpMarkets';
|
|
7
7
|
import {
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
} from './constants/
|
|
8
|
+
SpotMarketConfig,
|
|
9
|
+
SpotMarkets,
|
|
10
|
+
DevnetSpotMarkets,
|
|
11
|
+
MainnetSpotMarkets,
|
|
12
|
+
} from './constants/spotMarkets';
|
|
13
13
|
import { BN } from '@project-serum/anchor';
|
|
14
14
|
import { OracleInfo } from './oracles/types';
|
|
15
15
|
|
|
@@ -18,8 +18,8 @@ type DriftConfig = {
|
|
|
18
18
|
PYTH_ORACLE_MAPPING_ADDRESS: string;
|
|
19
19
|
CLEARING_HOUSE_PROGRAM_ID: string;
|
|
20
20
|
USDC_MINT_ADDRESS: string;
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
PERP_MARKETS: PerpMarketConfig[];
|
|
22
|
+
SPOT_MARKETS: SpotMarketConfig[];
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
export type DriftEnv = 'devnet' | 'mainnet-beta';
|
|
@@ -30,16 +30,16 @@ export const configs: { [key in DriftEnv]: DriftConfig } = {
|
|
|
30
30
|
PYTH_ORACLE_MAPPING_ADDRESS: 'BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2',
|
|
31
31
|
CLEARING_HOUSE_PROGRAM_ID: '3v1iEjbSSLSSYyt1pmx4UB5rqJGurmz71RibXF7X6UF3',
|
|
32
32
|
USDC_MINT_ADDRESS: '8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2',
|
|
33
|
-
|
|
34
|
-
|
|
33
|
+
PERP_MARKETS: DevnetPerpMarkets,
|
|
34
|
+
SPOT_MARKETS: DevnetSpotMarkets,
|
|
35
35
|
},
|
|
36
36
|
'mainnet-beta': {
|
|
37
37
|
ENV: 'mainnet-beta',
|
|
38
38
|
PYTH_ORACLE_MAPPING_ADDRESS: 'AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J',
|
|
39
39
|
CLEARING_HOUSE_PROGRAM_ID: 'dammHkt7jmytvbS3nHTxQNEcP59aE57nxwV21YdqEDN',
|
|
40
40
|
USDC_MINT_ADDRESS: 'EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v',
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
PERP_MARKETS: MainnetMarkets,
|
|
42
|
+
SPOT_MARKETS: MainnetSpotMarkets,
|
|
43
43
|
},
|
|
44
44
|
};
|
|
45
45
|
|
|
@@ -67,34 +67,34 @@ export const initialize = (props: {
|
|
|
67
67
|
return currentConfig;
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
export function
|
|
71
|
-
|
|
72
|
-
|
|
70
|
+
export function getMarketsAndOraclesForSubscription(env: DriftEnv): {
|
|
71
|
+
perpMarketIndexes: BN[];
|
|
72
|
+
spotMarketIndexes: BN[];
|
|
73
73
|
oracleInfos: OracleInfo[];
|
|
74
74
|
} {
|
|
75
|
-
const
|
|
76
|
-
const
|
|
75
|
+
const perpMarketIndexes = [];
|
|
76
|
+
const spotMarketIndexes = [];
|
|
77
77
|
const oracleInfos = new Map<string, OracleInfo>();
|
|
78
78
|
|
|
79
|
-
for (const market of
|
|
80
|
-
|
|
79
|
+
for (const market of PerpMarkets[env]) {
|
|
80
|
+
perpMarketIndexes.push(market.marketIndex);
|
|
81
81
|
oracleInfos.set(market.oracle.toString(), {
|
|
82
82
|
publicKey: market.oracle,
|
|
83
83
|
source: market.oracleSource,
|
|
84
84
|
});
|
|
85
85
|
}
|
|
86
86
|
|
|
87
|
-
for (const
|
|
88
|
-
|
|
89
|
-
oracleInfos.set(
|
|
90
|
-
publicKey:
|
|
91
|
-
source:
|
|
87
|
+
for (const spotMarket of SpotMarkets[env]) {
|
|
88
|
+
spotMarketIndexes.push(spotMarket.marketIndex);
|
|
89
|
+
oracleInfos.set(spotMarket.oracle.toString(), {
|
|
90
|
+
publicKey: spotMarket.oracle,
|
|
91
|
+
source: spotMarket.oracleSource,
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
|
|
95
95
|
return {
|
|
96
|
-
|
|
97
|
-
|
|
96
|
+
perpMarketIndexes: perpMarketIndexes,
|
|
97
|
+
spotMarketIndexes: spotMarketIndexes,
|
|
98
98
|
oracleInfos: Array.from(oracleInfos.values()),
|
|
99
99
|
};
|
|
100
100
|
}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.
|
|
4
|
-
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.LAMPORTS_EXP = exports.LAMPORTS_PRECISION = exports.QUOTE_SPOT_MARKET_INDEX = exports.ONE_YEAR = exports.BID_ASK_SPREAD_PRECISION = exports.MARGIN_PRECISION = exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.PRICE_TO_QUOTE_PRECISION = exports.PRICE_DIV_PEG = exports.AMM_TO_QUOTE_PRECISION_RATIO = exports.BASE_PRECISION_EXP = exports.BASE_PRECISION = exports.AMM_RESERVE_PRECISION = exports.PEG_PRECISION = exports.FUNDING_PAYMENT_PRECISION = exports.MARK_PRICE_PRECISION = exports.QUOTE_PRECISION = exports.LIQUIDATION_FEE_PRECISION = exports.SPOT_MARKET_IMF_PRECISION = exports.SPOT_MARKET_IMF_PRECISION_EXP = exports.SPOT_MARKET_BALANCE_PRECISION = exports.SPOT_MARKET_BALANCE_PRECISION_EXP = exports.SPOT_MARKET_WEIGHT_PRECISION = exports.SPOT_MARKET_RATE_PRECISION = exports.SPOT_MARKET_UTILIZATION_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = exports.SPOT_MARKET_INTEREST_PRECISION = exports.SPOT_MARKET_INTEREST_PRECISION_EXP = exports.AMM_RESERVE_PRECISION_EXP = exports.PEG_PRECISION_EXP = exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP = exports.FUNDING_PAYMENT_PRECISION_EXP = exports.QUOTE_PRECISION_EXP = exports.MAX_LEVERAGE = exports.TEN_MILLION = exports.BN_MAX = exports.TEN_THOUSAND = exports.TEN = exports.TWO = exports.ONE = exports.ZERO = void 0;
|
|
4
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
var __1 = require("../");
|
|
5
6
|
exports.ZERO = new __1.BN(0);
|
|
6
7
|
exports.ONE = new __1.BN(1);
|
|
7
8
|
exports.TWO = new __1.BN(2);
|
|
@@ -16,13 +17,17 @@ exports.MARK_PRICE_PRECISION_EXP = new __1.BN(10);
|
|
|
16
17
|
exports.FUNDING_RATE_PRECISION_EXP = exports.MARK_PRICE_PRECISION_EXP.mul(exports.FUNDING_PAYMENT_PRECISION_EXP);
|
|
17
18
|
exports.PEG_PRECISION_EXP = new __1.BN(3);
|
|
18
19
|
exports.AMM_RESERVE_PRECISION_EXP = new __1.BN(13);
|
|
19
|
-
exports.
|
|
20
|
-
exports.
|
|
21
|
-
exports.
|
|
22
|
-
exports.
|
|
23
|
-
exports.
|
|
24
|
-
exports.
|
|
25
|
-
exports.
|
|
20
|
+
exports.SPOT_MARKET_INTEREST_PRECISION_EXP = new __1.BN(6);
|
|
21
|
+
exports.SPOT_MARKET_INTEREST_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_INTEREST_PRECISION_EXP);
|
|
22
|
+
exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new __1.BN(10);
|
|
23
|
+
exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP);
|
|
24
|
+
exports.SPOT_MARKET_UTILIZATION_PRECISION = new __1.BN(1000000);
|
|
25
|
+
exports.SPOT_MARKET_RATE_PRECISION = new __1.BN(1000000);
|
|
26
|
+
exports.SPOT_MARKET_WEIGHT_PRECISION = new __1.BN(10000);
|
|
27
|
+
exports.SPOT_MARKET_BALANCE_PRECISION_EXP = new __1.BN(6);
|
|
28
|
+
exports.SPOT_MARKET_BALANCE_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_BALANCE_PRECISION_EXP);
|
|
29
|
+
exports.SPOT_MARKET_IMF_PRECISION_EXP = new __1.BN(6);
|
|
30
|
+
exports.SPOT_MARKET_IMF_PRECISION = new __1.BN(10).pow(exports.SPOT_MARKET_IMF_PRECISION_EXP);
|
|
26
31
|
exports.LIQUIDATION_FEE_PRECISION = new __1.BN(1000000);
|
|
27
32
|
exports.QUOTE_PRECISION = new __1.BN(10).pow(exports.QUOTE_PRECISION_EXP);
|
|
28
33
|
exports.MARK_PRICE_PRECISION = new __1.BN(10).pow(exports.MARK_PRICE_PRECISION_EXP);
|
|
@@ -38,4 +43,6 @@ exports.AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = exports.AMM_RESERVE_PRECISION.m
|
|
|
38
43
|
exports.MARGIN_PRECISION = exports.TEN_THOUSAND;
|
|
39
44
|
exports.BID_ASK_SPREAD_PRECISION = new __1.BN(1000000);
|
|
40
45
|
exports.ONE_YEAR = new __1.BN(31536000);
|
|
41
|
-
exports.
|
|
46
|
+
exports.QUOTE_SPOT_MARKET_INDEX = new __1.BN(0);
|
|
47
|
+
exports.LAMPORTS_PRECISION = new __1.BN(web3_js_1.LAMPORTS_PER_SOL);
|
|
48
|
+
exports.LAMPORTS_EXP = new __1.BN(Math.log10(web3_js_1.LAMPORTS_PER_SOL));
|
|
@@ -20,26 +20,28 @@ export const FUNDING_RATE_PRECISION_EXP = MARK_PRICE_PRECISION_EXP.mul(
|
|
|
20
20
|
export const PEG_PRECISION_EXP = new BN(3);
|
|
21
21
|
export const AMM_RESERVE_PRECISION_EXP = new BN(13);
|
|
22
22
|
|
|
23
|
-
export const
|
|
24
|
-
export const
|
|
25
|
-
|
|
23
|
+
export const SPOT_MARKET_INTEREST_PRECISION_EXP = new BN(6);
|
|
24
|
+
export const SPOT_MARKET_INTEREST_PRECISION = new BN(10).pow(
|
|
25
|
+
SPOT_MARKET_INTEREST_PRECISION_EXP
|
|
26
26
|
);
|
|
27
27
|
|
|
28
|
-
export const
|
|
29
|
-
export const
|
|
30
|
-
|
|
28
|
+
export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new BN(10);
|
|
29
|
+
export const SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new BN(10).pow(
|
|
30
|
+
SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP
|
|
31
31
|
);
|
|
32
32
|
|
|
33
|
-
export const
|
|
34
|
-
export const
|
|
35
|
-
export const
|
|
36
|
-
export const
|
|
37
|
-
export const
|
|
38
|
-
|
|
33
|
+
export const SPOT_MARKET_UTILIZATION_PRECISION = new BN(1000000);
|
|
34
|
+
export const SPOT_MARKET_RATE_PRECISION = new BN(1000000);
|
|
35
|
+
export const SPOT_MARKET_WEIGHT_PRECISION = new BN(10000);
|
|
36
|
+
export const SPOT_MARKET_BALANCE_PRECISION_EXP = new BN(6);
|
|
37
|
+
export const SPOT_MARKET_BALANCE_PRECISION = new BN(10).pow(
|
|
38
|
+
SPOT_MARKET_BALANCE_PRECISION_EXP
|
|
39
39
|
);
|
|
40
|
-
export const
|
|
40
|
+
export const SPOT_MARKET_IMF_PRECISION_EXP = new BN(6);
|
|
41
41
|
|
|
42
|
-
export const
|
|
42
|
+
export const SPOT_MARKET_IMF_PRECISION = new BN(10).pow(
|
|
43
|
+
SPOT_MARKET_IMF_PRECISION_EXP
|
|
44
|
+
);
|
|
43
45
|
export const LIQUIDATION_FEE_PRECISION = new BN(1000000);
|
|
44
46
|
|
|
45
47
|
export const QUOTE_PRECISION = new BN(10).pow(QUOTE_PRECISION_EXP);
|
|
@@ -66,7 +68,7 @@ export const BID_ASK_SPREAD_PRECISION = new BN(1000000);
|
|
|
66
68
|
|
|
67
69
|
export const ONE_YEAR = new BN(31536000);
|
|
68
70
|
|
|
69
|
-
export const
|
|
71
|
+
export const QUOTE_SPOT_MARKET_INDEX = new BN(0);
|
|
70
72
|
|
|
71
73
|
export const LAMPORTS_PRECISION = new BN(LAMPORTS_PER_SOL);
|
|
72
74
|
export const LAMPORTS_EXP = new BN(Math.log10(LAMPORTS_PER_SOL));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
exports.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
exports.
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.PerpMarkets = exports.MainnetMarkets = exports.DevnetPerpMarkets = void 0;
|
|
4
|
+
var __1 = require("../");
|
|
5
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
6
|
+
exports.DevnetPerpMarkets = [
|
|
7
7
|
{
|
|
8
8
|
fullName: 'Solana',
|
|
9
9
|
category: ['L1', 'Infra'],
|
|
@@ -12,7 +12,7 @@ exports.DevnetMarkets = [
|
|
|
12
12
|
marketIndex: new __1.BN(0),
|
|
13
13
|
oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
|
|
14
14
|
launchTs: 1655751353000,
|
|
15
|
-
oracleSource: __1.OracleSource.PYTH
|
|
15
|
+
oracleSource: __1.OracleSource.PYTH
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
fullName: 'Bitcoin',
|
|
@@ -22,7 +22,7 @@ exports.DevnetMarkets = [
|
|
|
22
22
|
marketIndex: new __1.BN(1),
|
|
23
23
|
oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
|
|
24
24
|
launchTs: 1655751353000,
|
|
25
|
-
oracleSource: __1.OracleSource.PYTH
|
|
25
|
+
oracleSource: __1.OracleSource.PYTH
|
|
26
26
|
},
|
|
27
27
|
{
|
|
28
28
|
fullName: 'Ethereum',
|
|
@@ -32,11 +32,11 @@ exports.DevnetMarkets = [
|
|
|
32
32
|
marketIndex: new __1.BN(2),
|
|
33
33
|
oracle: new web3_js_1.PublicKey('EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw'),
|
|
34
34
|
launchTs: 1637691133472,
|
|
35
|
-
oracleSource: __1.OracleSource.PYTH
|
|
35
|
+
oracleSource: __1.OracleSource.PYTH
|
|
36
36
|
},
|
|
37
37
|
];
|
|
38
38
|
exports.MainnetMarkets = [];
|
|
39
|
-
exports.
|
|
40
|
-
devnet: exports.
|
|
41
|
-
'mainnet-beta': []
|
|
39
|
+
exports.PerpMarkets = {
|
|
40
|
+
devnet: exports.DevnetPerpMarkets,
|
|
41
|
+
'mainnet-beta': []
|
|
42
42
|
};
|
|
@@ -2,7 +2,7 @@ import { BN, OracleSource } from '../';
|
|
|
2
2
|
import { DriftEnv } from '../';
|
|
3
3
|
import { PublicKey } from '@solana/web3.js';
|
|
4
4
|
|
|
5
|
-
export type
|
|
5
|
+
export type PerpMarketConfig = {
|
|
6
6
|
fullName?: string;
|
|
7
7
|
category?: string[];
|
|
8
8
|
symbol: string;
|
|
@@ -13,7 +13,7 @@ export type MarketConfig = {
|
|
|
13
13
|
oracleSource: OracleSource;
|
|
14
14
|
};
|
|
15
15
|
|
|
16
|
-
export const
|
|
16
|
+
export const DevnetPerpMarkets: PerpMarketConfig[] = [
|
|
17
17
|
{
|
|
18
18
|
fullName: 'Solana',
|
|
19
19
|
category: ['L1', 'Infra'],
|
|
@@ -46,9 +46,9 @@ export const DevnetMarkets: MarketConfig[] = [
|
|
|
46
46
|
},
|
|
47
47
|
];
|
|
48
48
|
|
|
49
|
-
export const MainnetMarkets:
|
|
49
|
+
export const MainnetMarkets: PerpMarketConfig[] = [];
|
|
50
50
|
|
|
51
|
-
export const
|
|
52
|
-
devnet:
|
|
51
|
+
export const PerpMarkets: { [key in DriftEnv]: PerpMarketConfig[] } = {
|
|
52
|
+
devnet: DevnetPerpMarkets,
|
|
53
53
|
'mainnet-beta': [],
|
|
54
54
|
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
exports.__esModule = true;
|
|
3
|
+
exports.SpotMarkets = exports.MainnetSpotMarkets = exports.DevnetSpotMarkets = exports.WRAPPED_SOL_MINT = void 0;
|
|
4
|
+
var web3_js_1 = require("@solana/web3.js");
|
|
5
|
+
var __1 = require("../");
|
|
6
|
+
var numericConstants_1 = require("./numericConstants");
|
|
7
|
+
exports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');
|
|
8
|
+
exports.DevnetSpotMarkets = [
|
|
9
|
+
{
|
|
10
|
+
symbol: 'USDC',
|
|
11
|
+
marketIndex: new __1.BN(0),
|
|
12
|
+
oracle: web3_js_1.PublicKey["default"],
|
|
13
|
+
oracleSource: __1.OracleSource.QUOTE_ASSET,
|
|
14
|
+
mint: new web3_js_1.PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
15
|
+
precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
|
|
16
|
+
precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
symbol: 'SOL',
|
|
20
|
+
marketIndex: new __1.BN(1),
|
|
21
|
+
oracle: new web3_js_1.PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
|
|
22
|
+
oracleSource: __1.OracleSource.PYTH,
|
|
23
|
+
mint: new web3_js_1.PublicKey(exports.WRAPPED_SOL_MINT),
|
|
24
|
+
precision: numericConstants_1.LAMPORTS_PRECISION,
|
|
25
|
+
precisionExp: numericConstants_1.LAMPORTS_EXP
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
symbol: 'BTC',
|
|
29
|
+
marketIndex: new __1.BN(2),
|
|
30
|
+
oracle: new web3_js_1.PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
|
|
31
|
+
oracleSource: __1.OracleSource.PYTH,
|
|
32
|
+
mint: new web3_js_1.PublicKey('3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv'),
|
|
33
|
+
precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
|
|
34
|
+
precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
exports.MainnetSpotMarkets = [
|
|
38
|
+
{
|
|
39
|
+
symbol: 'USDC',
|
|
40
|
+
marketIndex: new __1.BN(0),
|
|
41
|
+
oracle: web3_js_1.PublicKey["default"],
|
|
42
|
+
oracleSource: __1.OracleSource.QUOTE_ASSET,
|
|
43
|
+
mint: new web3_js_1.PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
|
44
|
+
precision: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION,
|
|
45
|
+
precisionExp: numericConstants_1.SPOT_MARKET_BALANCE_PRECISION_EXP
|
|
46
|
+
},
|
|
47
|
+
];
|
|
48
|
+
exports.SpotMarkets = {
|
|
49
|
+
devnet: exports.DevnetSpotMarkets,
|
|
50
|
+
'mainnet-beta': exports.MainnetSpotMarkets
|
|
51
|
+
};
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
import { PublicKey } from '@solana/web3.js';
|
|
2
2
|
import { BN, DriftEnv, OracleSource } from '../';
|
|
3
3
|
import {
|
|
4
|
-
|
|
5
|
-
|
|
4
|
+
SPOT_MARKET_BALANCE_PRECISION,
|
|
5
|
+
SPOT_MARKET_BALANCE_PRECISION_EXP,
|
|
6
6
|
LAMPORTS_EXP,
|
|
7
7
|
LAMPORTS_PRECISION,
|
|
8
8
|
} from './numericConstants';
|
|
9
9
|
|
|
10
|
-
export type
|
|
10
|
+
export type SpotMarketConfig = {
|
|
11
11
|
symbol: string;
|
|
12
|
-
|
|
12
|
+
marketIndex: BN;
|
|
13
13
|
oracle: PublicKey;
|
|
14
14
|
mint: PublicKey;
|
|
15
15
|
oracleSource: OracleSource;
|
|
@@ -21,19 +21,19 @@ export const WRAPPED_SOL_MINT = new PublicKey(
|
|
|
21
21
|
'So11111111111111111111111111111111111111112'
|
|
22
22
|
);
|
|
23
23
|
|
|
24
|
-
export const
|
|
24
|
+
export const DevnetSpotMarkets: SpotMarketConfig[] = [
|
|
25
25
|
{
|
|
26
26
|
symbol: 'USDC',
|
|
27
|
-
|
|
27
|
+
marketIndex: new BN(0),
|
|
28
28
|
oracle: PublicKey.default,
|
|
29
29
|
oracleSource: OracleSource.QUOTE_ASSET,
|
|
30
30
|
mint: new PublicKey('8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2'),
|
|
31
|
-
precision:
|
|
32
|
-
precisionExp:
|
|
31
|
+
precision: SPOT_MARKET_BALANCE_PRECISION,
|
|
32
|
+
precisionExp: SPOT_MARKET_BALANCE_PRECISION_EXP,
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
symbol: 'SOL',
|
|
36
|
-
|
|
36
|
+
marketIndex: new BN(1),
|
|
37
37
|
oracle: new PublicKey('J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix'),
|
|
38
38
|
oracleSource: OracleSource.PYTH,
|
|
39
39
|
mint: new PublicKey(WRAPPED_SOL_MINT),
|
|
@@ -42,28 +42,28 @@ export const DevnetBanks: BankConfig[] = [
|
|
|
42
42
|
},
|
|
43
43
|
{
|
|
44
44
|
symbol: 'BTC',
|
|
45
|
-
|
|
45
|
+
marketIndex: new BN(2),
|
|
46
46
|
oracle: new PublicKey('HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J'),
|
|
47
47
|
oracleSource: OracleSource.PYTH,
|
|
48
48
|
mint: new PublicKey('3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv'),
|
|
49
|
-
precision:
|
|
50
|
-
precisionExp:
|
|
49
|
+
precision: SPOT_MARKET_BALANCE_PRECISION,
|
|
50
|
+
precisionExp: SPOT_MARKET_BALANCE_PRECISION_EXP,
|
|
51
51
|
},
|
|
52
52
|
];
|
|
53
53
|
|
|
54
|
-
export const
|
|
54
|
+
export const MainnetSpotMarkets: SpotMarketConfig[] = [
|
|
55
55
|
{
|
|
56
56
|
symbol: 'USDC',
|
|
57
|
-
|
|
57
|
+
marketIndex: new BN(0),
|
|
58
58
|
oracle: PublicKey.default,
|
|
59
59
|
oracleSource: OracleSource.QUOTE_ASSET,
|
|
60
60
|
mint: new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v'),
|
|
61
|
-
precision:
|
|
62
|
-
precisionExp:
|
|
61
|
+
precision: SPOT_MARKET_BALANCE_PRECISION,
|
|
62
|
+
precisionExp: SPOT_MARKET_BALANCE_PRECISION_EXP,
|
|
63
63
|
},
|
|
64
64
|
];
|
|
65
65
|
|
|
66
|
-
export const
|
|
67
|
-
devnet:
|
|
68
|
-
'mainnet-beta':
|
|
66
|
+
export const SpotMarkets: { [key in DriftEnv]: SpotMarketConfig[] } = {
|
|
67
|
+
devnet: DevnetSpotMarkets,
|
|
68
|
+
'mainnet-beta': MainnetSpotMarkets,
|
|
69
69
|
};
|