@polymarket/clob-client-v2 1.2.0-canary.0 → 1.2.0-canary.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (53) hide show
  1. package/README.md +5 -16
  2. package/dist/client.cjs +25 -20
  3. package/dist/client.cjs.map +1 -1
  4. package/dist/client.d.cts +1 -0
  5. package/dist/client.d.ts +1 -0
  6. package/dist/client.js +25 -20
  7. package/dist/client.js.map +1 -1
  8. package/dist/index.d.cts +2 -2
  9. package/dist/index.d.ts +2 -2
  10. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs +2 -3
  11. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs.map +1 -1
  12. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +2 -3
  13. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -1
  14. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs +2 -3
  15. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs.map +1 -1
  16. package/dist/order-builder/helpers/buildOrderCreationArgs.js +2 -3
  17. package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -1
  18. package/dist/order-builder/helpers/createMarketOrder.cjs +4 -6
  19. package/dist/order-builder/helpers/createMarketOrder.cjs.map +1 -1
  20. package/dist/order-builder/helpers/createMarketOrder.js +4 -6
  21. package/dist/order-builder/helpers/createMarketOrder.js.map +1 -1
  22. package/dist/order-builder/helpers/createOrder.cjs +4 -6
  23. package/dist/order-builder/helpers/createOrder.cjs.map +1 -1
  24. package/dist/order-builder/helpers/createOrder.js +4 -6
  25. package/dist/order-builder/helpers/createOrder.js.map +1 -1
  26. package/dist/order-builder/orderBuilder.cjs +2 -2
  27. package/dist/order-builder/orderBuilder.cjs.map +1 -1
  28. package/dist/order-builder/orderBuilder.d.cts +2 -2
  29. package/dist/order-builder/orderBuilder.d.ts +2 -2
  30. package/dist/order-builder/orderBuilder.js +2 -2
  31. package/dist/order-builder/orderBuilder.js.map +1 -1
  32. package/dist/protocol.cjs +22 -0
  33. package/dist/protocol.cjs.map +1 -0
  34. package/dist/protocol.js +21 -0
  35. package/dist/protocol.js.map +1 -0
  36. package/dist/types/clob.cjs.map +1 -1
  37. package/dist/types/clob.d.cts +1 -0
  38. package/dist/types/clob.d.ts +1 -0
  39. package/dist/types/clob.js.map +1 -1
  40. package/dist/types/index.d.ts +1 -1
  41. package/dist/types/ordersV1.cjs.map +1 -1
  42. package/dist/types/ordersV1.d.cts +0 -2
  43. package/dist/types/ordersV1.d.ts +0 -2
  44. package/dist/types/ordersV1.js.map +1 -1
  45. package/dist/types/ordersV2.cjs.map +1 -1
  46. package/dist/types/ordersV2.d.cts +13 -17
  47. package/dist/types/ordersV2.d.ts +13 -17
  48. package/dist/types/ordersV2.js.map +1 -1
  49. package/package.json +1 -1
  50. package/dist/order-builder/helpers/orderAsset.cjs +0 -16
  51. package/dist/order-builder/helpers/orderAsset.cjs.map +0 -1
  52. package/dist/order-builder/helpers/orderAsset.js +0 -14
  53. package/dist/order-builder/helpers/orderAsset.js.map +0 -1
package/README.md CHANGED
@@ -46,24 +46,13 @@ const resp = await client.createAndPostOrder(
46
46
  console.log(resp);
47
47
  ```
48
48
 
49
- For a position-backed outcome, provide `positionID` instead. The client uses
50
- the identifier field to select Exchange V3 signing automatically:
51
-
52
- ```ts
53
- const resp = await client.createAndPostOrder(
54
- {
55
- positionID: "", // position ID of the market outcome
56
- price: 0.4,
57
- side: Side.BUY,
58
- size: 100,
59
- },
60
- { tickSize: "0.01" },
61
- OrderType.GTC,
62
- );
63
- ```
64
-
65
49
  See [examples](examples/) for more information.
66
50
 
51
+ Limit and market orders automatically use Exchange V3 for protocol V2 position IDs.
52
+ Legacy CTF token IDs use the server's exchange version. To override automatic
53
+ selection, pass `version: 1`, `version: 2`, or `version: 3` in the order options,
54
+ for example `{ tickSize: "0.01", version: 3 }`.
55
+
67
56
  ### Market Orders
68
57
 
69
58
  ```ts
package/dist/client.cjs CHANGED
@@ -4,7 +4,6 @@ const require_errors = require('./errors.cjs');
4
4
  const require_index = require('./fees/index.cjs');
5
5
  const require_index$1 = require('./headers/index.cjs');
6
6
  const require_index$2 = require('./http-helpers/index.cjs');
7
- const require_orderAsset = require('./order-builder/helpers/orderAsset.cjs');
8
7
  const require_signatureTypeV2 = require('./order-utils/model/signatureTypeV2.cjs');
9
8
  const require_side = require('./order-utils/model/side.cjs');
10
9
  const require_clob = require('./types/clob.cjs');
@@ -16,6 +15,7 @@ const require_calculateBuyMarketPrice = require('./order-builder/helpers/calcula
16
15
  const require_calculateSellMarketPrice = require('./order-builder/helpers/calculateSellMarketPrice.cjs');
17
16
  const require_roundingConfig = require('./order-builder/helpers/roundingConfig.cjs');
18
17
  const require_orderBuilder = require('./order-builder/orderBuilder.cjs');
18
+ const require_protocol = require('./protocol.cjs');
19
19
 
20
20
  //#region src/client.ts
21
21
  const RESOLVE_TRADES_TIMEOUT_MS = 3e4;
@@ -430,17 +430,16 @@ var ClobClient = class {
430
430
  this.canL1Auth();
431
431
  const orderToSign = { ...userOrder };
432
432
  if (this.builderConfig?.builderCode && !orderToSign.builderCode) orderToSign.builderCode = this.builderConfig.builderCode;
433
- const routing = require_orderAsset.resolveOrderRouting(orderToSign, options?.version);
434
- const { assetID } = routing;
435
- const tickSize = await this._resolveTickSize(assetID, options?.tickSize);
433
+ const { tokenID } = orderToSign;
434
+ const tickSize = await this._resolveTickSize(tokenID, options?.tickSize);
436
435
  if (!require_utilities.priceValid(orderToSign.price, tickSize)) throw new Error(`invalid price (${orderToSign.price}), min: ${parseFloat(tickSize)} - max: ${1 - parseFloat(tickSize)}`);
437
436
  orderToSign.price = require_utilities.roundNormal(orderToSign.price, require_roundingConfig.ROUNDING_CONFIG[tickSize].price);
438
- const version = routing.exchangeVersion ?? await this.resolveVersion();
439
- if (version !== 1 && orderToSign.side === require_side.Side.BUY && "userUSDCBalance" in orderToSign && orderToSign.userUSDCBalance !== void 0) orderToSign.size = await this.adjustBuyAmountForBalance(assetID, orderToSign.size * orderToSign.price, orderToSign.price, orderToSign.userUSDCBalance, orderToSign.builderCode) / orderToSign.price;
440
- const negRisk = version === 3 ? false : options?.negRisk ?? await this.getNegRisk(assetID);
437
+ const version = await this.resolveOrderVersion(tokenID, options?.version);
438
+ if (version !== 1 && orderToSign.side === require_side.Side.BUY && "userUSDCBalance" in orderToSign && orderToSign.userUSDCBalance !== void 0) orderToSign.size = await this.adjustBuyAmountForBalance(tokenID, orderToSign.size * orderToSign.price, orderToSign.price, orderToSign.userUSDCBalance, orderToSign.builderCode) / orderToSign.price;
439
+ const negRisk = options?.negRisk ?? await this.getNegRisk(tokenID);
441
440
  if (version === 1) {
442
441
  const userFeeRateBps = "feeRateBps" in orderToSign ? orderToSign.feeRateBps : void 0;
443
- orderToSign.feeRateBps = await this._resolveFeeRateBps(assetID, userFeeRateBps);
442
+ orderToSign.feeRateBps = await this._resolveFeeRateBps(tokenID, userFeeRateBps);
444
443
  }
445
444
  return this.orderBuilder.buildOrder(orderToSign, {
446
445
  tickSize,
@@ -449,24 +448,23 @@ var ClobClient = class {
449
448
  }
450
449
  async createMarketOrder(userMarketOrder, options) {
451
450
  this.canL1Auth();
452
- const routing = require_orderAsset.resolveOrderRouting(userMarketOrder, options?.version);
453
- const { assetID } = routing;
454
- await this._ensureMarketInfoCached(assetID);
455
- const tickSize = await this._resolveTickSize(assetID, options?.tickSize);
456
- if (!userMarketOrder.price) userMarketOrder.price = await this.calculateMarketPrice(assetID, userMarketOrder.side, userMarketOrder.amount, userMarketOrder.orderType);
451
+ const { tokenID } = userMarketOrder;
452
+ await this._ensureMarketInfoCached(tokenID);
453
+ const tickSize = await this._resolveTickSize(tokenID, options?.tickSize);
454
+ if (!userMarketOrder.price) userMarketOrder.price = await this.calculateMarketPrice(tokenID, userMarketOrder.side, userMarketOrder.amount, userMarketOrder.orderType);
457
455
  if (!require_utilities.priceValid(userMarketOrder.price, tickSize)) throw new Error(`invalid price (${userMarketOrder.price}), min: ${parseFloat(tickSize)} - max: ${1 - parseFloat(tickSize)}`);
458
456
  const orderToSign = { ...userMarketOrder };
459
457
  if (this.builderConfig?.builderCode && !orderToSign.builderCode) orderToSign.builderCode = this.builderConfig.builderCode;
460
458
  await this.ensureBuilderFeeRateCached(orderToSign.builderCode);
461
459
  if (orderToSign.side === require_side.Side.BUY && "userUSDCBalance" in orderToSign && orderToSign.userUSDCBalance !== void 0) {
462
460
  const price = orderToSign.price;
463
- orderToSign.amount = await this.adjustBuyAmountForBalance(assetID, orderToSign.amount, price, orderToSign.userUSDCBalance, orderToSign.builderCode);
461
+ orderToSign.amount = await this.adjustBuyAmountForBalance(tokenID, orderToSign.amount, price, orderToSign.userUSDCBalance, orderToSign.builderCode);
464
462
  }
465
- const version = routing.exchangeVersion ?? await this.resolveVersion();
466
- const negRisk = version === 3 ? false : options?.negRisk ?? await this.getNegRisk(assetID);
463
+ const negRisk = options?.negRisk ?? await this.getNegRisk(tokenID);
464
+ const version = await this.resolveOrderVersion(tokenID, options?.version);
467
465
  if (version === 1) {
468
466
  const userFeeRateBps = "feeRateBps" in orderToSign ? orderToSign.feeRateBps : void 0;
469
- orderToSign.feeRateBps = await this._resolveFeeRateBps(assetID, userFeeRateBps);
467
+ orderToSign.feeRateBps = await this._resolveFeeRateBps(tokenID, userFeeRateBps);
470
468
  }
471
469
  return this.orderBuilder.buildMarketOrder(orderToSign, {
472
470
  tickSize,
@@ -481,7 +479,7 @@ var ClobClient = class {
481
479
  }
482
480
  async createAndPostOrder(userOrder, options, orderType = require_clob.OrderType.GTC, postOnly = false, deferExec = false) {
483
481
  let postOrderResponse;
484
- await this._retryOnVersionUpdate(async () => {
482
+ await this._retryOnVersionUpdate(userOrder.tokenID, options?.version, async () => {
485
483
  const order = await this.createOrder(userOrder, options);
486
484
  postOrderResponse = await this.postOrder(order, orderType, postOnly, deferExec);
487
485
  });
@@ -489,7 +487,7 @@ var ClobClient = class {
489
487
  }
490
488
  async createAndPostMarketOrder(userMarketOrder, options, orderType = require_clob.OrderType.FOK, deferExec = false) {
491
489
  let postOrderMarketResponse;
492
- await this._retryOnVersionUpdate(async () => {
490
+ await this._retryOnVersionUpdate(userMarketOrder.tokenID, options?.version, async () => {
493
491
  const order = await this.createMarketOrder(userMarketOrder, options);
494
492
  postOrderMarketResponse = await this.postOrder(order, orderType, false, deferExec);
495
493
  });
@@ -896,13 +894,20 @@ var ClobClient = class {
896
894
  if (marketFeeRateBps > 0 && userFeeRateBps !== void 0 && userFeeRateBps !== marketFeeRateBps) throw new Error(`invalid user provided fee rate: ${userFeeRateBps}, fee rate for the market must be ${marketFeeRateBps}`);
897
895
  return marketFeeRateBps;
898
896
  }
897
+ async resolveOrderVersion(tokenID, version) {
898
+ return version ?? (require_protocol.isV2PositionId(tokenID) ? 3 : this.resolveVersion());
899
+ }
899
900
  async resolveVersion(forceUpdate = false) {
900
901
  if (!forceUpdate && this.cachedVersion !== void 0) return this.cachedVersion;
901
902
  const apiVersion = await this.getVersion();
902
903
  this.cachedVersion = apiVersion;
903
904
  return apiVersion;
904
905
  }
905
- async _retryOnVersionUpdate(retryFunc) {
906
+ async _retryOnVersionUpdate(tokenID, explicitVersion, retryFunc) {
907
+ if (explicitVersion != null || require_protocol.isV2PositionId(tokenID)) {
908
+ await retryFunc();
909
+ return;
910
+ }
906
911
  const version = await this.resolveVersion();
907
912
  for (let attempt = 0; attempt < 2; attempt++) {
908
913
  await retryFunc();
@@ -1 +1 @@
1
- {"version":3,"file":"client.cjs","names":["OrderBuilder","SignatureTypeV2","OK","createL2Headers","POST","HEARTBEAT","TIME","INITIAL_CURSOR","GET_SAMPLING_SIMPLIFIED_MARKETS","GET_SAMPLING_MARKETS","GET_SIMPLIFIED_MARKETS","GET_MARKETS","GET_MARKET","result: MarketDetails","GET_CLOB_MARKET","GET_ORDER_BOOK","GET_ORDER_BOOKS","GET_TICK_SIZE","GET_NEG_RISK","GET_FEE_RATE","generateOrderBookSummaryHash","GET_MIDPOINT","GET_MIDPOINTS","GET_PRICE","GET_PRICES","GET_SPREAD","GET_SPREADS","GET_LAST_TRADE_PRICE","GET_LAST_TRADES_PRICES","GET_PRICES_HISTORY","CREATE_API_KEY","createL1Headers","DERIVE_API_KEY","GET_API_KEYS","GET","CLOSED_ONLY","DELETE_API_KEY","DELETE","CREATE_READONLY_API_KEY","GET_READONLY_API_KEYS","DELETE_READONLY_API_KEY","GET_ORDER","GET_TRADES","results: Trade[]","END_CURSOR","_params: any","bytes32Zero","GET_BUILDER_TRADES","GET_NOTIFICATIONS","DROP_NOTIFICATIONS","parseDropNotificationParams","GET_BALANCE_ALLOWANCE","UPDATE_BALANCE_ALLOWANCE","resolveOrderRouting","priceValid","roundNormal","ROUNDING_CONFIG","Side","OrderType","postOrderResponse: OrderResponse | undefined","postOrderMarketResponse: OrderResponse | undefined","GET_OPEN_ORDERS","results: OpenOrder[]","GET_PRE_MIGRATION_ORDERS","results: PreMigrationOrder[]","POST_ORDER","isV2Order","orderToJsonV2","orderToJsonV1","response: OrderResponse","POST_ORDERS","ordersPayload: (NewOrderV2<any> | NewOrderV1<any>)[]","responses: OrderResponse[]","CANCEL_ORDER","CANCEL_ORDERS","CANCEL_ALL","CANCEL_MARKET_ORDERS","IS_ORDER_SCORING","ARE_ORDERS_SCORING","GET_EARNINGS_FOR_USER_FOR_DAY","results: UserEarning[]","GET_TOTAL_EARNINGS_FOR_USER_FOR_DAY","GET_REWARDS_EARNINGS_PERCENTAGES","results: UserRewardsEarning[]","GET_LIQUIDITY_REWARD_PERCENTAGES","results: MarketReward[]","GET_REWARDS_MARKETS_CURRENT","GET_REWARDS_MARKETS","calculateBuyMarketPrice","calculateSellMarketPrice","CREATE_BUILDER_API_KEY","GET_BUILDER_API_KEYS","REVOKE_BUILDER_API_KEY","GET_MARKET_TRADES_EVENTS","L1_AUTH_UNAVAILABLE_ERROR","L2_AUTH_NOT_AVAILABLE","adjustBuyAmountForFees","GET_MARKET_BY_TOKEN","GET_BUILDER_FEES","BUILDER_FEES_BPS","isTickSizeSmaller","ORDER_VERSION_MISMATCH_ERROR","ApiError","get","post","del"],"sources":["../src/client.ts"],"sourcesContent":["import {\n\tBUILDER_FEES_BPS,\n\tbytes32Zero,\n\tEND_CURSOR,\n\tINITIAL_CURSOR,\n\tORDER_VERSION_MISMATCH_ERROR,\n} from \"./constants.js\";\nimport {\n\tARE_ORDERS_SCORING,\n\tCANCEL_ALL,\n\tCANCEL_MARKET_ORDERS,\n\tCANCEL_ORDER,\n\tCANCEL_ORDERS,\n\tCLOSED_ONLY,\n\tCREATE_API_KEY,\n\tCREATE_BUILDER_API_KEY,\n\tCREATE_READONLY_API_KEY,\n\tDELETE_API_KEY,\n\tDELETE_READONLY_API_KEY,\n\tDERIVE_API_KEY,\n\tDROP_NOTIFICATIONS,\n\tGET_API_KEYS,\n\tGET_BALANCE_ALLOWANCE,\n\tGET_BUILDER_API_KEYS,\n\tGET_BUILDER_FEES,\n\tGET_BUILDER_TRADES,\n\tGET_CLOB_MARKET,\n\tGET_EARNINGS_FOR_USER_FOR_DAY,\n\tGET_FEE_RATE,\n\tGET_LAST_TRADE_PRICE,\n\tGET_LAST_TRADES_PRICES,\n\tGET_LIQUIDITY_REWARD_PERCENTAGES,\n\tGET_MARKET,\n\tGET_MARKET_BY_TOKEN,\n\tGET_MARKET_TRADES_EVENTS,\n\tGET_MARKETS,\n\tGET_MIDPOINT,\n\tGET_MIDPOINTS,\n\tGET_NEG_RISK,\n\tGET_NOTIFICATIONS,\n\tGET_OPEN_ORDERS,\n\tGET_ORDER,\n\tGET_ORDER_BOOK,\n\tGET_ORDER_BOOKS,\n\tGET_PRE_MIGRATION_ORDERS,\n\tGET_PRICE,\n\tGET_PRICES,\n\tGET_PRICES_HISTORY,\n\tGET_READONLY_API_KEYS,\n\tGET_REWARDS_EARNINGS_PERCENTAGES,\n\tGET_REWARDS_MARKETS,\n\tGET_REWARDS_MARKETS_CURRENT,\n\tGET_SAMPLING_MARKETS,\n\tGET_SAMPLING_SIMPLIFIED_MARKETS,\n\tGET_SIMPLIFIED_MARKETS,\n\tGET_SPREAD,\n\tGET_SPREADS,\n\tGET_TICK_SIZE,\n\tGET_TOTAL_EARNINGS_FOR_USER_FOR_DAY,\n\tGET_TRADES,\n\tHEARTBEAT,\n\tIS_ORDER_SCORING,\n\tOK,\n\tPOST_ORDER,\n\tPOST_ORDERS,\n\tREVOKE_BUILDER_API_KEY,\n\tTIME,\n\tUPDATE_BALANCE_ALLOWANCE,\n} from \"./endpoints.js\";\nimport { ApiError, L1_AUTH_UNAVAILABLE_ERROR, L2_AUTH_NOT_AVAILABLE } from \"./errors.js\";\nimport { adjustBuyAmountForFees, validateFeeSlippage } from \"./fees/index.js\";\nimport { createL1Headers, createL2Headers } from \"./headers/index.js\";\nimport {\n\tDELETE,\n\tdel,\n\tGET,\n\tget,\n\tPOST,\n\tparseDropNotificationParams,\n\tpost,\n\ttype RequestOptions,\n} from \"./http-helpers/index.js\";\nimport {\n\tcalculateBuyMarketPrice,\n\tcalculateSellMarketPrice,\n\tROUNDING_CONFIG,\n} from \"./order-builder/helpers/index.js\";\nimport { resolveOrderRouting } from \"./order-builder/helpers/orderAsset.js\";\nimport { OrderBuilder } from \"./order-builder/index.js\";\nimport { SignatureTypeV2 } from \"./order-utils/model/signatureTypeV2.js\";\nimport type { ClobSigner } from \"./signing/signer.js\";\nimport type {\n\tApiKeyCreds,\n\tApiKeyRaw,\n\tApiKeysResponse,\n\tBalanceAllowanceParams,\n\tBalanceAllowanceResponse,\n\tBanStatus,\n\tBookParams,\n\tBuilderApiKey,\n\tBuilderApiKeyResponse,\n\tBuilderConfig,\n\tBuilderFeeRates,\n\tBuilderTrade,\n\tBuilderTradeParams,\n\tBuilderTradesResponse,\n\tChain,\n\tClobErrorResponseBody,\n\tCreateOrderOptions,\n\tDropNotificationParams,\n\tExchangeV3OrderAmounts,\n\tFeeInfos,\n\tFeeRates,\n\tMarketDetails,\n\tMarketPrice,\n\tMarketReward,\n\tMarketTradeEvent,\n\tNegRisk,\n\tNewOrderV1,\n\tNewOrderV2,\n\tNotification,\n\tOpenOrder,\n\tOpenOrderParams,\n\tOpenOrdersResponse,\n\tOrderBookSummary,\n\tOrderMarketCancelParams,\n\tOrderPayload,\n\tOrderResponse,\n\tOrderScoring,\n\tOrderScoringParams,\n\tOrdersScoring,\n\tOrdersScoringParams,\n\tPaginationPayload,\n\tPostOrdersArgs,\n\tPreMigrationOrder,\n\tPreMigrationOrdersResponse,\n\tPriceHistoryFilterParams,\n\tReadonlyApiKeyResponse,\n\tRewardsPercentages,\n\tTickSize,\n\tTickSizes,\n\tTokenConditionMap,\n\tTotalUserEarning,\n\tTrade,\n\tTradeParams,\n\tTradesPaginatedResponse,\n\tUserEarning,\n\tUserMarketOrderV1,\n\tUserMarketOrderV2,\n\tUserOrderV1,\n\tUserOrderV2,\n\tUserRewardsEarning,\n} from \"./types/index.js\";\nimport { OrderType, orderToJsonV1, orderToJsonV2, Side } from \"./types/index.js\";\nimport { isV2Order, type SignedOrder } from \"./types/unifiedOrder.js\";\nimport {\n\tgenerateOrderBookSummaryHash,\n\tisTickSizeSmaller,\n\tpriceValid,\n\troundNormal,\n} from \"./utilities.js\";\n\nexport { adjustBuyAmountForFees } from \"./fees/index.js\";\n\nconst RESOLVE_TRADES_TIMEOUT_MS = 30_000;\nconst RESOLVE_TRADES_POLL_INTERVAL_MS = 250;\nconst FAILED_TRADE_STATUS = \"FAILED\";\n\nconst sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\n// A trade is resolved once execution reached a terminal outcome: it either\n// carries a settlement transaction hash or it failed and never will.\nconst isTradeResolved = (trade: Trade): boolean =>\n\ttrade.status.toUpperCase() === FAILED_TRADE_STATUS ||\n\tBoolean(trade.transaction_hash && trade.transaction_hash.length > 0);\n\nexport interface ClobClientOptions {\n\thost: string;\n\tchain: Chain;\n\tsigner?: ClobSigner;\n\tcreds?: ApiKeyCreds;\n\tsignatureType?: SignatureTypeV2;\n\tfunderAddress?: string;\n\tuseServerTime?: boolean;\n\tbuilderConfig?: BuilderConfig;\n\tgetSigner?: () => Promise<ClobSigner> | ClobSigner;\n\tretryOnError?: boolean;\n\tthrowOnError?: boolean;\n\tfeeSlippage?: number;\n}\n\nexport class ClobClient {\n\treadonly host: string;\n\n\treadonly chainId: Chain;\n\n\t// Used to perform Level 1 authentication and sign orders\n\treadonly signer?: ClobSigner;\n\n\t// Used to perform Level 2 authentication\n\treadonly creds?: ApiKeyCreds;\n\n\treadonly orderBuilder: OrderBuilder;\n\n\treadonly tickSizes: TickSizes;\n\n\treadonly negRisk: NegRisk;\n\n\treadonly feeInfos: FeeInfos;\n\n\t// Fee rate bps data for CLOB V1\n\treadonly feeRates: FeeRates;\n\n\treadonly builderFeeRates: BuilderFeeRates;\n\n\tprivate readonly tokenConditionMap: TokenConditionMap;\n\n\treadonly useServerTime?: boolean;\n\n\treadonly builderConfig?: BuilderConfig;\n\n\treadonly signatureType: SignatureTypeV2;\n\n\treadonly funderAddress?: string;\n\n\tprivate cachedVersion?: number;\n\n\treadonly retryOnError?: boolean;\n\n\treadonly throwOnError?: boolean;\n\n\treadonly feeSlippage: number;\n\n\tconstructor({\n\t\thost,\n\t\tchain,\n\t\tsigner,\n\t\tcreds,\n\t\tsignatureType,\n\t\tfunderAddress,\n\t\tuseServerTime,\n\t\tbuilderConfig,\n\t\tgetSigner,\n\t\tretryOnError,\n\t\tthrowOnError,\n\t\tfeeSlippage,\n\t}: ClobClientOptions) {\n\t\tthis.host = host.endsWith(\"/\") ? host.slice(0, -1) : host;\n\t\tthis.chainId = chain;\n\n\t\tif (signer !== undefined) {\n\t\t\tthis.signer = signer;\n\t\t}\n\t\tif (creds !== undefined) {\n\t\t\tthis.creds = creds;\n\t\t}\n\t\tthis.orderBuilder = new OrderBuilder(\n\t\t\tsigner as ClobSigner,\n\t\t\tchain,\n\t\t\tsignatureType,\n\t\t\tfunderAddress,\n\t\t\tgetSigner,\n\t\t);\n\t\tthis.signatureType = signatureType ?? SignatureTypeV2.EOA;\n\t\tthis.funderAddress = funderAddress;\n\t\tthis.tickSizes = {};\n\t\tthis.negRisk = {};\n\t\tthis.feeRates = {};\n\t\tthis.feeInfos = {};\n\t\tthis.builderFeeRates = {};\n\t\tthis.tokenConditionMap = {};\n\t\tthis.retryOnError = retryOnError;\n\t\tthis.throwOnError = throwOnError;\n\t\tthis.feeSlippage = feeSlippage ?? 0;\n\t\tvalidateFeeSlippage(this.feeSlippage);\n\t\tthis.useServerTime = useServerTime;\n\t\tif (builderConfig !== undefined) {\n\t\t\tthis.builderConfig = builderConfig;\n\t\t}\n\t}\n\n\t// Public endpoints\n\tpublic async getOk(): Promise<any> {\n\t\treturn this.get(`${this.host}${OK}`);\n\t}\n\n\tpublic async postHeartbeat(\n\t\theartbeatId = \"\",\n\t): Promise<{ heartbeat_id: string; error_msg?: string }> {\n\t\tthis.canL2Auth();\n\t\tconst body = JSON.stringify({ heartbeat_id: heartbeatId });\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\t{ method: POST, requestPath: HEARTBEAT, body },\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.post(`${this.host}${HEARTBEAT}`, {\n\t\t\theaders,\n\t\t\tdata: { heartbeat_id: heartbeatId },\n\t\t});\n\t}\n\n\tpublic async getVersion(): Promise<number> {\n\t\tconst response = await this.get(`${this.host}/version`);\n\t\t// default to v2\n\t\treturn response?.version ?? 2;\n\t}\n\n\tpublic async getServerTime(): Promise<number> {\n\t\treturn this.get(`${this.host}${TIME}`);\n\t}\n\n\tpublic async getSamplingSimplifiedMarkets(\n\t\tnext_cursor = INITIAL_CURSOR,\n\t): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SAMPLING_SIMPLIFIED_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getSamplingMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SAMPLING_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getSimplifiedMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SIMPLIFIED_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getMarket(conditionID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_MARKET}${conditionID}`);\n\t}\n\n\tpublic async getClobMarketInfo(conditionID: string): Promise<MarketDetails> {\n\t\tconst result: MarketDetails = await this.get(\n\t\t\t`${this.host}${GET_CLOB_MARKET}${conditionID}`,\n\t\t);\n\n\t\tif (!result?.t) {\n\t\t\tthrow new Error(`failed to fetch market info for condition id ${conditionID}`);\n\t\t}\n\n\t\tfor (const token of result.t) {\n\t\t\tif (!token) continue;\n\t\t\tconst tokenId = token.t;\n\n\t\t\tthis.tokenConditionMap[tokenId] = conditionID;\n\t\t\tthis.tickSizes[tokenId] = result.mts.toString() as TickSize;\n\t\t\tthis.negRisk[tokenId] = result.nr ?? false;\n\n\t\t\tthis.feeInfos[tokenId] = {\n\t\t\t\trate: result.fd?.r ?? 0,\n\t\t\t\texponent: result.fd?.e ?? 0,\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic async getOrderBook(tokenID: string): Promise<OrderBookSummary> {\n\t\treturn this.get(`${this.host}${GET_ORDER_BOOK}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getOrderBooks(params: BookParams[]): Promise<OrderBookSummary[]> {\n\t\treturn this.post(`${this.host}${GET_ORDER_BOOKS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getTickSize(tokenID: string): Promise<TickSize> {\n\t\tif (tokenID in this.tickSizes) {\n\t\t\treturn this.tickSizes[tokenID];\n\t\t}\n\n\t\tif (tokenID in this.tokenConditionMap) {\n\t\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t\t\treturn this.tickSizes[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_TICK_SIZE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.tickSizes[tokenID] = result.minimum_tick_size.toString() as TickSize;\n\n\t\treturn this.tickSizes[tokenID];\n\t}\n\n\tpublic async getNegRisk(tokenID: string): Promise<boolean> {\n\t\tif (tokenID in this.negRisk) {\n\t\t\treturn this.negRisk[tokenID];\n\t\t}\n\n\t\tif (tokenID in this.tokenConditionMap) {\n\t\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t\t\treturn this.negRisk[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_NEG_RISK}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.negRisk[tokenID] = result.neg_risk as boolean;\n\n\t\treturn this.negRisk[tokenID];\n\t}\n\n\tpublic async getFeeRateBps(tokenID: string): Promise<number> {\n\t\tif (tokenID in this.feeRates) {\n\t\t\treturn this.feeRates[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_FEE_RATE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.feeRates[tokenID] = result.base_fee as number;\n\n\t\treturn this.feeRates[tokenID];\n\t}\n\n\tpublic async getFeeExponent(tokenID: string): Promise<number> {\n\t\tif (tokenID in this.feeInfos) {\n\t\t\treturn this.feeInfos[tokenID].exponent;\n\t\t}\n\n\t\tawait this._ensureMarketInfoCached(tokenID);\n\t\treturn this.feeInfos[tokenID].exponent;\n\t}\n\n\t/**\n\t * Calculates the hash for the given orderbook\n\t * @param orderbook\n\t * @returns\n\t */\n\tpublic async getOrderBookHash(orderbook: OrderBookSummary): Promise<string> {\n\t\treturn generateOrderBookSummaryHash(orderbook);\n\t}\n\n\tpublic async getMidpoint(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_MIDPOINT}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getMidpoints(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_MIDPOINTS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getPrice(tokenID: string, side: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_PRICE}`, {\n\t\t\tparams: { token_id: tokenID, side: side },\n\t\t});\n\t}\n\n\tpublic async getPrices(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_PRICES}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getSpread(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_SPREAD}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getSpreads(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_SPREADS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getLastTradePrice(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_LAST_TRADE_PRICE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getLastTradesPrices(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_LAST_TRADES_PRICES}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getPricesHistory(params: PriceHistoryFilterParams): Promise<MarketPrice[]> {\n\t\tif (!params.interval && (params.startTs === undefined || params.endTs === undefined)) {\n\t\t\tthrow new Error(\"getPricesHistory requires either interval or both startTs and endTs\");\n\t\t}\n\t\treturn this.get(`${this.host}${GET_PRICES_HISTORY}`, {\n\t\t\tparams,\n\t\t});\n\t}\n\n\t// L1 Authed\n\n\t/**\n\t * Creates a new API key for a user\n\t * @param nonce\n\t * @returns ApiKeyCreds\n\t */\n\tpublic async createApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\tthis.canL1Auth();\n\n\t\tconst endpoint = `${this.host}${CREATE_API_KEY}`;\n\t\tconst headers = await createL1Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.chainId,\n\t\t\tnonce,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn await this.post(endpoint, { headers }).then((apiKeyRaw: ApiKeyRaw) => {\n\t\t\tconst apiKey: ApiKeyCreds = {\n\t\t\t\tkey: apiKeyRaw.apiKey,\n\t\t\t\tsecret: apiKeyRaw.secret,\n\t\t\t\tpassphrase: apiKeyRaw.passphrase,\n\t\t\t};\n\t\t\treturn apiKey;\n\t\t});\n\t}\n\n\t/**\n\t * Derives an existing API key for a user\n\t * @param nonce\n\t * @returns ApiKeyCreds\n\t */\n\tpublic async deriveApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\tthis.canL1Auth();\n\n\t\tconst endpoint = `${this.host}${DERIVE_API_KEY}`;\n\t\tconst headers = await createL1Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.chainId,\n\t\t\tnonce,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn await this.get(endpoint, { headers }).then((apiKeyRaw: ApiKeyRaw) => {\n\t\t\tconst apiKey: ApiKeyCreds = {\n\t\t\t\tkey: apiKeyRaw.apiKey,\n\t\t\t\tsecret: apiKeyRaw.secret,\n\t\t\t\tpassphrase: apiKeyRaw.passphrase,\n\t\t\t};\n\t\t\treturn apiKey;\n\t\t});\n\t}\n\n\tpublic async createOrDeriveApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\treturn this.createApiKey(nonce).then(response => {\n\t\t\tif (!response.key) {\n\t\t\t\treturn this.deriveApiKey(nonce);\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\t}\n\n\tpublic async getApiKeys(): Promise<ApiKeysResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getClosedOnlyMode(): Promise<BanStatus> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CLOSED_ONLY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async deleteApiKey(): Promise<any> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DELETE_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async createReadonlyApiKey(): Promise<ReadonlyApiKeyResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CREATE_READONLY_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getReadonlyApiKeys(): Promise<string[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_READONLY_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async deleteReadonlyApiKey(key: string): Promise<boolean> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DELETE_READONLY_API_KEY;\n\t\tconst payload = { key };\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async getOrder(orderID: string): Promise<OpenOrder> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = `${GET_ORDER}${orderID}`;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getTrades(\n\t\tparams?: TradeParams,\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<Trade[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TRADES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: Trade[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = {\n\t\t\t\t...params,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getTradesPaginated(\n\t\tparams?: TradeParams,\n\t\tnext_cursor?: string,\n\t): Promise<TradesPaginatedResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TRADES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\n\t\tconst _params: any = { ...params, next_cursor };\n\n\t\tconst {\n\t\t\tdata,\n\t\t\t...rest\n\t\t}: { data: Trade[]; next_cursor: string; limit: number; count: number } = await this.get(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{ headers, params: _params },\n\t\t);\n\n\t\treturn { trades: Array.isArray(data) ? [...data] : [], ...rest };\n\t}\n\n\tpublic async getBuilderTrades(\n\t\tparams: BuilderTradeParams,\n\t\tnext_cursor?: string,\n\t): Promise<BuilderTradesResponse> {\n\t\tif (!params.builder_code || params.builder_code === bytes32Zero) {\n\t\t\tthrow new Error(\"builderCode is required and cannot be zero\");\n\t\t}\n\n\t\tconst _params: any = { ...params, next_cursor: next_cursor || INITIAL_CURSOR };\n\n\t\tconst {\n\t\t\tdata,\n\t\t\t...rest\n\t\t}: { data: BuilderTrade[]; next_cursor: string; limit: number; count: number } =\n\t\t\tawait this.get(`${this.host}${GET_BUILDER_TRADES}`, { params: _params });\n\n\t\treturn { trades: Array.isArray(data) ? [...data] : [], ...rest };\n\t}\n\n\tpublic async getNotifications(): Promise<Notification[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_NOTIFICATIONS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams: { signature_type: this.orderBuilder.signatureType },\n\t\t});\n\t}\n\n\tpublic async dropNotifications(params?: DropNotificationParams): Promise<void> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DROP_NOTIFICATIONS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams: parseDropNotificationParams(params),\n\t\t});\n\t}\n\n\tpublic async getBalanceAllowance(\n\t\tparams?: BalanceAllowanceParams,\n\t): Promise<BalanceAllowanceResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_BALANCE_ALLOWANCE;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\t...params,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async updateBalanceAllowance(params?: BalanceAllowanceParams): Promise<void> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = UPDATE_BALANCE_ALLOWANCE;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\t...params,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async createOrder(\n\t\tuserOrder: UserOrderV1 | UserOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst orderToSign = { ...userOrder };\n\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\tconst routing = resolveOrderRouting(orderToSign, options?.version);\n\t\tconst { assetID } = routing;\n\n\t\tconst tickSize = await this._resolveTickSize(assetID, options?.tickSize);\n\n\t\tif (!priceValid(orderToSign.price, tickSize)) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid price (${orderToSign.price}), min: ${parseFloat(tickSize)} - max: ${\n\t\t\t\t\t1 - parseFloat(tickSize)\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\t\torderToSign.price = roundNormal(orderToSign.price, ROUNDING_CONFIG[tickSize].price);\n\n\t\tconst version = routing.exchangeVersion ?? (await this.resolveVersion());\n\n\t\tif (\n\t\t\tversion !== 1 &&\n\t\t\torderToSign.side === Side.BUY &&\n\t\t\t\"userUSDCBalance\" in orderToSign &&\n\t\t\torderToSign.userUSDCBalance !== undefined\n\t\t) {\n\t\t\tconst adjustedAmount = await this.adjustBuyAmountForBalance(\n\t\t\t\tassetID,\n\t\t\t\torderToSign.size * orderToSign.price,\n\t\t\t\torderToSign.price,\n\t\t\t\torderToSign.userUSDCBalance,\n\t\t\t\torderToSign.builderCode,\n\t\t\t);\n\t\t\torderToSign.size = adjustedAmount / orderToSign.price;\n\t\t}\n\n\t\tconst negRisk =\n\t\t\tversion === 3 ? false : (options?.negRisk ?? (await this.getNegRisk(assetID)));\n\n\t\tif (version === 1) {\n\t\t\tconst userFeeRateBps =\n\t\t\t\t\"feeRateBps\" in orderToSign ? (orderToSign as UserOrderV1).feeRateBps : undefined;\n\t\t\tconst feeRateBps = await this._resolveFeeRateBps(assetID, userFeeRateBps);\n\t\t\t(orderToSign as UserOrderV1).feeRateBps = feeRateBps;\n\t\t}\n\n\t\treturn this.orderBuilder.buildOrder(\n\t\t\torderToSign,\n\t\t\t{\n\t\t\t\ttickSize,\n\t\t\t\tnegRisk,\n\t\t\t},\n\t\t\tversion,\n\t\t);\n\t}\n\n\tpublic async createMarketOrder(\n\t\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst routing = resolveOrderRouting(userMarketOrder, options?.version);\n\t\tconst { assetID } = routing;\n\n\t\tawait this._ensureMarketInfoCached(assetID);\n\n\t\tconst tickSize = await this._resolveTickSize(assetID, options?.tickSize);\n\n\t\tif (!userMarketOrder.price) {\n\t\t\tuserMarketOrder.price = await this.calculateMarketPrice(\n\t\t\t\tassetID,\n\t\t\t\tuserMarketOrder.side,\n\t\t\t\tuserMarketOrder.amount,\n\t\t\t\tuserMarketOrder.orderType,\n\t\t\t);\n\t\t}\n\n\t\tif (!priceValid(userMarketOrder.price, tickSize)) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid price (${userMarketOrder.price}), min: ${parseFloat(tickSize)} - max: ${\n\t\t\t\t\t1 - parseFloat(tickSize)\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tconst orderToSign = { ...userMarketOrder };\n\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\tawait this.ensureBuilderFeeRateCached(orderToSign.builderCode);\n\n\t\tif (\n\t\t\torderToSign.side === Side.BUY &&\n\t\t\t\"userUSDCBalance\" in orderToSign &&\n\t\t\torderToSign.userUSDCBalance !== undefined\n\t\t) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: price is validated above\n\t\t\tconst price = orderToSign.price!;\n\t\t\torderToSign.amount = await this.adjustBuyAmountForBalance(\n\t\t\t\tassetID,\n\t\t\t\torderToSign.amount,\n\t\t\t\tprice,\n\t\t\t\torderToSign.userUSDCBalance,\n\t\t\t\torderToSign.builderCode,\n\t\t\t);\n\t\t}\n\n\t\tconst version = routing.exchangeVersion ?? (await this.resolveVersion());\n\t\tconst negRisk =\n\t\t\tversion === 3 ? false : (options?.negRisk ?? (await this.getNegRisk(assetID)));\n\n\t\tif (version === 1) {\n\t\t\tconst userFeeRateBps =\n\t\t\t\t\"feeRateBps\" in orderToSign\n\t\t\t\t\t? (orderToSign as UserMarketOrderV1).feeRateBps\n\t\t\t\t\t: undefined;\n\t\t\tconst feeRateBps = await this._resolveFeeRateBps(assetID, userFeeRateBps);\n\t\t\t(orderToSign as UserMarketOrderV1).feeRateBps = feeRateBps;\n\t\t}\n\n\t\treturn this.orderBuilder.buildMarketOrder(\n\t\t\torderToSign,\n\t\t\t{\n\t\t\t\ttickSize,\n\t\t\t\tnegRisk,\n\t\t\t},\n\t\t\tversion,\n\t\t);\n\t}\n\n\tpublic async createExchangeV3OrderFromAmounts(\n\t\tuserOrder: ExchangeV3OrderAmounts,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst orderToSign = { ...userOrder };\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\treturn this.orderBuilder.buildExchangeV3OrderFromAmounts(orderToSign);\n\t}\n\n\tpublic async createAndPostOrder<T extends OrderType.GTC | OrderType.GTD = OrderType.GTC>(\n\t\tuserOrder: UserOrderV1 | UserOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t\torderType: T = OrderType.GTC as T,\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tlet postOrderResponse: OrderResponse | undefined;\n\n\t\tawait this._retryOnVersionUpdate(async () => {\n\t\t\tconst order = await this.createOrder(userOrder, options);\n\t\t\tpostOrderResponse = await this.postOrder(order, orderType, postOnly, deferExec);\n\t\t});\n\n\t\treturn postOrderResponse as OrderResponse;\n\t}\n\n\tpublic async createAndPostMarketOrder<T extends OrderType.FOK | OrderType.FAK = OrderType.FOK>(\n\t\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t\torderType: T = OrderType.FOK as T,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tlet postOrderMarketResponse: OrderResponse | undefined;\n\n\t\tawait this._retryOnVersionUpdate(async () => {\n\t\t\tconst order = await this.createMarketOrder(userMarketOrder, options);\n\t\t\tpostOrderMarketResponse = await this.postOrder(order, orderType, false, deferExec);\n\t\t});\n\n\t\treturn postOrderMarketResponse as OrderResponse;\n\t}\n\n\tpublic async getOpenOrders(\n\t\tparams?: OpenOrderParams,\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<OpenOrdersResponse> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = GET_OPEN_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: OpenOrder[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = {\n\t\t\t\t...params,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getPreMigrationOrders(\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<PreMigrationOrdersResponse> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = GET_PRE_MIGRATION_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: PreMigrationOrder[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = { next_cursor };\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Posts an order to the CLOB.\n\t *\n\t * When the order matches, the response carries the settlement transaction\n\t * hashes of its fills in `transactionsHashes`, resolved on a best-effort\n\t * basis. If a hash is not available yet, the fill's trade can be followed\n\t * via `tradeIDs`.\n\t */\n\tpublic async postOrder<T extends OrderType = OrderType.GTC>(\n\t\torder: SignedOrder,\n\t\torderType: T = OrderType.GTC as T,\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tthis.canL2Auth();\n\t\tif (postOnly && (orderType === OrderType.FOK || orderType === OrderType.FAK)) {\n\t\t\tthrow new Error(\"postOnly is not supported for FOK/FAK orders\");\n\t\t}\n\t\tconst endpoint = POST_ORDER;\n\n\t\tconst orderPayload = isV2Order(order)\n\t\t\t? orderToJsonV2(order, this.creds?.key || \"\", orderType, postOnly, deferExec)\n\t\t\t: orderToJsonV1(order, this.creds?.key || \"\", orderType, postOnly, deferExec);\n\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(orderPayload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst res = await this.post(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t\tdata: orderPayload,\n\t\t\t},\n\t\t\ttrue,\n\t\t);\n\n\t\tif (this._isOrderVersionMismatch(res)) await this.resolveVersion(true);\n\n\t\tconst response: OrderResponse = this.throwIfError(res);\n\t\tif (deferExec) {\n\t\t\treturn response;\n\t\t}\n\t\treturn this.resolveTransactionsHashes(response);\n\t}\n\n\tpublic async postOrders(\n\t\targs: PostOrdersArgs[],\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse[]> {\n\t\tthis.canL2Auth();\n\t\tif (\n\t\t\tpostOnly &&\n\t\t\targs.some(({ orderType }) => orderType === OrderType.FOK || orderType === OrderType.FAK)\n\t\t) {\n\t\t\tthrow new Error(\"postOnly is not supported for FOK/FAK orders\");\n\t\t}\n\t\tconst endpoint = POST_ORDERS;\n\t\tconst ordersPayload: (NewOrderV2<any> | NewOrderV1<any>)[] = [];\n\t\tfor (const arg of args) {\n\t\t\tconst { order, orderType } = arg;\n\t\t\t// Version-aware dispatch\n\t\t\tconst orderPayload = isV2Order(order)\n\t\t\t\t? orderToJsonV2(order, this.creds?.key || \"\", orderType, postOnly, deferExec)\n\t\t\t\t: orderToJsonV1(order, this.creds?.key || \"\", orderType, postOnly, deferExec);\n\t\t\tordersPayload.push(orderPayload);\n\t\t}\n\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(ordersPayload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst res = await this.post(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t\tdata: ordersPayload,\n\t\t\t},\n\t\t\ttrue,\n\t\t);\n\n\t\tif (this._isOrderVersionMismatch(res)) await this.resolveVersion(true);\n\n\t\tconst responses: OrderResponse[] = this.throwIfError(res);\n\t\tif (deferExec || !Array.isArray(responses)) {\n\t\t\treturn responses;\n\t\t}\n\t\treturn Promise.all(responses.map(response => this.resolveTransactionsHashes(response)));\n\t}\n\n\t// Polls the given trades until every one reaches a terminal execution\n\t// outcome (it carries a settlement transaction hash or its status is\n\t// FAILED) or the polling window elapses. Best-effort: returns whatever\n\t// trades resolved in time and never throws.\n\tprivate async waitForResolvedTrades(tradeIDs: string[]): Promise<Trade[]> {\n\t\tconst ids = [...new Set(tradeIDs.filter(id => id.length > 0))];\n\t\tif (ids.length === 0) return [];\n\n\t\tconst resolved = new Map<string, Trade>();\n\t\tconst requestedIDs = new Set(ids);\n\t\tconst deadline = Date.now() + RESOLVE_TRADES_TIMEOUT_MS;\n\n\t\tfor (;;) {\n\t\t\tconst pending = ids.filter(id => !resolved.has(id));\n\t\t\t// A failed poll must never reject a successfully posted order;\n\t\t\t// treat it as \"not resolved yet\" and let the loop retry.\n\t\t\tconst pages = await Promise.all(\n\t\t\t\tpending.map(id => this.getTrades({ id }, true).catch(() => [] as Trade[])),\n\t\t\t);\n\t\t\tfor (const trades of pages) {\n\t\t\t\tfor (const trade of trades) {\n\t\t\t\t\tif (isTradeResolved(trade) && requestedIDs.has(trade.id)) {\n\t\t\t\t\t\tresolved.set(trade.id, trade);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ids.every(id => resolved.has(id)) || Date.now() >= deadline) {\n\t\t\t\treturn ids\n\t\t\t\t\t.map(id => resolved.get(id))\n\t\t\t\t\t.filter((trade): trade is Trade => trade !== undefined);\n\t\t\t}\n\t\t\tawait sleep(RESOLVE_TRADES_POLL_INTERVAL_MS);\n\t\t}\n\t}\n\n\t// Fills `transactionsHashes` on an order response whose trades executed\n\t// asynchronously (the server returned `tradeIDs` without hashes), by\n\t// polling the trades until they resolve. Best-effort: on timeout the\n\t// response is returned with whatever hashes resolved, which may be none.\n\t// Trades that failed execution never contribute a hash.\n\tprivate async resolveTransactionsHashes(response: OrderResponse): Promise<OrderResponse> {\n\t\tif (response.transactionsHashes && response.transactionsHashes.length > 0) {\n\t\t\treturn response;\n\t\t}\n\n\t\tconst tradeIDs = response.tradeIDs ?? [];\n\t\tif (tradeIDs.length === 0) {\n\t\t\treturn response;\n\t\t}\n\n\t\tconst resolvedTrades = await this.waitForResolvedTrades(tradeIDs);\n\t\tconst transactionsHashes = resolvedTrades\n\t\t\t.filter(trade => trade.status.toUpperCase() !== FAILED_TRADE_STATUS)\n\t\t\t.map(trade => trade.transaction_hash)\n\t\t\t.filter((hash): hash is string => Boolean(hash));\n\n\t\tif (transactionsHashes.length === 0) {\n\t\t\treturn response;\n\t\t}\n\t\treturn { ...response, transactionsHashes };\n\t}\n\n\tpublic async cancelOrder(payload: OrderPayload): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ORDER;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async cancelOrders(ordersHashes: string[]): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(ordersHashes),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: ordersHashes });\n\t}\n\n\tpublic async cancelAll(): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ALL;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async cancelMarketOrders(payload: OrderMarketCancelParams): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_MARKET_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async isOrderScoring(params?: OrderScoringParams): Promise<OrderScoring> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = IS_ORDER_SCORING;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params });\n\t}\n\n\tpublic async areOrdersScoring(params?: OrdersScoringParams): Promise<OrdersScoring> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = ARE_ORDERS_SCORING;\n\t\tconst payload = JSON.stringify(params?.orderIds);\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: payload,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tdata: payload,\n\t\t});\n\t}\n\n\t// Rewards\n\tpublic async getEarningsForUserForDay(date: string): Promise<UserEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_EARNINGS_FOR_USER_FOR_DAY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: UserEarning[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst params = {\n\t\t\t\tdate,\n\t\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getTotalEarningsForUserForDay(date: string): Promise<TotalUserEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TOTAL_EARNINGS_FOR_USER_FOR_DAY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst params = {\n\t\t\tdate,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn await this.get(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams,\n\t\t});\n\t}\n\n\tpublic async getUserEarningsAndMarketsConfig(\n\t\tdate: string,\n\t\torder_by = \"\",\n\t\tposition = \"\",\n\t\tno_competition = false,\n\t): Promise<UserRewardsEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_REWARDS_EARNINGS_PERCENTAGES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: UserRewardsEarning[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst params = {\n\t\t\t\tdate,\n\t\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t\t\tnext_cursor,\n\t\t\t\torder_by,\n\t\t\t\tposition,\n\t\t\t\tno_competition,\n\t\t\t};\n\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getRewardPercentages(): Promise<RewardsPercentages> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_LIQUIDITY_REWARD_PERCENTAGES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async getCurrentRewards(): Promise<MarketReward[]> {\n\t\tlet results: MarketReward[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst response = await this.get(`${this.host}${GET_REWARDS_MARKETS_CURRENT}`, {\n\t\t\t\tparams: { next_cursor },\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getRawRewardsForMarket(conditionId: string): Promise<MarketReward[]> {\n\t\tlet results: MarketReward[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst response = await this.get(`${this.host}${GET_REWARDS_MARKETS}${conditionId}`, {\n\t\t\t\tparams: { next_cursor },\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async calculateMarketPrice(\n\t\ttokenID: string,\n\t\tside: Side,\n\t\tamount: number,\n\t\torderType: OrderType = OrderType.FOK,\n\t): Promise<number> {\n\t\tconst book = await this.getOrderBook(tokenID);\n\t\tif (!book) {\n\t\t\tthrow new Error(\"no orderbook\");\n\t\t}\n\t\tif (side === Side.BUY) {\n\t\t\tif (!book.asks) {\n\t\t\t\tthrow new Error(\"no match\");\n\t\t\t}\n\t\t\treturn calculateBuyMarketPrice(book.asks, amount, orderType);\n\t\t} else {\n\t\t\tif (!book.bids) {\n\t\t\t\tthrow new Error(\"no match\");\n\t\t\t}\n\t\t\treturn calculateSellMarketPrice(book.bids, amount, orderType);\n\t\t}\n\t}\n\n\tpublic async createBuilderApiKey(): Promise<BuilderApiKey> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CREATE_BUILDER_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getBuilderApiKeys(): Promise<BuilderApiKeyResponse[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_BUILDER_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async revokeBuilderApiKey(): Promise<any> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = REVOKE_BUILDER_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getMarketTradesEvents(conditionID: string): Promise<MarketTradeEvent[]> {\n\t\treturn this.get(`${this.host}${GET_MARKET_TRADES_EVENTS}${conditionID}`);\n\t}\n\n\tprivate canL1Auth(): void {\n\t\tif (this.signer === undefined) {\n\t\t\tthrow L1_AUTH_UNAVAILABLE_ERROR;\n\t\t}\n\t}\n\n\tprivate canL2Auth(): void {\n\t\tif (this.signer === undefined) {\n\t\t\tthrow L1_AUTH_UNAVAILABLE_ERROR;\n\t\t}\n\n\t\tif (this.creds === undefined) {\n\t\t\tthrow L2_AUTH_NOT_AVAILABLE;\n\t\t}\n\t}\n\n\tprivate isBuilderOrder(builderCode?: string): boolean {\n\t\treturn builderCode !== undefined && builderCode !== bytes32Zero;\n\t}\n\n\tprivate async getBuilderTakerFeeRate(builderCode?: string): Promise<number> {\n\t\tif (!this.isBuilderOrder(builderCode)) return 0;\n\n\t\tawait this.ensureBuilderFeeRateCached(builderCode);\n\t\treturn this.builderFeeRates[builderCode ?? \"\"]?.taker ?? 0;\n\t}\n\n\tprivate async adjustBuyAmountForBalance(\n\t\ttokenID: string,\n\t\tamount: number,\n\t\tprice: number,\n\t\tuserUSDCBalance: number,\n\t\tbuilderCode?: string,\n\t): Promise<number> {\n\t\tawait this._ensureMarketInfoCached(tokenID);\n\t\tconst builderTakerFeeRate = await this.getBuilderTakerFeeRate(builderCode);\n\n\t\treturn adjustBuyAmountForFees(\n\t\t\tamount,\n\t\t\tprice,\n\t\t\tuserUSDCBalance,\n\t\t\tthis.feeInfos[tokenID].rate,\n\t\t\tthis.feeInfos[tokenID].exponent,\n\t\t\tbuilderTakerFeeRate,\n\t\t\tthis.feeSlippage,\n\t\t);\n\t}\n\n\tprivate async _ensureMarketInfoCached(tokenID: string): Promise<void> {\n\t\tif (tokenID in this.feeInfos) return;\n\n\t\tif (!(tokenID in this.tokenConditionMap)) {\n\t\t\tconst result = await this.get(`${this.host}${GET_MARKET_BY_TOKEN}${tokenID}`);\n\t\t\tif (!result?.condition_id) {\n\t\t\t\tthrow new Error(`failed to resolve condition id for token ${tokenID}`);\n\t\t\t}\n\t\t\tthis.tokenConditionMap[tokenID] = result.condition_id as string;\n\t\t}\n\n\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t}\n\n\tprivate async ensureBuilderFeeRateCached(builderCode?: string): Promise<void> {\n\t\tif (!builderCode || builderCode === bytes32Zero) return;\n\t\tif (builderCode in this.builderFeeRates) return;\n\n\t\tconst result = await this.get(`${this.host}${GET_BUILDER_FEES}${builderCode}`);\n\t\tthis.builderFeeRates[builderCode] = {\n\t\t\tmaker: result.builder_maker_fee_rate_bps / BUILDER_FEES_BPS,\n\t\t\ttaker: result.builder_taker_fee_rate_bps / BUILDER_FEES_BPS,\n\t\t};\n\t}\n\n\tprivate async _resolveTickSize(tokenID: string, tickSize?: TickSize): Promise<TickSize> {\n\t\tconst minTickSize = await this.getTickSize(tokenID);\n\t\tif (tickSize) {\n\t\t\tif (isTickSizeSmaller(tickSize, minTickSize)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`invalid tick size (${tickSize}), minimum for the market is ${minTickSize}`,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\ttickSize = minTickSize;\n\t\t}\n\t\treturn tickSize;\n\t}\n\n\tprivate async _resolveFeeRateBps(tokenID: string, userFeeRateBps?: number): Promise<number> {\n\t\tconst marketFeeRateBps = await this.getFeeRateBps(tokenID);\n\t\tif (\n\t\t\tmarketFeeRateBps > 0 &&\n\t\t\tuserFeeRateBps !== undefined &&\n\t\t\tuserFeeRateBps !== marketFeeRateBps\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid user provided fee rate: ${userFeeRateBps}, fee rate for the market must be ${marketFeeRateBps}`,\n\t\t\t);\n\t\t}\n\t\treturn marketFeeRateBps;\n\t}\n\n\tprivate async resolveVersion(forceUpdate: boolean = false): Promise<number> {\n\t\t// Use cached version if given\n\t\tif (!forceUpdate && this.cachedVersion !== undefined) {\n\t\t\treturn this.cachedVersion;\n\t\t}\n\n\t\t// Query API and cache the result\n\t\tconst apiVersion = await this.getVersion();\n\t\tthis.cachedVersion = apiVersion;\n\n\t\treturn apiVersion;\n\t}\n\n\tprivate async _retryOnVersionUpdate(retryFunc: () => Promise<unknown>) {\n\t\tconst version = await this.resolveVersion();\n\n\t\tfor (let attempt = 0; attempt < 2; attempt++) {\n\t\t\tawait retryFunc();\n\n\t\t\t// no need to retry if version is unchanged\n\t\t\tif (version === (await this.resolveVersion())) break;\n\t\t}\n\t}\n\n\tprivate _isOrderVersionMismatch(resp: ClobErrorResponseBody) {\n\t\tconst error = resp?.error;\n\t\tif (!error) return false;\n\t\tconst message = typeof error === \"string\" ? error : JSON.stringify(error);\n\t\treturn message.includes(ORDER_VERSION_MISMATCH_ERROR);\n\t}\n\n\tprivate throwIfError(result: any): any {\n\t\tif (this.throwOnError && result && typeof result === \"object\" && \"error\" in result) {\n\t\t\tconst msg =\n\t\t\t\ttypeof result.error === \"string\" ? result.error : JSON.stringify(result.error);\n\t\t\tthrow new ApiError(msg, result.status, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\t// http methods\n\tprivate async get(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await get(endpoint, options);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n\n\tprivate async post(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await post(endpoint, options, this.retryOnError);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n\n\tprivate async del(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await del(endpoint, options);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"client.cjs","names":["OrderBuilder","SignatureTypeV2","OK","createL2Headers","POST","HEARTBEAT","TIME","INITIAL_CURSOR","GET_SAMPLING_SIMPLIFIED_MARKETS","GET_SAMPLING_MARKETS","GET_SIMPLIFIED_MARKETS","GET_MARKETS","GET_MARKET","result: MarketDetails","GET_CLOB_MARKET","GET_ORDER_BOOK","GET_ORDER_BOOKS","GET_TICK_SIZE","GET_NEG_RISK","GET_FEE_RATE","generateOrderBookSummaryHash","GET_MIDPOINT","GET_MIDPOINTS","GET_PRICE","GET_PRICES","GET_SPREAD","GET_SPREADS","GET_LAST_TRADE_PRICE","GET_LAST_TRADES_PRICES","GET_PRICES_HISTORY","CREATE_API_KEY","createL1Headers","DERIVE_API_KEY","GET_API_KEYS","GET","CLOSED_ONLY","DELETE_API_KEY","DELETE","CREATE_READONLY_API_KEY","GET_READONLY_API_KEYS","DELETE_READONLY_API_KEY","GET_ORDER","GET_TRADES","results: Trade[]","END_CURSOR","_params: any","bytes32Zero","GET_BUILDER_TRADES","GET_NOTIFICATIONS","DROP_NOTIFICATIONS","parseDropNotificationParams","GET_BALANCE_ALLOWANCE","UPDATE_BALANCE_ALLOWANCE","priceValid","roundNormal","ROUNDING_CONFIG","Side","OrderType","postOrderResponse: OrderResponse | undefined","postOrderMarketResponse: OrderResponse | undefined","GET_OPEN_ORDERS","results: OpenOrder[]","GET_PRE_MIGRATION_ORDERS","results: PreMigrationOrder[]","POST_ORDER","isV2Order","orderToJsonV2","orderToJsonV1","response: OrderResponse","POST_ORDERS","ordersPayload: (NewOrderV2<any> | NewOrderV1<any>)[]","responses: OrderResponse[]","CANCEL_ORDER","CANCEL_ORDERS","CANCEL_ALL","CANCEL_MARKET_ORDERS","IS_ORDER_SCORING","ARE_ORDERS_SCORING","GET_EARNINGS_FOR_USER_FOR_DAY","results: UserEarning[]","GET_TOTAL_EARNINGS_FOR_USER_FOR_DAY","GET_REWARDS_EARNINGS_PERCENTAGES","results: UserRewardsEarning[]","GET_LIQUIDITY_REWARD_PERCENTAGES","results: MarketReward[]","GET_REWARDS_MARKETS_CURRENT","GET_REWARDS_MARKETS","calculateBuyMarketPrice","calculateSellMarketPrice","CREATE_BUILDER_API_KEY","GET_BUILDER_API_KEYS","REVOKE_BUILDER_API_KEY","GET_MARKET_TRADES_EVENTS","L1_AUTH_UNAVAILABLE_ERROR","L2_AUTH_NOT_AVAILABLE","adjustBuyAmountForFees","GET_MARKET_BY_TOKEN","GET_BUILDER_FEES","BUILDER_FEES_BPS","isTickSizeSmaller","isV2PositionId","ORDER_VERSION_MISMATCH_ERROR","ApiError","get","post","del"],"sources":["../src/client.ts"],"sourcesContent":["import {\n\tBUILDER_FEES_BPS,\n\tbytes32Zero,\n\tEND_CURSOR,\n\tINITIAL_CURSOR,\n\tORDER_VERSION_MISMATCH_ERROR,\n} from \"./constants.js\";\nimport {\n\tARE_ORDERS_SCORING,\n\tCANCEL_ALL,\n\tCANCEL_MARKET_ORDERS,\n\tCANCEL_ORDER,\n\tCANCEL_ORDERS,\n\tCLOSED_ONLY,\n\tCREATE_API_KEY,\n\tCREATE_BUILDER_API_KEY,\n\tCREATE_READONLY_API_KEY,\n\tDELETE_API_KEY,\n\tDELETE_READONLY_API_KEY,\n\tDERIVE_API_KEY,\n\tDROP_NOTIFICATIONS,\n\tGET_API_KEYS,\n\tGET_BALANCE_ALLOWANCE,\n\tGET_BUILDER_API_KEYS,\n\tGET_BUILDER_FEES,\n\tGET_BUILDER_TRADES,\n\tGET_CLOB_MARKET,\n\tGET_EARNINGS_FOR_USER_FOR_DAY,\n\tGET_FEE_RATE,\n\tGET_LAST_TRADE_PRICE,\n\tGET_LAST_TRADES_PRICES,\n\tGET_LIQUIDITY_REWARD_PERCENTAGES,\n\tGET_MARKET,\n\tGET_MARKET_BY_TOKEN,\n\tGET_MARKET_TRADES_EVENTS,\n\tGET_MARKETS,\n\tGET_MIDPOINT,\n\tGET_MIDPOINTS,\n\tGET_NEG_RISK,\n\tGET_NOTIFICATIONS,\n\tGET_OPEN_ORDERS,\n\tGET_ORDER,\n\tGET_ORDER_BOOK,\n\tGET_ORDER_BOOKS,\n\tGET_PRE_MIGRATION_ORDERS,\n\tGET_PRICE,\n\tGET_PRICES,\n\tGET_PRICES_HISTORY,\n\tGET_READONLY_API_KEYS,\n\tGET_REWARDS_EARNINGS_PERCENTAGES,\n\tGET_REWARDS_MARKETS,\n\tGET_REWARDS_MARKETS_CURRENT,\n\tGET_SAMPLING_MARKETS,\n\tGET_SAMPLING_SIMPLIFIED_MARKETS,\n\tGET_SIMPLIFIED_MARKETS,\n\tGET_SPREAD,\n\tGET_SPREADS,\n\tGET_TICK_SIZE,\n\tGET_TOTAL_EARNINGS_FOR_USER_FOR_DAY,\n\tGET_TRADES,\n\tHEARTBEAT,\n\tIS_ORDER_SCORING,\n\tOK,\n\tPOST_ORDER,\n\tPOST_ORDERS,\n\tREVOKE_BUILDER_API_KEY,\n\tTIME,\n\tUPDATE_BALANCE_ALLOWANCE,\n} from \"./endpoints.js\";\nimport { ApiError, L1_AUTH_UNAVAILABLE_ERROR, L2_AUTH_NOT_AVAILABLE } from \"./errors.js\";\nimport { adjustBuyAmountForFees, validateFeeSlippage } from \"./fees/index.js\";\nimport { createL1Headers, createL2Headers } from \"./headers/index.js\";\nimport {\n\tDELETE,\n\tdel,\n\tGET,\n\tget,\n\tPOST,\n\tparseDropNotificationParams,\n\tpost,\n\ttype RequestOptions,\n} from \"./http-helpers/index.js\";\nimport {\n\tcalculateBuyMarketPrice,\n\tcalculateSellMarketPrice,\n\tROUNDING_CONFIG,\n} from \"./order-builder/helpers/index.js\";\nimport { OrderBuilder } from \"./order-builder/index.js\";\nimport { SignatureTypeV2 } from \"./order-utils/model/signatureTypeV2.js\";\nimport { isV2PositionId } from \"./protocol.js\";\nimport type { ClobSigner } from \"./signing/signer.js\";\nimport type {\n\tApiKeyCreds,\n\tApiKeyRaw,\n\tApiKeysResponse,\n\tBalanceAllowanceParams,\n\tBalanceAllowanceResponse,\n\tBanStatus,\n\tBookParams,\n\tBuilderApiKey,\n\tBuilderApiKeyResponse,\n\tBuilderConfig,\n\tBuilderFeeRates,\n\tBuilderTrade,\n\tBuilderTradeParams,\n\tBuilderTradesResponse,\n\tChain,\n\tClobErrorResponseBody,\n\tCreateOrderOptions,\n\tDropNotificationParams,\n\tExchangeV3OrderAmounts,\n\tFeeInfos,\n\tFeeRates,\n\tMarketDetails,\n\tMarketPrice,\n\tMarketReward,\n\tMarketTradeEvent,\n\tNegRisk,\n\tNewOrderV1,\n\tNewOrderV2,\n\tNotification,\n\tOpenOrder,\n\tOpenOrderParams,\n\tOpenOrdersResponse,\n\tOrderBookSummary,\n\tOrderMarketCancelParams,\n\tOrderPayload,\n\tOrderResponse,\n\tOrderScoring,\n\tOrderScoringParams,\n\tOrdersScoring,\n\tOrdersScoringParams,\n\tPaginationPayload,\n\tPostOrdersArgs,\n\tPreMigrationOrder,\n\tPreMigrationOrdersResponse,\n\tPriceHistoryFilterParams,\n\tReadonlyApiKeyResponse,\n\tRewardsPercentages,\n\tTickSize,\n\tTickSizes,\n\tTokenConditionMap,\n\tTotalUserEarning,\n\tTrade,\n\tTradeParams,\n\tTradesPaginatedResponse,\n\tUserEarning,\n\tUserMarketOrderV1,\n\tUserMarketOrderV2,\n\tUserOrderV1,\n\tUserOrderV2,\n\tUserRewardsEarning,\n} from \"./types/index.js\";\nimport { OrderType, orderToJsonV1, orderToJsonV2, Side } from \"./types/index.js\";\nimport { isV2Order, type SignedOrder } from \"./types/unifiedOrder.js\";\nimport {\n\tgenerateOrderBookSummaryHash,\n\tisTickSizeSmaller,\n\tpriceValid,\n\troundNormal,\n} from \"./utilities.js\";\n\nexport { adjustBuyAmountForFees } from \"./fees/index.js\";\n\nconst RESOLVE_TRADES_TIMEOUT_MS = 30_000;\nconst RESOLVE_TRADES_POLL_INTERVAL_MS = 250;\nconst FAILED_TRADE_STATUS = \"FAILED\";\n\nconst sleep = (ms: number) => new Promise(resolve => setTimeout(resolve, ms));\n\n// A trade is resolved once execution reached a terminal outcome: it either\n// carries a settlement transaction hash or it failed and never will.\nconst isTradeResolved = (trade: Trade): boolean =>\n\ttrade.status.toUpperCase() === FAILED_TRADE_STATUS ||\n\tBoolean(trade.transaction_hash && trade.transaction_hash.length > 0);\n\nexport interface ClobClientOptions {\n\thost: string;\n\tchain: Chain;\n\tsigner?: ClobSigner;\n\tcreds?: ApiKeyCreds;\n\tsignatureType?: SignatureTypeV2;\n\tfunderAddress?: string;\n\tuseServerTime?: boolean;\n\tbuilderConfig?: BuilderConfig;\n\tgetSigner?: () => Promise<ClobSigner> | ClobSigner;\n\tretryOnError?: boolean;\n\tthrowOnError?: boolean;\n\tfeeSlippage?: number;\n}\n\nexport class ClobClient {\n\treadonly host: string;\n\n\treadonly chainId: Chain;\n\n\t// Used to perform Level 1 authentication and sign orders\n\treadonly signer?: ClobSigner;\n\n\t// Used to perform Level 2 authentication\n\treadonly creds?: ApiKeyCreds;\n\n\treadonly orderBuilder: OrderBuilder;\n\n\treadonly tickSizes: TickSizes;\n\n\treadonly negRisk: NegRisk;\n\n\treadonly feeInfos: FeeInfos;\n\n\t// Fee rate bps data for CLOB V1\n\treadonly feeRates: FeeRates;\n\n\treadonly builderFeeRates: BuilderFeeRates;\n\n\tprivate readonly tokenConditionMap: TokenConditionMap;\n\n\treadonly useServerTime?: boolean;\n\n\treadonly builderConfig?: BuilderConfig;\n\n\treadonly signatureType: SignatureTypeV2;\n\n\treadonly funderAddress?: string;\n\n\tprivate cachedVersion?: number;\n\n\treadonly retryOnError?: boolean;\n\n\treadonly throwOnError?: boolean;\n\n\treadonly feeSlippage: number;\n\n\tconstructor({\n\t\thost,\n\t\tchain,\n\t\tsigner,\n\t\tcreds,\n\t\tsignatureType,\n\t\tfunderAddress,\n\t\tuseServerTime,\n\t\tbuilderConfig,\n\t\tgetSigner,\n\t\tretryOnError,\n\t\tthrowOnError,\n\t\tfeeSlippage,\n\t}: ClobClientOptions) {\n\t\tthis.host = host.endsWith(\"/\") ? host.slice(0, -1) : host;\n\t\tthis.chainId = chain;\n\n\t\tif (signer !== undefined) {\n\t\t\tthis.signer = signer;\n\t\t}\n\t\tif (creds !== undefined) {\n\t\t\tthis.creds = creds;\n\t\t}\n\t\tthis.orderBuilder = new OrderBuilder(\n\t\t\tsigner as ClobSigner,\n\t\t\tchain,\n\t\t\tsignatureType,\n\t\t\tfunderAddress,\n\t\t\tgetSigner,\n\t\t);\n\t\tthis.signatureType = signatureType ?? SignatureTypeV2.EOA;\n\t\tthis.funderAddress = funderAddress;\n\t\tthis.tickSizes = {};\n\t\tthis.negRisk = {};\n\t\tthis.feeRates = {};\n\t\tthis.feeInfos = {};\n\t\tthis.builderFeeRates = {};\n\t\tthis.tokenConditionMap = {};\n\t\tthis.retryOnError = retryOnError;\n\t\tthis.throwOnError = throwOnError;\n\t\tthis.feeSlippage = feeSlippage ?? 0;\n\t\tvalidateFeeSlippage(this.feeSlippage);\n\t\tthis.useServerTime = useServerTime;\n\t\tif (builderConfig !== undefined) {\n\t\t\tthis.builderConfig = builderConfig;\n\t\t}\n\t}\n\n\t// Public endpoints\n\tpublic async getOk(): Promise<any> {\n\t\treturn this.get(`${this.host}${OK}`);\n\t}\n\n\tpublic async postHeartbeat(\n\t\theartbeatId = \"\",\n\t): Promise<{ heartbeat_id: string; error_msg?: string }> {\n\t\tthis.canL2Auth();\n\t\tconst body = JSON.stringify({ heartbeat_id: heartbeatId });\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\t{ method: POST, requestPath: HEARTBEAT, body },\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.post(`${this.host}${HEARTBEAT}`, {\n\t\t\theaders,\n\t\t\tdata: { heartbeat_id: heartbeatId },\n\t\t});\n\t}\n\n\tpublic async getVersion(): Promise<number> {\n\t\tconst response = await this.get(`${this.host}/version`);\n\t\t// default to v2\n\t\treturn response?.version ?? 2;\n\t}\n\n\tpublic async getServerTime(): Promise<number> {\n\t\treturn this.get(`${this.host}${TIME}`);\n\t}\n\n\tpublic async getSamplingSimplifiedMarkets(\n\t\tnext_cursor = INITIAL_CURSOR,\n\t): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SAMPLING_SIMPLIFIED_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getSamplingMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SAMPLING_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getSimplifiedMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_SIMPLIFIED_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getMarkets(next_cursor = INITIAL_CURSOR): Promise<PaginationPayload> {\n\t\treturn this.get(`${this.host}${GET_MARKETS}`, {\n\t\t\tparams: { next_cursor },\n\t\t});\n\t}\n\n\tpublic async getMarket(conditionID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_MARKET}${conditionID}`);\n\t}\n\n\tpublic async getClobMarketInfo(conditionID: string): Promise<MarketDetails> {\n\t\tconst result: MarketDetails = await this.get(\n\t\t\t`${this.host}${GET_CLOB_MARKET}${conditionID}`,\n\t\t);\n\n\t\tif (!result?.t) {\n\t\t\tthrow new Error(`failed to fetch market info for condition id ${conditionID}`);\n\t\t}\n\n\t\tfor (const token of result.t) {\n\t\t\tif (!token) continue;\n\t\t\tconst tokenId = token.t;\n\n\t\t\tthis.tokenConditionMap[tokenId] = conditionID;\n\t\t\tthis.tickSizes[tokenId] = result.mts.toString() as TickSize;\n\t\t\tthis.negRisk[tokenId] = result.nr ?? false;\n\n\t\t\tthis.feeInfos[tokenId] = {\n\t\t\t\trate: result.fd?.r ?? 0,\n\t\t\t\texponent: result.fd?.e ?? 0,\n\t\t\t};\n\t\t}\n\n\t\treturn result;\n\t}\n\n\tpublic async getOrderBook(tokenID: string): Promise<OrderBookSummary> {\n\t\treturn this.get(`${this.host}${GET_ORDER_BOOK}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getOrderBooks(params: BookParams[]): Promise<OrderBookSummary[]> {\n\t\treturn this.post(`${this.host}${GET_ORDER_BOOKS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getTickSize(tokenID: string): Promise<TickSize> {\n\t\tif (tokenID in this.tickSizes) {\n\t\t\treturn this.tickSizes[tokenID];\n\t\t}\n\n\t\tif (tokenID in this.tokenConditionMap) {\n\t\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t\t\treturn this.tickSizes[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_TICK_SIZE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.tickSizes[tokenID] = result.minimum_tick_size.toString() as TickSize;\n\n\t\treturn this.tickSizes[tokenID];\n\t}\n\n\tpublic async getNegRisk(tokenID: string): Promise<boolean> {\n\t\tif (tokenID in this.negRisk) {\n\t\t\treturn this.negRisk[tokenID];\n\t\t}\n\n\t\tif (tokenID in this.tokenConditionMap) {\n\t\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t\t\treturn this.negRisk[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_NEG_RISK}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.negRisk[tokenID] = result.neg_risk as boolean;\n\n\t\treturn this.negRisk[tokenID];\n\t}\n\n\tpublic async getFeeRateBps(tokenID: string): Promise<number> {\n\t\tif (tokenID in this.feeRates) {\n\t\t\treturn this.feeRates[tokenID];\n\t\t}\n\n\t\tconst result = await this.get(`${this.host}${GET_FEE_RATE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t\tthis.feeRates[tokenID] = result.base_fee as number;\n\n\t\treturn this.feeRates[tokenID];\n\t}\n\n\tpublic async getFeeExponent(tokenID: string): Promise<number> {\n\t\tif (tokenID in this.feeInfos) {\n\t\t\treturn this.feeInfos[tokenID].exponent;\n\t\t}\n\n\t\tawait this._ensureMarketInfoCached(tokenID);\n\t\treturn this.feeInfos[tokenID].exponent;\n\t}\n\n\t/**\n\t * Calculates the hash for the given orderbook\n\t * @param orderbook\n\t * @returns\n\t */\n\tpublic async getOrderBookHash(orderbook: OrderBookSummary): Promise<string> {\n\t\treturn generateOrderBookSummaryHash(orderbook);\n\t}\n\n\tpublic async getMidpoint(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_MIDPOINT}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getMidpoints(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_MIDPOINTS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getPrice(tokenID: string, side: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_PRICE}`, {\n\t\t\tparams: { token_id: tokenID, side: side },\n\t\t});\n\t}\n\n\tpublic async getPrices(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_PRICES}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getSpread(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_SPREAD}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getSpreads(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_SPREADS}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getLastTradePrice(tokenID: string): Promise<any> {\n\t\treturn this.get(`${this.host}${GET_LAST_TRADE_PRICE}`, {\n\t\t\tparams: { token_id: tokenID },\n\t\t});\n\t}\n\n\tpublic async getLastTradesPrices(params: BookParams[]): Promise<any> {\n\t\treturn this.post(`${this.host}${GET_LAST_TRADES_PRICES}`, {\n\t\t\tdata: params,\n\t\t});\n\t}\n\n\tpublic async getPricesHistory(params: PriceHistoryFilterParams): Promise<MarketPrice[]> {\n\t\tif (!params.interval && (params.startTs === undefined || params.endTs === undefined)) {\n\t\t\tthrow new Error(\"getPricesHistory requires either interval or both startTs and endTs\");\n\t\t}\n\t\treturn this.get(`${this.host}${GET_PRICES_HISTORY}`, {\n\t\t\tparams,\n\t\t});\n\t}\n\n\t// L1 Authed\n\n\t/**\n\t * Creates a new API key for a user\n\t * @param nonce\n\t * @returns ApiKeyCreds\n\t */\n\tpublic async createApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\tthis.canL1Auth();\n\n\t\tconst endpoint = `${this.host}${CREATE_API_KEY}`;\n\t\tconst headers = await createL1Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.chainId,\n\t\t\tnonce,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn await this.post(endpoint, { headers }).then((apiKeyRaw: ApiKeyRaw) => {\n\t\t\tconst apiKey: ApiKeyCreds = {\n\t\t\t\tkey: apiKeyRaw.apiKey,\n\t\t\t\tsecret: apiKeyRaw.secret,\n\t\t\t\tpassphrase: apiKeyRaw.passphrase,\n\t\t\t};\n\t\t\treturn apiKey;\n\t\t});\n\t}\n\n\t/**\n\t * Derives an existing API key for a user\n\t * @param nonce\n\t * @returns ApiKeyCreds\n\t */\n\tpublic async deriveApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\tthis.canL1Auth();\n\n\t\tconst endpoint = `${this.host}${DERIVE_API_KEY}`;\n\t\tconst headers = await createL1Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.chainId,\n\t\t\tnonce,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn await this.get(endpoint, { headers }).then((apiKeyRaw: ApiKeyRaw) => {\n\t\t\tconst apiKey: ApiKeyCreds = {\n\t\t\t\tkey: apiKeyRaw.apiKey,\n\t\t\t\tsecret: apiKeyRaw.secret,\n\t\t\t\tpassphrase: apiKeyRaw.passphrase,\n\t\t\t};\n\t\t\treturn apiKey;\n\t\t});\n\t}\n\n\tpublic async createOrDeriveApiKey(nonce?: number): Promise<ApiKeyCreds> {\n\t\treturn this.createApiKey(nonce).then(response => {\n\t\t\tif (!response.key) {\n\t\t\t\treturn this.deriveApiKey(nonce);\n\t\t\t}\n\t\t\treturn response;\n\t\t});\n\t}\n\n\tpublic async getApiKeys(): Promise<ApiKeysResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getClosedOnlyMode(): Promise<BanStatus> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CLOSED_ONLY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async deleteApiKey(): Promise<any> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DELETE_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async createReadonlyApiKey(): Promise<ReadonlyApiKeyResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CREATE_READONLY_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getReadonlyApiKeys(): Promise<string[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_READONLY_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async deleteReadonlyApiKey(key: string): Promise<boolean> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DELETE_READONLY_API_KEY;\n\t\tconst payload = { key };\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async getOrder(orderID: string): Promise<OpenOrder> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = `${GET_ORDER}${orderID}`;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getTrades(\n\t\tparams?: TradeParams,\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<Trade[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TRADES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: Trade[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = {\n\t\t\t\t...params,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getTradesPaginated(\n\t\tparams?: TradeParams,\n\t\tnext_cursor?: string,\n\t): Promise<TradesPaginatedResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TRADES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\n\t\tconst _params: any = { ...params, next_cursor };\n\n\t\tconst {\n\t\t\tdata,\n\t\t\t...rest\n\t\t}: { data: Trade[]; next_cursor: string; limit: number; count: number } = await this.get(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{ headers, params: _params },\n\t\t);\n\n\t\treturn { trades: Array.isArray(data) ? [...data] : [], ...rest };\n\t}\n\n\tpublic async getBuilderTrades(\n\t\tparams: BuilderTradeParams,\n\t\tnext_cursor?: string,\n\t): Promise<BuilderTradesResponse> {\n\t\tif (!params.builder_code || params.builder_code === bytes32Zero) {\n\t\t\tthrow new Error(\"builderCode is required and cannot be zero\");\n\t\t}\n\n\t\tconst _params: any = { ...params, next_cursor: next_cursor || INITIAL_CURSOR };\n\n\t\tconst {\n\t\t\tdata,\n\t\t\t...rest\n\t\t}: { data: BuilderTrade[]; next_cursor: string; limit: number; count: number } =\n\t\t\tawait this.get(`${this.host}${GET_BUILDER_TRADES}`, { params: _params });\n\n\t\treturn { trades: Array.isArray(data) ? [...data] : [], ...rest };\n\t}\n\n\tpublic async getNotifications(): Promise<Notification[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_NOTIFICATIONS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams: { signature_type: this.orderBuilder.signatureType },\n\t\t});\n\t}\n\n\tpublic async dropNotifications(params?: DropNotificationParams): Promise<void> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = DROP_NOTIFICATIONS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams: parseDropNotificationParams(params),\n\t\t});\n\t}\n\n\tpublic async getBalanceAllowance(\n\t\tparams?: BalanceAllowanceParams,\n\t): Promise<BalanceAllowanceResponse> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_BALANCE_ALLOWANCE;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\t...params,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async updateBalanceAllowance(params?: BalanceAllowanceParams): Promise<void> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = UPDATE_BALANCE_ALLOWANCE;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\t...params,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async createOrder(\n\t\tuserOrder: UserOrderV1 | UserOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst orderToSign = { ...userOrder };\n\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\tconst { tokenID } = orderToSign;\n\n\t\tconst tickSize = await this._resolveTickSize(tokenID, options?.tickSize);\n\n\t\tif (!priceValid(orderToSign.price, tickSize)) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid price (${orderToSign.price}), min: ${parseFloat(tickSize)} - max: ${\n\t\t\t\t\t1 - parseFloat(tickSize)\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\t\torderToSign.price = roundNormal(orderToSign.price, ROUNDING_CONFIG[tickSize].price);\n\n\t\tconst version = await this.resolveOrderVersion(tokenID, options?.version);\n\n\t\tif (\n\t\t\tversion !== 1 &&\n\t\t\torderToSign.side === Side.BUY &&\n\t\t\t\"userUSDCBalance\" in orderToSign &&\n\t\t\torderToSign.userUSDCBalance !== undefined\n\t\t) {\n\t\t\tconst adjustedAmount = await this.adjustBuyAmountForBalance(\n\t\t\t\ttokenID,\n\t\t\t\torderToSign.size * orderToSign.price,\n\t\t\t\torderToSign.price,\n\t\t\t\torderToSign.userUSDCBalance,\n\t\t\t\torderToSign.builderCode,\n\t\t\t);\n\t\t\torderToSign.size = adjustedAmount / orderToSign.price;\n\t\t}\n\n\t\tconst negRisk = options?.negRisk ?? (await this.getNegRisk(tokenID));\n\n\t\tif (version === 1) {\n\t\t\tconst userFeeRateBps =\n\t\t\t\t\"feeRateBps\" in orderToSign ? (orderToSign as UserOrderV1).feeRateBps : undefined;\n\t\t\tconst feeRateBps = await this._resolveFeeRateBps(tokenID, userFeeRateBps);\n\t\t\t(orderToSign as UserOrderV1).feeRateBps = feeRateBps;\n\t\t}\n\n\t\treturn this.orderBuilder.buildOrder(\n\t\t\torderToSign,\n\t\t\t{\n\t\t\t\ttickSize,\n\t\t\t\tnegRisk,\n\t\t\t},\n\t\t\tversion,\n\t\t);\n\t}\n\n\tpublic async createMarketOrder(\n\t\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst { tokenID } = userMarketOrder;\n\n\t\tawait this._ensureMarketInfoCached(tokenID);\n\n\t\tconst tickSize = await this._resolveTickSize(tokenID, options?.tickSize);\n\n\t\tif (!userMarketOrder.price) {\n\t\t\tuserMarketOrder.price = await this.calculateMarketPrice(\n\t\t\t\ttokenID,\n\t\t\t\tuserMarketOrder.side,\n\t\t\t\tuserMarketOrder.amount,\n\t\t\t\tuserMarketOrder.orderType,\n\t\t\t);\n\t\t}\n\n\t\tif (!priceValid(userMarketOrder.price, tickSize)) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid price (${userMarketOrder.price}), min: ${parseFloat(tickSize)} - max: ${\n\t\t\t\t\t1 - parseFloat(tickSize)\n\t\t\t\t}`,\n\t\t\t);\n\t\t}\n\n\t\tconst orderToSign = { ...userMarketOrder };\n\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\tawait this.ensureBuilderFeeRateCached(orderToSign.builderCode);\n\n\t\tif (\n\t\t\torderToSign.side === Side.BUY &&\n\t\t\t\"userUSDCBalance\" in orderToSign &&\n\t\t\torderToSign.userUSDCBalance !== undefined\n\t\t) {\n\t\t\t// biome-ignore lint/style/noNonNullAssertion: price is validated above\n\t\t\tconst price = orderToSign.price!;\n\t\t\torderToSign.amount = await this.adjustBuyAmountForBalance(\n\t\t\t\ttokenID,\n\t\t\t\torderToSign.amount,\n\t\t\t\tprice,\n\t\t\t\torderToSign.userUSDCBalance,\n\t\t\t\torderToSign.builderCode,\n\t\t\t);\n\t\t}\n\n\t\tconst negRisk = options?.negRisk ?? (await this.getNegRisk(tokenID));\n\t\tconst version = await this.resolveOrderVersion(tokenID, options?.version);\n\n\t\tif (version === 1) {\n\t\t\tconst userFeeRateBps =\n\t\t\t\t\"feeRateBps\" in orderToSign\n\t\t\t\t\t? (orderToSign as UserMarketOrderV1).feeRateBps\n\t\t\t\t\t: undefined;\n\t\t\tconst feeRateBps = await this._resolveFeeRateBps(tokenID, userFeeRateBps);\n\t\t\t(orderToSign as UserMarketOrderV1).feeRateBps = feeRateBps;\n\t\t}\n\n\t\treturn this.orderBuilder.buildMarketOrder(\n\t\t\torderToSign,\n\t\t\t{\n\t\t\t\ttickSize,\n\t\t\t\tnegRisk,\n\t\t\t},\n\t\t\tversion,\n\t\t);\n\t}\n\n\tpublic async createExchangeV3OrderFromAmounts(\n\t\tuserOrder: ExchangeV3OrderAmounts,\n\t): Promise<SignedOrder> {\n\t\tthis.canL1Auth();\n\n\t\tconst orderToSign = { ...userOrder };\n\t\tif (this.builderConfig?.builderCode && !orderToSign.builderCode) {\n\t\t\torderToSign.builderCode = this.builderConfig.builderCode;\n\t\t}\n\n\t\treturn this.orderBuilder.buildExchangeV3OrderFromAmounts(orderToSign);\n\t}\n\n\tpublic async createAndPostOrder<T extends OrderType.GTC | OrderType.GTD = OrderType.GTC>(\n\t\tuserOrder: UserOrderV1 | UserOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t\torderType: T = OrderType.GTC as T,\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tlet postOrderResponse: OrderResponse | undefined;\n\n\t\tawait this._retryOnVersionUpdate(userOrder.tokenID, options?.version, async () => {\n\t\t\tconst order = await this.createOrder(userOrder, options);\n\t\t\tpostOrderResponse = await this.postOrder(order, orderType, postOnly, deferExec);\n\t\t});\n\n\t\treturn postOrderResponse as OrderResponse;\n\t}\n\n\tpublic async createAndPostMarketOrder<T extends OrderType.FOK | OrderType.FAK = OrderType.FOK>(\n\t\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\t\toptions?: Partial<CreateOrderOptions>,\n\t\torderType: T = OrderType.FOK as T,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tlet postOrderMarketResponse: OrderResponse | undefined;\n\n\t\tawait this._retryOnVersionUpdate(userMarketOrder.tokenID, options?.version, async () => {\n\t\t\tconst order = await this.createMarketOrder(userMarketOrder, options);\n\t\t\tpostOrderMarketResponse = await this.postOrder(order, orderType, false, deferExec);\n\t\t});\n\n\t\treturn postOrderMarketResponse as OrderResponse;\n\t}\n\n\tpublic async getOpenOrders(\n\t\tparams?: OpenOrderParams,\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<OpenOrdersResponse> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = GET_OPEN_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: OpenOrder[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = {\n\t\t\t\t...params,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getPreMigrationOrders(\n\t\tonly_first_page = false,\n\t\tnext_cursor?: string,\n\t): Promise<PreMigrationOrdersResponse> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = GET_PRE_MIGRATION_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: PreMigrationOrder[] = [];\n\t\tnext_cursor = next_cursor || INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR && (next_cursor === INITIAL_CURSOR || !only_first_page)) {\n\t\t\tconst _params: any = { next_cursor };\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams: _params,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\t/**\n\t * Posts an order to the CLOB.\n\t *\n\t * When the order matches, the response carries the settlement transaction\n\t * hashes of its fills in `transactionsHashes`, resolved on a best-effort\n\t * basis. If a hash is not available yet, the fill's trade can be followed\n\t * via `tradeIDs`.\n\t */\n\tpublic async postOrder<T extends OrderType = OrderType.GTC>(\n\t\torder: SignedOrder,\n\t\torderType: T = OrderType.GTC as T,\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse> {\n\t\tthis.canL2Auth();\n\t\tif (postOnly && (orderType === OrderType.FOK || orderType === OrderType.FAK)) {\n\t\t\tthrow new Error(\"postOnly is not supported for FOK/FAK orders\");\n\t\t}\n\t\tconst endpoint = POST_ORDER;\n\n\t\tconst orderPayload = isV2Order(order)\n\t\t\t? orderToJsonV2(order, this.creds?.key || \"\", orderType, postOnly, deferExec)\n\t\t\t: orderToJsonV1(order, this.creds?.key || \"\", orderType, postOnly, deferExec);\n\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(orderPayload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst res = await this.post(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t\tdata: orderPayload,\n\t\t\t},\n\t\t\ttrue,\n\t\t);\n\n\t\tif (this._isOrderVersionMismatch(res)) await this.resolveVersion(true);\n\n\t\tconst response: OrderResponse = this.throwIfError(res);\n\t\tif (deferExec) {\n\t\t\treturn response;\n\t\t}\n\t\treturn this.resolveTransactionsHashes(response);\n\t}\n\n\tpublic async postOrders(\n\t\targs: PostOrdersArgs[],\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<OrderResponse[]> {\n\t\tthis.canL2Auth();\n\t\tif (\n\t\t\tpostOnly &&\n\t\t\targs.some(({ orderType }) => orderType === OrderType.FOK || orderType === OrderType.FAK)\n\t\t) {\n\t\t\tthrow new Error(\"postOnly is not supported for FOK/FAK orders\");\n\t\t}\n\t\tconst endpoint = POST_ORDERS;\n\t\tconst ordersPayload: (NewOrderV2<any> | NewOrderV1<any>)[] = [];\n\t\tfor (const arg of args) {\n\t\t\tconst { order, orderType } = arg;\n\t\t\t// Version-aware dispatch\n\t\t\tconst orderPayload = isV2Order(order)\n\t\t\t\t? orderToJsonV2(order, this.creds?.key || \"\", orderType, postOnly, deferExec)\n\t\t\t\t: orderToJsonV1(order, this.creds?.key || \"\", orderType, postOnly, deferExec);\n\t\t\tordersPayload.push(orderPayload);\n\t\t}\n\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(ordersPayload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst res = await this.post(\n\t\t\t`${this.host}${endpoint}`,\n\t\t\t{\n\t\t\t\theaders,\n\t\t\t\tdata: ordersPayload,\n\t\t\t},\n\t\t\ttrue,\n\t\t);\n\n\t\tif (this._isOrderVersionMismatch(res)) await this.resolveVersion(true);\n\n\t\tconst responses: OrderResponse[] = this.throwIfError(res);\n\t\tif (deferExec || !Array.isArray(responses)) {\n\t\t\treturn responses;\n\t\t}\n\t\treturn Promise.all(responses.map(response => this.resolveTransactionsHashes(response)));\n\t}\n\n\t// Polls the given trades until every one reaches a terminal execution\n\t// outcome (it carries a settlement transaction hash or its status is\n\t// FAILED) or the polling window elapses. Best-effort: returns whatever\n\t// trades resolved in time and never throws.\n\tprivate async waitForResolvedTrades(tradeIDs: string[]): Promise<Trade[]> {\n\t\tconst ids = [...new Set(tradeIDs.filter(id => id.length > 0))];\n\t\tif (ids.length === 0) return [];\n\n\t\tconst resolved = new Map<string, Trade>();\n\t\tconst requestedIDs = new Set(ids);\n\t\tconst deadline = Date.now() + RESOLVE_TRADES_TIMEOUT_MS;\n\n\t\tfor (;;) {\n\t\t\tconst pending = ids.filter(id => !resolved.has(id));\n\t\t\t// A failed poll must never reject a successfully posted order;\n\t\t\t// treat it as \"not resolved yet\" and let the loop retry.\n\t\t\tconst pages = await Promise.all(\n\t\t\t\tpending.map(id => this.getTrades({ id }, true).catch(() => [] as Trade[])),\n\t\t\t);\n\t\t\tfor (const trades of pages) {\n\t\t\t\tfor (const trade of trades) {\n\t\t\t\t\tif (isTradeResolved(trade) && requestedIDs.has(trade.id)) {\n\t\t\t\t\t\tresolved.set(trade.id, trade);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (ids.every(id => resolved.has(id)) || Date.now() >= deadline) {\n\t\t\t\treturn ids\n\t\t\t\t\t.map(id => resolved.get(id))\n\t\t\t\t\t.filter((trade): trade is Trade => trade !== undefined);\n\t\t\t}\n\t\t\tawait sleep(RESOLVE_TRADES_POLL_INTERVAL_MS);\n\t\t}\n\t}\n\n\t// Fills `transactionsHashes` on an order response whose trades executed\n\t// asynchronously (the server returned `tradeIDs` without hashes), by\n\t// polling the trades until they resolve. Best-effort: on timeout the\n\t// response is returned with whatever hashes resolved, which may be none.\n\t// Trades that failed execution never contribute a hash.\n\tprivate async resolveTransactionsHashes(response: OrderResponse): Promise<OrderResponse> {\n\t\tif (response.transactionsHashes && response.transactionsHashes.length > 0) {\n\t\t\treturn response;\n\t\t}\n\n\t\tconst tradeIDs = response.tradeIDs ?? [];\n\t\tif (tradeIDs.length === 0) {\n\t\t\treturn response;\n\t\t}\n\n\t\tconst resolvedTrades = await this.waitForResolvedTrades(tradeIDs);\n\t\tconst transactionsHashes = resolvedTrades\n\t\t\t.filter(trade => trade.status.toUpperCase() !== FAILED_TRADE_STATUS)\n\t\t\t.map(trade => trade.transaction_hash)\n\t\t\t.filter((hash): hash is string => Boolean(hash));\n\n\t\tif (transactionsHashes.length === 0) {\n\t\t\treturn response;\n\t\t}\n\t\treturn { ...response, transactionsHashes };\n\t}\n\n\tpublic async cancelOrder(payload: OrderPayload): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ORDER;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async cancelOrders(ordersHashes: string[]): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(ordersHashes),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: ordersHashes });\n\t}\n\n\tpublic async cancelAll(): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_ALL;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async cancelMarketOrders(payload: OrderMarketCancelParams): Promise<any> {\n\t\tthis.canL2Auth();\n\t\tconst endpoint = CANCEL_MARKET_ORDERS;\n\t\tconst l2HeaderArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: JSON.stringify(payload),\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\tl2HeaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\t\treturn this.del(`${this.host}${endpoint}`, { headers, data: payload });\n\t}\n\n\tpublic async isOrderScoring(params?: OrderScoringParams): Promise<OrderScoring> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = IS_ORDER_SCORING;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params });\n\t}\n\n\tpublic async areOrdersScoring(params?: OrdersScoringParams): Promise<OrdersScoring> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = ARE_ORDERS_SCORING;\n\t\tconst payload = JSON.stringify(params?.orderIds);\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t\tbody: payload,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tdata: payload,\n\t\t});\n\t}\n\n\t// Rewards\n\tpublic async getEarningsForUserForDay(date: string): Promise<UserEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_EARNINGS_FOR_USER_FOR_DAY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: UserEarning[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst params = {\n\t\t\t\tdate,\n\t\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t\t\tnext_cursor,\n\t\t\t};\n\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getTotalEarningsForUserForDay(date: string): Promise<TotalUserEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_TOTAL_EARNINGS_FOR_USER_FOR_DAY;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst params = {\n\t\t\tdate,\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn await this.get(`${this.host}${endpoint}`, {\n\t\t\theaders,\n\t\t\tparams,\n\t\t});\n\t}\n\n\tpublic async getUserEarningsAndMarketsConfig(\n\t\tdate: string,\n\t\torder_by = \"\",\n\t\tposition = \"\",\n\t\tno_competition = false,\n\t): Promise<UserRewardsEarning[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_REWARDS_EARNINGS_PERCENTAGES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tlet results: UserRewardsEarning[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst params = {\n\t\t\t\tdate,\n\t\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t\t\tnext_cursor,\n\t\t\t\torder_by,\n\t\t\t\tposition,\n\t\t\t\tno_competition,\n\t\t\t};\n\n\t\t\tconst response = await this.get(`${this.host}${endpoint}`, {\n\t\t\t\theaders,\n\t\t\t\tparams,\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getRewardPercentages(): Promise<RewardsPercentages> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_LIQUIDITY_REWARD_PERCENTAGES;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\tconst _params = {\n\t\t\tsignature_type: this.orderBuilder.signatureType,\n\t\t};\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers, params: _params });\n\t}\n\n\tpublic async getCurrentRewards(): Promise<MarketReward[]> {\n\t\tlet results: MarketReward[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst response = await this.get(`${this.host}${GET_REWARDS_MARKETS_CURRENT}`, {\n\t\t\t\tparams: { next_cursor },\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async getRawRewardsForMarket(conditionId: string): Promise<MarketReward[]> {\n\t\tlet results: MarketReward[] = [];\n\t\tlet next_cursor = INITIAL_CURSOR;\n\t\twhile (next_cursor !== END_CURSOR) {\n\t\t\tconst response = await this.get(`${this.host}${GET_REWARDS_MARKETS}${conditionId}`, {\n\t\t\t\tparams: { next_cursor },\n\t\t\t});\n\t\t\tnext_cursor = response.next_cursor;\n\t\t\tresults = [...results, ...response.data];\n\t\t}\n\t\treturn results;\n\t}\n\n\tpublic async calculateMarketPrice(\n\t\ttokenID: string,\n\t\tside: Side,\n\t\tamount: number,\n\t\torderType: OrderType = OrderType.FOK,\n\t): Promise<number> {\n\t\tconst book = await this.getOrderBook(tokenID);\n\t\tif (!book) {\n\t\t\tthrow new Error(\"no orderbook\");\n\t\t}\n\t\tif (side === Side.BUY) {\n\t\t\tif (!book.asks) {\n\t\t\t\tthrow new Error(\"no match\");\n\t\t\t}\n\t\t\treturn calculateBuyMarketPrice(book.asks, amount, orderType);\n\t\t} else {\n\t\t\tif (!book.bids) {\n\t\t\t\tthrow new Error(\"no match\");\n\t\t\t}\n\t\t\treturn calculateSellMarketPrice(book.bids, amount, orderType);\n\t\t}\n\t}\n\n\tpublic async createBuilderApiKey(): Promise<BuilderApiKey> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = CREATE_BUILDER_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: POST,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.post(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getBuilderApiKeys(): Promise<BuilderApiKeyResponse[]> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = GET_BUILDER_API_KEYS;\n\t\tconst headerArgs = {\n\t\t\tmethod: GET,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.get(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async revokeBuilderApiKey(): Promise<any> {\n\t\tthis.canL2Auth();\n\n\t\tconst endpoint = REVOKE_BUILDER_API_KEY;\n\t\tconst headerArgs = {\n\t\t\tmethod: DELETE,\n\t\t\trequestPath: endpoint,\n\t\t};\n\n\t\tconst headers = await createL2Headers(\n\t\t\tthis.signer as ClobSigner,\n\t\t\tthis.creds as ApiKeyCreds,\n\t\t\theaderArgs,\n\t\t\tthis.useServerTime ? await this.getServerTime() : undefined,\n\t\t);\n\n\t\treturn this.del(`${this.host}${endpoint}`, { headers });\n\t}\n\n\tpublic async getMarketTradesEvents(conditionID: string): Promise<MarketTradeEvent[]> {\n\t\treturn this.get(`${this.host}${GET_MARKET_TRADES_EVENTS}${conditionID}`);\n\t}\n\n\tprivate canL1Auth(): void {\n\t\tif (this.signer === undefined) {\n\t\t\tthrow L1_AUTH_UNAVAILABLE_ERROR;\n\t\t}\n\t}\n\n\tprivate canL2Auth(): void {\n\t\tif (this.signer === undefined) {\n\t\t\tthrow L1_AUTH_UNAVAILABLE_ERROR;\n\t\t}\n\n\t\tif (this.creds === undefined) {\n\t\t\tthrow L2_AUTH_NOT_AVAILABLE;\n\t\t}\n\t}\n\n\tprivate isBuilderOrder(builderCode?: string): boolean {\n\t\treturn builderCode !== undefined && builderCode !== bytes32Zero;\n\t}\n\n\tprivate async getBuilderTakerFeeRate(builderCode?: string): Promise<number> {\n\t\tif (!this.isBuilderOrder(builderCode)) return 0;\n\n\t\tawait this.ensureBuilderFeeRateCached(builderCode);\n\t\treturn this.builderFeeRates[builderCode ?? \"\"]?.taker ?? 0;\n\t}\n\n\tprivate async adjustBuyAmountForBalance(\n\t\ttokenID: string,\n\t\tamount: number,\n\t\tprice: number,\n\t\tuserUSDCBalance: number,\n\t\tbuilderCode?: string,\n\t): Promise<number> {\n\t\tawait this._ensureMarketInfoCached(tokenID);\n\t\tconst builderTakerFeeRate = await this.getBuilderTakerFeeRate(builderCode);\n\n\t\treturn adjustBuyAmountForFees(\n\t\t\tamount,\n\t\t\tprice,\n\t\t\tuserUSDCBalance,\n\t\t\tthis.feeInfos[tokenID].rate,\n\t\t\tthis.feeInfos[tokenID].exponent,\n\t\t\tbuilderTakerFeeRate,\n\t\t\tthis.feeSlippage,\n\t\t);\n\t}\n\n\tprivate async _ensureMarketInfoCached(tokenID: string): Promise<void> {\n\t\tif (tokenID in this.feeInfos) return;\n\n\t\tif (!(tokenID in this.tokenConditionMap)) {\n\t\t\tconst result = await this.get(`${this.host}${GET_MARKET_BY_TOKEN}${tokenID}`);\n\t\t\tif (!result?.condition_id) {\n\t\t\t\tthrow new Error(`failed to resolve condition id for token ${tokenID}`);\n\t\t\t}\n\t\t\tthis.tokenConditionMap[tokenID] = result.condition_id as string;\n\t\t}\n\n\t\tawait this.getClobMarketInfo(this.tokenConditionMap[tokenID]);\n\t}\n\n\tprivate async ensureBuilderFeeRateCached(builderCode?: string): Promise<void> {\n\t\tif (!builderCode || builderCode === bytes32Zero) return;\n\t\tif (builderCode in this.builderFeeRates) return;\n\n\t\tconst result = await this.get(`${this.host}${GET_BUILDER_FEES}${builderCode}`);\n\t\tthis.builderFeeRates[builderCode] = {\n\t\t\tmaker: result.builder_maker_fee_rate_bps / BUILDER_FEES_BPS,\n\t\t\ttaker: result.builder_taker_fee_rate_bps / BUILDER_FEES_BPS,\n\t\t};\n\t}\n\n\tprivate async _resolveTickSize(tokenID: string, tickSize?: TickSize): Promise<TickSize> {\n\t\tconst minTickSize = await this.getTickSize(tokenID);\n\t\tif (tickSize) {\n\t\t\tif (isTickSizeSmaller(tickSize, minTickSize)) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`invalid tick size (${tickSize}), minimum for the market is ${minTickSize}`,\n\t\t\t\t);\n\t\t\t}\n\t\t} else {\n\t\t\ttickSize = minTickSize;\n\t\t}\n\t\treturn tickSize;\n\t}\n\n\tprivate async _resolveFeeRateBps(tokenID: string, userFeeRateBps?: number): Promise<number> {\n\t\tconst marketFeeRateBps = await this.getFeeRateBps(tokenID);\n\t\tif (\n\t\t\tmarketFeeRateBps > 0 &&\n\t\t\tuserFeeRateBps !== undefined &&\n\t\t\tuserFeeRateBps !== marketFeeRateBps\n\t\t) {\n\t\t\tthrow new Error(\n\t\t\t\t`invalid user provided fee rate: ${userFeeRateBps}, fee rate for the market must be ${marketFeeRateBps}`,\n\t\t\t);\n\t\t}\n\t\treturn marketFeeRateBps;\n\t}\n\n\tprivate async resolveOrderVersion(tokenID: string, version?: number): Promise<number> {\n\t\treturn version ?? (isV2PositionId(tokenID) ? 3 : this.resolveVersion());\n\t}\n\n\tprivate async resolveVersion(forceUpdate: boolean = false): Promise<number> {\n\t\t// Use cached version if given\n\t\tif (!forceUpdate && this.cachedVersion !== undefined) {\n\t\t\treturn this.cachedVersion;\n\t\t}\n\n\t\t// Query API and cache the result\n\t\tconst apiVersion = await this.getVersion();\n\t\tthis.cachedVersion = apiVersion;\n\n\t\treturn apiVersion;\n\t}\n\n\tprivate async _retryOnVersionUpdate(\n\t\ttokenID: string,\n\t\texplicitVersion: number | undefined,\n\t\tretryFunc: () => Promise<unknown>,\n\t) {\n\t\t// Only server-selected versions can change during migration recovery.\n\t\tif (explicitVersion != null || isV2PositionId(tokenID)) {\n\t\t\tawait retryFunc();\n\t\t\treturn;\n\t\t}\n\n\t\tconst version = await this.resolveVersion();\n\n\t\tfor (let attempt = 0; attempt < 2; attempt++) {\n\t\t\tawait retryFunc();\n\n\t\t\t// no need to retry if version is unchanged\n\t\t\tif (version === (await this.resolveVersion())) break;\n\t\t}\n\t}\n\n\tprivate _isOrderVersionMismatch(resp: ClobErrorResponseBody) {\n\t\tconst error = resp?.error;\n\t\tif (!error) return false;\n\t\tconst message = typeof error === \"string\" ? error : JSON.stringify(error);\n\t\treturn message.includes(ORDER_VERSION_MISMATCH_ERROR);\n\t}\n\n\tprivate throwIfError(result: any): any {\n\t\tif (this.throwOnError && result && typeof result === \"object\" && \"error\" in result) {\n\t\t\tconst msg =\n\t\t\t\ttypeof result.error === \"string\" ? result.error : JSON.stringify(result.error);\n\t\t\tthrow new ApiError(msg, result.status, result);\n\t\t}\n\t\treturn result;\n\t}\n\n\t// http methods\n\tprivate async get(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await get(endpoint, options);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n\n\tprivate async post(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await post(endpoint, options, this.retryOnError);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n\n\tprivate async del(endpoint: string, options?: RequestOptions, skipThrow = false) {\n\t\tconst result = await del(endpoint, options);\n\t\treturn skipThrow ? result : this.throwIfError(result);\n\t}\n}\n"],"mappings":"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"}
package/dist/client.d.cts CHANGED
@@ -164,6 +164,7 @@ declare class ClobClient {
164
164
  private ensureBuilderFeeRateCached;
165
165
  private _resolveTickSize;
166
166
  private _resolveFeeRateBps;
167
+ private resolveOrderVersion;
167
168
  private resolveVersion;
168
169
  private _retryOnVersionUpdate;
169
170
  private _isOrderVersionMismatch;
package/dist/client.d.ts CHANGED
@@ -166,6 +166,7 @@ declare class ClobClient {
166
166
  private ensureBuilderFeeRateCached;
167
167
  private _resolveTickSize;
168
168
  private _resolveFeeRateBps;
169
+ private resolveOrderVersion;
169
170
  private resolveVersion;
170
171
  private _retryOnVersionUpdate;
171
172
  private _isOrderVersionMismatch;