@bulletxyz/bullet-sdk 0.49.6 → 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,
@@ -2053,7 +2075,18 @@ var StateResponseSchemas = {
2053
2075
  owner: Base58Address,
2054
2076
  last_update_timestamp: UnixTimestampMicros,
2055
2077
  linked_trigger_order_id: TriggerOrderId.nullable()
2056
- }), RewardVariant = z3.enum(["referral", "liquidity"]), MarketTradingStatus = z3.enum(["active", "halted", "cleaning", "cleaned"]), FeeTier = z3.enum(["tier0", "tier1", "tier2", "tier3", "tier4"]), TradingMode = z3.enum(["iso", "cross"]), PerpLedger = z3.object({
2078
+ }), RewardVariant = z3.enum(["referral", "liquidity"]), MarketTradingStatus = z3.enum(["active", "halted", "cleaning", "cleaned"]), FeeTier = z3.enum([
2079
+ "tier0",
2080
+ "tier1",
2081
+ "tier2",
2082
+ "tier3",
2083
+ "tier4",
2084
+ "tier5",
2085
+ "tier6",
2086
+ "tier7",
2087
+ "tier8",
2088
+ "tier9"
2089
+ ]), TradingMode = z3.enum(["iso", "cross"]), PerpLedger = UnversionedOrV1(z3.object({
2057
2090
  trading_mode: TradingMode,
2058
2091
  order_ids: z3.array(OrderId),
2059
2092
  trigger_order_ids: z3.array(TriggerOrderId),
@@ -2064,7 +2097,7 @@ var StateResponseSchemas = {
2064
2097
  twap_ids: z3.array(TwapId),
2065
2098
  twap_open_bid_lots: DecimalSchema,
2066
2099
  twap_open_ask_lots: DecimalSchema
2067
- }), SpotLedger = z3.object({
2100
+ })), SpotLedger = z3.object({
2068
2101
  order_ids: z3.array(OrderId),
2069
2102
  trigger_order_ids: z3.array(TriggerOrderId),
2070
2103
  twap_ids: z3.array(TwapId)
@@ -2087,7 +2120,7 @@ var StateResponseSchemas = {
2087
2120
  cost_of_trade: DecimalSchema,
2088
2121
  reduce_only: z3.boolean(),
2089
2122
  owner: Base58Address
2090
- }), OrdersLedger = z3.object({
2123
+ }), OrdersLedger = UnversionedOrV1(z3.object({
2091
2124
  client_order_ids: createJsonMap(ClientOrderId, OrderId),
2092
2125
  perp_orders: createJsonMap(OrderId, PerpOrder),
2093
2126
  perp_trigger_orders: createJsonMap(TriggerOrderId, TriggerOrder),
@@ -2095,7 +2128,7 @@ var StateResponseSchemas = {
2095
2128
  spot_orders: createJsonMap(OrderId, SpotOrder),
2096
2129
  spot_trigger_orders: createJsonMap(TriggerOrderId, TriggerOrder),
2097
2130
  twaps: createJsonMap(TwapId, Twap)
2098
- }), TriggerNodesStore = z3.object({
2131
+ })), TriggerNodesStore = z3.object({
2099
2132
  inactive: createJsonMap(z3.string(), createJsonMap(z3.string(), z3.any())),
2100
2133
  active: z3.array(z3.any())
2101
2134
  }), ActiveTwap = z3.object({
@@ -2159,6 +2192,17 @@ var StateResponseSchemas = {
2159
2192
  perp_leverage_tables: createJsonMap(MarketId, LeverageTable),
2160
2193
  borrow_lend_risk_configs: createJsonMap(AssetId, BorrowLendRiskConfig)
2161
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({
2162
2206
  max_orders_per_user: U16Schema,
2163
2207
  max_trigger_orders_per_user: U16Schema,
2164
2208
  max_orders_per_batch_msg: U16Schema,
@@ -2176,6 +2220,14 @@ var StateResponseSchemas = {
2176
2220
  credits: Base58Address,
2177
2221
  referrals: Base58Address
2178
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({
2179
2231
  id: AssetId,
2180
2232
  name: z3.string(),
2181
2233
  token_id: z3.string().nullable(),
@@ -2277,13 +2329,20 @@ var StateResponseSchemas = {
2277
2329
  flags: U32Schema
2278
2330
  }), Schemas = {
2279
2331
  DummyValue: z3.number(),
2280
- ExchangeInfoV1: z3.object({
2332
+ ExchangeInfoV2: z3.object({
2281
2333
  global_config: GlobalConfig,
2282
2334
  admins: AdminRegistry,
2283
2335
  assets: createJsonMap(AssetId, AssetInfo),
2284
2336
  markets: createJsonMap(MarketId, MarketInfo),
2285
2337
  vaults: VaultRegistry
2286
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
+ }),
2287
2346
  ExchangeAssetsV0: z3.object({
2288
2347
  cross_assets: CrossAssets,
2289
2348
  iso_assets: createJsonMap(MarketId, IsoAssets),
@@ -2295,7 +2354,7 @@ var StateResponseSchemas = {
2295
2354
  bids: z3.array(PriceLevelL2),
2296
2355
  asks: z3.array(PriceLevelL2)
2297
2356
  }),
2298
- UserAccount: z3.object({
2357
+ UserAccount: UnversionedOrV1(z3.object({
2299
2358
  account_variant: z3.discriminatedUnion("type", [
2300
2359
  z3.object({
2301
2360
  type: z3.literal("master"),
@@ -2314,7 +2373,7 @@ var StateResponseSchemas = {
2314
2373
  perp_ledgers: createJsonMap(MarketId, PerpLedger),
2315
2374
  spot_ledgers: createJsonMap(MarketId, SpotLedger),
2316
2375
  orders_ledger: OrdersLedger
2317
- }),
2376
+ })),
2318
2377
  UserAccountConfigV0: z3.object({
2319
2378
  delegates: createJsonMap(Base58Address, z3.string())
2320
2379
  }),
@@ -2368,7 +2427,7 @@ var StateResponseSchemas = {
2368
2427
  }, ResponseSchemas = {
2369
2428
  DummyValue: StateResponseSchemas.StateValue(Schemas.DummyValue),
2370
2429
  Order: StateResponseSchemas.StateMapElement(OrderId, Order),
2371
- ExchangeInfo: StateResponseSchemas.StateValue(VersionedV1(Schemas.ExchangeInfoV1)),
2430
+ ExchangeInfo: StateResponseSchemas.StateValue(VersionedV2(Schemas.ExchangeInfoV2)),
2372
2431
  ExchangeAssets: StateResponseSchemas.StateValue(VersionedV0(Schemas.ExchangeAssetsV0)),
2373
2432
  RiskEngine: StateResponseSchemas.StateValue(VersionedV0(Schemas.RiskEngineV0)),
2374
2433
  ExecutionIds: StateResponseSchemas.StateValue(VersionedV0(Schemas.ExecutionIdsV0)),
@@ -2450,6 +2509,41 @@ var WasmResponseSchemas = {
2450
2509
  };
2451
2510
 
2452
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
+ }
2453
2547
  var DEFAULT_TRANSACTION_OPTS = {
2454
2548
  maxPriorityFeeBps: 0,
2455
2549
  maxFee: "10000000000",
@@ -2691,71 +2785,71 @@ class ReadOnlyClient {
2691
2785
  return position.cost_of_trades.div(position.size.abs());
2692
2786
  }
2693
2787
  calculatePerpUnrealizedPnl(marginMode, userAccount, riskEngine) {
2694
- 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);
2695
2789
  return new Decimal4(result);
2696
2790
  }
2697
2791
  calculateAccountEquity(marginMode, equityType, conservative, userAccount, riskEngine) {
2698
- 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);
2699
2793
  return new Decimal4(result);
2700
2794
  }
2701
2795
  calculateAccountLeverage(marginMode, userAccount, riskEngine) {
2702
- 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);
2703
2797
  return new Decimal4(result);
2704
2798
  }
2705
2799
  calculateAvailableMargin(marginMode, marginType, conservative, userAccount, riskEngine) {
2706
- 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);
2707
2801
  return new Decimal4(result);
2708
2802
  }
2709
2803
  calculateUsedMargin(marginMode, withdrawal, marginType, userAccount, riskEngine) {
2710
- 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);
2711
2805
  return new Decimal4(result);
2712
2806
  }
2713
2807
  calculateUsedPerpMargin(marginMode, userAccount, marginType, riskEngine) {
2714
- 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);
2715
2809
  return new Decimal4(result);
2716
2810
  }
2717
2811
  calculateUsedBorrowLendMargin(userAccount, marginType, riskEngine) {
2718
- 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);
2719
2813
  return new Decimal4(result);
2720
2814
  }
2721
2815
  calculateEstimatedLiquidationPrice(marginMode, market, userAccount, riskEngine) {
2722
- 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);
2723
2817
  return new Decimal4(result);
2724
2818
  }
2725
2819
  calculateLiquidationRiskPercentage(marginMode, userAccount, riskEngine) {
2726
- 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);
2727
2821
  return new Decimal4(result);
2728
2822
  }
2729
2823
  calculateMarginBalance(marginMode, userAccount, riskEngine) {
2730
- 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);
2731
2825
  return WasmResponseSchemas.MarginBalanceSummarySchema.parse(result);
2732
2826
  }
2733
2827
  calculatePerpMarginRequirement(marginMode, userAccount, marginType, withdrawal, riskEngine) {
2734
- 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);
2735
2829
  return new Decimal4(result);
2736
2830
  }
2737
2831
  calculateForceCancelRiskPercentage(marginMode, userAccount, riskEngine) {
2738
- 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);
2739
2833
  return new Decimal4(result);
2740
2834
  }
2741
2835
  calculateMaxBorrowAmount(asset, userAccount, riskEngine) {
2742
- 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);
2743
2837
  return new Decimal4(result);
2744
2838
  }
2745
2839
  calculateMaxOrderSize(marginMode, market, price, side, orderType, reduceOnly, userAccount, riskEngine, orderbook, nIterations = 100, errorTolerance = new Decimal4(0.0001)) {
2746
- 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());
2747
2841
  return new Decimal4(result);
2748
2842
  }
2749
2843
  calculateWithdrawableAmountOfCrossMarginAsset(asset, forTransferSpotCollateral, userAccount, riskEngine, exchangeInfo) {
2750
- 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);
2751
2845
  return new Decimal4(result);
2752
2846
  }
2753
2847
  simulateUsedCrossMarginOnBorrow(asset, borrowAmount, userAccount, marginType, riskEngine) {
2754
- 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);
2755
2849
  return WasmResponseSchemas.SimulationResultSchema.parse(result);
2756
2850
  }
2757
2851
  simulateUsedCrossMarginOnOrder(market, newOrderArgs, userAccount, riskEngine, orderbook) {
2758
- 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, {
2759
2853
  price: newOrderArgs.price.toFixed(),
2760
2854
  size: newOrderArgs.size.toFixed(),
2761
2855
  side: newOrderArgs.side,
@@ -2765,7 +2859,7 @@ class ReadOnlyClient {
2765
2859
  return WasmResponseSchemas.SimulationResultSchema.parse(result);
2766
2860
  }
2767
2861
  simulateCrossMarginEstimatedLiquidationPriceOnOrder(market, newOrderArgs, userAccount, riskEngine, orderbook) {
2768
- 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, {
2769
2863
  price: newOrderArgs.price.toFixed(),
2770
2864
  size: newOrderArgs.size.toFixed(),
2771
2865
  side: newOrderArgs.side,
@@ -2775,7 +2869,7 @@ class ReadOnlyClient {
2775
2869
  return WasmResponseSchemas.SimulationResultSchema.parse(result);
2776
2870
  }
2777
2871
  calculatePositionsAdditionalMetadata(userAccount, riskEngine, exchangeInfo) {
2778
- 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);
2779
2873
  return WasmResponseSchemas.PositionAdditionalMetadataSchema.parse(result);
2780
2874
  }
2781
2875
  calculateBorrowLendPoolAdditionalMetadata(borrowLendPools, asset) {
@@ -2783,7 +2877,7 @@ class ReadOnlyClient {
2783
2877
  return WasmResponseSchemas.BorrowLendMarketAdditionalMetadataSchema.parse(result);
2784
2878
  }
2785
2879
  calculateCrossMarginAccountSummaryBatch(userAccounts, riskEngine, useWeightedEquity = !0) {
2786
- 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);
2787
2881
  return WasmResponseSchemas.AccountSummaryBatchSchema.parse(result);
2788
2882
  }
2789
2883
  estimateHourlyFundingRate(market, riskEngine) {
@@ -3509,32 +3603,36 @@ class AuthenticatedClient extends ReadOnlyClient {
3509
3603
  }
3510
3604
  });
3511
3605
  }
3512
- async initAssetInfo(assetId, assetName, tokenId, decimals, withdrawFee) {
3606
+ async initAssetInfo(assetId, assetName, tokenId, decimals, withdrawFee, pythLazerFeedId, pythLazerQuoteFeedId) {
3513
3607
  return await this.submitTransaction({
3514
3608
  exchange: {
3515
3609
  admin: {
3516
- init_asset_info: {
3610
+ init_asset_info_v_1: {
3517
3611
  args: {
3518
3612
  asset_id: assetId,
3519
3613
  asset_name: assetName,
3520
3614
  token_id: tokenId,
3521
3615
  decimals,
3522
- 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
3523
3619
  }
3524
3620
  }
3525
3621
  }
3526
3622
  }
3527
3623
  });
3528
3624
  }
3529
- async updateAssetInfo(asset, withdrawFee) {
3625
+ async updateAssetInfo(asset, withdrawFee, pythLazerFeedId, pythLazerQuoteFeedId) {
3530
3626
  let assetId = this.getAssetId(asset);
3531
3627
  return await this.submitTransaction({
3532
3628
  exchange: {
3533
3629
  admin: {
3534
- update_asset_info: {
3630
+ update_asset_info_v_1: {
3535
3631
  args: {
3536
3632
  asset_id: assetId,
3537
- 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
3538
3636
  }
3539
3637
  }
3540
3638
  }
@@ -3545,7 +3643,7 @@ class AuthenticatedClient extends ReadOnlyClient {
3545
3643
  return await this.submitTransaction({
3546
3644
  exchange: {
3547
3645
  admin: {
3548
- update_global_config: {
3646
+ update_global_config_v_1: {
3549
3647
  args: {
3550
3648
  max_orders_per_user: options.maxOrdersPerUser ?? null,
3551
3649
  max_trigger_orders_per_user: options.maxTriggerOrdersPerUser ?? null,
@@ -3558,7 +3656,8 @@ class AuthenticatedClient extends ReadOnlyClient {
3558
3656
  assetId,
3559
3657
  this.encodeDecimal(amount)
3560
3658
  ]) ?? null,
3561
- 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
3562
3661
  }
3563
3662
  }
3564
3663
  }
@@ -4368,6 +4467,9 @@ class LedgerWallet extends Wallet {
4368
4467
  await this.ledgerSigner.disconnect();
4369
4468
  }
4370
4469
  }
4470
+
4471
+ // src/browser.ts
4472
+ var { BulletWasm: BulletWasm2, initialize: initialize2, MarginMode: MarginMode2 } = exports_loader;
4371
4473
  export {
4372
4474
  validateEndpoints,
4373
4475
  toNativeUnits,
@@ -4382,7 +4484,7 @@ export {
4382
4484
  isErrorType,
4383
4485
  isBulletError,
4384
4486
  isAbortError,
4385
- initialize,
4487
+ initialize2 as initialize,
4386
4488
  hexToBytes,
4387
4489
  hexToBase64,
4388
4490
  hexToBase58,
@@ -4400,15 +4502,15 @@ export {
4400
4502
  ReadOnlyClient,
4401
4503
  Orderbook,
4402
4504
  NETWORKS,
4403
- MarginMode,
4505
+ MarginMode2 as MarginMode,
4404
4506
  LedgerWallet,
4405
4507
  GLOBAL_DEFAULT_MAX_LEVERAGE,
4406
4508
  Client,
4407
- BulletWasm,
4509
+ BulletWasm2 as BulletWasm,
4408
4510
  BulletError,
4409
4511
  BaseResponseSchemas,
4410
4512
  AuthenticatedClient,
4411
4513
  AbortError
4412
4514
  };
4413
4515
 
4414
- //# debugId=866FE84FB953549964756E2164756E21
4516
+ //# debugId=3EFAFB027DC38DA364756E2164756E21