@bulletxyz/bullet-sdk 0.49.7 → 0.49.8-rc.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/bullet_wasm_bg.wasm +0 -0
- package/dist/browser/index.js +140 -49
- package/dist/browser/index.js.map +8 -7
- package/dist/node/bullet_wasm_bg.wasm +0 -0
- package/dist/node/index.js +140 -49
- package/dist/node/index.js.map +8 -7
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/browser.d.ts +3 -1
- package/dist/types/browser.d.ts.map +1 -1
- package/dist/types/client.d.ts +3 -2
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/index.d.ts +3 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/rollupTypes.d.ts +33 -0
- package/dist/types/rollupTypes.d.ts.map +1 -1
- package/dist/types/zod-types/index.d.ts +6 -0
- package/dist/types/zod-types/index.d.ts.map +1 -1
- package/dist/types/zod-types/rest.d.ts +8997 -1934
- package/dist/types/zod-types/rest.d.ts.map +1 -1
- package/package.json +1 -1
|
Binary file
|
package/dist/browser/index.js
CHANGED
|
@@ -13,6 +13,15 @@ var __toESM = (mod, isNodeMode, target) => {
|
|
|
13
13
|
return to;
|
|
14
14
|
};
|
|
15
15
|
var __commonJS = (cb, mod) => () => (mod || cb((mod = { exports: {} }).exports, mod), mod.exports);
|
|
16
|
+
var __export = (target, all) => {
|
|
17
|
+
for (var name in all)
|
|
18
|
+
__defProp(target, name, {
|
|
19
|
+
get: all[name],
|
|
20
|
+
enumerable: !0,
|
|
21
|
+
configurable: !0,
|
|
22
|
+
set: (newValue) => all[name] = () => newValue
|
|
23
|
+
});
|
|
24
|
+
};
|
|
16
25
|
|
|
17
26
|
// ../node_modules/bech32/dist/index.js
|
|
18
27
|
var require_dist = __commonJS((exports) => {
|
|
@@ -319,6 +328,14 @@ var require_eventemitter3 = __commonJS((exports, module) => {
|
|
|
319
328
|
module.exports = EventEmitter;
|
|
320
329
|
});
|
|
321
330
|
|
|
331
|
+
// src/bullet-wasm/loader.ts
|
|
332
|
+
var exports_loader = {};
|
|
333
|
+
__export(exports_loader, {
|
|
334
|
+
initialize: () => initialize,
|
|
335
|
+
MarginMode: () => MarginMode,
|
|
336
|
+
BulletWasm: () => BulletWasm
|
|
337
|
+
});
|
|
338
|
+
|
|
322
339
|
// src/bullet-wasm/wasm-glue.js
|
|
323
340
|
class BulletWasm {
|
|
324
341
|
__destroy_into_raw() {
|
|
@@ -1192,6 +1209,7 @@ async function initialize(wasmSource) {
|
|
|
1192
1209
|
throw initPromise = null, err;
|
|
1193
1210
|
}), initPromise;
|
|
1194
1211
|
}
|
|
1212
|
+
|
|
1195
1213
|
// ../node_modules/@noble/hashes/esm/utils.js
|
|
1196
1214
|
/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */
|
|
1197
1215
|
function isBytes(a) {
|
|
@@ -1700,6 +1718,7 @@ ${bids}`;
|
|
|
1700
1718
|
import { z as z2 } from "zod";
|
|
1701
1719
|
|
|
1702
1720
|
// src/zod-types/index.ts
|
|
1721
|
+
import bs582 from "bs58";
|
|
1703
1722
|
import Decimal3 from "decimal.js";
|
|
1704
1723
|
import { z } from "zod";
|
|
1705
1724
|
var I16_MAX = 32767, I16_MIN = -32768, I64_MAX = 9223372036854775807n, I64_MIN = -9223372036854775808n, U8_MAX = 255, U16_MAX = 65535, U32_MAX = 4294967295, U64_MAX = 18446744073709551615n, U128_MAX = 340282366920938463463374607431768211455n, I64Schema = z.union([z.string(), z.number(), z.bigint()]).transform((val) => BigInt(val)).pipe(z.bigint().min(I64_MIN).max(I64_MAX)).describe("Signed 64-bit integer"), U8Schema = z.union([z.string(), z.number()]).transform((val) => Number(val)).pipe(z.number().int().min(0).max(U8_MAX)).describe("Unsigned 8-bit integer (0-255)"), U16Schema = z.union([z.string(), z.number()]).transform((val) => Number(val)).pipe(z.number().int().min(0).max(U16_MAX)).describe("Unsigned 16-bit integer (0-65535)"), I16Schema = z.union([z.string(), z.number()]).transform((val) => Number(val)).pipe(z.number().int().min(I16_MIN).max(I16_MAX)).describe("Signed 16-bit integer (-32768-32767)"), U32Schema = z.union([z.string(), z.number()]).transform((val) => Number(val)).pipe(z.number().int().min(0).max(U32_MAX)).describe("Unsigned 32-bit integer"), U64Schema = z.union([z.string(), z.number(), z.bigint()]).transform((val) => BigInt(val)).pipe(z.bigint().min(0n).max(U64_MAX)).describe("Unsigned 64-bit integer"), U128Schema = z.union([z.string(), z.number(), z.bigint()]).transform((val) => BigInt(val)).pipe(z.bigint().min(0n).max(U128_MAX)).describe("Unsigned 128-bit integer for large amounts"), DecimalSchema = z.union([z.string(), z.number()]).transform((val, ctx) => {
|
|
@@ -1713,7 +1732,7 @@ var I16_MAX = 32767, I16_MIN = -32768, I64_MAX = 9223372036854775807n, I64_MIN =
|
|
|
1713
1732
|
}
|
|
1714
1733
|
}).describe("High-precision decimal number using Decimal.js"), Base58Address = z.string().pipe(z.string().regex(/^[1-9A-HJ-NP-Za-km-z]{32,44}$/, {
|
|
1715
1734
|
error: "Invalid Base58 address format"
|
|
1716
|
-
})).describe("Solana Base58-encoded public key address (32-44 characters)"), AssetId = U16Schema.describe("Unique identifier for a trading asset"), MarketId = U16Schema.describe("Unique identifier for a trading market"), OrderId = U64Schema.describe("Unique identifier for an order in the system"), TradeId = U64Schema.describe("Unique identifier for an executed trade"), ClientOrderId = U64Schema.describe("Client-provided order identifier for idempotency"), TriggerOrderId = U64Schema.describe("Unique identifier for a trigger/conditional order"), TwapId = U64Schema.describe("Unique identifier for a TWAP order"), Amount = U128Schema.describe("Token amount in smallest unit (e.g., lamports for SOL)"), UnixTimestampMicros = I64Schema.describe("Unix timestamp in microseconds since epoch"), createJsonMap = (keySchema, valueSchema, options) => {
|
|
1735
|
+
})).describe("Solana Base58-encoded public key address (32-44 characters)"), BytesAsBase58Address = z.array(U8Schema).transform((bytes) => bs582.encode(new Uint8Array(bytes))).describe("Raw byte array converted to Base58-encoded address string"), AssetId = U16Schema.describe("Unique identifier for a trading asset"), MarketId = U16Schema.describe("Unique identifier for a trading market"), OrderId = U64Schema.describe("Unique identifier for an order in the system"), TradeId = U64Schema.describe("Unique identifier for an executed trade"), ClientOrderId = U64Schema.describe("Client-provided order identifier for idempotency"), TriggerOrderId = U64Schema.describe("Unique identifier for a trigger/conditional order"), TwapId = U64Schema.describe("Unique identifier for a TWAP order"), Amount = U128Schema.describe("Token amount in smallest unit (e.g., lamports for SOL)"), UnixTimestampMicros = I64Schema.describe("Unix timestamp in microseconds since epoch"), createJsonMap = (keySchema, valueSchema, options) => {
|
|
1717
1736
|
let schema = z.record(z.string(), valueSchema).transform((obj) => new Map(Object.entries(obj).map(([k, v]) => [keySchema.parse(k), v])));
|
|
1718
1737
|
if (options?.description)
|
|
1719
1738
|
schema.describe(options.description);
|
|
@@ -1940,10 +1959,11 @@ var MARKET_KINDS = ["perp", "spot"], SIDES = ["bid", "ask"], TRIGGER_DIRECTIONS
|
|
|
1940
1959
|
], createBaseResponse = (schema) => schema, VersionedV0 = (schema) => z3.object({ V0: schema }).transform((d) => ({
|
|
1941
1960
|
version: "V0",
|
|
1942
1961
|
data: d.V0
|
|
1943
|
-
})), VersionedV1 = (schema) => z3.object({ V1: schema }).transform((d) => ({
|
|
1944
|
-
version: "V1",
|
|
1945
|
-
data: d.V1
|
|
1946
1962
|
}));
|
|
1963
|
+
var VersionedV2 = (schema) => z3.object({ V2: schema }).transform((d) => ({
|
|
1964
|
+
version: "V2",
|
|
1965
|
+
data: d.V2
|
|
1966
|
+
})), VersionedV1Value = (schema) => z3.object({ V1: schema }).transform((d) => d.V1), UnversionedOrV1 = (schema) => z3.union([schema, VersionedV1Value(schema)]);
|
|
1947
1967
|
var StateResponseSchemas = {
|
|
1948
1968
|
RollupSchema: (valueSchema) => createBaseResponse(z3.object({ schema: valueSchema })),
|
|
1949
1969
|
StateValue: (valueSchema) => createBaseResponse(z3.object({ value: valueSchema.nullable() })),
|
|
@@ -2016,7 +2036,7 @@ var StateResponseSchemas = {
|
|
|
2016
2036
|
}), PendingTpslPair = z3.object({
|
|
2017
2037
|
tpsl_pair: TpslPair,
|
|
2018
2038
|
dynamic_size: z3.boolean()
|
|
2019
|
-
}), PerpOrder = z3.object({
|
|
2039
|
+
}), PerpOrder = UnversionedOrV1(z3.object({
|
|
2020
2040
|
side: z3.enum(SIDES),
|
|
2021
2041
|
market_id: MarketId,
|
|
2022
2042
|
order_id: OrderId,
|
|
@@ -2027,8 +2047,9 @@ var StateResponseSchemas = {
|
|
|
2027
2047
|
filled_size: DecimalSchema,
|
|
2028
2048
|
filled_cot: DecimalSchema,
|
|
2029
2049
|
owner: Base58Address,
|
|
2030
|
-
reserved_pending_tpsl_pair_ids: z3.string().nullable()
|
|
2031
|
-
|
|
2050
|
+
reserved_pending_tpsl_pair_ids: z3.string().nullable(),
|
|
2051
|
+
expiry_timestamp: UnixTimestampMicros.nullable()
|
|
2052
|
+
})), SpotOrder = UnversionedOrV1(z3.object({
|
|
2032
2053
|
side: z3.enum(SIDES),
|
|
2033
2054
|
market_id: MarketId,
|
|
2034
2055
|
order_id: OrderId,
|
|
@@ -2039,8 +2060,9 @@ var StateResponseSchemas = {
|
|
|
2039
2060
|
remaining_base_lots: DecimalSchema,
|
|
2040
2061
|
filled_base_lots: DecimalSchema,
|
|
2041
2062
|
filled_cot: DecimalSchema,
|
|
2042
|
-
owner: Base58Address
|
|
2043
|
-
|
|
2063
|
+
owner: Base58Address,
|
|
2064
|
+
expiry_timestamp: UnixTimestampMicros.nullable()
|
|
2065
|
+
})), Order = z3.union([PerpOrder, SpotOrder]), TriggerOrder = z3.object({
|
|
2044
2066
|
side: z3.enum(SIDES),
|
|
2045
2067
|
market_id: MarketId,
|
|
2046
2068
|
trigger_order_id: TriggerOrderId,
|
|
@@ -2064,7 +2086,7 @@ var StateResponseSchemas = {
|
|
|
2064
2086
|
"tier7",
|
|
2065
2087
|
"tier8",
|
|
2066
2088
|
"tier9"
|
|
2067
|
-
]), TradingMode = z3.enum(["iso", "cross"]), PerpLedger = z3.object({
|
|
2089
|
+
]), TradingMode = z3.enum(["iso", "cross"]), PerpLedger = UnversionedOrV1(z3.object({
|
|
2068
2090
|
trading_mode: TradingMode,
|
|
2069
2091
|
order_ids: z3.array(OrderId),
|
|
2070
2092
|
trigger_order_ids: z3.array(TriggerOrderId),
|
|
@@ -2075,7 +2097,7 @@ var StateResponseSchemas = {
|
|
|
2075
2097
|
twap_ids: z3.array(TwapId),
|
|
2076
2098
|
twap_open_bid_lots: DecimalSchema,
|
|
2077
2099
|
twap_open_ask_lots: DecimalSchema
|
|
2078
|
-
}), SpotLedger = z3.object({
|
|
2100
|
+
})), SpotLedger = z3.object({
|
|
2079
2101
|
order_ids: z3.array(OrderId),
|
|
2080
2102
|
trigger_order_ids: z3.array(TriggerOrderId),
|
|
2081
2103
|
twap_ids: z3.array(TwapId)
|
|
@@ -2098,7 +2120,7 @@ var StateResponseSchemas = {
|
|
|
2098
2120
|
cost_of_trade: DecimalSchema,
|
|
2099
2121
|
reduce_only: z3.boolean(),
|
|
2100
2122
|
owner: Base58Address
|
|
2101
|
-
}), OrdersLedger = z3.object({
|
|
2123
|
+
}), OrdersLedger = UnversionedOrV1(z3.object({
|
|
2102
2124
|
client_order_ids: createJsonMap(ClientOrderId, OrderId),
|
|
2103
2125
|
perp_orders: createJsonMap(OrderId, PerpOrder),
|
|
2104
2126
|
perp_trigger_orders: createJsonMap(TriggerOrderId, TriggerOrder),
|
|
@@ -2106,7 +2128,7 @@ var StateResponseSchemas = {
|
|
|
2106
2128
|
spot_orders: createJsonMap(OrderId, SpotOrder),
|
|
2107
2129
|
spot_trigger_orders: createJsonMap(TriggerOrderId, TriggerOrder),
|
|
2108
2130
|
twaps: createJsonMap(TwapId, Twap)
|
|
2109
|
-
}), TriggerNodesStore = z3.object({
|
|
2131
|
+
})), TriggerNodesStore = z3.object({
|
|
2110
2132
|
inactive: createJsonMap(z3.string(), createJsonMap(z3.string(), z3.any())),
|
|
2111
2133
|
active: z3.array(z3.any())
|
|
2112
2134
|
}), ActiveTwap = z3.object({
|
|
@@ -2170,6 +2192,17 @@ var StateResponseSchemas = {
|
|
|
2170
2192
|
perp_leverage_tables: createJsonMap(MarketId, LeverageTable),
|
|
2171
2193
|
borrow_lend_risk_configs: createJsonMap(AssetId, BorrowLendRiskConfig)
|
|
2172
2194
|
}), GlobalConfig = z3.object({
|
|
2195
|
+
max_orders_per_user: U16Schema,
|
|
2196
|
+
max_trigger_orders_per_user: U16Schema,
|
|
2197
|
+
max_orders_per_batch_msg: U16Schema,
|
|
2198
|
+
max_trigger_orders_to_execute_per_msg: U16Schema,
|
|
2199
|
+
min_notional_twap_value: DecimalSchema,
|
|
2200
|
+
min_notional_twap_value_per_order: DecimalSchema,
|
|
2201
|
+
twap_execution_interval_seconds: U64Schema,
|
|
2202
|
+
user_deposit_limits_per_asset: createJsonMap(AssetId, DecimalSchema),
|
|
2203
|
+
whitelisted_users_for_deposit: createJsonSet(Base58Address),
|
|
2204
|
+
pyth_lazer_trusted_signers: createJsonSet(BytesAsBase58Address)
|
|
2205
|
+
}), LegacyGlobalConfigV0 = z3.object({
|
|
2173
2206
|
max_orders_per_user: U16Schema,
|
|
2174
2207
|
max_trigger_orders_per_user: U16Schema,
|
|
2175
2208
|
max_orders_per_batch_msg: U16Schema,
|
|
@@ -2187,6 +2220,14 @@ var StateResponseSchemas = {
|
|
|
2187
2220
|
credits: Base58Address,
|
|
2188
2221
|
referrals: Base58Address
|
|
2189
2222
|
}), AssetInfo = z3.object({
|
|
2223
|
+
id: AssetId,
|
|
2224
|
+
name: z3.string(),
|
|
2225
|
+
token_id: z3.string().nullable(),
|
|
2226
|
+
decimals: U8Schema,
|
|
2227
|
+
withdraw_fee: DecimalSchema,
|
|
2228
|
+
pyth_lazer_feed_id: z3.number().nullable(),
|
|
2229
|
+
pyth_lazer_quote_feed_id: z3.number().nullable()
|
|
2230
|
+
}), LegacyAssetInfoV0 = z3.object({
|
|
2190
2231
|
id: AssetId,
|
|
2191
2232
|
name: z3.string(),
|
|
2192
2233
|
token_id: z3.string().nullable(),
|
|
@@ -2288,13 +2329,20 @@ var StateResponseSchemas = {
|
|
|
2288
2329
|
flags: U32Schema
|
|
2289
2330
|
}), Schemas = {
|
|
2290
2331
|
DummyValue: z3.number(),
|
|
2291
|
-
|
|
2332
|
+
ExchangeInfoV2: z3.object({
|
|
2292
2333
|
global_config: GlobalConfig,
|
|
2293
2334
|
admins: AdminRegistry,
|
|
2294
2335
|
assets: createJsonMap(AssetId, AssetInfo),
|
|
2295
2336
|
markets: createJsonMap(MarketId, MarketInfo),
|
|
2296
2337
|
vaults: VaultRegistry
|
|
2297
2338
|
}),
|
|
2339
|
+
ExchangeInfoV1: z3.object({
|
|
2340
|
+
global_config: LegacyGlobalConfigV0,
|
|
2341
|
+
admins: AdminRegistry,
|
|
2342
|
+
assets: createJsonMap(AssetId, LegacyAssetInfoV0),
|
|
2343
|
+
markets: createJsonMap(MarketId, MarketInfo),
|
|
2344
|
+
vaults: VaultRegistry
|
|
2345
|
+
}),
|
|
2298
2346
|
ExchangeAssetsV0: z3.object({
|
|
2299
2347
|
cross_assets: CrossAssets,
|
|
2300
2348
|
iso_assets: createJsonMap(MarketId, IsoAssets),
|
|
@@ -2306,7 +2354,7 @@ var StateResponseSchemas = {
|
|
|
2306
2354
|
bids: z3.array(PriceLevelL2),
|
|
2307
2355
|
asks: z3.array(PriceLevelL2)
|
|
2308
2356
|
}),
|
|
2309
|
-
UserAccount: z3.object({
|
|
2357
|
+
UserAccount: UnversionedOrV1(z3.object({
|
|
2310
2358
|
account_variant: z3.discriminatedUnion("type", [
|
|
2311
2359
|
z3.object({
|
|
2312
2360
|
type: z3.literal("master"),
|
|
@@ -2325,7 +2373,7 @@ var StateResponseSchemas = {
|
|
|
2325
2373
|
perp_ledgers: createJsonMap(MarketId, PerpLedger),
|
|
2326
2374
|
spot_ledgers: createJsonMap(MarketId, SpotLedger),
|
|
2327
2375
|
orders_ledger: OrdersLedger
|
|
2328
|
-
}),
|
|
2376
|
+
})),
|
|
2329
2377
|
UserAccountConfigV0: z3.object({
|
|
2330
2378
|
delegates: createJsonMap(Base58Address, z3.string())
|
|
2331
2379
|
}),
|
|
@@ -2379,7 +2427,7 @@ var StateResponseSchemas = {
|
|
|
2379
2427
|
}, ResponseSchemas = {
|
|
2380
2428
|
DummyValue: StateResponseSchemas.StateValue(Schemas.DummyValue),
|
|
2381
2429
|
Order: StateResponseSchemas.StateMapElement(OrderId, Order),
|
|
2382
|
-
ExchangeInfo: StateResponseSchemas.StateValue(
|
|
2430
|
+
ExchangeInfo: StateResponseSchemas.StateValue(VersionedV2(Schemas.ExchangeInfoV2)),
|
|
2383
2431
|
ExchangeAssets: StateResponseSchemas.StateValue(VersionedV0(Schemas.ExchangeAssetsV0)),
|
|
2384
2432
|
RiskEngine: StateResponseSchemas.StateValue(VersionedV0(Schemas.RiskEngineV0)),
|
|
2385
2433
|
ExecutionIds: StateResponseSchemas.StateValue(VersionedV0(Schemas.ExecutionIdsV0)),
|
|
@@ -2461,6 +2509,41 @@ var WasmResponseSchemas = {
|
|
|
2461
2509
|
};
|
|
2462
2510
|
|
|
2463
2511
|
// src/client.ts
|
|
2512
|
+
function serializeExchangeInfoForWasm(exchangeInfo) {
|
|
2513
|
+
return serializeVersioned({
|
|
2514
|
+
version: exchangeInfo.version,
|
|
2515
|
+
data: {
|
|
2516
|
+
...exchangeInfo.data,
|
|
2517
|
+
global_config: {
|
|
2518
|
+
...exchangeInfo.data.global_config,
|
|
2519
|
+
pyth_lazer_trusted_signers: Array.from(exchangeInfo.data.global_config.pyth_lazer_trusted_signers, (signer) => Array.from(base58ToBytes(signer)))
|
|
2520
|
+
}
|
|
2521
|
+
}
|
|
2522
|
+
});
|
|
2523
|
+
}
|
|
2524
|
+
function wrapVersion(version, data) {
|
|
2525
|
+
return { [version]: data };
|
|
2526
|
+
}
|
|
2527
|
+
function mapValues(map, transform) {
|
|
2528
|
+
return new Map(Array.from(map.entries(), ([key, value]) => [key, transform(value)]));
|
|
2529
|
+
}
|
|
2530
|
+
function serializeOrdersLedgerForWasm(ordersLedger) {
|
|
2531
|
+
return wrapVersion("V1", {
|
|
2532
|
+
...ordersLedger,
|
|
2533
|
+
perp_orders: mapValues(ordersLedger.perp_orders, (order) => wrapVersion("V1", order)),
|
|
2534
|
+
spot_orders: mapValues(ordersLedger.spot_orders, (order) => wrapVersion("V1", order))
|
|
2535
|
+
});
|
|
2536
|
+
}
|
|
2537
|
+
function serializeUserAccountForWasm(userAccount) {
|
|
2538
|
+
return serializeVersioned({
|
|
2539
|
+
version: "V1",
|
|
2540
|
+
data: {
|
|
2541
|
+
...userAccount,
|
|
2542
|
+
perp_ledgers: mapValues(userAccount.perp_ledgers, (ledger) => wrapVersion("V1", ledger)),
|
|
2543
|
+
orders_ledger: serializeOrdersLedgerForWasm(userAccount.orders_ledger)
|
|
2544
|
+
}
|
|
2545
|
+
});
|
|
2546
|
+
}
|
|
2464
2547
|
var DEFAULT_TRANSACTION_OPTS = {
|
|
2465
2548
|
maxPriorityFeeBps: 0,
|
|
2466
2549
|
maxFee: "10000000000",
|
|
@@ -2702,71 +2785,71 @@ class ReadOnlyClient {
|
|
|
2702
2785
|
return position.cost_of_trades.div(position.size.abs());
|
|
2703
2786
|
}
|
|
2704
2787
|
calculatePerpUnrealizedPnl(marginMode, userAccount, riskEngine) {
|
|
2705
|
-
let userAccountObject =
|
|
2788
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_perp_unrealized_pnl(marginMode, userAccountObject, riskEngineObject);
|
|
2706
2789
|
return new Decimal4(result);
|
|
2707
2790
|
}
|
|
2708
2791
|
calculateAccountEquity(marginMode, equityType, conservative, userAccount, riskEngine) {
|
|
2709
|
-
let userAccountObject =
|
|
2792
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_account_equity(marginMode, userAccountObject, conservative, equityType, riskEngineObject);
|
|
2710
2793
|
return new Decimal4(result);
|
|
2711
2794
|
}
|
|
2712
2795
|
calculateAccountLeverage(marginMode, userAccount, riskEngine) {
|
|
2713
|
-
let userAccountObject =
|
|
2796
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_account_leverage(marginMode, userAccountObject, riskEngineObject);
|
|
2714
2797
|
return new Decimal4(result);
|
|
2715
2798
|
}
|
|
2716
2799
|
calculateAvailableMargin(marginMode, marginType, conservative, userAccount, riskEngine) {
|
|
2717
|
-
let userAccountObject =
|
|
2800
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_available_margin(marginMode, userAccountObject, conservative, marginType, riskEngineObject);
|
|
2718
2801
|
return new Decimal4(result);
|
|
2719
2802
|
}
|
|
2720
2803
|
calculateUsedMargin(marginMode, withdrawal, marginType, userAccount, riskEngine) {
|
|
2721
|
-
let userAccountObject =
|
|
2804
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_margin(marginMode, userAccountObject, withdrawal, marginType, riskEngineObject);
|
|
2722
2805
|
return new Decimal4(result);
|
|
2723
2806
|
}
|
|
2724
2807
|
calculateUsedPerpMargin(marginMode, userAccount, marginType, riskEngine) {
|
|
2725
|
-
let userAccountObject =
|
|
2808
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_perp_margin(marginMode, userAccountObject, marginType, riskEngineObject);
|
|
2726
2809
|
return new Decimal4(result);
|
|
2727
2810
|
}
|
|
2728
2811
|
calculateUsedBorrowLendMargin(userAccount, marginType, riskEngine) {
|
|
2729
|
-
let userAccountObject =
|
|
2812
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_borrow_lend_margin(userAccountObject, marginType, riskEngineObject);
|
|
2730
2813
|
return new Decimal4(result);
|
|
2731
2814
|
}
|
|
2732
2815
|
calculateEstimatedLiquidationPrice(marginMode, market, userAccount, riskEngine) {
|
|
2733
|
-
let marketId = this.getMarketId(market), baseAssetId = this.getMarketMeta(market).baseAssetId, userAccountObject =
|
|
2816
|
+
let marketId = this.getMarketId(market), baseAssetId = this.getMarketMeta(market).baseAssetId, userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_estimated_liquidation_price(marginMode, userAccountObject, marketId, baseAssetId, riskEngineObject);
|
|
2734
2817
|
return new Decimal4(result);
|
|
2735
2818
|
}
|
|
2736
2819
|
calculateLiquidationRiskPercentage(marginMode, userAccount, riskEngine) {
|
|
2737
|
-
let userAccountObject =
|
|
2820
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_liquidation_risk_percentage(marginMode, userAccountObject, riskEngineObject);
|
|
2738
2821
|
return new Decimal4(result);
|
|
2739
2822
|
}
|
|
2740
2823
|
calculateMarginBalance(marginMode, userAccount, riskEngine) {
|
|
2741
|
-
let userAccountObject =
|
|
2824
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_margin_balance(marginMode, userAccountObject, riskEngineObject);
|
|
2742
2825
|
return WasmResponseSchemas.MarginBalanceSummarySchema.parse(result);
|
|
2743
2826
|
}
|
|
2744
2827
|
calculatePerpMarginRequirement(marginMode, userAccount, marginType, withdrawal, riskEngine) {
|
|
2745
|
-
let userAccountObject =
|
|
2828
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_perp_margin_requirement(marginMode, userAccountObject, marginType, withdrawal, riskEngineObject);
|
|
2746
2829
|
return new Decimal4(result);
|
|
2747
2830
|
}
|
|
2748
2831
|
calculateForceCancelRiskPercentage(marginMode, userAccount, riskEngine) {
|
|
2749
|
-
let userAccountObject =
|
|
2832
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_force_cancel_risk_percentage(marginMode, userAccountObject, riskEngineObject);
|
|
2750
2833
|
return new Decimal4(result);
|
|
2751
2834
|
}
|
|
2752
2835
|
calculateMaxBorrowAmount(asset, userAccount, riskEngine) {
|
|
2753
|
-
let assetId = this.getAssetId(asset), userAccountObject =
|
|
2836
|
+
let assetId = this.getAssetId(asset), userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_max_borrow_amount(assetId, userAccountObject, riskEngineObject);
|
|
2754
2837
|
return new Decimal4(result);
|
|
2755
2838
|
}
|
|
2756
2839
|
calculateMaxOrderSize(marginMode, market, price, side, orderType, reduceOnly, userAccount, riskEngine, orderbook, nIterations = 100, errorTolerance = new Decimal4(0.0001)) {
|
|
2757
|
-
let marketId = this.getMarketId(market), userAccountObject =
|
|
2840
|
+
let marketId = this.getMarketId(market), userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), orderbookObject = serialize(orderbook), result = BulletWasm.calculate_max_order_size(marginMode, marketId, price.toFixed(), side, orderType, reduceOnly, userAccountObject, riskEngineObject, orderbookObject, nIterations, errorTolerance.toFixed());
|
|
2758
2841
|
return new Decimal4(result);
|
|
2759
2842
|
}
|
|
2760
2843
|
calculateWithdrawableAmountOfCrossMarginAsset(asset, forTransferSpotCollateral, userAccount, riskEngine, exchangeInfo) {
|
|
2761
|
-
let assetId = this.getAssetId(asset), userAccountObject =
|
|
2844
|
+
let assetId = this.getAssetId(asset), userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), exchangeInfoObject = serializeExchangeInfoForWasm(exchangeInfo), result = BulletWasm.calculate_withdrawable_amount_of_cross_margin_asset(assetId, forTransferSpotCollateral, userAccountObject, riskEngineObject, exchangeInfoObject);
|
|
2762
2845
|
return new Decimal4(result);
|
|
2763
2846
|
}
|
|
2764
2847
|
simulateUsedCrossMarginOnBorrow(asset, borrowAmount, userAccount, marginType, riskEngine) {
|
|
2765
|
-
let assetId = this.getAssetId(asset), userAccountObject =
|
|
2848
|
+
let assetId = this.getAssetId(asset), userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.simulate_used_cross_margin_on_borrow(assetId, borrowAmount.toFixed(), userAccountObject, marginType, riskEngineObject);
|
|
2766
2849
|
return WasmResponseSchemas.SimulationResultSchema.parse(result);
|
|
2767
2850
|
}
|
|
2768
2851
|
simulateUsedCrossMarginOnOrder(market, newOrderArgs, userAccount, riskEngine, orderbook) {
|
|
2769
|
-
let marketId = this.getMarketId(market), userAccountObject =
|
|
2852
|
+
let marketId = this.getMarketId(market), userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), orderbookObject = serialize(orderbook), result = BulletWasm.simulate_used_cross_margin_on_order(marketId, {
|
|
2770
2853
|
price: newOrderArgs.price.toFixed(),
|
|
2771
2854
|
size: newOrderArgs.size.toFixed(),
|
|
2772
2855
|
side: newOrderArgs.side,
|
|
@@ -2776,7 +2859,7 @@ class ReadOnlyClient {
|
|
|
2776
2859
|
return WasmResponseSchemas.SimulationResultSchema.parse(result);
|
|
2777
2860
|
}
|
|
2778
2861
|
simulateCrossMarginEstimatedLiquidationPriceOnOrder(market, newOrderArgs, userAccount, riskEngine, orderbook) {
|
|
2779
|
-
let marketId = this.getMarketId(market), baseAssetId = this.getMarketMeta(market).baseAssetId, userAccountObject =
|
|
2862
|
+
let marketId = this.getMarketId(market), baseAssetId = this.getMarketMeta(market).baseAssetId, userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), orderbookObject = serialize(orderbook), result = BulletWasm.simulate_cross_margin_estimated_liquidation_price_on_order(marketId, {
|
|
2780
2863
|
price: newOrderArgs.price.toFixed(),
|
|
2781
2864
|
size: newOrderArgs.size.toFixed(),
|
|
2782
2865
|
side: newOrderArgs.side,
|
|
@@ -2786,7 +2869,7 @@ class ReadOnlyClient {
|
|
|
2786
2869
|
return WasmResponseSchemas.SimulationResultSchema.parse(result);
|
|
2787
2870
|
}
|
|
2788
2871
|
calculatePositionsAdditionalMetadata(userAccount, riskEngine, exchangeInfo) {
|
|
2789
|
-
let userAccountObject =
|
|
2872
|
+
let userAccountObject = serializeUserAccountForWasm(userAccount), riskEngineObject = serializeVersioned(riskEngine), exchangeInfoObject = serializeExchangeInfoForWasm(exchangeInfo), result = BulletWasm.calculate_positions_additional_metadata(userAccountObject, riskEngineObject, exchangeInfoObject);
|
|
2790
2873
|
return WasmResponseSchemas.PositionAdditionalMetadataSchema.parse(result);
|
|
2791
2874
|
}
|
|
2792
2875
|
calculateBorrowLendPoolAdditionalMetadata(borrowLendPools, asset) {
|
|
@@ -2794,7 +2877,7 @@ class ReadOnlyClient {
|
|
|
2794
2877
|
return WasmResponseSchemas.BorrowLendMarketAdditionalMetadataSchema.parse(result);
|
|
2795
2878
|
}
|
|
2796
2879
|
calculateCrossMarginAccountSummaryBatch(userAccounts, riskEngine, useWeightedEquity = !0) {
|
|
2797
|
-
let userAccountsObject =
|
|
2880
|
+
let userAccountsObject = userAccounts.map(serializeUserAccountForWasm), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_cross_margin_account_summary_batch(userAccountsObject, riskEngineObject, useWeightedEquity);
|
|
2798
2881
|
return WasmResponseSchemas.AccountSummaryBatchSchema.parse(result);
|
|
2799
2882
|
}
|
|
2800
2883
|
estimateHourlyFundingRate(market, riskEngine) {
|
|
@@ -3520,32 +3603,36 @@ class AuthenticatedClient extends ReadOnlyClient {
|
|
|
3520
3603
|
}
|
|
3521
3604
|
});
|
|
3522
3605
|
}
|
|
3523
|
-
async initAssetInfo(assetId, assetName, tokenId, decimals, withdrawFee) {
|
|
3606
|
+
async initAssetInfo(assetId, assetName, tokenId, decimals, withdrawFee, pythLazerFeedId, pythLazerQuoteFeedId) {
|
|
3524
3607
|
return await this.submitTransaction({
|
|
3525
3608
|
exchange: {
|
|
3526
3609
|
admin: {
|
|
3527
|
-
|
|
3610
|
+
init_asset_info_v_1: {
|
|
3528
3611
|
args: {
|
|
3529
3612
|
asset_id: assetId,
|
|
3530
3613
|
asset_name: assetName,
|
|
3531
3614
|
token_id: tokenId,
|
|
3532
3615
|
decimals,
|
|
3533
|
-
withdraw_fee: this.encodeDecimal(withdrawFee)
|
|
3616
|
+
withdraw_fee: this.encodeDecimal(withdrawFee),
|
|
3617
|
+
pyth_lazer_feed_id: pythLazerFeedId ?? null,
|
|
3618
|
+
pyth_lazer_quote_feed_id: pythLazerQuoteFeedId ?? null
|
|
3534
3619
|
}
|
|
3535
3620
|
}
|
|
3536
3621
|
}
|
|
3537
3622
|
}
|
|
3538
3623
|
});
|
|
3539
3624
|
}
|
|
3540
|
-
async updateAssetInfo(asset, withdrawFee) {
|
|
3625
|
+
async updateAssetInfo(asset, withdrawFee, pythLazerFeedId, pythLazerQuoteFeedId) {
|
|
3541
3626
|
let assetId = this.getAssetId(asset);
|
|
3542
3627
|
return await this.submitTransaction({
|
|
3543
3628
|
exchange: {
|
|
3544
3629
|
admin: {
|
|
3545
|
-
|
|
3630
|
+
update_asset_info_v_1: {
|
|
3546
3631
|
args: {
|
|
3547
3632
|
asset_id: assetId,
|
|
3548
|
-
withdraw_fee: this.encodeDecimal(withdrawFee)
|
|
3633
|
+
withdraw_fee: this.encodeDecimal(withdrawFee),
|
|
3634
|
+
pyth_lazer_feed_id: pythLazerFeedId ? pythLazerFeedId : null,
|
|
3635
|
+
pyth_lazer_quote_feed_id: pythLazerQuoteFeedId ? pythLazerQuoteFeedId : null
|
|
3549
3636
|
}
|
|
3550
3637
|
}
|
|
3551
3638
|
}
|
|
@@ -3556,7 +3643,7 @@ class AuthenticatedClient extends ReadOnlyClient {
|
|
|
3556
3643
|
return await this.submitTransaction({
|
|
3557
3644
|
exchange: {
|
|
3558
3645
|
admin: {
|
|
3559
|
-
|
|
3646
|
+
update_global_config_v_1: {
|
|
3560
3647
|
args: {
|
|
3561
3648
|
max_orders_per_user: options.maxOrdersPerUser ?? null,
|
|
3562
3649
|
max_trigger_orders_per_user: options.maxTriggerOrdersPerUser ?? null,
|
|
@@ -3569,7 +3656,8 @@ class AuthenticatedClient extends ReadOnlyClient {
|
|
|
3569
3656
|
assetId,
|
|
3570
3657
|
this.encodeDecimal(amount)
|
|
3571
3658
|
]) ?? null,
|
|
3572
|
-
whitelisted_users_for_deposit: options.whitelistedUsersForDeposit ?? null
|
|
3659
|
+
whitelisted_users_for_deposit: options.whitelistedUsersForDeposit ?? null,
|
|
3660
|
+
pyth_lazer_trusted_signers: options.pyth_lazer_trusted_signers ?? null
|
|
3573
3661
|
}
|
|
3574
3662
|
}
|
|
3575
3663
|
}
|
|
@@ -4379,6 +4467,9 @@ class LedgerWallet extends Wallet {
|
|
|
4379
4467
|
await this.ledgerSigner.disconnect();
|
|
4380
4468
|
}
|
|
4381
4469
|
}
|
|
4470
|
+
|
|
4471
|
+
// src/browser.ts
|
|
4472
|
+
var { BulletWasm: BulletWasm2, initialize: initialize2, MarginMode: MarginMode2 } = exports_loader;
|
|
4382
4473
|
export {
|
|
4383
4474
|
validateEndpoints,
|
|
4384
4475
|
toNativeUnits,
|
|
@@ -4393,7 +4484,7 @@ export {
|
|
|
4393
4484
|
isErrorType,
|
|
4394
4485
|
isBulletError,
|
|
4395
4486
|
isAbortError,
|
|
4396
|
-
initialize,
|
|
4487
|
+
initialize2 as initialize,
|
|
4397
4488
|
hexToBytes,
|
|
4398
4489
|
hexToBase64,
|
|
4399
4490
|
hexToBase58,
|
|
@@ -4411,15 +4502,15 @@ export {
|
|
|
4411
4502
|
ReadOnlyClient,
|
|
4412
4503
|
Orderbook,
|
|
4413
4504
|
NETWORKS,
|
|
4414
|
-
MarginMode,
|
|
4505
|
+
MarginMode2 as MarginMode,
|
|
4415
4506
|
LedgerWallet,
|
|
4416
4507
|
GLOBAL_DEFAULT_MAX_LEVERAGE,
|
|
4417
4508
|
Client,
|
|
4418
|
-
BulletWasm,
|
|
4509
|
+
BulletWasm2 as BulletWasm,
|
|
4419
4510
|
BulletError,
|
|
4420
4511
|
BaseResponseSchemas,
|
|
4421
4512
|
AuthenticatedClient,
|
|
4422
4513
|
AbortError
|
|
4423
4514
|
};
|
|
4424
4515
|
|
|
4425
|
-
//# debugId=
|
|
4516
|
+
//# debugId=3EFAFB027DC38DA364756E2164756E21
|