@lightconexyz/lightcone-sdk 0.1.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +33 -206
- package/dist/auth/client.d.ts +25 -0
- package/dist/auth/client.d.ts.map +1 -0
- package/dist/auth/client.js +120 -0
- package/dist/auth/client.js.map +1 -0
- package/dist/auth/index.d.ts +73 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +42 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/native.d.ts +8 -0
- package/dist/auth/native.d.ts.map +1 -0
- package/dist/auth/native.js +19 -0
- package/dist/auth/native.js.map +1 -0
- package/dist/auth.d.ts +1 -79
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +15 -145
- package/dist/auth.js.map +1 -1
- package/dist/client.d.ts +69 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +158 -0
- package/dist/client.js.map +1 -0
- package/dist/domain/admin/client.d.ts +17 -0
- package/dist/domain/admin/client.d.ts.map +1 -0
- package/dist/domain/admin/client.js +32 -0
- package/dist/domain/admin/client.js.map +1 -0
- package/dist/domain/admin/index.d.ts +7 -0
- package/dist/domain/admin/index.d.ts.map +1 -0
- package/dist/domain/admin/index.js +19 -0
- package/dist/domain/admin/index.js.map +1 -0
- package/dist/domain/admin/wire.d.ts +117 -0
- package/dist/domain/admin/wire.d.ts.map +1 -0
- package/dist/domain/admin/wire.js +3 -0
- package/dist/domain/admin/wire.js.map +1 -0
- package/dist/domain/index.d.ts +9 -0
- package/dist/domain/index.d.ts.map +1 -0
- package/dist/domain/index.js +45 -0
- package/dist/domain/index.js.map +1 -0
- package/dist/domain/market/client.d.ts +21 -0
- package/dist/domain/market/client.d.ts.map +1 -0
- package/dist/domain/market/client.js +70 -0
- package/dist/domain/market/client.js.map +1 -0
- package/dist/domain/market/convert.d.ts +8 -0
- package/dist/domain/market/convert.d.ts.map +1 -0
- package/dist/domain/market/convert.js +96 -0
- package/dist/domain/market/convert.js.map +1 -0
- package/dist/domain/market/index.d.ts +47 -0
- package/dist/domain/market/index.d.ts.map +1 -0
- package/dist/domain/market/index.js +58 -0
- package/dist/domain/market/index.js.map +1 -0
- package/dist/domain/market/outcome.d.ts +12 -0
- package/dist/domain/market/outcome.d.ts.map +1 -0
- package/dist/domain/market/outcome.js +28 -0
- package/dist/domain/market/outcome.js.map +1 -0
- package/dist/domain/market/tokens.d.ts +42 -0
- package/dist/domain/market/tokens.d.ts.map +1 -0
- package/dist/domain/market/tokens.js +106 -0
- package/dist/domain/market/tokens.js.map +1 -0
- package/dist/domain/market/wire.d.ts +116 -0
- package/dist/domain/market/wire.d.ts.map +1 -0
- package/dist/domain/market/wire.js +3 -0
- package/dist/domain/market/wire.js.map +1 -0
- package/dist/domain/order/client.d.ts +187 -0
- package/dist/domain/order/client.d.ts.map +1 -0
- package/dist/domain/order/client.js +122 -0
- package/dist/domain/order/client.js.map +1 -0
- package/dist/domain/order/convert.d.ts +8 -0
- package/dist/domain/order/convert.d.ts.map +1 -0
- package/dist/domain/order/convert.js +80 -0
- package/dist/domain/order/convert.js.map +1 -0
- package/dist/domain/order/index.d.ts +48 -0
- package/dist/domain/order/index.d.ts.map +1 -0
- package/dist/domain/order/index.js +41 -0
- package/dist/domain/order/index.js.map +1 -0
- package/dist/domain/order/state.d.ts +26 -0
- package/dist/domain/order/state.d.ts.map +1 -0
- package/dist/domain/order/state.js +85 -0
- package/dist/domain/order/state.js.map +1 -0
- package/dist/domain/order/wire.d.ts +123 -0
- package/dist/domain/order/wire.d.ts.map +1 -0
- package/dist/domain/order/wire.js +3 -0
- package/dist/domain/order/wire.js.map +1 -0
- package/dist/domain/orderbook/client.d.ts +20 -0
- package/dist/domain/orderbook/client.d.ts.map +1 -0
- package/dist/domain/orderbook/client.js +30 -0
- package/dist/domain/orderbook/client.js.map +1 -0
- package/dist/domain/orderbook/convert.d.ts +5 -0
- package/dist/domain/orderbook/convert.d.ts.map +1 -0
- package/dist/domain/orderbook/convert.js +34 -0
- package/dist/domain/orderbook/convert.js.map +1 -0
- package/dist/domain/orderbook/index.d.ts +36 -0
- package/dist/domain/orderbook/index.d.ts.map +1 -0
- package/dist/domain/orderbook/index.js +63 -0
- package/dist/domain/orderbook/index.js.map +1 -0
- package/dist/domain/orderbook/state.d.ts +19 -0
- package/dist/domain/orderbook/state.d.ts.map +1 -0
- package/dist/domain/orderbook/state.js +86 -0
- package/dist/domain/orderbook/state.js.map +1 -0
- package/dist/domain/orderbook/ticker.d.ts +8 -0
- package/dist/domain/orderbook/ticker.d.ts.map +1 -0
- package/dist/domain/orderbook/ticker.js +3 -0
- package/dist/domain/orderbook/ticker.js.map +1 -0
- package/dist/domain/orderbook/wire.d.ts +63 -0
- package/dist/domain/orderbook/wire.d.ts.map +1 -0
- package/dist/domain/orderbook/wire.js +3 -0
- package/dist/domain/orderbook/wire.js.map +1 -0
- package/dist/domain/position/client.d.ts +13 -0
- package/dist/domain/position/client.d.ts.map +1 -0
- package/dist/domain/position/client.js +20 -0
- package/dist/domain/position/client.js.map +1 -0
- package/dist/domain/position/index.d.ts +66 -0
- package/dist/domain/position/index.d.ts.map +1 -0
- package/dist/domain/position/index.js +19 -0
- package/dist/domain/position/index.js.map +1 -0
- package/dist/domain/position/wire.d.ts +29 -0
- package/dist/domain/position/wire.d.ts.map +1 -0
- package/dist/domain/position/wire.js +3 -0
- package/dist/domain/position/wire.js.map +1 -0
- package/dist/domain/price_history/client.d.ts +12 -0
- package/dist/domain/price_history/client.d.ts.map +1 -0
- package/dist/domain/price_history/client.js +24 -0
- package/dist/domain/price_history/client.js.map +1 -0
- package/dist/domain/price_history/index.d.ts +14 -0
- package/dist/domain/price_history/index.d.ts.map +1 -0
- package/dist/domain/price_history/index.js +27 -0
- package/dist/domain/price_history/index.js.map +1 -0
- package/dist/domain/price_history/state.d.ts +11 -0
- package/dist/domain/price_history/state.d.ts.map +1 -0
- package/dist/domain/price_history/state.js +35 -0
- package/dist/domain/price_history/state.js.map +1 -0
- package/dist/domain/price_history/wire.d.ts +45 -0
- package/dist/domain/price_history/wire.d.ts.map +1 -0
- package/dist/domain/price_history/wire.js +3 -0
- package/dist/domain/price_history/wire.js.map +1 -0
- package/dist/domain/referral/client.d.ts +13 -0
- package/dist/domain/referral/client.d.ts.map +1 -0
- package/dist/domain/referral/client.js +34 -0
- package/dist/domain/referral/client.js.map +1 -0
- package/dist/domain/referral/index.d.ts +17 -0
- package/dist/domain/referral/index.d.ts.map +1 -0
- package/dist/domain/referral/index.js +19 -0
- package/dist/domain/referral/index.js.map +1 -0
- package/dist/domain/referral/wire.d.ts +22 -0
- package/dist/domain/referral/wire.d.ts.map +1 -0
- package/dist/domain/referral/wire.js +3 -0
- package/dist/domain/referral/wire.js.map +1 -0
- package/dist/domain/trade/client.d.ts +12 -0
- package/dist/domain/trade/client.d.ts.map +1 -0
- package/dist/domain/trade/client.js +27 -0
- package/dist/domain/trade/client.js.map +1 -0
- package/dist/domain/trade/convert.d.ts +5 -0
- package/dist/domain/trade/convert.d.ts.map +1 -0
- package/dist/domain/trade/convert.js +25 -0
- package/dist/domain/trade/convert.js.map +1 -0
- package/dist/domain/trade/index.d.ts +19 -0
- package/dist/domain/trade/index.d.ts.map +1 -0
- package/dist/domain/trade/index.js +24 -0
- package/dist/domain/trade/index.js.map +1 -0
- package/dist/domain/trade/state.d.ts +16 -0
- package/dist/domain/trade/state.d.ts.map +1 -0
- package/dist/domain/trade/state.js +40 -0
- package/dist/domain/trade/state.js.map +1 -0
- package/dist/domain/trade/wire.d.ts +34 -0
- package/dist/domain/trade/wire.d.ts.map +1 -0
- package/dist/domain/trade/wire.js +3 -0
- package/dist/domain/trade/wire.js.map +1 -0
- package/dist/error.d.ts +44 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +126 -0
- package/dist/error.js.map +1 -0
- package/dist/http/client.d.ts +16 -0
- package/dist/http/client.d.ts.map +1 -0
- package/dist/http/client.js +146 -0
- package/dist/http/client.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +12 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/retry.d.ts +30 -0
- package/dist/http/retry.d.ts.map +1 -0
- package/dist/http/retry.js +48 -0
- package/dist/http/retry.js.map +1 -0
- package/dist/index.d.ts +13 -51
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +22 -68
- package/dist/index.js.map +1 -1
- package/dist/network.d.ts +4 -4
- package/dist/network.d.ts.map +1 -1
- package/dist/network.js +4 -4
- package/dist/network.js.map +1 -1
- package/dist/prelude.d.ts +41 -0
- package/dist/prelude.d.ts.map +1 -0
- package/dist/prelude.js +55 -0
- package/dist/prelude.js.map +1 -0
- package/dist/privy/client.d.ts +17 -0
- package/dist/privy/client.d.ts.map +1 -0
- package/dist/privy/client.js +66 -0
- package/dist/privy/client.js.map +1 -0
- package/dist/privy/index.d.ts +57 -0
- package/dist/privy/index.d.ts.map +1 -0
- package/dist/privy/index.js +80 -0
- package/dist/privy/index.js.map +1 -0
- package/dist/program/accounts.d.ts +16 -1
- package/dist/program/accounts.d.ts.map +1 -1
- package/dist/program/accounts.js +41 -0
- package/dist/program/accounts.js.map +1 -1
- package/dist/program/builder.d.ts +15 -11
- package/dist/program/builder.d.ts.map +1 -1
- package/dist/program/builder.js +30 -22
- package/dist/program/builder.js.map +1 -1
- package/dist/program/client.d.ts +37 -1
- package/dist/program/client.d.ts.map +1 -1
- package/dist/program/client.js +82 -2
- package/dist/program/client.js.map +1 -1
- package/dist/program/constants.d.ts +9 -1
- package/dist/program/constants.d.ts.map +1 -1
- package/dist/program/constants.js +9 -1
- package/dist/program/constants.js.map +1 -1
- package/dist/program/envelope.d.ts +94 -0
- package/dist/program/envelope.d.ts.map +1 -0
- package/dist/program/envelope.js +258 -0
- package/dist/program/envelope.js.map +1 -0
- package/dist/program/error.d.ts +8 -0
- package/dist/program/error.d.ts.map +1 -0
- package/dist/program/error.js +20 -0
- package/dist/program/error.js.map +1 -0
- package/dist/program/index.d.ts +8 -5
- package/dist/program/index.d.ts.map +1 -1
- package/dist/program/index.js +28 -3
- package/dist/program/index.js.map +1 -1
- package/dist/program/instructions.d.ts +78 -1
- package/dist/program/instructions.d.ts.map +1 -1
- package/dist/program/instructions.js +277 -3
- package/dist/program/instructions.js.map +1 -1
- package/dist/program/orders.d.ts +26 -8
- package/dist/program/orders.d.ts.map +1 -1
- package/dist/program/orders.js +58 -31
- package/dist/program/orders.js.map +1 -1
- package/dist/program/pda.d.ts +19 -0
- package/dist/program/pda.d.ts.map +1 -1
- package/dist/program/pda.js +28 -0
- package/dist/program/pda.js.map +1 -1
- package/dist/program/types.d.ts +72 -9
- package/dist/program/types.d.ts.map +1 -1
- package/dist/program/types.js.map +1 -1
- package/dist/shared/fmt/decimal.d.ts +5 -0
- package/dist/shared/fmt/decimal.d.ts.map +1 -0
- package/dist/shared/fmt/decimal.js +54 -0
- package/dist/shared/fmt/decimal.js.map +1 -0
- package/dist/shared/fmt/index.d.ts +3 -0
- package/dist/shared/fmt/index.d.ts.map +1 -0
- package/dist/shared/fmt/index.js +39 -0
- package/dist/shared/fmt/index.js.map +1 -0
- package/dist/shared/fmt/num.d.ts +6 -0
- package/dist/shared/fmt/num.d.ts.map +1 -0
- package/dist/shared/fmt/num.js +44 -0
- package/dist/shared/fmt/num.js.map +1 -0
- package/dist/shared/index.d.ts +4 -7
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +19 -7
- package/dist/shared/index.js.map +1 -1
- package/dist/shared/price.d.ts +5 -33
- package/dist/shared/price.d.ts.map +1 -1
- package/dist/shared/price.js +11 -39
- package/dist/shared/price.js.map +1 -1
- package/dist/shared/scaling.d.ts +17 -30
- package/dist/shared/scaling.d.ts.map +1 -1
- package/dist/shared/scaling.js +88 -57
- package/dist/shared/scaling.js.map +1 -1
- package/dist/shared/types.d.ts +66 -16
- package/dist/shared/types.d.ts.map +1 -1
- package/dist/shared/types.js +81 -17
- package/dist/shared/types.js.map +1 -1
- package/dist/ws/client.browser.d.ts +46 -0
- package/dist/ws/client.browser.d.ts.map +1 -0
- package/dist/ws/client.browser.js +245 -0
- package/dist/ws/client.browser.js.map +1 -0
- package/dist/ws/client.node.d.ts +36 -0
- package/dist/ws/client.node.d.ts.map +1 -0
- package/dist/ws/client.node.js +226 -0
- package/dist/ws/client.node.js.map +1 -0
- package/dist/ws/index.d.ts +110 -0
- package/dist/ws/index.d.ts.map +1 -0
- package/dist/ws/index.js +181 -0
- package/dist/ws/index.js.map +1 -0
- package/dist/ws/subscriptions.d.ts +51 -0
- package/dist/ws/subscriptions.d.ts.map +1 -0
- package/dist/ws/subscriptions.js +44 -0
- package/dist/ws/subscriptions.js.map +1 -0
- package/dist/ws/types.d.ts +23 -0
- package/dist/ws/types.d.ts.map +1 -0
- package/dist/ws/types.js +3 -0
- package/dist/ws/types.js.map +1 -0
- package/package.json +10 -13
- package/dist/api/client.d.ts +0 -225
- package/dist/api/client.d.ts.map +0 -1
- package/dist/api/client.js +0 -452
- package/dist/api/client.js.map +0 -1
- package/dist/api/error.d.ts +0 -58
- package/dist/api/error.d.ts.map +0 -1
- package/dist/api/error.js +0 -98
- package/dist/api/error.js.map +0 -1
- package/dist/api/index.d.ts +0 -23
- package/dist/api/index.d.ts.map +0 -1
- package/dist/api/index.js +0 -51
- package/dist/api/index.js.map +0 -1
- package/dist/api/types/admin.d.ts +0 -49
- package/dist/api/types/admin.d.ts.map +0 -1
- package/dist/api/types/admin.js +0 -13
- package/dist/api/types/admin.js.map +0 -1
- package/dist/api/types/index.d.ts +0 -14
- package/dist/api/types/index.d.ts.map +0 -1
- package/dist/api/types/index.js +0 -13
- package/dist/api/types/index.js.map +0 -1
- package/dist/api/types/market.d.ts +0 -186
- package/dist/api/types/market.d.ts.map +0 -1
- package/dist/api/types/market.js +0 -6
- package/dist/api/types/market.js.map +0 -1
- package/dist/api/types/order.d.ts +0 -190
- package/dist/api/types/order.d.ts.map +0 -1
- package/dist/api/types/order.js +0 -6
- package/dist/api/types/order.js.map +0 -1
- package/dist/api/types/orderbook.d.ts +0 -36
- package/dist/api/types/orderbook.d.ts.map +0 -1
- package/dist/api/types/orderbook.js +0 -6
- package/dist/api/types/orderbook.js.map +0 -1
- package/dist/api/types/position.d.ts +0 -60
- package/dist/api/types/position.d.ts.map +0 -1
- package/dist/api/types/position.js +0 -6
- package/dist/api/types/position.js.map +0 -1
- package/dist/api/types/price_history.d.ts +0 -68
- package/dist/api/types/price_history.d.ts.map +0 -1
- package/dist/api/types/price_history.js +0 -13
- package/dist/api/types/price_history.js.map +0 -1
- package/dist/api/types/trade.d.ts +0 -67
- package/dist/api/types/trade.d.ts.map +0 -1
- package/dist/api/types/trade.js +0 -13
- package/dist/api/types/trade.js.map +0 -1
- package/dist/api/validation.d.ts +0 -24
- package/dist/api/validation.d.ts.map +0 -1
- package/dist/api/validation.js +0 -53
- package/dist/api/validation.js.map +0 -1
- package/dist/websocket/client.d.ts +0 -238
- package/dist/websocket/client.d.ts.map +0 -1
- package/dist/websocket/client.js +0 -580
- package/dist/websocket/client.js.map +0 -1
- package/dist/websocket/error.d.ts +0 -47
- package/dist/websocket/error.d.ts.map +0 -1
- package/dist/websocket/error.js +0 -83
- package/dist/websocket/error.js.map +0 -1
- package/dist/websocket/handlers.d.ts +0 -97
- package/dist/websocket/handlers.d.ts.map +0 -1
- package/dist/websocket/handlers.js +0 -277
- package/dist/websocket/handlers.js.map +0 -1
- package/dist/websocket/index.d.ts +0 -38
- package/dist/websocket/index.d.ts.map +0 -1
- package/dist/websocket/index.js +0 -75
- package/dist/websocket/index.js.map +0 -1
- package/dist/websocket/state/index.d.ts +0 -7
- package/dist/websocket/state/index.d.ts.map +0 -1
- package/dist/websocket/state/index.js +0 -14
- package/dist/websocket/state/index.js.map +0 -1
- package/dist/websocket/state/orderbook.d.ts +0 -107
- package/dist/websocket/state/orderbook.d.ts.map +0 -1
- package/dist/websocket/state/orderbook.js +0 -293
- package/dist/websocket/state/orderbook.js.map +0 -1
- package/dist/websocket/state/price.d.ts +0 -108
- package/dist/websocket/state/price.d.ts.map +0 -1
- package/dist/websocket/state/price.js +0 -243
- package/dist/websocket/state/price.js.map +0 -1
- package/dist/websocket/state/user.d.ts +0 -83
- package/dist/websocket/state/user.d.ts.map +0 -1
- package/dist/websocket/state/user.js +0 -228
- package/dist/websocket/state/user.js.map +0 -1
- package/dist/websocket/subscriptions.d.ts +0 -143
- package/dist/websocket/subscriptions.d.ts.map +0 -1
- package/dist/websocket/subscriptions.js +0 -244
- package/dist/websocket/subscriptions.js.map +0 -1
- package/dist/websocket/types.d.ts +0 -417
- package/dist/websocket/types.d.ts.map +0 -1
- package/dist/websocket/types.js +0 -195
- package/dist/websocket/types.js.map +0 -1
package/dist/shared/scaling.js
CHANGED
|
@@ -4,81 +4,112 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ScalingError = void 0;
|
|
7
|
+
exports.alignPriceToTick = alignPriceToTick;
|
|
7
8
|
exports.scalePriceSize = scalePriceSize;
|
|
9
|
+
exports.scalePriceSizeLegacy = scalePriceSizeLegacy;
|
|
8
10
|
const decimal_js_1 = __importDefault(require("decimal.js"));
|
|
9
11
|
const types_1 = require("../program/types");
|
|
10
|
-
|
|
11
|
-
* Error thrown during price/size scaling
|
|
12
|
-
*/
|
|
12
|
+
const U64_MAX = (1n << 64n) - 1n;
|
|
13
13
|
class ScalingError extends Error {
|
|
14
14
|
constructor(message) {
|
|
15
15
|
super(message);
|
|
16
16
|
this.name = "ScalingError";
|
|
17
17
|
}
|
|
18
|
-
static
|
|
19
|
-
return new ScalingError(
|
|
18
|
+
static nonPositivePrice(value) {
|
|
19
|
+
return new ScalingError(`Price must be positive, got ${value}`);
|
|
20
|
+
}
|
|
21
|
+
static nonPositiveSize(value) {
|
|
22
|
+
return new ScalingError(`Size must be positive, got ${value}`);
|
|
23
|
+
}
|
|
24
|
+
static overflow(context) {
|
|
25
|
+
return new ScalingError(`Overflow: ${context}`);
|
|
20
26
|
}
|
|
21
|
-
static
|
|
22
|
-
return new ScalingError(
|
|
27
|
+
static zeroAmount() {
|
|
28
|
+
return new ScalingError("Computed amount is zero");
|
|
23
29
|
}
|
|
24
|
-
static
|
|
25
|
-
return new ScalingError(
|
|
30
|
+
static fractionalAmount(value) {
|
|
31
|
+
return new ScalingError(`Fractional lamports not allowed: ${value}`);
|
|
32
|
+
}
|
|
33
|
+
static invalidDecimal(input, reason) {
|
|
34
|
+
return new ScalingError(`Invalid decimal '${input}': ${reason}`);
|
|
26
35
|
}
|
|
27
36
|
}
|
|
28
37
|
exports.ScalingError = ScalingError;
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
const
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
const baseScale = new decimal_js_1.default(10).pow(decimals.baseDecimals);
|
|
60
|
-
const quoteScale = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
|
|
61
|
-
const baseAmount = size.mul(baseScale).floor();
|
|
62
|
-
const quoteAmount = price.mul(size).mul(quoteScale).floor();
|
|
63
|
-
const baseAmountBigInt = BigInt(baseAmount.toFixed(0));
|
|
64
|
-
const quoteAmountBigInt = BigInt(quoteAmount.toFixed(0));
|
|
65
|
-
if (baseAmountBigInt > U64_MAX) {
|
|
66
|
-
throw ScalingError.overflow("base amount");
|
|
67
|
-
}
|
|
68
|
-
if (quoteAmountBigInt > U64_MAX) {
|
|
69
|
-
throw ScalingError.overflow("quote amount");
|
|
38
|
+
function alignPriceToTick(price, decimals) {
|
|
39
|
+
const tickSize = decimals.tickSize ?? 0n;
|
|
40
|
+
if (tickSize <= 1n) {
|
|
41
|
+
return price;
|
|
42
|
+
}
|
|
43
|
+
const quoteMultiplier = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
|
|
44
|
+
const tick = new decimal_js_1.default(tickSize.toString());
|
|
45
|
+
const lamports = price.mul(quoteMultiplier).trunc();
|
|
46
|
+
const aligned = lamports.div(tick).trunc().mul(tick);
|
|
47
|
+
return aligned.div(quoteMultiplier);
|
|
48
|
+
}
|
|
49
|
+
function scalePriceSize(priceInput, sizeInput, side, decimals) {
|
|
50
|
+
const price = normalizeDecimal(priceInput, "price");
|
|
51
|
+
const size = normalizeDecimal(sizeInput, "size");
|
|
52
|
+
if (price.lte(0)) {
|
|
53
|
+
throw ScalingError.nonPositivePrice(price.toString());
|
|
54
|
+
}
|
|
55
|
+
if (size.lte(0)) {
|
|
56
|
+
throw ScalingError.nonPositiveSize(size.toString());
|
|
57
|
+
}
|
|
58
|
+
const baseMultiplier = new decimal_js_1.default(10).pow(decimals.baseDecimals);
|
|
59
|
+
const quoteMultiplier = new decimal_js_1.default(10).pow(decimals.quoteDecimals);
|
|
60
|
+
const baseLamports = size.mul(baseMultiplier);
|
|
61
|
+
const quoteLamports = price.mul(size).mul(quoteMultiplier);
|
|
62
|
+
assertWhole(baseLamports, "base_lamports");
|
|
63
|
+
assertWhole(quoteLamports, "quote_lamports");
|
|
64
|
+
const base = toU64(baseLamports, "base_lamports");
|
|
65
|
+
const quote = toU64(quoteLamports, "quote_lamports");
|
|
66
|
+
if (base === 0n || quote === 0n) {
|
|
67
|
+
throw ScalingError.zeroAmount();
|
|
70
68
|
}
|
|
71
69
|
if (side === types_1.OrderSide.BID) {
|
|
72
70
|
return {
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
amountIn: quote,
|
|
72
|
+
amountOut: base,
|
|
73
|
+
makerAmount: quote,
|
|
74
|
+
takerAmount: base,
|
|
75
75
|
};
|
|
76
76
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
77
|
+
return {
|
|
78
|
+
amountIn: base,
|
|
79
|
+
amountOut: quote,
|
|
80
|
+
makerAmount: base,
|
|
81
|
+
takerAmount: quote,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function normalizeDecimal(value, field) {
|
|
85
|
+
if (value instanceof decimal_js_1.default) {
|
|
86
|
+
return value;
|
|
87
|
+
}
|
|
88
|
+
try {
|
|
89
|
+
return new decimal_js_1.default(value);
|
|
82
90
|
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
93
|
+
throw ScalingError.invalidDecimal(value, reason || field);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
function assertWhole(value, label) {
|
|
97
|
+
if (!value.isInteger()) {
|
|
98
|
+
throw ScalingError.fractionalAmount(`${label} = ${value.toString()}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
function toU64(value, label) {
|
|
102
|
+
const bigint = BigInt(value.toFixed(0));
|
|
103
|
+
if (bigint < 0n || bigint > U64_MAX) {
|
|
104
|
+
throw ScalingError.overflow(`${label} ${value.toString()} does not fit in u64`);
|
|
105
|
+
}
|
|
106
|
+
return bigint;
|
|
107
|
+
}
|
|
108
|
+
function scalePriceSizeLegacy(price, size, side, decimals) {
|
|
109
|
+
const scaled = scalePriceSize(price, size, side, decimals);
|
|
110
|
+
return {
|
|
111
|
+
makerAmount: scaled.amountIn,
|
|
112
|
+
takerAmount: scaled.amountOut,
|
|
113
|
+
};
|
|
83
114
|
}
|
|
84
115
|
//# sourceMappingURL=scaling.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scaling.js","sourceRoot":"","sources":["../../src/shared/scaling.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"scaling.js","sourceRoot":"","sources":["../../src/shared/scaling.ts"],"names":[],"mappings":"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","sourcesContent":["import Decimal from \"decimal.js\";\nimport { OrderSide } from \"../program/types\";\n\nexport interface OrderbookDecimals {\n orderbookId: string;\n baseDecimals: number;\n quoteDecimals: number;\n priceDecimals: number;\n tickSize?: bigint;\n}\n\nexport interface ScaledAmounts {\n amountIn: bigint;\n amountOut: bigint;\n // Backward-compatible aliases used by v1 builder code.\n makerAmount: bigint;\n takerAmount: bigint;\n}\n\nconst U64_MAX = (1n << 64n) - 1n;\n\nexport class ScalingError extends Error {\n constructor(message: string) {\n super(message);\n this.name = \"ScalingError\";\n }\n\n static nonPositivePrice(value: string): ScalingError {\n return new ScalingError(`Price must be positive, got ${value}`);\n }\n\n static nonPositiveSize(value: string): ScalingError {\n return new ScalingError(`Size must be positive, got ${value}`);\n }\n\n static overflow(context: string): ScalingError {\n return new ScalingError(`Overflow: ${context}`);\n }\n\n static zeroAmount(): ScalingError {\n return new ScalingError(\"Computed amount is zero\");\n }\n\n static fractionalAmount(value: string): ScalingError {\n return new ScalingError(`Fractional lamports not allowed: ${value}`);\n }\n\n static invalidDecimal(input: string, reason: string): ScalingError {\n return new ScalingError(`Invalid decimal '${input}': ${reason}`);\n }\n}\n\nexport function alignPriceToTick(price: Decimal, decimals: OrderbookDecimals): Decimal {\n const tickSize = decimals.tickSize ?? 0n;\n if (tickSize <= 1n) {\n return price;\n }\n\n const quoteMultiplier = new Decimal(10).pow(decimals.quoteDecimals);\n const tick = new Decimal(tickSize.toString());\n const lamports = price.mul(quoteMultiplier).trunc();\n const aligned = lamports.div(tick).trunc().mul(tick);\n return aligned.div(quoteMultiplier);\n}\n\nexport function scalePriceSize(\n priceInput: string | Decimal,\n sizeInput: string | Decimal,\n side: OrderSide,\n decimals: OrderbookDecimals\n): ScaledAmounts {\n const price = normalizeDecimal(priceInput, \"price\");\n const size = normalizeDecimal(sizeInput, \"size\");\n\n if (price.lte(0)) {\n throw ScalingError.nonPositivePrice(price.toString());\n }\n if (size.lte(0)) {\n throw ScalingError.nonPositiveSize(size.toString());\n }\n\n const baseMultiplier = new Decimal(10).pow(decimals.baseDecimals);\n const quoteMultiplier = new Decimal(10).pow(decimals.quoteDecimals);\n\n const baseLamports = size.mul(baseMultiplier);\n const quoteLamports = price.mul(size).mul(quoteMultiplier);\n\n assertWhole(baseLamports, \"base_lamports\");\n assertWhole(quoteLamports, \"quote_lamports\");\n\n const base = toU64(baseLamports, \"base_lamports\");\n const quote = toU64(quoteLamports, \"quote_lamports\");\n\n if (base === 0n || quote === 0n) {\n throw ScalingError.zeroAmount();\n }\n\n if (side === OrderSide.BID) {\n return {\n amountIn: quote,\n amountOut: base,\n makerAmount: quote,\n takerAmount: base,\n };\n }\n\n return {\n amountIn: base,\n amountOut: quote,\n makerAmount: base,\n takerAmount: quote,\n };\n}\n\nfunction normalizeDecimal(value: string | Decimal, field: string): Decimal {\n if (value instanceof Decimal) {\n return value;\n }\n\n try {\n return new Decimal(value);\n } catch (error) {\n const reason = error instanceof Error ? error.message : String(error);\n throw ScalingError.invalidDecimal(value, reason || field);\n }\n}\n\nfunction assertWhole(value: Decimal, label: string): void {\n if (!value.isInteger()) {\n throw ScalingError.fractionalAmount(`${label} = ${value.toString()}`);\n }\n}\n\nfunction toU64(value: Decimal, label: string): bigint {\n const bigint = BigInt(value.toFixed(0));\n if (bigint < 0n || bigint > U64_MAX) {\n throw ScalingError.overflow(`${label} ${value.toString()} does not fit in u64`);\n }\n return bigint;\n}\n\n// Legacy aliases kept for existing integrations.\nexport interface LegacyScaledAmounts {\n makerAmount: bigint;\n takerAmount: bigint;\n}\n\nexport function scalePriceSizeLegacy(\n price: string,\n size: string,\n side: OrderSide,\n decimals: OrderbookDecimals\n): LegacyScaledAmounts {\n const scaled = scalePriceSize(price, size, side, decimals);\n return {\n makerAmount: scaled.amountIn,\n takerAmount: scaled.amountOut,\n };\n}\n"]}
|
package/dist/shared/types.d.ts
CHANGED
|
@@ -1,19 +1,69 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
export type Branded<T, Brand extends string> = T & {
|
|
2
|
+
readonly __brand: Brand;
|
|
3
|
+
};
|
|
4
|
+
export type OrderBookId = Branded<string, "OrderBookId">;
|
|
5
|
+
export type PubkeyStr = Branded<string, "PubkeyStr">;
|
|
6
|
+
export declare function asOrderBookId(value: string): OrderBookId;
|
|
7
|
+
export declare function asPubkeyStr(value: string): PubkeyStr;
|
|
8
|
+
export declare enum Side {
|
|
9
|
+
Bid = "bid",
|
|
10
|
+
Ask = "ask"
|
|
11
|
+
}
|
|
12
|
+
export declare function sideLabel(side: Side): "Buy" | "Sell";
|
|
13
|
+
export declare enum TimeInForce {
|
|
14
|
+
Gtc = "GTC",
|
|
15
|
+
Ioc = "IOC",
|
|
16
|
+
Fok = "FOK",
|
|
17
|
+
Alo = "ALO"
|
|
18
|
+
}
|
|
19
|
+
export declare enum TriggerType {
|
|
20
|
+
TakeProfit = "TP",
|
|
21
|
+
StopLoss = "SL"
|
|
22
|
+
}
|
|
23
|
+
export declare enum TriggerStatus {
|
|
24
|
+
Triggered = "triggered",
|
|
25
|
+
Failed = "failed",
|
|
26
|
+
Expired = "expired"
|
|
27
|
+
}
|
|
28
|
+
export declare enum OrderUpdateType {
|
|
29
|
+
Placement = "PLACEMENT",
|
|
30
|
+
Update = "UPDATE",
|
|
31
|
+
Cancellation = "CANCELLATION"
|
|
32
|
+
}
|
|
33
|
+
export declare enum TriggerUpdateType {
|
|
34
|
+
Triggered = "TRIGGERED",
|
|
35
|
+
Failed = "FAILED",
|
|
36
|
+
Expired = "EXPIRED"
|
|
37
|
+
}
|
|
38
|
+
export declare enum TriggerResultStatus {
|
|
39
|
+
Filled = "filled",
|
|
40
|
+
Accepted = "accepted",
|
|
41
|
+
Rejected = "rejected"
|
|
42
|
+
}
|
|
5
43
|
export declare enum Resolution {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
44
|
+
Minute1 = "1m",
|
|
45
|
+
Minute5 = "5m",
|
|
46
|
+
Minute15 = "15m",
|
|
47
|
+
Hour1 = "1h",
|
|
48
|
+
Hour4 = "4h",
|
|
49
|
+
Day1 = "1d"
|
|
50
|
+
}
|
|
51
|
+
export declare function resolutionSeconds(resolution: Resolution): number;
|
|
52
|
+
export declare function deriveOrderbookId(baseToken: string, quoteToken: string): OrderBookId;
|
|
53
|
+
export interface SubmitOrderRequest {
|
|
54
|
+
maker: string;
|
|
55
|
+
nonce: number;
|
|
56
|
+
market_pubkey: string;
|
|
57
|
+
base_token: string;
|
|
58
|
+
quote_token: string;
|
|
59
|
+
side: number;
|
|
60
|
+
amount_in: string;
|
|
61
|
+
amount_out: string;
|
|
62
|
+
expiration?: number;
|
|
63
|
+
signature: string;
|
|
64
|
+
orderbook_id: string;
|
|
65
|
+
tif?: TimeInForce;
|
|
66
|
+
trigger_price?: number;
|
|
67
|
+
trigger_type?: TriggerType;
|
|
18
68
|
}
|
|
19
69
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS,MAAM,IAAI,CAAC,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAA;CAAE,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,OAAO,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;AACzD,MAAM,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;AAErD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAExD;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAEpD;AAED,oBAAY,IAAI;IACd,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,IAAI,GAAG,KAAK,GAAG,MAAM,CAEpD;AAED,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;IACX,GAAG,QAAQ;CACZ;AAED,oBAAY,WAAW;IACrB,UAAU,OAAO;IACjB,QAAQ,OAAO;CAChB;AAED,oBAAY,aAAa;IACvB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,eAAe;IACzB,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,YAAY,iBAAiB;CAC9B;AAED,oBAAY,iBAAiB;IAC3B,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,OAAO,YAAY;CACpB;AAED,oBAAY,mBAAmB;IAC7B,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,QAAQ,aAAa;CACtB;AAED,oBAAY,UAAU;IACpB,OAAO,OAAO;IACd,OAAO,OAAO;IACd,QAAQ,QAAQ;IAChB,KAAK,OAAO;IACZ,KAAK,OAAO;IACZ,IAAI,OAAO;CACZ;AAED,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAehE;AAED,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,WAAW,CAEpF;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,CAAC,EAAE,WAAW,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,WAAW,CAAC;CAC5B"}
|
package/dist/shared/types.js
CHANGED
|
@@ -1,23 +1,87 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Resolution = void 0;
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
exports.Resolution = exports.TriggerResultStatus = exports.TriggerUpdateType = exports.OrderUpdateType = exports.TriggerStatus = exports.TriggerType = exports.TimeInForce = exports.Side = void 0;
|
|
4
|
+
exports.asOrderBookId = asOrderBookId;
|
|
5
|
+
exports.asPubkeyStr = asPubkeyStr;
|
|
6
|
+
exports.sideLabel = sideLabel;
|
|
7
|
+
exports.resolutionSeconds = resolutionSeconds;
|
|
8
|
+
exports.deriveOrderbookId = deriveOrderbookId;
|
|
9
|
+
function asOrderBookId(value) {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
function asPubkeyStr(value) {
|
|
13
|
+
return value;
|
|
14
|
+
}
|
|
15
|
+
var Side;
|
|
16
|
+
(function (Side) {
|
|
17
|
+
Side["Bid"] = "bid";
|
|
18
|
+
Side["Ask"] = "ask";
|
|
19
|
+
})(Side || (exports.Side = Side = {}));
|
|
20
|
+
function sideLabel(side) {
|
|
21
|
+
return side === Side.Bid ? "Buy" : "Sell";
|
|
22
|
+
}
|
|
23
|
+
var TimeInForce;
|
|
24
|
+
(function (TimeInForce) {
|
|
25
|
+
TimeInForce["Gtc"] = "GTC";
|
|
26
|
+
TimeInForce["Ioc"] = "IOC";
|
|
27
|
+
TimeInForce["Fok"] = "FOK";
|
|
28
|
+
TimeInForce["Alo"] = "ALO";
|
|
29
|
+
})(TimeInForce || (exports.TimeInForce = TimeInForce = {}));
|
|
30
|
+
var TriggerType;
|
|
31
|
+
(function (TriggerType) {
|
|
32
|
+
TriggerType["TakeProfit"] = "TP";
|
|
33
|
+
TriggerType["StopLoss"] = "SL";
|
|
34
|
+
})(TriggerType || (exports.TriggerType = TriggerType = {}));
|
|
35
|
+
var TriggerStatus;
|
|
36
|
+
(function (TriggerStatus) {
|
|
37
|
+
TriggerStatus["Triggered"] = "triggered";
|
|
38
|
+
TriggerStatus["Failed"] = "failed";
|
|
39
|
+
TriggerStatus["Expired"] = "expired";
|
|
40
|
+
})(TriggerStatus || (exports.TriggerStatus = TriggerStatus = {}));
|
|
41
|
+
var OrderUpdateType;
|
|
42
|
+
(function (OrderUpdateType) {
|
|
43
|
+
OrderUpdateType["Placement"] = "PLACEMENT";
|
|
44
|
+
OrderUpdateType["Update"] = "UPDATE";
|
|
45
|
+
OrderUpdateType["Cancellation"] = "CANCELLATION";
|
|
46
|
+
})(OrderUpdateType || (exports.OrderUpdateType = OrderUpdateType = {}));
|
|
47
|
+
var TriggerUpdateType;
|
|
48
|
+
(function (TriggerUpdateType) {
|
|
49
|
+
TriggerUpdateType["Triggered"] = "TRIGGERED";
|
|
50
|
+
TriggerUpdateType["Failed"] = "FAILED";
|
|
51
|
+
TriggerUpdateType["Expired"] = "EXPIRED";
|
|
52
|
+
})(TriggerUpdateType || (exports.TriggerUpdateType = TriggerUpdateType = {}));
|
|
53
|
+
var TriggerResultStatus;
|
|
54
|
+
(function (TriggerResultStatus) {
|
|
55
|
+
TriggerResultStatus["Filled"] = "filled";
|
|
56
|
+
TriggerResultStatus["Accepted"] = "accepted";
|
|
57
|
+
TriggerResultStatus["Rejected"] = "rejected";
|
|
58
|
+
})(TriggerResultStatus || (exports.TriggerResultStatus = TriggerResultStatus = {}));
|
|
8
59
|
var Resolution;
|
|
9
60
|
(function (Resolution) {
|
|
10
|
-
|
|
11
|
-
Resolution["
|
|
12
|
-
|
|
13
|
-
Resolution["
|
|
14
|
-
|
|
15
|
-
Resolution["
|
|
16
|
-
/** 1 hour candles */
|
|
17
|
-
Resolution["OneHour"] = "1h";
|
|
18
|
-
/** 4 hour candles */
|
|
19
|
-
Resolution["FourHours"] = "4h";
|
|
20
|
-
/** 1 day candles */
|
|
21
|
-
Resolution["OneDay"] = "1d";
|
|
61
|
+
Resolution["Minute1"] = "1m";
|
|
62
|
+
Resolution["Minute5"] = "5m";
|
|
63
|
+
Resolution["Minute15"] = "15m";
|
|
64
|
+
Resolution["Hour1"] = "1h";
|
|
65
|
+
Resolution["Hour4"] = "4h";
|
|
66
|
+
Resolution["Day1"] = "1d";
|
|
22
67
|
})(Resolution || (exports.Resolution = Resolution = {}));
|
|
68
|
+
function resolutionSeconds(resolution) {
|
|
69
|
+
switch (resolution) {
|
|
70
|
+
case Resolution.Minute1:
|
|
71
|
+
return 60;
|
|
72
|
+
case Resolution.Minute5:
|
|
73
|
+
return 300;
|
|
74
|
+
case Resolution.Minute15:
|
|
75
|
+
return 900;
|
|
76
|
+
case Resolution.Hour1:
|
|
77
|
+
return 3600;
|
|
78
|
+
case Resolution.Hour4:
|
|
79
|
+
return 21600;
|
|
80
|
+
case Resolution.Day1:
|
|
81
|
+
return 86400;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
function deriveOrderbookId(baseToken, quoteToken) {
|
|
85
|
+
return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}`;
|
|
86
|
+
}
|
|
23
87
|
//# sourceMappingURL=types.js.map
|
package/dist/shared/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/shared/types.ts"],"names":[],"mappings":";;;AAKA,sCAEC;AAED,kCAEC;AAOD,8BAEC;AA+CD,8CAeC;AAED,8CAEC;AAjFD,SAAgB,aAAa,CAAC,KAAa;IACzC,OAAO,KAAoB,CAAC;AAC9B,CAAC;AAED,SAAgB,WAAW,CAAC,KAAa;IACvC,OAAO,KAAkB,CAAC;AAC5B,CAAC;AAED,IAAY,IAGX;AAHD,WAAY,IAAI;IACd,mBAAW,CAAA;IACX,mBAAW,CAAA;AACb,CAAC,EAHW,IAAI,oBAAJ,IAAI,QAGf;AAED,SAAgB,SAAS,CAAC,IAAU;IAClC,OAAO,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;AAC5C,CAAC;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;IACX,0BAAW,CAAA;AACb,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EAHW,WAAW,2BAAX,WAAW,QAGtB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,wCAAuB,CAAA;IACvB,kCAAiB,CAAA;IACjB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,6BAAb,aAAa,QAIxB;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACzB,0CAAuB,CAAA;IACvB,oCAAiB,CAAA;IACjB,gDAA6B,CAAA;AAC/B,CAAC,EAJW,eAAe,+BAAf,eAAe,QAI1B;AAED,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,4CAAuB,CAAA;IACvB,sCAAiB,CAAA;IACjB,wCAAmB,CAAA;AACrB,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,wCAAiB,CAAA;IACjB,4CAAqB,CAAA;IACrB,4CAAqB,CAAA;AACvB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B;AAED,IAAY,UAOX;AAPD,WAAY,UAAU;IACpB,4BAAc,CAAA;IACd,4BAAc,CAAA;IACd,8BAAgB,CAAA;IAChB,0BAAY,CAAA;IACZ,0BAAY,CAAA;IACZ,yBAAW,CAAA;AACb,CAAC,EAPW,UAAU,0BAAV,UAAU,QAOrB;AAED,SAAgB,iBAAiB,CAAC,UAAsB;IACtD,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,UAAU,CAAC,OAAO;YACrB,OAAO,EAAE,CAAC;QACZ,KAAK,UAAU,CAAC,OAAO;YACrB,OAAO,GAAG,CAAC;QACb,KAAK,UAAU,CAAC,QAAQ;YACtB,OAAO,GAAG,CAAC;QACb,KAAK,UAAU,CAAC,KAAK;YACnB,OAAO,IAAI,CAAC;QACd,KAAK,UAAU,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC;QACf,KAAK,UAAU,CAAC,IAAI;YAClB,OAAO,KAAK,CAAC;IACjB,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;IACrE,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAiB,CAAC;AAC7E,CAAC","sourcesContent":["export type Branded<T, Brand extends string> = T & { readonly __brand: Brand };\n\nexport type OrderBookId = Branded<string, \"OrderBookId\">;\nexport type PubkeyStr = Branded<string, \"PubkeyStr\">;\n\nexport function asOrderBookId(value: string): OrderBookId {\n return value as OrderBookId;\n}\n\nexport function asPubkeyStr(value: string): PubkeyStr {\n return value as PubkeyStr;\n}\n\nexport enum Side {\n Bid = \"bid\",\n Ask = \"ask\",\n}\n\nexport function sideLabel(side: Side): \"Buy\" | \"Sell\" {\n return side === Side.Bid ? \"Buy\" : \"Sell\";\n}\n\nexport enum TimeInForce {\n Gtc = \"GTC\",\n Ioc = \"IOC\",\n Fok = \"FOK\",\n Alo = \"ALO\",\n}\n\nexport enum TriggerType {\n TakeProfit = \"TP\",\n StopLoss = \"SL\",\n}\n\nexport enum TriggerStatus {\n Triggered = \"triggered\",\n Failed = \"failed\",\n Expired = \"expired\",\n}\n\nexport enum OrderUpdateType {\n Placement = \"PLACEMENT\",\n Update = \"UPDATE\",\n Cancellation = \"CANCELLATION\",\n}\n\nexport enum TriggerUpdateType {\n Triggered = \"TRIGGERED\",\n Failed = \"FAILED\",\n Expired = \"EXPIRED\",\n}\n\nexport enum TriggerResultStatus {\n Filled = \"filled\",\n Accepted = \"accepted\",\n Rejected = \"rejected\",\n}\n\nexport enum Resolution {\n Minute1 = \"1m\",\n Minute5 = \"5m\",\n Minute15 = \"15m\",\n Hour1 = \"1h\",\n Hour4 = \"4h\",\n Day1 = \"1d\",\n}\n\nexport function resolutionSeconds(resolution: Resolution): number {\n switch (resolution) {\n case Resolution.Minute1:\n return 60;\n case Resolution.Minute5:\n return 300;\n case Resolution.Minute15:\n return 900;\n case Resolution.Hour1:\n return 3600;\n case Resolution.Hour4:\n return 21600;\n case Resolution.Day1:\n return 86400;\n }\n}\n\nexport function deriveOrderbookId(baseToken: string, quoteToken: string): OrderBookId {\n return `${baseToken.slice(0, 8)}_${quoteToken.slice(0, 8)}` as OrderBookId;\n}\n\nexport interface SubmitOrderRequest {\n maker: string;\n nonce: number;\n market_pubkey: string;\n base_token: string;\n quote_token: string;\n side: number;\n amount_in: string;\n amount_out: string;\n expiration?: number;\n signature: string;\n orderbook_id: string;\n tif?: TimeInForce;\n trigger_price?: number;\n trigger_type?: TriggerType;\n}\n"]}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Browser WebSocket client using native `globalThis.WebSocket`.
|
|
3
|
+
*
|
|
4
|
+
* Selected at build time via the `"browser"` field in package.json.
|
|
5
|
+
*/
|
|
6
|
+
import { ReadyState, type MessageOut, type WsConfig, type WsEvent } from "./index";
|
|
7
|
+
import { type SubscribeParams, type UnsubscribeParams } from "./subscriptions";
|
|
8
|
+
import type { IWsClient } from "./types";
|
|
9
|
+
export declare class WsClient implements IWsClient {
|
|
10
|
+
private readonly config;
|
|
11
|
+
private socket?;
|
|
12
|
+
private reconnectAttempts;
|
|
13
|
+
private userInitiatedClose;
|
|
14
|
+
private pingTimer?;
|
|
15
|
+
private pongTimer?;
|
|
16
|
+
private callbacks;
|
|
17
|
+
private readonly activeSubscriptions;
|
|
18
|
+
private readonly pendingMessages;
|
|
19
|
+
/**
|
|
20
|
+
* @param config - WebSocket configuration (url, reconnect settings, etc.)
|
|
21
|
+
* @param _authTokenRef - Ignored in browser builds. The browser automatically
|
|
22
|
+
* sends HTTP-only cookies with same-origin WebSocket
|
|
23
|
+
* connections, so manual token injection is unnecessary.
|
|
24
|
+
*/
|
|
25
|
+
constructor(config?: Partial<WsConfig>, _authTokenRef?: () => Promise<string | undefined>);
|
|
26
|
+
connect(): Promise<void>;
|
|
27
|
+
disconnect(): Promise<void>;
|
|
28
|
+
send(message: MessageOut): void;
|
|
29
|
+
subscribe(params: SubscribeParams): void;
|
|
30
|
+
unsubscribe(params: UnsubscribeParams): void;
|
|
31
|
+
isConnected(): boolean;
|
|
32
|
+
readyState(): ReadyState;
|
|
33
|
+
on(callback: (event: WsEvent) => void): () => void;
|
|
34
|
+
private emit;
|
|
35
|
+
private connectInternal;
|
|
36
|
+
private handleIncoming;
|
|
37
|
+
private handleClose;
|
|
38
|
+
private backoffDelayMs;
|
|
39
|
+
private startHeartbeat;
|
|
40
|
+
private stopHeartbeat;
|
|
41
|
+
private resetPongTimeout;
|
|
42
|
+
private trackMessage;
|
|
43
|
+
private flushPendingMessages;
|
|
44
|
+
private resubscribeAll;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=client.browser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.browser.d.ts","sourceRoot":"","sources":["../../src/ws/client.browser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAGL,UAAU,EAEV,KAAK,UAAU,EACf,KAAK,QAAQ,EACb,KAAK,OAAO,EAEb,MAAM,SAAS,CAAC;AACjB,OAAO,EAGL,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEzC,qBAAa,QAAS,YAAW,SAAS;IACxC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAW;IAClC,OAAO,CAAC,MAAM,CAAC,CAAY;IAC3B,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,SAAS,CAAC,CAAiC;IACnD,OAAO,CAAC,SAAS,CAAC,CAAgC;IAClD,OAAO,CAAC,SAAS,CAAuC;IACxD,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAyB;IAC7D,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAoB;IAEpD;;;;;OAKG;gBACS,MAAM,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAInF,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAQxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAiBjC,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI;IAW/B,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IAIxC,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI;IAI5C,WAAW,IAAI,OAAO;IAItB,UAAU,IAAI,UAAU;IAiBxB,EAAE,CAAC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,GAAG,MAAM,IAAI;IASlD,OAAO,CAAC,IAAI;IAUZ,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,cAAc;IAoBtB,OAAO,CAAC,WAAW;IAyBnB,OAAO,CAAC,cAAc;IAQtB,OAAO,CAAC,cAAc;IAStB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,oBAAoB;IAc5B,OAAO,CAAC,cAAc;CAMvB"}
|