@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.
Binary file
@@ -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
- }), SpotOrder = z3.object({
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
- }), Order = z3.union([PerpOrder, SpotOrder]), TriggerOrder = z3.object({
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
- ExchangeInfoV1: z3.object({
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(VersionedV1(Schemas.ExchangeInfoV1)),
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_perp_unrealized_pnl(marginMode, userAccountObject, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_account_equity(marginMode, userAccountObject, conservative, equityType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_account_leverage(marginMode, userAccountObject, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_available_margin(marginMode, userAccountObject, conservative, marginType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_margin(marginMode, userAccountObject, withdrawal, marginType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_perp_margin(marginMode, userAccountObject, marginType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_used_borrow_lend_margin(userAccountObject, marginType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_estimated_liquidation_price(marginMode, userAccountObject, marketId, baseAssetId, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_liquidation_risk_percentage(marginMode, userAccountObject, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_margin_balance(marginMode, userAccountObject, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_perp_margin_requirement(marginMode, userAccountObject, marginType, withdrawal, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_force_cancel_risk_percentage(marginMode, userAccountObject, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_max_borrow_amount(assetId, userAccountObject, riskEngineObject);
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 = serialize(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());
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), exchangeInfoObject = serializeVersioned(exchangeInfo), result = BulletWasm.calculate_withdrawable_amount_of_cross_margin_asset(assetId, forTransferSpotCollateral, userAccountObject, riskEngineObject, exchangeInfoObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.simulate_used_cross_margin_on_borrow(assetId, borrowAmount.toFixed(), userAccountObject, marginType, riskEngineObject);
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), orderbookObject = serialize(orderbook), result = BulletWasm.simulate_used_cross_margin_on_order(marketId, {
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), orderbookObject = serialize(orderbook), result = BulletWasm.simulate_cross_margin_estimated_liquidation_price_on_order(marketId, {
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 = serialize(userAccount), riskEngineObject = serializeVersioned(riskEngine), exchangeInfoObject = serializeVersioned(exchangeInfo), result = BulletWasm.calculate_positions_additional_metadata(userAccountObject, riskEngineObject, exchangeInfoObject);
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 = serialize(userAccounts), riskEngineObject = serializeVersioned(riskEngine), result = BulletWasm.calculate_cross_margin_account_summary_batch(userAccountsObject, riskEngineObject, useWeightedEquity);
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
- init_asset_info: {
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
- update_asset_info: {
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
- update_global_config: {
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=3F408CF296FE11ED64756E2164756E21
4516
+ //# debugId=3EFAFB027DC38DA364756E2164756E21