@drift-labs/common 1.0.59 → 1.0.61
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/_deprecated/common-math.d.ts +10 -0
- package/lib/_deprecated/common-math.js +9 -0
- package/lib/_deprecated/common-math.js.map +1 -0
- package/lib/_deprecated/common-ui-utils.d.ts +248 -0
- package/lib/_deprecated/common-ui-utils.js +59 -0
- package/lib/_deprecated/common-ui-utils.js.map +1 -0
- package/lib/_deprecated/equality-checks.d.ts +2 -0
- package/lib/_deprecated/equality-checks.js +7 -0
- package/lib/_deprecated/equality-checks.js.map +1 -0
- package/lib/{common-ui-utils/market.d.ts → _deprecated/market-utils.d.ts} +5 -7
- package/lib/_deprecated/market-utils.js +18 -0
- package/lib/_deprecated/market-utils.js.map +1 -0
- package/lib/_deprecated/order-utils.d.ts +12 -0
- package/lib/_deprecated/order-utils.js +18 -0
- package/lib/_deprecated/order-utils.js.map +1 -0
- package/lib/_deprecated/trading-utils.d.ts +52 -0
- package/lib/_deprecated/trading-utils.js +27 -0
- package/lib/_deprecated/trading-utils.js.map +1 -0
- package/lib/_deprecated/user-utils.d.ts +17 -0
- package/lib/_deprecated/user-utils.js +12 -0
- package/lib/_deprecated/user-utils.js.map +1 -0
- package/lib/_deprecated/utils.d.ts +40 -0
- package/lib/_deprecated/utils.js +47 -0
- package/lib/_deprecated/utils.js.map +1 -0
- package/lib/clients/tvFeed.js +2 -2
- package/lib/clients/tvFeed.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js +8 -8
- package/lib/drift/Drift/clients/AuthorityDrift/DriftOperations/index.js.map +1 -1
- package/lib/drift/Drift/clients/AuthorityDrift/index.js +9 -9
- package/lib/drift/Drift/clients/AuthorityDrift/index.js.map +1 -1
- package/lib/drift/Drift/clients/CentralServerDrift/index.js +5 -4
- package/lib/drift/Drift/clients/CentralServerDrift/index.js.map +1 -1
- package/lib/drift/base/actions/trade/editOrder.d.ts +1 -1
- package/lib/drift/base/actions/trade/editOrder.js.map +1 -1
- package/lib/drift/base/actions/trade/margin.js +4 -4
- package/lib/drift/base/actions/trade/margin.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/auction.d.ts +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/auction.js +4 -3
- package/lib/drift/base/actions/trade/openPerpOrder/auction.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js +2 -2
- package/lib/drift/base/actions/trade/openPerpOrder/dlobServer/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/isolatedPositionDeposit.js +2 -2
- package/lib/drift/base/actions/trade/openPerpOrder/isolatedPositionDeposit.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.d.ts +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js +4 -4
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpMarketOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.d.ts +4 -4
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js +60 -32
- package/lib/drift/base/actions/trade/openPerpOrder/openPerpNonMarketOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js +4 -3
- package/lib/drift/base/actions/trade/openPerpOrder/openSwiftOrder/index.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/positionMaxLeverage.js +2 -2
- package/lib/drift/base/actions/trade/openPerpOrder/positionMaxLeverage.js.map +1 -1
- package/lib/drift/base/actions/trade/openPerpOrder/types.d.ts +5 -0
- package/lib/drift/base/actions/trade/openPerpOrder/types.js.map +1 -1
- package/lib/drift/base/actions/user/create.js +2 -2
- package/lib/drift/base/actions/user/create.js.map +1 -1
- package/lib/drift/base/details/user/balances.js +2 -2
- package/lib/drift/base/details/user/balances.js.map +1 -1
- package/lib/drift/base/details/user/positions.js +2 -2
- package/lib/drift/base/details/user/positions.js.map +1 -1
- package/lib/index.d.ts +28 -28
- package/lib/index.js +44 -29
- package/lib/index.js.map +1 -1
- package/lib/utils/accounts/index.d.ts +6 -0
- package/lib/utils/accounts/index.js +23 -0
- package/lib/utils/accounts/index.js.map +1 -0
- package/lib/utils/accounts/init.d.ts +22 -0
- package/lib/utils/accounts/init.js +90 -0
- package/lib/utils/accounts/init.js.map +1 -0
- package/lib/utils/accounts/keys.d.ts +22 -0
- package/lib/utils/accounts/keys.js +36 -0
- package/lib/utils/accounts/keys.js.map +1 -0
- package/lib/utils/accounts/multiple.d.ts +14 -0
- package/lib/utils/accounts/multiple.js +45 -0
- package/lib/utils/accounts/multiple.js.map +1 -0
- package/lib/utils/accounts/signature.d.ts +6 -0
- package/lib/utils/accounts/signature.js +53 -0
- package/lib/utils/accounts/signature.js.map +1 -0
- package/lib/utils/accounts/subaccounts.d.ts +8 -0
- package/lib/utils/accounts/subaccounts.js +31 -0
- package/lib/utils/accounts/subaccounts.js.map +1 -0
- package/lib/utils/{WalletConnectionState.d.ts → accounts/wallet.d.ts} +7 -1
- package/lib/utils/{WalletConnectionState.js → accounts/wallet.js} +32 -2
- package/lib/utils/accounts/wallet.js.map +1 -0
- package/lib/utils/core/arrays.d.ts +2 -0
- package/lib/utils/core/arrays.js +25 -0
- package/lib/utils/core/arrays.js.map +1 -0
- package/lib/utils/core/async.d.ts +5 -0
- package/lib/utils/core/async.js +17 -0
- package/lib/utils/core/async.js.map +1 -0
- package/lib/utils/core/cache.d.ts +1 -0
- package/lib/utils/core/cache.js +40 -0
- package/lib/utils/core/cache.js.map +1 -0
- package/lib/utils/core/data-structures.d.ts +30 -0
- package/lib/utils/core/data-structures.js +84 -0
- package/lib/utils/core/data-structures.js.map +1 -0
- package/lib/utils/{equalityChecks.d.ts → core/equality.d.ts} +1 -1
- package/lib/utils/{equalityChecks.js → core/equality.js} +3 -3
- package/lib/utils/core/equality.js.map +1 -0
- package/lib/utils/core/fetch.js.map +1 -0
- package/lib/utils/core/index.d.ts +7 -0
- package/lib/utils/core/index.js +24 -0
- package/lib/utils/core/index.js.map +1 -0
- package/lib/utils/core/serialization.d.ts +30 -0
- package/lib/utils/core/serialization.js +92 -0
- package/lib/utils/core/serialization.js.map +1 -0
- package/lib/utils/{enum.js → enum/index.js} +1 -1
- package/lib/utils/enum/index.js.map +1 -0
- package/lib/utils/index.d.ts +11 -176
- package/lib/utils/index.js +25 -594
- package/lib/utils/index.js.map +1 -1
- package/lib/utils/markets/balances.d.ts +6 -0
- package/lib/utils/markets/balances.js +29 -0
- package/lib/utils/markets/balances.js.map +1 -0
- package/lib/utils/markets/config.d.ts +5 -0
- package/lib/utils/markets/config.js +24 -0
- package/lib/utils/markets/config.js.map +1 -0
- package/lib/utils/markets/index.d.ts +6 -0
- package/lib/utils/markets/index.js +23 -0
- package/lib/utils/markets/index.js.map +1 -0
- package/lib/utils/markets/interest.d.ts +25 -0
- package/lib/utils/markets/interest.js +65 -0
- package/lib/utils/markets/interest.js.map +1 -0
- package/lib/utils/markets/leverage.d.ts +12 -0
- package/lib/utils/markets/leverage.js +60 -0
- package/lib/utils/markets/leverage.js.map +1 -0
- package/lib/utils/markets/operations.d.ts +21 -0
- package/lib/utils/markets/operations.js +59 -0
- package/lib/utils/markets/operations.js.map +1 -0
- package/lib/utils/math/bignum.d.ts +3 -0
- package/lib/utils/math/bignum.js +16 -0
- package/lib/utils/math/bignum.js.map +1 -0
- package/lib/utils/math/bn.d.ts +7 -0
- package/lib/utils/math/bn.js +58 -0
- package/lib/utils/math/bn.js.map +1 -0
- package/lib/utils/math/index.d.ts +7 -0
- package/lib/utils/math/index.js +24 -0
- package/lib/utils/math/index.js.map +1 -0
- package/lib/utils/math/numbers.d.ts +13 -0
- package/lib/utils/math/numbers.js +56 -0
- package/lib/utils/math/numbers.js.map +1 -0
- package/lib/utils/math/precision.d.ts +19 -0
- package/lib/utils/math/precision.js +73 -0
- package/lib/utils/math/precision.js.map +1 -0
- package/lib/utils/math/price.d.ts +12 -0
- package/lib/utils/math/price.js +45 -0
- package/lib/utils/math/price.js.map +1 -0
- package/lib/utils/math/sort.d.ts +13 -0
- package/lib/utils/math/sort.js +33 -0
- package/lib/utils/math/sort.js.map +1 -0
- package/lib/utils/math/spread.d.ts +8 -0
- package/lib/utils/math/spread.js +87 -0
- package/lib/utils/math/spread.js.map +1 -0
- package/lib/utils/orderbook/index.js +4 -4
- package/lib/utils/orderbook/index.js.map +1 -1
- package/lib/utils/orders/filters.d.ts +7 -0
- package/lib/utils/orders/filters.js +31 -0
- package/lib/utils/orders/filters.js.map +1 -0
- package/lib/utils/orders/flags.d.ts +12 -0
- package/lib/utils/orders/flags.js +44 -0
- package/lib/utils/orders/flags.js.map +1 -0
- package/lib/utils/orders/index.d.ts +6 -0
- package/lib/utils/orders/index.js +23 -0
- package/lib/utils/orders/index.js.map +1 -0
- package/lib/utils/orders/labels.d.ts +4 -0
- package/lib/utils/orders/labels.js +122 -0
- package/lib/utils/orders/labels.js.map +1 -0
- package/lib/utils/orders/misc.d.ts +11 -0
- package/lib/utils/orders/misc.js +27 -0
- package/lib/utils/orders/misc.js.map +1 -0
- package/lib/utils/orders/oracle.d.ts +5 -0
- package/lib/utils/orders/oracle.js +23 -0
- package/lib/utils/orders/oracle.js.map +1 -0
- package/lib/utils/orders/sort.d.ts +38 -0
- package/lib/utils/orders/sort.js +83 -0
- package/lib/utils/orders/sort.js.map +1 -0
- package/lib/utils/positions/index.d.ts +2 -0
- package/lib/{common-ui-utils → utils/positions}/index.js +1 -5
- package/lib/utils/positions/index.js.map +1 -0
- package/lib/utils/positions/open.d.ts +4 -0
- package/lib/{common-ui-utils/user.js → utils/positions/open.js} +10 -81
- package/lib/utils/positions/open.js.map +1 -0
- package/lib/utils/positions/user.d.ts +37 -0
- package/lib/utils/positions/user.js +74 -0
- package/lib/utils/positions/user.js.map +1 -0
- package/lib/utils/settings/settings.js.map +1 -0
- package/lib/utils/strings/convert.d.ts +11 -0
- package/lib/utils/{strings.js → strings/convert.js} +2 -51
- package/lib/utils/strings/convert.js.map +1 -0
- package/lib/utils/strings/format.d.ts +14 -0
- package/lib/utils/strings/format.js +61 -0
- package/lib/utils/strings/format.js.map +1 -0
- package/lib/utils/strings/index.d.ts +4 -0
- package/lib/utils/strings/index.js +21 -0
- package/lib/utils/strings/index.js.map +1 -0
- package/lib/utils/strings/parse.d.ts +4 -0
- package/lib/utils/strings/parse.js +25 -0
- package/lib/utils/strings/parse.js.map +1 -0
- package/lib/utils/strings/status.d.ts +15 -0
- package/lib/utils/strings/status.js +21 -0
- package/lib/utils/strings/status.js.map +1 -0
- package/lib/utils/token/account.d.ts +16 -0
- package/lib/utils/token/account.js +36 -0
- package/lib/utils/token/account.js.map +1 -0
- package/lib/utils/{token.d.ts → token/address.d.ts} +2 -7
- package/lib/utils/token/address.js +30 -0
- package/lib/utils/token/address.js.map +1 -0
- package/lib/utils/token/index.d.ts +3 -0
- package/lib/utils/token/index.js +20 -0
- package/lib/utils/token/index.js.map +1 -0
- package/lib/utils/token/instructions.d.ts +3 -0
- package/lib/utils/token/instructions.js +17 -0
- package/lib/utils/token/instructions.js.map +1 -0
- package/lib/utils/trading/auction.d.ts +82 -0
- package/lib/utils/trading/auction.js +208 -0
- package/lib/utils/trading/auction.js.map +1 -0
- package/lib/utils/trading/index.d.ts +7 -0
- package/lib/utils/trading/index.js +24 -0
- package/lib/utils/trading/index.js.map +1 -0
- package/lib/utils/trading/leverage.d.ts +18 -0
- package/lib/utils/trading/leverage.js +79 -0
- package/lib/utils/trading/leverage.js.map +1 -0
- package/lib/utils/trading/liquidation.d.ts +22 -0
- package/lib/utils/trading/liquidation.js +67 -0
- package/lib/utils/trading/liquidation.js.map +1 -0
- package/lib/utils/trading/lp.d.ts +4 -0
- package/lib/utils/trading/lp.js +20 -0
- package/lib/utils/trading/lp.js.map +1 -0
- package/lib/utils/trading/pnl.d.ts +34 -0
- package/lib/utils/trading/pnl.js +88 -0
- package/lib/utils/trading/pnl.js.map +1 -0
- package/lib/utils/trading/price.d.ts +12 -0
- package/lib/utils/trading/price.js +36 -0
- package/lib/utils/trading/price.js.map +1 -0
- package/lib/utils/trading/size.d.ts +27 -0
- package/lib/utils/trading/size.js +83 -0
- package/lib/utils/trading/size.js.map +1 -0
- package/lib/utils/{validation.d.ts → validation/address.d.ts} +1 -2
- package/lib/utils/{validation.js → validation/address.js} +4 -6
- package/lib/utils/validation/address.js.map +1 -0
- package/lib/utils/validation/index.d.ts +3 -0
- package/lib/utils/validation/index.js +20 -0
- package/lib/utils/validation/index.js.map +1 -0
- package/lib/utils/validation/input.d.ts +3 -0
- package/lib/utils/validation/input.js +33 -0
- package/lib/utils/validation/input.js.map +1 -0
- package/lib/utils/validation/notional.d.ts +2 -0
- package/lib/utils/validation/notional.js +8 -0
- package/lib/utils/validation/notional.js.map +1 -0
- package/package.json +90 -3
- package/lib/common-ui-utils/commonUiUtils.d.ts +0 -251
- package/lib/common-ui-utils/commonUiUtils.js +0 -647
- package/lib/common-ui-utils/commonUiUtils.js.map +0 -1
- package/lib/common-ui-utils/index.d.ts +0 -6
- package/lib/common-ui-utils/index.js.map +0 -1
- package/lib/common-ui-utils/market.js +0 -134
- package/lib/common-ui-utils/market.js.map +0 -1
- package/lib/common-ui-utils/order.d.ts +0 -25
- package/lib/common-ui-utils/order.js +0 -191
- package/lib/common-ui-utils/order.js.map +0 -1
- package/lib/common-ui-utils/settings/settings.js.map +0 -1
- package/lib/common-ui-utils/trading.d.ts +0 -79
- package/lib/common-ui-utils/trading.js +0 -313
- package/lib/common-ui-utils/trading.js.map +0 -1
- package/lib/common-ui-utils/user.d.ts +0 -18
- package/lib/common-ui-utils/user.js.map +0 -1
- package/lib/utils/WalletConnectionState.js.map +0 -1
- package/lib/utils/enum.js.map +0 -1
- package/lib/utils/equalityChecks.js.map +0 -1
- package/lib/utils/fetch.js.map +0 -1
- package/lib/utils/math.d.ts +0 -31
- package/lib/utils/math.js +0 -181
- package/lib/utils/math.js.map +0 -1
- package/lib/utils/strings.d.ts +0 -34
- package/lib/utils/strings.js.map +0 -1
- package/lib/utils/token.js +0 -45
- package/lib/utils/token.js.map +0 -1
- package/lib/utils/validation.js.map +0 -1
- /package/lib/utils/{fetch.d.ts → core/fetch.d.ts} +0 -0
- /package/lib/utils/{fetch.js → core/fetch.js} +0 -0
- /package/lib/utils/{enum.d.ts → enum/index.d.ts} +0 -0
- /package/lib/{common-ui-utils → utils}/settings/settings.d.ts +0 -0
- /package/lib/{common-ui-utils → utils}/settings/settings.js +0 -0
package/lib/index.js
CHANGED
|
@@ -17,54 +17,69 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.DriftErrors = exports.JupV6Errors = exports.JupV4Errors = exports.millify = void 0;
|
|
21
|
-
|
|
22
|
-
__exportStar(require("./chartConstants"), exports);
|
|
23
|
-
__exportStar(require("./types"), exports);
|
|
24
|
-
__exportStar(require("./EnvironmentConstants"), exports);
|
|
20
|
+
exports.DriftErrors = exports.JupV6Errors = exports.JupV4Errors = exports.USER_UTILS = exports.ORDER_COMMON_UTILS = exports.MARKET_UTILS = exports.TRADING_UTILS = exports.EQUALITY_CHECKS = exports.COMMON_MATH = exports.COMMON_UI_UTILS = exports.COMMON_UTILS = exports.MultiplexWebSocket = exports.ResultSlotIncrementer = exports.getSwiftConfirmationTimeoutMs = exports.millify = void 0;
|
|
21
|
+
// Domain modules (via utils barrel)
|
|
25
22
|
__exportStar(require("./utils"), exports);
|
|
26
|
-
|
|
27
|
-
__exportStar(require("./utils/
|
|
28
|
-
__exportStar(require("./serializableTypes"), exports);
|
|
29
|
-
__exportStar(require("./utils/candles/Candle"), exports);
|
|
23
|
+
// Non-domain utils that stay at utils/ level
|
|
24
|
+
__exportStar(require("./utils/logger"), exports);
|
|
30
25
|
__exportStar(require("./utils/featureFlags"), exports);
|
|
31
|
-
__exportStar(require("./utils/
|
|
26
|
+
__exportStar(require("./utils/candles/Candle"), exports);
|
|
32
27
|
__exportStar(require("./utils/rpcLatency"), exports);
|
|
33
|
-
__exportStar(require("./utils/token"), exports);
|
|
34
|
-
__exportStar(require("./utils/math"), exports);
|
|
35
|
-
__exportStar(require("./utils/logger"), exports);
|
|
36
|
-
__exportStar(require("./utils/equalityChecks"), exports);
|
|
37
|
-
__exportStar(require("./common-ui-utils"), exports);
|
|
38
|
-
__exportStar(require("./constants"), exports);
|
|
39
|
-
__exportStar(require("./actions/actionHelpers/actionHelpers"), exports);
|
|
40
28
|
__exportStar(require("./utils/SharedInterval"), exports);
|
|
41
29
|
__exportStar(require("./utils/Stopwatch"), exports);
|
|
42
30
|
__exportStar(require("./utils/priority-fees"), exports);
|
|
43
31
|
__exportStar(require("./utils/superstake"), exports);
|
|
44
|
-
__exportStar(require("./utils/fetch"), exports);
|
|
45
32
|
__exportStar(require("./utils/priceImpact"), exports);
|
|
46
33
|
__exportStar(require("./utils/dlob-server/DlobServerWebsocketUtils"), exports);
|
|
47
|
-
__exportStar(require("./common-ui-utils/settings/settings"), exports);
|
|
48
|
-
__exportStar(require("./utils/priority-fees"), exports);
|
|
49
34
|
__exportStar(require("./utils/orderbook"), exports);
|
|
50
|
-
__exportStar(require("./clients/candleClient"), exports);
|
|
51
|
-
__exportStar(require("./clients/marketDataFeed"), exports);
|
|
52
|
-
__exportStar(require("./clients/swiftClient"), exports);
|
|
53
|
-
__exportStar(require("./clients/tvFeed"), exports);
|
|
54
|
-
__exportStar(require("./clients/DlobWebsocketClient"), exports);
|
|
55
35
|
__exportStar(require("./utils/pollingSequenceGuard"), exports);
|
|
56
36
|
__exportStar(require("./utils/driftEvents"), exports);
|
|
57
|
-
__exportStar(require("./utils/MultiplexWebSocket"), exports);
|
|
58
37
|
__exportStar(require("./utils/SlotBasedResultValidator"), exports);
|
|
59
38
|
__exportStar(require("./utils/CircularBuffers"), exports);
|
|
60
39
|
__exportStar(require("./utils/rxjs"), exports);
|
|
61
40
|
__exportStar(require("./utils/priorityFees"), exports);
|
|
62
41
|
__exportStar(require("./utils/NumLib"), exports);
|
|
63
|
-
__exportStar(require("./utils/
|
|
64
|
-
__exportStar(require("./utils/
|
|
42
|
+
__exportStar(require("./utils/s3Buckets"), exports);
|
|
43
|
+
__exportStar(require("./utils/insuranceFund"), exports);
|
|
44
|
+
__exportStar(require("./utils/settings/settings"), exports);
|
|
65
45
|
var millify_1 = require("./utils/millify");
|
|
66
46
|
Object.defineProperty(exports, "millify", { enumerable: true, get: function () { return __importDefault(millify_1).default; } });
|
|
67
|
-
|
|
47
|
+
var signedMsgs_1 = require("./utils/signedMsgs");
|
|
48
|
+
Object.defineProperty(exports, "getSwiftConfirmationTimeoutMs", { enumerable: true, get: function () { return signedMsgs_1.getSwiftConfirmationTimeoutMs; } });
|
|
49
|
+
var ResultSlotIncrementer_1 = require("./utils/ResultSlotIncrementer");
|
|
50
|
+
Object.defineProperty(exports, "ResultSlotIncrementer", { enumerable: true, get: function () { return ResultSlotIncrementer_1.ResultSlotIncrementer; } });
|
|
51
|
+
var MultiplexWebSocket_1 = require("./utils/MultiplexWebSocket");
|
|
52
|
+
Object.defineProperty(exports, "MultiplexWebSocket", { enumerable: true, get: function () { return MultiplexWebSocket_1.MultiplexWebSocket; } });
|
|
53
|
+
// Deprecation facades
|
|
54
|
+
var utils_1 = require("./_deprecated/utils");
|
|
55
|
+
Object.defineProperty(exports, "COMMON_UTILS", { enumerable: true, get: function () { return utils_1.COMMON_UTILS; } });
|
|
56
|
+
var common_ui_utils_1 = require("./_deprecated/common-ui-utils");
|
|
57
|
+
Object.defineProperty(exports, "COMMON_UI_UTILS", { enumerable: true, get: function () { return common_ui_utils_1.COMMON_UI_UTILS; } });
|
|
58
|
+
var common_math_1 = require("./_deprecated/common-math");
|
|
59
|
+
Object.defineProperty(exports, "COMMON_MATH", { enumerable: true, get: function () { return common_math_1.COMMON_MATH; } });
|
|
60
|
+
var equality_checks_1 = require("./_deprecated/equality-checks");
|
|
61
|
+
Object.defineProperty(exports, "EQUALITY_CHECKS", { enumerable: true, get: function () { return equality_checks_1.EQUALITY_CHECKS; } });
|
|
62
|
+
var trading_utils_1 = require("./_deprecated/trading-utils");
|
|
63
|
+
Object.defineProperty(exports, "TRADING_UTILS", { enumerable: true, get: function () { return trading_utils_1.TRADING_UTILS; } });
|
|
64
|
+
var market_utils_1 = require("./_deprecated/market-utils");
|
|
65
|
+
Object.defineProperty(exports, "MARKET_UTILS", { enumerable: true, get: function () { return market_utils_1.MARKET_UTILS; } });
|
|
66
|
+
var order_utils_1 = require("./_deprecated/order-utils");
|
|
67
|
+
Object.defineProperty(exports, "ORDER_COMMON_UTILS", { enumerable: true, get: function () { return order_utils_1.ORDER_COMMON_UTILS; } });
|
|
68
|
+
var user_utils_1 = require("./_deprecated/user-utils");
|
|
69
|
+
Object.defineProperty(exports, "USER_UTILS", { enumerable: true, get: function () { return user_utils_1.USER_UTILS; } });
|
|
70
|
+
// Non-utils modules
|
|
71
|
+
__exportStar(require("./Config"), exports);
|
|
72
|
+
__exportStar(require("./chartConstants"), exports);
|
|
73
|
+
__exportStar(require("./types"), exports);
|
|
74
|
+
__exportStar(require("./EnvironmentConstants"), exports);
|
|
75
|
+
__exportStar(require("./serializableTypes"), exports);
|
|
76
|
+
__exportStar(require("./constants"), exports);
|
|
77
|
+
__exportStar(require("./actions/actionHelpers/actionHelpers"), exports);
|
|
78
|
+
__exportStar(require("./clients/candleClient"), exports);
|
|
79
|
+
__exportStar(require("./clients/marketDataFeed"), exports);
|
|
80
|
+
__exportStar(require("./clients/swiftClient"), exports);
|
|
81
|
+
__exportStar(require("./clients/tvFeed"), exports);
|
|
82
|
+
__exportStar(require("./clients/DlobWebsocketClient"), exports);
|
|
68
83
|
__exportStar(require("./drift"), exports);
|
|
69
84
|
// External Program Errors
|
|
70
85
|
const jup_v4_error_codes_json_1 = __importDefault(require("./constants/autogenerated/jup-v4-error-codes.json"));
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,oCAAoC;AACpC,0CAAwB;AAExB,6CAA6C;AAC7C,iDAA+B;AAC/B,uDAAqC;AACrC,yDAAuC;AACvC,qDAAmC;AACnC,yDAAuC;AACvC,oDAAkC;AAClC,wDAAsC;AACtC,qDAAmC;AACnC,sDAAoC;AACpC,+EAA6D;AAC7D,oDAAkC;AAClC,+DAA6C;AAC7C,sDAAoC;AACpC,mEAAiD;AACjD,0DAAwC;AACxC,+CAA6B;AAC7B,uDAAqC;AACrC,iDAA+B;AAC/B,oDAAkC;AAClC,wDAAsC;AACtC,4DAA0C;AAC1C,2CAAqD;AAA5C,mHAAA,OAAO,OAAW;AAC3B,iDAAmE;AAA1D,2HAAA,6BAA6B,OAAA;AACtC,uEAAsE;AAA7D,8HAAA,qBAAqB,OAAA;AAC9B,iEAAgE;AAAvD,wHAAA,kBAAkB,OAAA;AAE3B,sBAAsB;AACtB,6CAAmD;AAA1C,qGAAA,YAAY,OAAA;AACrB,iEAAgE;AAAvD,kHAAA,eAAe,OAAA;AACxB,yDAAwD;AAA/C,0GAAA,WAAW,OAAA;AACpB,iEAAgE;AAAvD,kHAAA,eAAe,OAAA;AACxB,6DAA4D;AAAnD,8GAAA,aAAa,OAAA;AACtB,2DAA0D;AAAjD,4GAAA,YAAY,OAAA;AACrB,yDAA+D;AAAtD,iHAAA,kBAAkB,OAAA;AAC3B,uDAAsD;AAA7C,wGAAA,UAAU,OAAA;AAEnB,oBAAoB;AACpB,2CAAyB;AACzB,mDAAiC;AACjC,0CAAwB;AACxB,yDAAuC;AACvC,sDAAoC;AACpC,8CAA4B;AAC5B,wEAAsD;AACtD,yDAAuC;AACvC,2DAAyC;AACzC,wDAAsC;AACtC,mDAAiC;AACjC,gEAA8C;AAC9C,0CAAwB;AAExB,0BAA0B;AAC1B,gHAA4E;AAEnE,sBAFF,iCAAW,CAEE;AADpB,gHAA4E;AACtD,sBADf,iCAAW,CACe;AAEjC,kGAAqE;AAC5D,sBADF,0BAAW,CACE","sourcesContent":["// Domain modules (via utils barrel)\nexport * from './utils';\n\n// Non-domain utils that stay at utils/ level\nexport * from './utils/logger';\nexport * from './utils/featureFlags';\nexport * from './utils/candles/Candle';\nexport * from './utils/rpcLatency';\nexport * from './utils/SharedInterval';\nexport * from './utils/Stopwatch';\nexport * from './utils/priority-fees';\nexport * from './utils/superstake';\nexport * from './utils/priceImpact';\nexport * from './utils/dlob-server/DlobServerWebsocketUtils';\nexport * from './utils/orderbook';\nexport * from './utils/pollingSequenceGuard';\nexport * from './utils/driftEvents';\nexport * from './utils/SlotBasedResultValidator';\nexport * from './utils/CircularBuffers';\nexport * from './utils/rxjs';\nexport * from './utils/priorityFees';\nexport * from './utils/NumLib';\nexport * from './utils/s3Buckets';\nexport * from './utils/insuranceFund';\nexport * from './utils/settings/settings';\nexport { default as millify } from './utils/millify';\nexport { getSwiftConfirmationTimeoutMs } from './utils/signedMsgs';\nexport { ResultSlotIncrementer } from './utils/ResultSlotIncrementer';\nexport { MultiplexWebSocket } from './utils/MultiplexWebSocket';\n\n// Deprecation facades\nexport { COMMON_UTILS } from './_deprecated/utils';\nexport { COMMON_UI_UTILS } from './_deprecated/common-ui-utils';\nexport { COMMON_MATH } from './_deprecated/common-math';\nexport { EQUALITY_CHECKS } from './_deprecated/equality-checks';\nexport { TRADING_UTILS } from './_deprecated/trading-utils';\nexport { MARKET_UTILS } from './_deprecated/market-utils';\nexport { ORDER_COMMON_UTILS } from './_deprecated/order-utils';\nexport { USER_UTILS } from './_deprecated/user-utils';\n\n// Non-utils modules\nexport * from './Config';\nexport * from './chartConstants';\nexport * from './types';\nexport * from './EnvironmentConstants';\nexport * from './serializableTypes';\nexport * from './constants';\nexport * from './actions/actionHelpers/actionHelpers';\nexport * from './clients/candleClient';\nexport * from './clients/marketDataFeed';\nexport * from './clients/swiftClient';\nexport * from './clients/tvFeed';\nexport * from './clients/DlobWebsocketClient';\nexport * from './drift';\n\n// External Program Errors\nimport JupV4Errors from './constants/autogenerated/jup-v4-error-codes.json';\nimport JupV6Errors from './constants/autogenerated/jup-v6-error-codes.json';\nexport { JupV4Errors, JupV6Errors };\n\nimport DriftErrors from './constants/autogenerated/driftErrors.json';\nexport { DriftErrors };\n"]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./init"), exports);
|
|
18
|
+
__exportStar(require("./keys"), exports);
|
|
19
|
+
__exportStar(require("./subaccounts"), exports);
|
|
20
|
+
__exportStar(require("./wallet"), exports);
|
|
21
|
+
__exportStar(require("./signature"), exports);
|
|
22
|
+
__exportStar(require("./multiple"), exports);
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/accounts/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,yCAAuB;AACvB,gDAA8B;AAC9B,2CAAyB;AACzB,8CAA4B;AAC5B,6CAA2B","sourcesContent":["export * from './init';\nexport * from './keys';\nexport * from './subaccounts';\nexport * from './wallet';\nexport * from './signature';\nexport * from './multiple';\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { DriftClient, PublicKey } from '@drift-labs/sdk';
|
|
2
|
+
declare const ACCOUNT_INITIALIZATION_RETRY_DELAY_MS = 1000;
|
|
3
|
+
declare const ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS = 5;
|
|
4
|
+
declare const awaitAccountInitializationChainState: (driftClient: DriftClient, userId: number, authority: PublicKey) => Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Using your own callback to do the account initialization, this method will run the initialization step, switch to the drift user, await for the account to be available on chain, subscribe to the user account, and switch to the user account using the drift client.
|
|
7
|
+
*
|
|
8
|
+
* It provides extra callbacks to handle steps directly after the initialiation tx, and after fully initializing+subscribing to the account.
|
|
9
|
+
*
|
|
10
|
+
* Callbacks available:
|
|
11
|
+
* - initializationStep: This callback should send the transaction to initialize the user account
|
|
12
|
+
* - postInitializationStep: This callback will run after the successful initialization transaction, but before trying to load/subscribe to the new account
|
|
13
|
+
* - handleSuccessStep: This callback will run after everything has initialized+subscribed successfully
|
|
14
|
+
*
|
|
15
|
+
* // TODO : Need to do the subscription step
|
|
16
|
+
*/
|
|
17
|
+
declare const initializeAndSubscribeToNewUserAccount: (driftClient: DriftClient, userIdToInit: number, authority: PublicKey, callbacks: {
|
|
18
|
+
initializationStep: () => Promise<boolean>;
|
|
19
|
+
postInitializationStep?: () => Promise<boolean>;
|
|
20
|
+
handleSuccessStep?: (accountAlreadyExisted: boolean) => Promise<boolean>;
|
|
21
|
+
}) => Promise<'ok' | 'failed_initializationStep' | 'failed_postInitializationStep' | 'failed_awaitAccountInitializationChainState' | 'failed_handleSuccessStep'>;
|
|
22
|
+
export { ACCOUNT_INITIALIZATION_RETRY_DELAY_MS, ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS, awaitAccountInitializationChainState, initializeAndSubscribeToNewUserAccount, };
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.initializeAndSubscribeToNewUserAccount = exports.awaitAccountInitializationChainState = exports.ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS = exports.ACCOUNT_INITIALIZATION_RETRY_DELAY_MS = void 0;
|
|
4
|
+
const async_1 = require("../core/async");
|
|
5
|
+
// When creating an account, try 5 times over 5 seconds to wait for the new account to hit the blockchain.
|
|
6
|
+
const ACCOUNT_INITIALIZATION_RETRY_DELAY_MS = 1000;
|
|
7
|
+
exports.ACCOUNT_INITIALIZATION_RETRY_DELAY_MS = ACCOUNT_INITIALIZATION_RETRY_DELAY_MS;
|
|
8
|
+
const ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS = 5;
|
|
9
|
+
exports.ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS = ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS;
|
|
10
|
+
const awaitAccountInitializationChainState = async (driftClient, userId, authority) => {
|
|
11
|
+
var _a;
|
|
12
|
+
const user = driftClient.getUser(userId, authority);
|
|
13
|
+
if (!user.isSubscribed) {
|
|
14
|
+
await user.subscribe();
|
|
15
|
+
}
|
|
16
|
+
let retryCount = 0;
|
|
17
|
+
do {
|
|
18
|
+
try {
|
|
19
|
+
await updateUserAccount(user);
|
|
20
|
+
if (((_a = user === null || user === void 0 ? void 0 : user.getUserAccountAndSlot()) === null || _a === void 0 ? void 0 : _a.data) !== undefined) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (err) {
|
|
25
|
+
retryCount++;
|
|
26
|
+
await (0, async_1.sleep)(ACCOUNT_INITIALIZATION_RETRY_DELAY_MS);
|
|
27
|
+
}
|
|
28
|
+
} while (retryCount < ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS);
|
|
29
|
+
throw new Error('awaitAccountInitializationFailed');
|
|
30
|
+
};
|
|
31
|
+
exports.awaitAccountInitializationChainState = awaitAccountInitializationChainState;
|
|
32
|
+
/**
|
|
33
|
+
* Using your own callback to do the account initialization, this method will run the initialization step, switch to the drift user, await for the account to be available on chain, subscribe to the user account, and switch to the user account using the drift client.
|
|
34
|
+
*
|
|
35
|
+
* It provides extra callbacks to handle steps directly after the initialiation tx, and after fully initializing+subscribing to the account.
|
|
36
|
+
*
|
|
37
|
+
* Callbacks available:
|
|
38
|
+
* - initializationStep: This callback should send the transaction to initialize the user account
|
|
39
|
+
* - postInitializationStep: This callback will run after the successful initialization transaction, but before trying to load/subscribe to the new account
|
|
40
|
+
* - handleSuccessStep: This callback will run after everything has initialized+subscribed successfully
|
|
41
|
+
*
|
|
42
|
+
* // TODO : Need to do the subscription step
|
|
43
|
+
*/
|
|
44
|
+
const initializeAndSubscribeToNewUserAccount = async (driftClient, userIdToInit, authority, callbacks) => {
|
|
45
|
+
var _a;
|
|
46
|
+
await driftClient.addUser(userIdToInit, authority);
|
|
47
|
+
const accountAlreadyExisted = await ((_a = driftClient
|
|
48
|
+
.getUser(userIdToInit)) === null || _a === void 0 ? void 0 : _a.exists());
|
|
49
|
+
// Do the account initialization step
|
|
50
|
+
let result = await callbacks.initializationStep();
|
|
51
|
+
// Fetch account to make sure it's loaded
|
|
52
|
+
await updateUserAccount(driftClient.getUser(userIdToInit));
|
|
53
|
+
if (!result) {
|
|
54
|
+
return 'failed_initializationStep';
|
|
55
|
+
}
|
|
56
|
+
// Do the post-initialization step
|
|
57
|
+
result = callbacks.postInitializationStep
|
|
58
|
+
? await callbacks.postInitializationStep()
|
|
59
|
+
: result;
|
|
60
|
+
if (!result) {
|
|
61
|
+
return 'failed_postInitializationStep';
|
|
62
|
+
}
|
|
63
|
+
// Await the account initialization step to update the blockchain
|
|
64
|
+
result = await awaitAccountInitializationChainState(driftClient, userIdToInit, authority);
|
|
65
|
+
if (!result) {
|
|
66
|
+
return 'failed_awaitAccountInitializationChainState';
|
|
67
|
+
}
|
|
68
|
+
await driftClient.switchActiveUser(userIdToInit, authority);
|
|
69
|
+
// Do the subscription step
|
|
70
|
+
// Run the success handler
|
|
71
|
+
result = callbacks.handleSuccessStep
|
|
72
|
+
? await callbacks.handleSuccessStep(accountAlreadyExisted)
|
|
73
|
+
: result;
|
|
74
|
+
if (!result) {
|
|
75
|
+
return 'failed_handleSuccessStep';
|
|
76
|
+
}
|
|
77
|
+
return 'ok';
|
|
78
|
+
};
|
|
79
|
+
exports.initializeAndSubscribeToNewUserAccount = initializeAndSubscribeToNewUserAccount;
|
|
80
|
+
async function updateUserAccount(user) {
|
|
81
|
+
const publicKey = user.userAccountPublicKey;
|
|
82
|
+
try {
|
|
83
|
+
const dataAndContext = await user.driftClient.program.account.user.fetchAndContext(publicKey, 'processed');
|
|
84
|
+
user.accountSubscriber.updateData(dataAndContext.data, dataAndContext.context.slot);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
// noop
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../../src/utils/accounts/init.ts"],"names":[],"mappings":";;;AACA,yCAAsC;AAEtC,0GAA0G;AAC1G,MAAM,qCAAqC,GAAG,IAAI,CAAC;AAiIlD,sFAAqC;AAhItC,MAAM,qCAAqC,GAAG,CAAC,CAAC;AAiI/C,sFAAqC;AA/HtC,MAAM,oCAAoC,GAAG,KAAK,EACjD,WAAwB,EACxB,MAAc,EACd,SAAoB,EACnB,EAAE;;IACH,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEpD,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;IACxB,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,GAAG,CAAC;QACH,IAAI,CAAC;YACJ,MAAM,iBAAiB,CAAC,IAAI,CAAC,CAAC;YAC9B,IAAI,CAAA,MAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,qBAAqB,EAAE,0CAAE,IAAI,MAAK,SAAS,EAAE,CAAC;gBACvD,OAAO,IAAI,CAAC;YACb,CAAC;QACF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACd,UAAU,EAAE,CAAC;YACb,MAAM,IAAA,aAAK,EAAC,qCAAqC,CAAC,CAAC;QACpD,CAAC;IACF,CAAC,QAAQ,UAAU,GAAG,qCAAqC,EAAE;IAE7D,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;AACrD,CAAC,CAAC;AAsGD,oFAAoC;AApGrC;;;;;;;;;;;GAWG;AACH,MAAM,sCAAsC,GAAG,KAAK,EACnD,WAAwB,EACxB,YAAoB,EACpB,SAAoB,EACpB,SAIC,EAOA,EAAE;;IACH,MAAM,WAAW,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAEnD,MAAM,qBAAqB,GAAG,MAAM,CAAA,MAAA,WAAW;SAC7C,OAAO,CAAC,YAAY,CAAC,0CACpB,MAAM,EAAE,CAAA,CAAC;IAEZ,qCAAqC;IACrC,IAAI,MAAM,GAAG,MAAM,SAAS,CAAC,kBAAkB,EAAE,CAAC;IAElD,yCAAyC;IACzC,MAAM,iBAAiB,CAAC,WAAW,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC;IAE3D,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,2BAA2B,CAAC;IACpC,CAAC;IAED,kCAAkC;IAClC,MAAM,GAAG,SAAS,CAAC,sBAAsB;QACxC,CAAC,CAAC,MAAM,SAAS,CAAC,sBAAsB,EAAE;QAC1C,CAAC,CAAC,MAAM,CAAC;IAEV,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,+BAA+B,CAAC;IACxC,CAAC;IAED,iEAAiE;IACjE,MAAM,GAAG,MAAM,oCAAoC,CAClD,WAAW,EACX,YAAY,EACZ,SAAS,CACT,CAAC;IAEF,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,6CAA6C,CAAC;IACtD,CAAC;IAED,MAAM,WAAW,CAAC,gBAAgB,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAE5D,2BAA2B;IAE3B,0BAA0B;IAC1B,MAAM,GAAG,SAAS,CAAC,iBAAiB;QACnC,CAAC,CAAC,MAAM,SAAS,CAAC,iBAAiB,CAAC,qBAAqB,CAAC;QAC1D,CAAC,CAAC,MAAM,CAAC;IAEV,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,0BAA0B,CAAC;IACnC,CAAC;IAED,OAAO,IAAI,CAAC;AACb,CAAC,CAAC;AAuBD,wFAAsC;AArBvC,KAAK,UAAU,iBAAiB,CAAC,IAAU;IAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,oBAAoB,CAAC;IAC5C,IAAI,CAAC;QACJ,MAAM,cAAc,GACnB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,eAAe,CAC1D,SAAS,EACT,WAAW,CACX,CAAC;QACH,IAAI,CAAC,iBAAiB,CAAC,UAAU,CAChC,cAAc,CAAC,IAAmB,EAClC,cAAc,CAAC,OAAO,CAAC,IAAI,CAC3B,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,OAAO;IACR,CAAC;AACF,CAAC","sourcesContent":["import { DriftClient, PublicKey, User, UserAccount } from '@drift-labs/sdk';\nimport { sleep } from '../core/async';\n\n// When creating an account, try 5 times over 5 seconds to wait for the new account to hit the blockchain.\nconst ACCOUNT_INITIALIZATION_RETRY_DELAY_MS = 1000;\nconst ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS = 5;\n\nconst awaitAccountInitializationChainState = async (\n\tdriftClient: DriftClient,\n\tuserId: number,\n\tauthority: PublicKey\n) => {\n\tconst user = driftClient.getUser(userId, authority);\n\n\tif (!user.isSubscribed) {\n\t\tawait user.subscribe();\n\t}\n\n\tlet retryCount = 0;\n\n\tdo {\n\t\ttry {\n\t\t\tawait updateUserAccount(user);\n\t\t\tif (user?.getUserAccountAndSlot()?.data !== undefined) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} catch (err) {\n\t\t\tretryCount++;\n\t\t\tawait sleep(ACCOUNT_INITIALIZATION_RETRY_DELAY_MS);\n\t\t}\n\t} while (retryCount < ACCOUNT_INITIALIZATION_RETRY_ATTEMPTS);\n\n\tthrow new Error('awaitAccountInitializationFailed');\n};\n\n/**\n * Using your own callback to do the account initialization, this method will run the initialization step, switch to the drift user, await for the account to be available on chain, subscribe to the user account, and switch to the user account using the drift client.\n *\n * It provides extra callbacks to handle steps directly after the initialiation tx, and after fully initializing+subscribing to the account.\n *\n * Callbacks available:\n * - initializationStep: This callback should send the transaction to initialize the user account\n * - postInitializationStep: This callback will run after the successful initialization transaction, but before trying to load/subscribe to the new account\n * - handleSuccessStep: This callback will run after everything has initialized+subscribed successfully\n *\n * // TODO : Need to do the subscription step\n */\nconst initializeAndSubscribeToNewUserAccount = async (\n\tdriftClient: DriftClient,\n\tuserIdToInit: number,\n\tauthority: PublicKey,\n\tcallbacks: {\n\t\tinitializationStep: () => Promise<boolean>;\n\t\tpostInitializationStep?: () => Promise<boolean>;\n\t\thandleSuccessStep?: (accountAlreadyExisted: boolean) => Promise<boolean>;\n\t}\n): Promise<\n\t| 'ok'\n\t| 'failed_initializationStep'\n\t| 'failed_postInitializationStep'\n\t| 'failed_awaitAccountInitializationChainState'\n\t| 'failed_handleSuccessStep'\n> => {\n\tawait driftClient.addUser(userIdToInit, authority);\n\n\tconst accountAlreadyExisted = await driftClient\n\t\t.getUser(userIdToInit)\n\t\t?.exists();\n\n\t// Do the account initialization step\n\tlet result = await callbacks.initializationStep();\n\n\t// Fetch account to make sure it's loaded\n\tawait updateUserAccount(driftClient.getUser(userIdToInit));\n\n\tif (!result) {\n\t\treturn 'failed_initializationStep';\n\t}\n\n\t// Do the post-initialization step\n\tresult = callbacks.postInitializationStep\n\t\t? await callbacks.postInitializationStep()\n\t\t: result;\n\n\tif (!result) {\n\t\treturn 'failed_postInitializationStep';\n\t}\n\n\t// Await the account initialization step to update the blockchain\n\tresult = await awaitAccountInitializationChainState(\n\t\tdriftClient,\n\t\tuserIdToInit,\n\t\tauthority\n\t);\n\n\tif (!result) {\n\t\treturn 'failed_awaitAccountInitializationChainState';\n\t}\n\n\tawait driftClient.switchActiveUser(userIdToInit, authority);\n\n\t// Do the subscription step\n\n\t// Run the success handler\n\tresult = callbacks.handleSuccessStep\n\t\t? await callbacks.handleSuccessStep(accountAlreadyExisted)\n\t\t: result;\n\n\tif (!result) {\n\t\treturn 'failed_handleSuccessStep';\n\t}\n\n\treturn 'ok';\n};\n\nasync function updateUserAccount(user: User): Promise<void> {\n\tconst publicKey = user.userAccountPublicKey;\n\ttry {\n\t\tconst dataAndContext =\n\t\t\tawait user.driftClient.program.account.user.fetchAndContext(\n\t\t\t\tpublicKey,\n\t\t\t\t'processed'\n\t\t\t);\n\t\tuser.accountSubscriber.updateData(\n\t\t\tdataAndContext.data as UserAccount,\n\t\t\tdataAndContext.context.slot\n\t\t);\n\t} catch (e) {\n\t\t// noop\n\t}\n}\n\nexport {\n\tACCOUNT_INITIALIZATION_RETRY_DELAY_MS,\n\tACCOUNT_INITIALIZATION_RETRY_ATTEMPTS,\n\tawaitAccountInitializationChainState,\n\tinitializeAndSubscribeToNewUserAccount,\n};\n"]}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { MarketType, PublicKey } from '@drift-labs/sdk';
|
|
2
|
+
/**
|
|
3
|
+
* Get a unique key for an authority's subaccount
|
|
4
|
+
* @param userId
|
|
5
|
+
* @param authority
|
|
6
|
+
* @returns
|
|
7
|
+
*/
|
|
8
|
+
declare const getUserKey: (userId: number, authority: PublicKey) => string;
|
|
9
|
+
/**
|
|
10
|
+
* Get the authority and subAccountId from a user's account key
|
|
11
|
+
* @param key
|
|
12
|
+
* @returns
|
|
13
|
+
*/
|
|
14
|
+
declare const getIdAndAuthorityFromKey: (key: string) => {
|
|
15
|
+
userId: number;
|
|
16
|
+
userAuthority: PublicKey;
|
|
17
|
+
} | {
|
|
18
|
+
userId: undefined;
|
|
19
|
+
userAuthority: undefined;
|
|
20
|
+
};
|
|
21
|
+
declare const getMarketKey: (marketIndex: number, marketType: MarketType) => string;
|
|
22
|
+
export { getUserKey, getIdAndAuthorityFromKey, getMarketKey };
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMarketKey = exports.getIdAndAuthorityFromKey = exports.getUserKey = void 0;
|
|
4
|
+
const sdk_1 = require("@drift-labs/sdk");
|
|
5
|
+
const cache_1 = require("../core/cache");
|
|
6
|
+
const enum_1 = require("../enum");
|
|
7
|
+
/**
|
|
8
|
+
* Get a unique key for an authority's subaccount
|
|
9
|
+
* @param userId
|
|
10
|
+
* @param authority
|
|
11
|
+
* @returns
|
|
12
|
+
*/
|
|
13
|
+
const getUserKey = (userId, authority) => {
|
|
14
|
+
if (userId == undefined || !authority)
|
|
15
|
+
return '';
|
|
16
|
+
return (0, cache_1.getCachedUiString)('userKey', userId, authority.toString());
|
|
17
|
+
};
|
|
18
|
+
exports.getUserKey = getUserKey;
|
|
19
|
+
/**
|
|
20
|
+
* Get the authority and subAccountId from a user's account key
|
|
21
|
+
* @param key
|
|
22
|
+
* @returns
|
|
23
|
+
*/
|
|
24
|
+
const getIdAndAuthorityFromKey = (key) => {
|
|
25
|
+
const splitKey = key === null || key === void 0 ? void 0 : key.split('_');
|
|
26
|
+
if (!splitKey || splitKey.length !== 2)
|
|
27
|
+
return { userId: undefined, userAuthority: undefined };
|
|
28
|
+
return {
|
|
29
|
+
userId: Number(splitKey[0]),
|
|
30
|
+
userAuthority: new sdk_1.PublicKey(splitKey[1]),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.getIdAndAuthorityFromKey = getIdAndAuthorityFromKey;
|
|
34
|
+
const getMarketKey = (marketIndex, marketType) => (0, cache_1.getCachedUiString)('marketKey', enum_1.ENUM_UTILS.toStr(marketType), marketIndex);
|
|
35
|
+
exports.getMarketKey = getMarketKey;
|
|
36
|
+
//# sourceMappingURL=keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../src/utils/accounts/keys.ts"],"names":[],"mappings":";;;AAAA,yCAAwD;AACxD,yCAAkD;AAClD,kCAAqC;AAErC;;;;;GAKG;AACH,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAE,EAAE;IAC3D,IAAI,MAAM,IAAI,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IACjD,OAAO,IAAA,yBAAiB,EAAC,SAAS,EAAE,MAAM,EAAE,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AA0BO,gCAAU;AAxBnB;;;;GAIG;AACH,MAAM,wBAAwB,GAAG,CAChC,GAAW,EAGuC,EAAE;IACpD,MAAM,QAAQ,GAAG,GAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IAEjC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QACrC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IAExD,OAAO;QACN,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3B,aAAa,EAAE,IAAI,eAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;KACzC,CAAC;AACH,CAAC,CAAC;AAKmB,4DAAwB;AAH7C,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,UAAsB,EAAE,EAAE,CACpE,IAAA,yBAAiB,EAAC,WAAW,EAAE,iBAAU,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,WAAW,CAAC,CAAC;AAE5B,oCAAY","sourcesContent":["import { MarketType, PublicKey } from '@drift-labs/sdk';\nimport { getCachedUiString } from '../core/cache';\nimport { ENUM_UTILS } from '../enum';\n\n/**\n * Get a unique key for an authority's subaccount\n * @param userId\n * @param authority\n * @returns\n */\nconst getUserKey = (userId: number, authority: PublicKey) => {\n\tif (userId == undefined || !authority) return '';\n\treturn getCachedUiString('userKey', userId, authority.toString());\n};\n\n/**\n * Get the authority and subAccountId from a user's account key\n * @param key\n * @returns\n */\nconst getIdAndAuthorityFromKey = (\n\tkey: string\n):\n\t| { userId: number; userAuthority: PublicKey }\n\t| { userId: undefined; userAuthority: undefined } => {\n\tconst splitKey = key?.split('_');\n\n\tif (!splitKey || splitKey.length !== 2)\n\t\treturn { userId: undefined, userAuthority: undefined };\n\n\treturn {\n\t\tuserId: Number(splitKey[0]),\n\t\tuserAuthority: new PublicKey(splitKey[1]),\n\t};\n};\n\nconst getMarketKey = (marketIndex: number, marketType: MarketType) =>\n\tgetCachedUiString('marketKey', ENUM_UTILS.toStr(marketType), marketIndex);\n\nexport { getUserKey, getIdAndAuthorityFromKey, getMarketKey };\n"]}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
import { PublicKey } from '@drift-labs/sdk';
|
|
4
|
+
import { AccountInfo, Connection } from '@solana/web3.js';
|
|
5
|
+
declare const getMultipleAccounts: (connection: any, keys: string[], commitment: string) => Promise<{
|
|
6
|
+
keys: string[];
|
|
7
|
+
array: AccountInfo<Buffer>[];
|
|
8
|
+
}>;
|
|
9
|
+
declare const getMultipleAccountsCore: (connection: any, keys: string[], commitment: string) => Promise<{
|
|
10
|
+
keys: string[];
|
|
11
|
+
array: AccountInfo<string[]>[];
|
|
12
|
+
}>;
|
|
13
|
+
declare const getMultipleAccountsInfoChunked: (connection: Connection, accounts: PublicKey[]) => Promise<(AccountInfo<Buffer> | null)[]>;
|
|
14
|
+
export { getMultipleAccounts, getMultipleAccountsCore, getMultipleAccountsInfoChunked, };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMultipleAccountsInfoChunked = exports.getMultipleAccountsCore = exports.getMultipleAccounts = void 0;
|
|
4
|
+
const arrays_1 = require("../core/arrays");
|
|
5
|
+
const getMultipleAccounts = async (connection, keys, commitment) => {
|
|
6
|
+
const result = await Promise.all((0, arrays_1.chunks)(keys, 99).map((chunk) => getMultipleAccountsCore(connection, chunk, commitment)));
|
|
7
|
+
const array = result
|
|
8
|
+
.map((a) => a.array
|
|
9
|
+
.map((acc) => {
|
|
10
|
+
if (!acc) {
|
|
11
|
+
return undefined;
|
|
12
|
+
}
|
|
13
|
+
const { data, ...rest } = acc;
|
|
14
|
+
const obj = {
|
|
15
|
+
...rest,
|
|
16
|
+
data: Buffer.from(data[0], 'base64'),
|
|
17
|
+
};
|
|
18
|
+
return obj;
|
|
19
|
+
})
|
|
20
|
+
.filter((_) => _))
|
|
21
|
+
.flat();
|
|
22
|
+
return { keys, array };
|
|
23
|
+
};
|
|
24
|
+
exports.getMultipleAccounts = getMultipleAccounts;
|
|
25
|
+
const getMultipleAccountsCore = async (connection, keys, commitment) => {
|
|
26
|
+
const args = connection._buildArgs([keys], commitment, 'base64');
|
|
27
|
+
const unsafeRes = await connection._rpcRequest('getMultipleAccounts', args);
|
|
28
|
+
if (unsafeRes.error) {
|
|
29
|
+
throw new Error('failed to get info about account ' + unsafeRes.error.message);
|
|
30
|
+
}
|
|
31
|
+
if (unsafeRes.result.value) {
|
|
32
|
+
const array = unsafeRes.result.value;
|
|
33
|
+
return { keys, array };
|
|
34
|
+
}
|
|
35
|
+
// TODO: fix
|
|
36
|
+
throw new Error();
|
|
37
|
+
};
|
|
38
|
+
exports.getMultipleAccountsCore = getMultipleAccountsCore;
|
|
39
|
+
const getMultipleAccountsInfoChunked = async (connection, accounts) => {
|
|
40
|
+
const accountChunks = (0, arrays_1.chunks)(accounts, 100); // 100 is limit for getMultipleAccountsInfo
|
|
41
|
+
const responses = await Promise.all(accountChunks.map((chunk) => connection.getMultipleAccountsInfo(chunk)));
|
|
42
|
+
return responses.flat();
|
|
43
|
+
};
|
|
44
|
+
exports.getMultipleAccountsInfoChunked = getMultipleAccountsInfoChunked;
|
|
45
|
+
//# sourceMappingURL=multiple.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multiple.js","sourceRoot":"","sources":["../../../src/utils/accounts/multiple.ts"],"names":[],"mappings":";;;AAEA,2CAAwC;AAExC,MAAM,mBAAmB,GAAG,KAAK,EAChC,UAAe,EACf,IAAc,EACd,UAAkB,EACjB,EAAE;IACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,IAAA,eAAM,EAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAC9B,uBAAuB,CAAC,UAAU,EAAE,KAAK,EAAE,UAAU,CAAC,CACtD,CACD,CAAC;IAEF,MAAM,KAAK,GAAG,MAAM;SAClB,GAAG,CACH,CAAC,CAAC,EAAE,EAAE,CACL,CAAC,CAAC,KAAK;SACL,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QACZ,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO,SAAS,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;QAC9B,MAAM,GAAG,GAAG;YACX,GAAG,IAAI;YACP,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;SACb,CAAC;QACzB,OAAO,GAAG,CAAC;IACZ,CAAC,CAAC;SACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAA0B,CAC5C;SACA,IAAI,EAAE,CAAC;IACT,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AACxB,CAAC,CAAC;AAqCD,kDAAmB;AAnCpB,MAAM,uBAAuB,GAAG,KAAK,EACpC,UAAe,EACf,IAAc,EACd,UAAkB,EACjB,EAAE;IACH,MAAM,IAAI,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,CAAC;IAEjE,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,WAAW,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IAC5E,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CACd,mCAAmC,GAAG,SAAS,CAAC,KAAK,CAAC,OAAO,CAC7D,CAAC;IACH,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAAC,KAAgC,CAAC;QAChE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;IACxB,CAAC;IAED,YAAY;IACZ,MAAM,IAAI,KAAK,EAAE,CAAC;AACnB,CAAC,CAAC;AAeD,0DAAuB;AAbxB,MAAM,8BAA8B,GAAG,KAAK,EAC3C,UAAsB,EACtB,QAAqB,EACqB,EAAE;IAC5C,MAAM,aAAa,GAAG,IAAA,eAAM,EAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,2CAA2C;IACxF,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CAClC,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,CAAC,uBAAuB,CAAC,KAAK,CAAC,CAAC,CACvE,CAAC;IACF,OAAO,SAAS,CAAC,IAAI,EAAE,CAAC;AACzB,CAAC,CAAC;AAKD,wEAA8B","sourcesContent":["import { PublicKey } from '@drift-labs/sdk';\nimport { AccountInfo, Connection } from '@solana/web3.js';\nimport { chunks } from '../core/arrays';\n\nconst getMultipleAccounts = async (\n\tconnection: any,\n\tkeys: string[],\n\tcommitment: string\n) => {\n\tconst result = await Promise.all(\n\t\tchunks(keys, 99).map((chunk) =>\n\t\t\tgetMultipleAccountsCore(connection, chunk, commitment)\n\t\t)\n\t);\n\n\tconst array = result\n\t\t.map(\n\t\t\t(a) =>\n\t\t\t\ta.array\n\t\t\t\t\t.map((acc) => {\n\t\t\t\t\t\tif (!acc) {\n\t\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst { data, ...rest } = acc;\n\t\t\t\t\t\tconst obj = {\n\t\t\t\t\t\t\t...rest,\n\t\t\t\t\t\t\tdata: Buffer.from(data[0], 'base64'),\n\t\t\t\t\t\t} as AccountInfo<Buffer>;\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t})\n\t\t\t\t\t.filter((_) => _) as AccountInfo<Buffer>[]\n\t\t)\n\t\t.flat();\n\treturn { keys, array };\n};\n\nconst getMultipleAccountsCore = async (\n\tconnection: any,\n\tkeys: string[],\n\tcommitment: string\n) => {\n\tconst args = connection._buildArgs([keys], commitment, 'base64');\n\n\tconst unsafeRes = await connection._rpcRequest('getMultipleAccounts', args);\n\tif (unsafeRes.error) {\n\t\tthrow new Error(\n\t\t\t'failed to get info about account ' + unsafeRes.error.message\n\t\t);\n\t}\n\n\tif (unsafeRes.result.value) {\n\t\tconst array = unsafeRes.result.value as AccountInfo<string[]>[];\n\t\treturn { keys, array };\n\t}\n\n\t// TODO: fix\n\tthrow new Error();\n};\n\nconst getMultipleAccountsInfoChunked = async (\n\tconnection: Connection,\n\taccounts: PublicKey[]\n): Promise<(AccountInfo<Buffer> | null)[]> => {\n\tconst accountChunks = chunks(accounts, 100); // 100 is limit for getMultipleAccountsInfo\n\tconst responses = await Promise.all(\n\t\taccountChunks.map((chunk) => connection.getMultipleAccountsInfo(chunk))\n\t);\n\treturn responses.flat();\n};\n\nexport {\n\tgetMultipleAccounts,\n\tgetMultipleAccountsCore,\n\tgetMultipleAccountsInfoChunked,\n};\n"]}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { PublicKey } from '@drift-labs/sdk';
|
|
2
|
+
declare const getSignatureVerificationMessageForSettings: (authority: PublicKey, signTs: number) => Uint8Array;
|
|
3
|
+
declare const verifySignature: (signature: Uint8Array, message: Uint8Array, pubKey: PublicKey) => boolean;
|
|
4
|
+
declare const hashSignature: (signature: string) => Promise<string>;
|
|
5
|
+
declare const compareSignatures: (original: string, hashed: string) => Promise<boolean>;
|
|
6
|
+
export { getSignatureVerificationMessageForSettings, verifySignature, hashSignature, compareSignatures, };
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.compareSignatures = exports.hashSignature = exports.verifySignature = exports.getSignatureVerificationMessageForSettings = void 0;
|
|
30
|
+
const bcryptjs_react_1 = __importDefault(require("bcryptjs-react"));
|
|
31
|
+
const tweetnacl_1 = __importStar(require("tweetnacl"));
|
|
32
|
+
const getSignatureVerificationMessageForSettings = (authority, signTs) => {
|
|
33
|
+
return new TextEncoder().encode(`Verify you are the owner of this wallet to update trade settings: \n${authority.toBase58()}\n\nThis signature will be valid for the next 30 minutes.\n\nTS: ${signTs.toString()}`);
|
|
34
|
+
};
|
|
35
|
+
exports.getSignatureVerificationMessageForSettings = getSignatureVerificationMessageForSettings;
|
|
36
|
+
const verifySignature = (signature, message, pubKey) => {
|
|
37
|
+
return tweetnacl_1.sign.detached.verify(message, signature, pubKey.toBytes());
|
|
38
|
+
};
|
|
39
|
+
exports.verifySignature = verifySignature;
|
|
40
|
+
const hashSignature = async (signature) => {
|
|
41
|
+
bcryptjs_react_1.default.setRandomFallback((num) => {
|
|
42
|
+
return Array.from(tweetnacl_1.default.randomBytes(num));
|
|
43
|
+
});
|
|
44
|
+
const hashedSignature = await bcryptjs_react_1.default.hash(signature, bcryptjs_react_1.default.genSaltSync(10));
|
|
45
|
+
return hashedSignature;
|
|
46
|
+
};
|
|
47
|
+
exports.hashSignature = hashSignature;
|
|
48
|
+
const compareSignatures = async (original, hashed) => {
|
|
49
|
+
const signaturesMatch = await bcryptjs_react_1.default.compare(original, hashed);
|
|
50
|
+
return signaturesMatch;
|
|
51
|
+
};
|
|
52
|
+
exports.compareSignatures = compareSignatures;
|
|
53
|
+
//# sourceMappingURL=signature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signature.js","sourceRoot":"","sources":["../../../src/utils/accounts/signature.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,oEAAoC;AACpC,uDAAuC;AAEvC,MAAM,0CAA0C,GAAG,CAClD,SAAoB,EACpB,MAAc,EACD,EAAE;IACf,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAC9B,uEAAuE,SAAS,CAAC,QAAQ,EAAE,oEAAoE,MAAM,CAAC,QAAQ,EAAE,EAAE,CAClL,CAAC;AACH,CAAC,CAAC;AA2BD,gGAA0C;AAzB3C,MAAM,eAAe,GAAG,CACvB,SAAqB,EACrB,OAAmB,EACnB,MAAiB,EACP,EAAE;IACZ,OAAO,gBAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC,CAAC;AAoBD,0CAAe;AAlBhB,MAAM,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAmB,EAAE;IAClE,wBAAM,CAAC,iBAAiB,CAAC,CAAC,GAAW,EAAE,EAAE;QACxC,OAAO,KAAK,CAAC,IAAI,CAAC,mBAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,MAAM,wBAAM,CAAC,IAAI,CAAC,SAAS,EAAE,wBAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAC7E,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAaD,sCAAa;AAXd,MAAM,iBAAiB,GAAG,KAAK,EAC9B,QAAgB,EAChB,MAAc,EACK,EAAE;IACrB,MAAM,eAAe,GAAG,MAAM,wBAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/D,OAAO,eAAe,CAAC;AACxB,CAAC,CAAC;AAMD,8CAAiB","sourcesContent":["import { PublicKey } from '@drift-labs/sdk';\nimport bcrypt from 'bcryptjs-react';\nimport nacl, { sign } from 'tweetnacl';\n\nconst getSignatureVerificationMessageForSettings = (\n\tauthority: PublicKey,\n\tsignTs: number\n): Uint8Array => {\n\treturn new TextEncoder().encode(\n\t\t`Verify you are the owner of this wallet to update trade settings: \\n${authority.toBase58()}\\n\\nThis signature will be valid for the next 30 minutes.\\n\\nTS: ${signTs.toString()}`\n\t);\n};\n\nconst verifySignature = (\n\tsignature: Uint8Array,\n\tmessage: Uint8Array,\n\tpubKey: PublicKey\n): boolean => {\n\treturn sign.detached.verify(message, signature, pubKey.toBytes());\n};\n\nconst hashSignature = async (signature: string): Promise<string> => {\n\tbcrypt.setRandomFallback((num: number) => {\n\t\treturn Array.from(nacl.randomBytes(num));\n\t});\n\tconst hashedSignature = await bcrypt.hash(signature, bcrypt.genSaltSync(10));\n\treturn hashedSignature;\n};\n\nconst compareSignatures = async (\n\toriginal: string,\n\thashed: string\n): Promise<boolean> => {\n\tconst signaturesMatch = await bcrypt.compare(original, hashed);\n\treturn signaturesMatch;\n};\n\nexport {\n\tgetSignatureVerificationMessageForSettings,\n\tverifySignature,\n\thashSignature,\n\tcompareSignatures,\n};\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { DriftClient, PublicKey, User, UserAccount } from '@drift-labs/sdk';
|
|
2
|
+
declare const fetchCurrentSubaccounts: (driftClient: DriftClient) => UserAccount[];
|
|
3
|
+
declare const fetchUserClientsAndAccounts: (driftClient: DriftClient) => {
|
|
4
|
+
user: User;
|
|
5
|
+
userAccount: UserAccount;
|
|
6
|
+
}[];
|
|
7
|
+
declare const userExists: (driftClient: DriftClient, userId: number, authority: PublicKey) => Promise<boolean>;
|
|
8
|
+
export { fetchCurrentSubaccounts, fetchUserClientsAndAccounts, userExists };
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.userExists = exports.fetchUserClientsAndAccounts = exports.fetchCurrentSubaccounts = void 0;
|
|
4
|
+
const fetchCurrentSubaccounts = (driftClient) => {
|
|
5
|
+
return driftClient.getUsers().map((user) => user.getUserAccount());
|
|
6
|
+
};
|
|
7
|
+
exports.fetchCurrentSubaccounts = fetchCurrentSubaccounts;
|
|
8
|
+
const fetchUserClientsAndAccounts = (driftClient) => {
|
|
9
|
+
const accounts = fetchCurrentSubaccounts(driftClient);
|
|
10
|
+
const allUsersAndUserAccounts = accounts.map((acct) => {
|
|
11
|
+
return {
|
|
12
|
+
user: driftClient.getUser(acct.subAccountId, acct.authority),
|
|
13
|
+
userAccount: acct,
|
|
14
|
+
};
|
|
15
|
+
});
|
|
16
|
+
return allUsersAndUserAccounts;
|
|
17
|
+
};
|
|
18
|
+
exports.fetchUserClientsAndAccounts = fetchUserClientsAndAccounts;
|
|
19
|
+
const userExists = async (driftClient, userId, authority) => {
|
|
20
|
+
let userAccountExists = false;
|
|
21
|
+
try {
|
|
22
|
+
const user = driftClient.getUser(userId, authority);
|
|
23
|
+
userAccountExists = await user.exists();
|
|
24
|
+
}
|
|
25
|
+
catch (e) {
|
|
26
|
+
// user account does not exist so we leave userAccountExists false
|
|
27
|
+
}
|
|
28
|
+
return userAccountExists;
|
|
29
|
+
};
|
|
30
|
+
exports.userExists = userExists;
|
|
31
|
+
//# sourceMappingURL=subaccounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"subaccounts.js","sourceRoot":"","sources":["../../../src/utils/accounts/subaccounts.ts"],"names":[],"mappings":";;;AAEA,MAAM,uBAAuB,GAAG,CAAC,WAAwB,EAAiB,EAAE;IAC3E,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;AACpE,CAAC,CAAC;AAiCO,0DAAuB;AA/BhC,MAAM,2BAA2B,GAAG,CACnC,WAAwB,EACqB,EAAE;IAC/C,MAAM,QAAQ,GAAG,uBAAuB,CAAC,WAAW,CAAC,CAAC;IACtD,MAAM,uBAAuB,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACrD,OAAO;YACN,IAAI,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC;YAC5D,WAAW,EAAE,IAAI;SACjB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,uBAAuB,CAAC;AAChC,CAAC,CAAC;AAmBgC,kEAA2B;AAjB7D,MAAM,UAAU,GAAG,KAAK,EACvB,WAAwB,EACxB,MAAc,EACd,SAAoB,EACnB,EAAE;IACH,IAAI,iBAAiB,GAAG,KAAK,CAAC;IAE9B,IAAI,CAAC;QACJ,MAAM,IAAI,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACpD,iBAAiB,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;IACzC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACZ,kEAAkE;IACnE,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC1B,CAAC,CAAC;AAE6D,gCAAU","sourcesContent":["import { DriftClient, PublicKey, User, UserAccount } from '@drift-labs/sdk';\n\nconst fetchCurrentSubaccounts = (driftClient: DriftClient): UserAccount[] => {\n\treturn driftClient.getUsers().map((user) => user.getUserAccount());\n};\n\nconst fetchUserClientsAndAccounts = (\n\tdriftClient: DriftClient\n): { user: User; userAccount: UserAccount }[] => {\n\tconst accounts = fetchCurrentSubaccounts(driftClient);\n\tconst allUsersAndUserAccounts = accounts.map((acct) => {\n\t\treturn {\n\t\t\tuser: driftClient.getUser(acct.subAccountId, acct.authority),\n\t\t\tuserAccount: acct,\n\t\t};\n\t});\n\n\treturn allUsersAndUserAccounts;\n};\n\nconst userExists = async (\n\tdriftClient: DriftClient,\n\tuserId: number,\n\tauthority: PublicKey\n) => {\n\tlet userAccountExists = false;\n\n\ttry {\n\t\tconst user = driftClient.getUser(userId, authority);\n\t\tuserAccountExists = await user.exists();\n\t} catch (e) {\n\t\t// user account does not exist so we leave userAccountExists false\n\t}\n\n\treturn userAccountExists;\n};\n\nexport { fetchCurrentSubaccounts, fetchUserClientsAndAccounts, userExists };\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { PublicKey } from '@drift-labs/sdk';
|
|
1
|
+
import { IWalletV2, PublicKey } from '@drift-labs/sdk';
|
|
2
2
|
export declare enum ConnectionStateSteps {
|
|
3
3
|
NotConnected = 0,
|
|
4
4
|
AdapterConnected = 1,
|
|
@@ -29,3 +29,9 @@ export declare class WalletConnectionState {
|
|
|
29
29
|
get FullyConnected(): boolean;
|
|
30
30
|
get SubaccountsSubscribed(): boolean;
|
|
31
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Creates an IWallet wrapper, with redundant methods. If a `walletPubKey` is passed in,
|
|
34
|
+
* the `publicKey` will be based on that.
|
|
35
|
+
*/
|
|
36
|
+
declare const createPlaceholderIWallet: (walletPubKey?: PublicKey) => IWalletV2;
|
|
37
|
+
export { createPlaceholderIWallet };
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.WalletConnectionState = exports.ConnectionStates = exports.ConnectionStateSteps = void 0;
|
|
3
|
+
exports.createPlaceholderIWallet = exports.WalletConnectionState = exports.ConnectionStates = exports.ConnectionStateSteps = void 0;
|
|
4
|
+
const web3_js_1 = require("@solana/web3.js");
|
|
4
5
|
var ConnectionStateSteps;
|
|
5
6
|
(function (ConnectionStateSteps) {
|
|
6
7
|
ConnectionStateSteps[ConnectionStateSteps["NotConnected"] = 0] = "NotConnected";
|
|
@@ -80,4 +81,33 @@ class WalletConnectionState {
|
|
|
80
81
|
}
|
|
81
82
|
}
|
|
82
83
|
exports.WalletConnectionState = WalletConnectionState;
|
|
83
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Creates an IWallet wrapper, with redundant methods. If a `walletPubKey` is passed in,
|
|
86
|
+
* the `publicKey` will be based on that.
|
|
87
|
+
*/
|
|
88
|
+
const createPlaceholderIWallet = (walletPubKey) => {
|
|
89
|
+
const newKeypair = walletPubKey
|
|
90
|
+
? new web3_js_1.Keypair({
|
|
91
|
+
publicKey: walletPubKey.toBytes(),
|
|
92
|
+
secretKey: new web3_js_1.Keypair().publicKey.toBytes(),
|
|
93
|
+
})
|
|
94
|
+
: new web3_js_1.Keypair();
|
|
95
|
+
const newWallet = {
|
|
96
|
+
publicKey: newKeypair.publicKey,
|
|
97
|
+
//@ts-ignore
|
|
98
|
+
signTransaction: () => {
|
|
99
|
+
return Promise.resolve();
|
|
100
|
+
},
|
|
101
|
+
//@ts-ignore
|
|
102
|
+
signAllTransactions: () => {
|
|
103
|
+
return Promise.resolve();
|
|
104
|
+
},
|
|
105
|
+
//@ts-ignore
|
|
106
|
+
signMessage: () => {
|
|
107
|
+
return Promise.resolve();
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
return newWallet;
|
|
111
|
+
};
|
|
112
|
+
exports.createPlaceholderIWallet = createPlaceholderIWallet;
|
|
113
|
+
//# sourceMappingURL=wallet.js.map
|