{"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: any","postOrderMarketResponse: any","GET_OPEN_ORDERS","results: OpenOrder[]","GET_PRE_MIGRATION_ORDERS","results: PreMigrationOrder[]","POST_ORDER","isV2Order","orderToJsonV2","orderToJsonV1","POST_ORDERS","ordersPayload: (NewOrderV2<any> | NewOrderV1<any>)[]","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 { 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\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\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\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.resolveVersion();\n\n\t\tif (\n\t\t\tversion === 2 &&\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.resolveVersion();\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 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<any> {\n\t\tlet postOrderResponse: any;\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;\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<any> {\n\t\tlet postOrderMarketResponse: any;\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;\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\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<any> {\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\treturn this.throwIfError(res);\n\t}\n\n\tpublic async postOrders(\n\t\targs: PostOrdersArgs[],\n\t\tpostOnly = false,\n\t\tdeferExec = false,\n\t): Promise<any> {\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\treturn this.throwIfError(res);\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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"}