@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.
- package/dist/browser/bullet_wasm_bg.wasm +0 -0
- package/dist/browser/index.js +151 -49
- package/dist/browser/index.js.map +8 -7
- package/dist/node/bullet_wasm_bg.wasm +0 -0
- package/dist/node/index.js +151 -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/types.d.ts +1 -1
- package/dist/types/types.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 +8777 -1699
- 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,
|
|
@@ -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([
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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=
|
|
4516
|
+
//# debugId=3EFAFB027DC38DA364756E2164756E21
|