@polymarket/clob-client-v2 1.0.4 → 1.0.6-pr79.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (200) hide show
  1. package/README.md +3 -0
  2. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  3. package/dist/client.cjs +886 -0
  4. package/dist/client.cjs.map +1 -0
  5. package/dist/client.d.cts +165 -0
  6. package/dist/client.d.ts +167 -0
  7. package/dist/client.js +886 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/config.cjs +37 -0
  10. package/dist/config.cjs.map +1 -0
  11. package/dist/config.d.cts +17 -0
  12. package/dist/config.d.ts +17 -0
  13. package/dist/config.js +34 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/constants.cjs +15 -0
  16. package/dist/constants.cjs.map +1 -0
  17. package/dist/constants.js +10 -0
  18. package/dist/constants.js.map +1 -0
  19. package/dist/endpoints.cjs +125 -0
  20. package/dist/endpoints.cjs.map +1 -0
  21. package/dist/endpoints.js +65 -0
  22. package/dist/endpoints.js.map +1 -0
  23. package/dist/errors.cjs +20 -0
  24. package/dist/errors.cjs.map +1 -0
  25. package/dist/errors.d.cts +11 -0
  26. package/dist/errors.d.ts +11 -0
  27. package/dist/errors.js +17 -0
  28. package/dist/errors.js.map +1 -0
  29. package/dist/fees/index.cjs +21 -0
  30. package/dist/fees/index.cjs.map +1 -0
  31. package/dist/fees/index.d.cts +5 -0
  32. package/dist/fees/index.d.ts +5 -0
  33. package/dist/fees/index.js +19 -0
  34. package/dist/fees/index.js.map +1 -0
  35. package/dist/headers/index.cjs +34 -0
  36. package/dist/headers/index.cjs.map +1 -0
  37. package/dist/headers/index.d.cts +9 -0
  38. package/dist/headers/index.d.ts +11 -0
  39. package/dist/headers/index.js +33 -0
  40. package/dist/headers/index.js.map +1 -0
  41. package/dist/http-helpers/index.cjs +109 -0
  42. package/dist/http-helpers/index.cjs.map +1 -0
  43. package/dist/http-helpers/index.js +101 -0
  44. package/dist/http-helpers/index.js.map +1 -0
  45. package/dist/index.cjs +35 -2600
  46. package/dist/index.d.cts +14 -1039
  47. package/dist/index.d.ts +16 -1039
  48. package/dist/index.js +15 -2543
  49. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs +43 -0
  50. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.cjs.map +1 -0
  51. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js +42 -0
  52. package/dist/order-builder/helpers/buildMarketOrderCreationArgs.js.map +1 -0
  53. package/dist/order-builder/helpers/buildOrder.cjs +34 -0
  54. package/dist/order-builder/helpers/buildOrder.cjs.map +1 -0
  55. package/dist/order-builder/helpers/buildOrder.js +34 -0
  56. package/dist/order-builder/helpers/buildOrder.js.map +1 -0
  57. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs +45 -0
  58. package/dist/order-builder/helpers/buildOrderCreationArgs.cjs.map +1 -0
  59. package/dist/order-builder/helpers/buildOrderCreationArgs.js +44 -0
  60. package/dist/order-builder/helpers/buildOrderCreationArgs.js.map +1 -0
  61. package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs +24 -0
  62. package/dist/order-builder/helpers/calculateBuyMarketPrice.cjs.map +1 -0
  63. package/dist/order-builder/helpers/calculateBuyMarketPrice.js +24 -0
  64. package/dist/order-builder/helpers/calculateBuyMarketPrice.js.map +1 -0
  65. package/dist/order-builder/helpers/calculateSellMarketPrice.cjs +24 -0
  66. package/dist/order-builder/helpers/calculateSellMarketPrice.cjs.map +1 -0
  67. package/dist/order-builder/helpers/calculateSellMarketPrice.js +24 -0
  68. package/dist/order-builder/helpers/calculateSellMarketPrice.js.map +1 -0
  69. package/dist/order-builder/helpers/createMarketOrder.cjs +34 -0
  70. package/dist/order-builder/helpers/createMarketOrder.cjs.map +1 -0
  71. package/dist/order-builder/helpers/createMarketOrder.js +34 -0
  72. package/dist/order-builder/helpers/createMarketOrder.js.map +1 -0
  73. package/dist/order-builder/helpers/createOrder.cjs +34 -0
  74. package/dist/order-builder/helpers/createOrder.cjs.map +1 -0
  75. package/dist/order-builder/helpers/createOrder.js +34 -0
  76. package/dist/order-builder/helpers/createOrder.js.map +1 -0
  77. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs +36 -0
  78. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs.map +1 -0
  79. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +36 -0
  80. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -0
  81. package/dist/order-builder/helpers/getOrderRawAmounts.cjs +36 -0
  82. package/dist/order-builder/helpers/getOrderRawAmounts.cjs.map +1 -0
  83. package/dist/order-builder/helpers/getOrderRawAmounts.js +36 -0
  84. package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -0
  85. package/dist/order-builder/helpers/roundingConfig.cjs +28 -0
  86. package/dist/order-builder/helpers/roundingConfig.cjs.map +1 -0
  87. package/dist/order-builder/helpers/roundingConfig.js +27 -0
  88. package/dist/order-builder/helpers/roundingConfig.js.map +1 -0
  89. package/dist/order-builder/index.d.ts +1 -0
  90. package/dist/order-builder/orderBuilder.cjs +51 -0
  91. package/dist/order-builder/orderBuilder.cjs.map +1 -0
  92. package/dist/order-builder/orderBuilder.d.cts +37 -0
  93. package/dist/order-builder/orderBuilder.d.ts +39 -0
  94. package/dist/order-builder/orderBuilder.js +51 -0
  95. package/dist/order-builder/orderBuilder.js.map +1 -0
  96. package/dist/order-utils/exchangeOrderBuilderV1.cjs +128 -0
  97. package/dist/order-utils/exchangeOrderBuilderV1.cjs.map +1 -0
  98. package/dist/order-utils/exchangeOrderBuilderV1.d.ts +2 -0
  99. package/dist/order-utils/exchangeOrderBuilderV1.js +127 -0
  100. package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -0
  101. package/dist/order-utils/exchangeOrderBuilderV2.cjs +196 -0
  102. package/dist/order-utils/exchangeOrderBuilderV2.cjs.map +1 -0
  103. package/dist/order-utils/exchangeOrderBuilderV2.d.ts +2 -0
  104. package/dist/order-utils/exchangeOrderBuilderV2.js +194 -0
  105. package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -0
  106. package/dist/order-utils/index.d.ts +7 -0
  107. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs +60 -0
  108. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs.map +1 -0
  109. package/dist/order-utils/model/ctfExchangeV1TypedData.js +57 -0
  110. package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -0
  111. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs +58 -0
  112. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs.map +1 -0
  113. package/dist/order-utils/model/ctfExchangeV2TypedData.js +54 -0
  114. package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -0
  115. package/dist/order-utils/model/eip712.cjs +24 -0
  116. package/dist/order-utils/model/eip712.cjs.map +1 -0
  117. package/dist/order-utils/model/eip712.d.cts +9 -0
  118. package/dist/order-utils/model/eip712.d.ts +9 -0
  119. package/dist/order-utils/model/eip712.js +23 -0
  120. package/dist/order-utils/model/eip712.js.map +1 -0
  121. package/dist/order-utils/model/order.d.cts +5 -0
  122. package/dist/order-utils/model/order.d.ts +5 -0
  123. package/dist/order-utils/model/orderDataV1.d.cts +68 -0
  124. package/dist/order-utils/model/orderDataV1.d.ts +69 -0
  125. package/dist/order-utils/model/orderDataV2.d.cts +68 -0
  126. package/dist/order-utils/model/orderDataV2.d.ts +69 -0
  127. package/dist/order-utils/model/side.cjs +11 -0
  128. package/dist/order-utils/model/side.cjs.map +1 -0
  129. package/dist/order-utils/model/side.d.cts +8 -0
  130. package/dist/order-utils/model/side.d.ts +8 -0
  131. package/dist/order-utils/model/side.js +10 -0
  132. package/dist/order-utils/model/side.js.map +1 -0
  133. package/dist/order-utils/model/signatureTypeV1.cjs +21 -0
  134. package/dist/order-utils/model/signatureTypeV1.cjs.map +1 -0
  135. package/dist/order-utils/model/signatureTypeV1.d.cts +18 -0
  136. package/dist/order-utils/model/signatureTypeV1.d.ts +18 -0
  137. package/dist/order-utils/model/signatureTypeV1.js +20 -0
  138. package/dist/order-utils/model/signatureTypeV1.js.map +1 -0
  139. package/dist/order-utils/model/signatureTypeV2.cjs +25 -0
  140. package/dist/order-utils/model/signatureTypeV2.cjs.map +1 -0
  141. package/dist/order-utils/model/signatureTypeV2.d.cts +22 -0
  142. package/dist/order-utils/model/signatureTypeV2.d.ts +22 -0
  143. package/dist/order-utils/model/signatureTypeV2.js +24 -0
  144. package/dist/order-utils/model/signatureTypeV2.js.map +1 -0
  145. package/dist/order-utils/utils.cjs +9 -0
  146. package/dist/order-utils/utils.cjs.map +1 -0
  147. package/dist/order-utils/utils.js +8 -0
  148. package/dist/order-utils/utils.js.map +1 -0
  149. package/dist/signing/constants.cjs +7 -0
  150. package/dist/signing/constants.cjs.map +1 -0
  151. package/dist/signing/constants.js +6 -0
  152. package/dist/signing/constants.js.map +1 -0
  153. package/dist/signing/eip712.cjs +51 -0
  154. package/dist/signing/eip712.cjs.map +1 -0
  155. package/dist/signing/eip712.d.ts +2 -0
  156. package/dist/signing/eip712.js +51 -0
  157. package/dist/signing/eip712.js.map +1 -0
  158. package/dist/signing/hmac.cjs +40 -0
  159. package/dist/signing/hmac.cjs.map +1 -0
  160. package/dist/signing/hmac.js +39 -0
  161. package/dist/signing/hmac.js.map +1 -0
  162. package/dist/signing/index.d.ts +2 -0
  163. package/dist/signing/signer.cjs +41 -0
  164. package/dist/signing/signer.cjs.map +1 -0
  165. package/dist/signing/signer.d.cts +17 -0
  166. package/dist/signing/signer.d.ts +17 -0
  167. package/dist/signing/signer.js +39 -0
  168. package/dist/signing/signer.js.map +1 -0
  169. package/dist/types/clob.cjs +35 -0
  170. package/dist/types/clob.cjs.map +1 -0
  171. package/dist/types/clob.d.cts +427 -0
  172. package/dist/types/clob.d.ts +427 -0
  173. package/dist/types/clob.js +32 -0
  174. package/dist/types/clob.js.map +1 -0
  175. package/dist/types/index.d.ts +5 -0
  176. package/dist/types/ordersV1.cjs +29 -0
  177. package/dist/types/ordersV1.cjs.map +1 -0
  178. package/dist/types/ordersV1.d.cts +115 -0
  179. package/dist/types/ordersV1.d.ts +116 -0
  180. package/dist/types/ordersV1.js +28 -0
  181. package/dist/types/ordersV1.js.map +1 -0
  182. package/dist/types/ordersV2.cjs +30 -0
  183. package/dist/types/ordersV2.cjs.map +1 -0
  184. package/dist/types/ordersV2.d.cts +113 -0
  185. package/dist/types/ordersV2.d.ts +114 -0
  186. package/dist/types/ordersV2.js +29 -0
  187. package/dist/types/ordersV2.js.map +1 -0
  188. package/dist/types/unifiedOrder.cjs +10 -0
  189. package/dist/types/unifiedOrder.cjs.map +1 -0
  190. package/dist/types/unifiedOrder.d.cts +56 -0
  191. package/dist/types/unifiedOrder.d.ts +57 -0
  192. package/dist/types/unifiedOrder.js +9 -0
  193. package/dist/types/unifiedOrder.js.map +1 -0
  194. package/dist/utilities.cjs +50 -0
  195. package/dist/utilities.cjs.map +1 -0
  196. package/dist/utilities.js +43 -0
  197. package/dist/utilities.js.map +1 -0
  198. package/package.json +3 -3
  199. package/dist/index.cjs.map +0 -1
  200. package/dist/index.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ //#region src/utilities.ts
2
+ const roundNormal = (num, decimals) => {
3
+ if (decimalPlaces(num) <= decimals) return num;
4
+ return Math.round((num + Number.EPSILON) * 10 ** decimals) / 10 ** decimals;
5
+ };
6
+ const roundDown = (num, decimals) => {
7
+ if (decimalPlaces(num) <= decimals) return num;
8
+ return Math.floor(num * 10 ** decimals) / 10 ** decimals;
9
+ };
10
+ const roundUp = (num, decimals) => {
11
+ if (decimalPlaces(num) <= decimals) return num;
12
+ return Math.ceil(num * 10 ** decimals) / 10 ** decimals;
13
+ };
14
+ const decimalPlaces = (num) => {
15
+ if (Number.isInteger(num)) return 0;
16
+ const arr = num.toString().split(".");
17
+ if (arr.length <= 1) return 0;
18
+ return arr[1].length;
19
+ };
20
+ /**
21
+ * Calculates the hash for the given orderbook
22
+ * @param orderbook
23
+ * @returns
24
+ */
25
+ const generateOrderBookSummaryHash = async (orderbook) => {
26
+ if (!globalThis.crypto?.subtle) throw new Error("generateOrderBookSummaryHash: globalThis.crypto.subtle is unavailable. Requires Node >=20 or a secure browser context (HTTPS or localhost).");
27
+ orderbook.hash = "";
28
+ const data = new TextEncoder().encode(JSON.stringify(orderbook));
29
+ const hashBuffer = await globalThis.crypto.subtle.digest("SHA-1", data);
30
+ const hash = Array.from(new Uint8Array(hashBuffer)).map((b) => b.toString(16).padStart(2, "0")).join("");
31
+ orderbook.hash = hash;
32
+ return hash;
33
+ };
34
+ const isTickSizeSmaller = (a, b) => {
35
+ return parseFloat(a) < parseFloat(b);
36
+ };
37
+ const priceValid = (price, tickSize) => {
38
+ return price >= parseFloat(tickSize) && price <= 1 - parseFloat(tickSize);
39
+ };
40
+
41
+ //#endregion
42
+ export { decimalPlaces, generateOrderBookSummaryHash, isTickSizeSmaller, priceValid, roundDown, roundNormal, roundUp };
43
+ //# sourceMappingURL=utilities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utilities.js","names":[],"sources":["../src/utilities.ts"],"sourcesContent":["import type { OrderBookSummary, TickSize } from \"./types/index.js\";\n\nexport const roundNormal = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.round((num + Number.EPSILON) * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const roundDown = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.floor(num * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const roundUp = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.ceil(num * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const decimalPlaces = (num: number): number => {\n\tif (Number.isInteger(num)) {\n\t\treturn 0;\n\t}\n\n\tconst arr = num.toString().split(\".\");\n\tif (arr.length <= 1) {\n\t\treturn 0;\n\t}\n\n\treturn arr[1].length;\n};\n\n/**\n * Calculates the hash for the given orderbook\n * @param orderbook\n * @returns\n */\nexport const generateOrderBookSummaryHash = async (\n\torderbook: OrderBookSummary,\n): Promise<string> => {\n\tif (!globalThis.crypto?.subtle) {\n\t\tthrow new Error(\n\t\t\t\"generateOrderBookSummaryHash: globalThis.crypto.subtle is unavailable. Requires Node >=20 or a secure browser context (HTTPS or localhost).\",\n\t\t);\n\t}\n\torderbook.hash = \"\";\n\tconst data = new TextEncoder().encode(JSON.stringify(orderbook));\n\tconst hashBuffer = await globalThis.crypto.subtle.digest(\"SHA-1\", data);\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\n\tconst hash = hashArray.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n\torderbook.hash = hash;\n\treturn hash;\n};\n\nexport const isTickSizeSmaller = (a: TickSize, b: TickSize): boolean => {\n\treturn parseFloat(a) < parseFloat(b);\n};\n\nexport const priceValid = (price: number, tickSize: TickSize): boolean => {\n\treturn price >= parseFloat(tickSize) && price <= 1 - parseFloat(tickSize);\n};\n"],"mappings":";AAEA,MAAa,eAAe,KAAa,aAA6B;AACrE,KAAI,cAAc,IAAI,IAAI,SACzB,QAAO;AAER,QAAO,KAAK,OAAO,MAAM,OAAO,WAAW,MAAM,SAAS,GAAG,MAAM;;AAGpE,MAAa,aAAa,KAAa,aAA6B;AACnE,KAAI,cAAc,IAAI,IAAI,SACzB,QAAO;AAER,QAAO,KAAK,MAAM,MAAM,MAAM,SAAS,GAAG,MAAM;;AAGjD,MAAa,WAAW,KAAa,aAA6B;AACjE,KAAI,cAAc,IAAI,IAAI,SACzB,QAAO;AAER,QAAO,KAAK,KAAK,MAAM,MAAM,SAAS,GAAG,MAAM;;AAGhD,MAAa,iBAAiB,QAAwB;AACrD,KAAI,OAAO,UAAU,IAAI,CACxB,QAAO;CAGR,MAAM,MAAM,IAAI,UAAU,CAAC,MAAM,IAAI;AACrC,KAAI,IAAI,UAAU,EACjB,QAAO;AAGR,QAAO,IAAI,GAAG;;;;;;;AAQf,MAAa,+BAA+B,OAC3C,cACqB;AACrB,KAAI,CAAC,WAAW,QAAQ,OACvB,OAAM,IAAI,MACT,8IACA;AAEF,WAAU,OAAO;CACjB,MAAM,OAAO,IAAI,aAAa,CAAC,OAAO,KAAK,UAAU,UAAU,CAAC;CAChE,MAAM,aAAa,MAAM,WAAW,OAAO,OAAO,OAAO,SAAS,KAAK;CAEvE,MAAM,OADY,MAAM,KAAK,IAAI,WAAW,WAAW,CAAC,CACjC,KAAI,MAAK,EAAE,SAAS,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,KAAK,GAAG;AACzE,WAAU,OAAO;AACjB,QAAO;;AAGR,MAAa,qBAAqB,GAAa,MAAyB;AACvE,QAAO,WAAW,EAAE,GAAG,WAAW,EAAE;;AAGrC,MAAa,cAAc,OAAe,aAAgC;AACzE,QAAO,SAAS,WAAW,SAAS,IAAI,SAAS,IAAI,WAAW,SAAS"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@polymarket/clob-client-v2",
3
3
  "description": "TypeScript client for Polymarket's CLOB",
4
- "version": "1.0.4",
4
+ "version": "1.0.6-pr79.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs",
7
7
  "types": "dist/index.d.ts",
@@ -47,13 +47,13 @@
47
47
  "dotenv": "^17.3.1",
48
48
  "ethers": "^5.8.0",
49
49
  "husky": "^9.1.7",
50
- "tsup": "^8.5.1",
50
+ "tsdown": "^0.16.8",
51
51
  "typescript": "^6.0.2",
52
52
  "vitest": "^4.0.15",
53
53
  "ws": "^8.18.3"
54
54
  },
55
55
  "scripts": {
56
- "build": "tsup",
56
+ "build": "tsdown",
57
57
  "lint": "biome check ./src ./tests",
58
58
  "format": "biome check --write ./src ./tests",
59
59
  "deploy": "pnpm build && npm publish",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/index.ts","../src/constants.ts","../src/endpoints.ts","../src/errors.ts","../src/fees/index.ts","../src/signing/constants.ts","../src/signing/signer.ts","../src/signing/eip712.ts","../src/signing/hmac.ts","../src/headers/index.ts","../src/http-helpers/index.ts","../src/order-builder/helpers/buildMarketOrderCreationArgs.ts","../src/config.ts","../src/order-utils/exchangeOrderBuilderV1.ts","../src/order-utils/model/ctfExchangeV1TypedData.ts","../src/order-utils/model/eip712.ts","../src/order-utils/model/signatureTypeV1.ts","../src/order-utils/utils.ts","../src/order-utils/exchangeOrderBuilderV2.ts","../src/order-utils/model/ctfExchangeV2TypedData.ts","../src/order-utils/model/signatureTypeV2.ts","../src/order-builder/helpers/buildOrder.ts","../src/order-builder/helpers/buildOrderCreationArgs.ts","../src/order-utils/model/side.ts","../src/types/clob.ts","../src/types/ordersV1.ts","../src/types/ordersV2.ts","../src/types/unifiedOrder.ts","../src/utilities.ts","../src/order-builder/helpers/getOrderRawAmounts.ts","../src/order-builder/helpers/calculateBuyMarketPrice.ts","../src/order-builder/helpers/calculateSellMarketPrice.ts","../src/order-builder/helpers/roundingConfig.ts","../src/order-builder/helpers/createMarketOrder.ts","../src/order-builder/helpers/createOrder.ts","../src/order-builder/helpers/getMarketOrderRawAmounts.ts","../src/order-builder/orderBuilder.ts","../src/client.ts"],"sourcesContent":["export * from \"./client.js\";\nexport * from \"./config.js\";\nexport * from \"./errors.js\";\nexport * from \"./headers/index.js\";\nexport * from \"./order-builder/index.js\";\nexport * from \"./order-utils/model/signatureTypeV1.js\";\nexport * from \"./order-utils/model/signatureTypeV2.js\";\nexport * from \"./types/index.js\";\n","export const CREDS_CREATION_WARNING = `🚨🚨🚨\nYour credentials CANNOT be recovered after they've been created. \nBe sure to store them safely!\n🚨🚨🚨`;\n\nexport const INITIAL_CURSOR = \"MA==\";\nexport const END_CURSOR = \"LTE=\";\n\nexport const bytes32Zero = \"0x0000000000000000000000000000000000000000000000000000000000000000\";\n\nexport const ORDER_VERSION_MISMATCH_ERROR = \"order_version_mismatch\";\n\nexport const BUILDER_FEES_BPS = 10000;\n","// Health\nexport const OK = \"/ok\";\nexport const HEARTBEAT = \"/v1/heartbeats\";\n\n// Server Time\nexport const TIME = \"/time\";\n\n// API Key endpoints\nexport const CREATE_API_KEY = \"/auth/api-key\";\nexport const GET_API_KEYS = \"/auth/api-keys\";\nexport const DELETE_API_KEY = \"/auth/api-key\";\nexport const DERIVE_API_KEY = \"/auth/derive-api-key\";\nexport const CLOSED_ONLY = \"/auth/ban-status/closed-only\";\n\n// Markets\nexport const GET_SAMPLING_SIMPLIFIED_MARKETS = \"/sampling-simplified-markets\";\nexport const GET_SAMPLING_MARKETS = \"/sampling-markets\";\nexport const GET_SIMPLIFIED_MARKETS = \"/simplified-markets\";\nexport const GET_MARKETS = \"/markets\";\nexport const GET_MARKET = \"/markets/\";\nexport const GET_MARKET_BY_TOKEN = \"/markets-by-token/\";\nexport const GET_CLOB_MARKET = \"/clob-markets/\";\nexport const GET_ORDER_BOOK = \"/book\";\nexport const GET_ORDER_BOOKS = \"/books\";\nexport const GET_MIDPOINT = \"/midpoint\";\nexport const GET_MIDPOINTS = \"/midpoints\";\nexport const GET_PRICE = \"/price\";\nexport const GET_PRICES = \"/prices\";\nexport const GET_SPREAD = \"/spread\";\nexport const GET_SPREADS = \"/spreads\";\nexport const GET_LAST_TRADE_PRICE = \"/last-trade-price\";\nexport const GET_LAST_TRADES_PRICES = \"/last-trades-prices\";\nexport const GET_TICK_SIZE = \"/tick-size\";\nexport const GET_NEG_RISK = \"/neg-risk\";\nexport const GET_FEE_RATE = \"/fee-rate\";\n\n// Order endpoints\nexport const POST_ORDER = \"/order\";\nexport const POST_ORDERS = \"/orders\";\nexport const CANCEL_ORDER = \"/order\";\nexport const CANCEL_ORDERS = \"/orders\";\nexport const GET_ORDER = \"/data/order/\";\nexport const CANCEL_ALL = \"/cancel-all\";\nexport const CANCEL_MARKET_ORDERS = \"/cancel-market-orders\";\nexport const GET_OPEN_ORDERS = \"/data/orders\";\nexport const GET_PRE_MIGRATION_ORDERS = \"/data/pre-migration-orders\";\nexport const GET_TRADES = \"/data/trades\";\nexport const IS_ORDER_SCORING = \"/order-scoring\";\nexport const ARE_ORDERS_SCORING = \"/orders-scoring\";\n\n// Price history\nexport const GET_PRICES_HISTORY = \"/prices-history\";\n\n// Notifications\nexport const GET_NOTIFICATIONS = \"/notifications\";\nexport const DROP_NOTIFICATIONS = \"/notifications\";\n\n// Balance\nexport const GET_BALANCE_ALLOWANCE = \"/balance-allowance\";\nexport const UPDATE_BALANCE_ALLOWANCE = \"/balance-allowance/update\";\n\n// Rewards\nexport const GET_EARNINGS_FOR_USER_FOR_DAY = \"/rewards/user\";\nexport const GET_TOTAL_EARNINGS_FOR_USER_FOR_DAY = \"/rewards/user/total\";\nexport const GET_LIQUIDITY_REWARD_PERCENTAGES = \"/rewards/user/percentages\";\nexport const GET_REWARDS_MARKETS_CURRENT = \"/rewards/markets/current\";\nexport const GET_REWARDS_MARKETS = \"/rewards/markets/\";\nexport const GET_REWARDS_EARNINGS_PERCENTAGES = \"/rewards/user/markets\";\n\n// Readonly API Key endpoints\nexport const CREATE_READONLY_API_KEY = \"/auth/readonly-api-key\";\nexport const GET_READONLY_API_KEYS = \"/auth/readonly-api-keys\";\nexport const DELETE_READONLY_API_KEY = \"/auth/readonly-api-key\";\n\n// Builder API Key endpoints\nexport const CREATE_BUILDER_API_KEY = \"/auth/builder-api-key\";\nexport const GET_BUILDER_API_KEYS = \"/auth/builder-api-key\";\nexport const REVOKE_BUILDER_API_KEY = \"/auth/builder-api-key\";\n\n// Live activity\nexport const GET_MARKET_TRADES_EVENTS = \"/markets/live-activity/\";\n\n// Builder endpoints\nexport const GET_BUILDER_TRADES = \"/builder/trades\";\n\n// Fees\nexport const GET_BUILDER_FEES = \"/fees/builder-fees/\";\n","export const L1_AUTH_UNAVAILABLE_ERROR = new Error(\n\t\"Signer is needed to interact with this endpoint!\",\n);\n\nexport const L2_AUTH_NOT_AVAILABLE = new Error(\n\t\"API Credentials are needed to interact with this endpoint!\",\n);\n\nexport class ApiError extends Error {\n\treadonly status?: number;\n\treadonly data?: unknown;\n\n\tconstructor(message: string, status?: number, data?: unknown) {\n\t\tsuper(message);\n\t\tthis.name = \"ApiError\";\n\t\tthis.status = status;\n\t\tthis.data = data;\n\t}\n}\n","const MIN_FEE_SLIPPAGE_PERCENTAGE = 1;\nconst MAX_FEE_SLIPPAGE_PERCENTAGE = 100;\n\nexport function validateFeeSlippage(feeSlippage: number): void {\n\tif (\n\t\t!Number.isFinite(feeSlippage) ||\n\t\tfeeSlippage < 0 ||\n\t\tfeeSlippage > MAX_FEE_SLIPPAGE_PERCENTAGE ||\n\t\t(feeSlippage > 0 && feeSlippage < MIN_FEE_SLIPPAGE_PERCENTAGE)\n\t) {\n\t\tthrow new Error(\"feeSlippage must be 0 or a percentage between 1 and 100\");\n\t}\n}\n\nexport function adjustBuyAmountForFees(\n\tamount: number,\n\tprice: number,\n\tuserUSDCBalance: number,\n\tfeeRate: number,\n\tfeeExponent: number,\n\tbuilderTakerFeeRate: number,\n\tfeeSlippage = 0,\n): number {\n\tvalidateFeeSlippage(feeSlippage);\n\tconst platformFeeRate = feeRate * (price * (1 - price)) ** feeExponent;\n\tconst effectivePlatformFeeRate = platformFeeRate * (1 + feeSlippage / 100);\n\tconst feeBaseAmount = Math.min(amount, userUSDCBalance);\n\tconst platformFee = (feeBaseAmount / price) * effectivePlatformFeeRate;\n\tconst builderFee = feeBaseAmount * builderTakerFeeRate;\n\tconst totalCost = amount + platformFee + builderFee;\n\n\tif (userUSDCBalance <= totalCost) {\n\t\treturn Math.max(userUSDCBalance - platformFee - builderFee, 0);\n\t}\n\n\treturn amount;\n}\n","export const CLOB_DOMAIN_NAME = \"ClobAuthDomain\";\nexport const CLOB_VERSION = \"1\";\nexport const MSG_TO_SIGN = \"This message attests that I control the given wallet\";\n\nexport const CLOB_DOMAIN = {\n\tname: CLOB_DOMAIN_NAME,\n\tversion: CLOB_VERSION,\n\tchainId: 1,\n};\n\nexport const CLOB_TYPES = {\n\tClobAuth: [\n\t\t{ name: \"address\", type: \"address\" },\n\t\t{ name: \"timestamp\", type: \"string\" },\n\t\t{ name: \"message\", type: \"string\" },\n\t],\n};\n","import type { Account, Address, WalletClient } from \"viem\";\n\ntype TypedDataDomain = Record<string, unknown>;\ntype TypedDataTypes = Record<string, Array<{ name: string; type: string }>>;\ntype TypedDataValue = Record<string, unknown>;\n\ninterface EthersSigner {\n\t_signTypedData(\n\t\tdomain: TypedDataDomain,\n\t\ttypes: TypedDataTypes,\n\t\tvalue: TypedDataValue,\n\t): Promise<string>;\n\tgetAddress(): Promise<string>;\n}\n\nexport type ClobSigner = EthersSigner | WalletClient;\n\nconst isEthersTypedDataSigner = (signer: ClobSigner): signer is EthersSigner =>\n\t// eslint-disable-next-line no-underscore-dangle\n\ttypeof (signer as EthersSigner)._signTypedData === \"function\";\n\nconst isWalletClientSigner = (signer: ClobSigner): signer is WalletClient =>\n\ttypeof (signer as WalletClient).signTypedData === \"function\";\n\nexport const getWalletClientAddress = async (walletClient: WalletClient): Promise<Address> => {\n\tconst accountAddress = walletClient.account?.address;\n\tif (typeof accountAddress === \"string\" && accountAddress.length > 0) {\n\t\treturn accountAddress as Address;\n\t}\n\n\tif (typeof walletClient.requestAddresses === \"function\") {\n\t\tconst [address] = await walletClient.requestAddresses();\n\t\tif (typeof address === \"string\" && address.length > 0) {\n\t\t\treturn address as Address;\n\t\t}\n\t}\n\n\tif (typeof walletClient.getAddresses === \"function\") {\n\t\tconst [address] = await walletClient.getAddresses();\n\t\tif (typeof address === \"string\" && address.length > 0) {\n\t\t\treturn address as Address;\n\t\t}\n\t}\n\n\tthrow new Error(\"wallet client is missing account address\");\n};\n\nexport const getSignerAddress = async (signer: ClobSigner): Promise<string> => {\n\tif (isEthersTypedDataSigner(signer)) {\n\t\treturn signer.getAddress();\n\t}\n\n\tif (isWalletClientSigner(signer)) {\n\t\treturn getWalletClientAddress(signer);\n\t}\n\n\tthrow new Error(\"unsupported signer type\");\n};\n\nexport const signTypedDataWithSigner = async ({\n\tsigner,\n\tdomain,\n\ttypes,\n\tvalue,\n\tprimaryType,\n}: {\n\tsigner: ClobSigner;\n\tdomain: TypedDataDomain;\n\ttypes: TypedDataTypes;\n\tvalue: TypedDataValue;\n\tprimaryType?: string;\n}): Promise<string> => {\n\tif (isEthersTypedDataSigner(signer)) {\n\t\t// eslint-disable-next-line no-underscore-dangle\n\t\treturn signer._signTypedData(domain, types, value);\n\t}\n\n\tif (isWalletClientSigner(signer)) {\n\t\tconst account: Account | Address = signer.account ?? (await getWalletClientAddress(signer));\n\t\treturn signer.signTypedData({\n\t\t\taccount,\n\t\t\tdomain,\n\t\t\ttypes,\n\t\t\tprimaryType,\n\t\t\tmessage: value,\n\t\t} as Parameters<WalletClient[\"signTypedData\"]>[0]);\n\t}\n\n\tthrow new Error(\"unsupported signer type\");\n};\n","import type { Chain } from \"../types/index.js\";\n\nimport { MSG_TO_SIGN } from \"./constants.js\";\nimport { type ClobSigner, getSignerAddress, signTypedDataWithSigner } from \"./signer.js\";\n\n/**\n * Builds the canonical Polymarket CLOB EIP712 signature\n * @param signer\n * @param ts\n * @returns string\n */\nexport const buildClobEip712Signature = async (\n\tsigner: ClobSigner,\n\tchainId: Chain,\n\ttimestamp: number,\n\tnonce: number,\n\taddress?: string,\n): Promise<string> => {\n\tconst resolvedAddress = address ?? (await getSignerAddress(signer));\n\tconst ts = timestamp.toString();\n\n\tconst domain = {\n\t\tname: \"ClobAuthDomain\",\n\t\tversion: \"1\",\n\t\tchainId: chainId,\n\t};\n\n\tconst types = {\n\t\tClobAuth: [\n\t\t\t{ name: \"address\", type: \"address\" },\n\t\t\t{ name: \"timestamp\", type: \"string\" },\n\t\t\t{ name: \"nonce\", type: \"uint256\" },\n\t\t\t{ name: \"message\", type: \"string\" },\n\t\t],\n\t};\n\tconst value = {\n\t\taddress: resolvedAddress,\n\t\ttimestamp: ts,\n\t\tnonce,\n\t\tmessage: MSG_TO_SIGN,\n\t};\n\tconst sig = await signTypedDataWithSigner({\n\t\tsigner,\n\t\tdomain,\n\t\ttypes,\n\t\tvalue,\n\t\tprimaryType: \"ClobAuth\",\n\t});\n\treturn sig;\n};\n","/**\n * Builds the canonical Polymarket CLOB HMAC signature\n * @param secret\n * @param timestamp\n * @param method\n * @param requestPath\n * @param body\n * @returns string\n */\nexport const buildPolyHmacSignature = async (\n\tsecret: string,\n\ttimestamp: number,\n\tmethod: string,\n\trequestPath: string,\n\tbody?: string,\n): Promise<string> => {\n\tlet message = timestamp + method + requestPath;\n\tif (body !== undefined) {\n\t\tmessage += body;\n\t}\n\n\tconst binarySecret = atob(secret);\n\tconst keyBytes = new Uint8Array(binarySecret.length);\n\tfor (let i = 0; i < binarySecret.length; i++) {\n\t\tkeyBytes[i] = binarySecret.charCodeAt(i);\n\t}\n\n\tconst key = await globalThis.crypto.subtle.importKey(\n\t\t\"raw\",\n\t\tkeyBytes,\n\t\t{ name: \"HMAC\", hash: \"SHA-256\" },\n\t\tfalse,\n\t\t[\"sign\"],\n\t);\n\n\tconst sigBuffer = await globalThis.crypto.subtle.sign(\n\t\t\"HMAC\",\n\t\tkey,\n\t\tnew TextEncoder().encode(message),\n\t);\n\n\tconst sigBytes = new Uint8Array(sigBuffer);\n\tlet binary = \"\";\n\tfor (let i = 0; i < sigBytes.length; i++) {\n\t\tbinary += String.fromCharCode(sigBytes[i]);\n\t}\n\t// NOTE: Must be url safe base64 encoding, but keep base64 \"=\" suffix\n\t// Convert '+' to '-'\n\t// Convert '/' to '_'\n\treturn btoa(binary).replace(/\\+/g, \"-\").replace(/\\//g, \"_\");\n};\n","import {\n\tbuildClobEip712Signature,\n\tbuildPolyHmacSignature,\n\ttype ClobSigner,\n} from \"../signing/index.js\";\nimport { getSignerAddress } from \"../signing/signer.js\";\nimport type {\n\tApiKeyCreds,\n\tChain,\n\tL1PolyHeader,\n\tL2HeaderArgs,\n\tL2PolyHeader,\n} from \"../types/index.js\";\n\nexport const createL1Headers = async (\n\tsigner: ClobSigner,\n\tchainId: Chain,\n\tnonce?: number,\n\ttimestamp?: number,\n\taddress?: string,\n): Promise<L1PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tlet n = 0; // Default nonce is 0\n\tif (nonce !== undefined) {\n\t\tn = nonce;\n\t}\n\n\tconst sig = await buildClobEip712Signature(signer, chainId, ts, n, address);\n\tconst resolvedAddress = address ?? (await getSignerAddress(signer));\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: resolvedAddress,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_NONCE: `${n}`,\n\t};\n\treturn headers;\n};\n\nexport const createL2Headers = async (\n\tsigner: ClobSigner,\n\tcreds: ApiKeyCreds,\n\tl2HeaderArgs: L2HeaderArgs,\n\ttimestamp?: number,\n): Promise<L2PolyHeader> => {\n\tlet ts = Math.floor(Date.now() / 1000);\n\tif (timestamp !== undefined) {\n\t\tts = timestamp;\n\t}\n\tconst address = await getSignerAddress(signer);\n\n\tconst sig = await buildPolyHmacSignature(\n\t\tcreds.secret,\n\t\tts,\n\t\tl2HeaderArgs.method,\n\t\tl2HeaderArgs.requestPath,\n\t\tl2HeaderArgs.body,\n\t);\n\n\tconst headers = {\n\t\tPOLY_ADDRESS: address,\n\t\tPOLY_SIGNATURE: sig,\n\t\tPOLY_TIMESTAMP: `${ts}`,\n\t\tPOLY_API_KEY: creds.key,\n\t\tPOLY_PASSPHRASE: creds.passphrase,\n\t};\n\n\treturn headers;\n};\n","/* eslint-disable max-depth */\nimport axios, { type Method, type RawAxiosRequestHeaders } from \"axios\";\nimport { isBrowser } from \"browser-or-node\";\n\nimport type { DropNotificationParams, OrdersScoringParams } from \"../types/index.js\";\n\nexport const GET = \"GET\";\nexport const POST = \"POST\";\nexport const DELETE = \"DELETE\";\nexport const PUT = \"PUT\";\n\nconst overloadHeaders = (\n\tmethod: Method,\n\theaders: Record<string, string | number | boolean> = {},\n) => {\n\tif (isBrowser) {\n\t\treturn;\n\t}\n\n\theaders[\"User-Agent\"] = `@polymarket/clob-client`;\n\theaders.Accept = \"*/*\";\n\theaders.Connection = \"keep-alive\";\n\theaders[\"Content-Type\"] = \"application/json\";\n\n\tif (method === GET) {\n\t\theaders[\"Accept-Encoding\"] = \"gzip\";\n\t}\n};\n\nexport const request = async (\n\tendpoint: string,\n\tmethod: Method,\n\theaders?: any,\n\tdata?: any,\n\tparams?: any,\n): Promise<any> => {\n\toverloadHeaders(method, headers);\n\treturn await axios({ method, url: endpoint, headers, data, params });\n};\n\nexport type QueryParams = Record<string, any>;\n\nexport interface RequestOptions {\n\theaders?: RawAxiosRequestHeaders;\n\tdata?: any;\n\tparams?: QueryParams;\n}\n\nconst sleep = (ms: number) => new Promise(res => setTimeout(res, ms));\n\nexport const post = async (\n\tendpoint: string,\n\toptions?: RequestOptions,\n\tretryOnError: boolean = false,\n): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tPOST,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\tif (retryOnError && isTransientAxiosError(err)) {\n\t\t\tawait sleep(30);\n\t\t\ttry {\n\t\t\t\tconst resp = await request(\n\t\t\t\t\tendpoint,\n\t\t\t\t\tPOST,\n\t\t\t\t\toptions?.headers,\n\t\t\t\t\toptions?.data,\n\t\t\t\t\toptions?.params,\n\t\t\t\t);\n\t\t\t\treturn resp.data;\n\t\t\t} catch (retryErr: unknown) {\n\t\t\t\treturn errorHandling(retryErr);\n\t\t\t}\n\t\t}\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const get = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(endpoint, GET, options?.headers, options?.data, options?.params);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nexport const del = async (endpoint: string, options?: RequestOptions): Promise<any> => {\n\ttry {\n\t\tconst resp = await request(\n\t\t\tendpoint,\n\t\t\tDELETE,\n\t\t\toptions?.headers,\n\t\t\toptions?.data,\n\t\t\toptions?.params,\n\t\t);\n\t\treturn resp.data;\n\t} catch (err: unknown) {\n\t\treturn errorHandling(err);\n\t}\n};\n\nconst errorHandling = (err: unknown) => {\n\tif (axios.isAxiosError(err)) {\n\t\tif (err.response) {\n\t\t\tif (err.response?.data) {\n\t\t\t\tif (\n\t\t\t\t\ttypeof err.response?.data === \"string\" ||\n\t\t\t\t\terr.response?.data instanceof String\n\t\t\t\t) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// biome-ignore lint/suspicious/noPrototypeBuiltins: ES2022 Object.hasOwn not available with current target\n\t\t\t\tif (!Object.prototype.hasOwnProperty.call(err.response?.data, \"error\")) {\n\t\t\t\t\treturn { error: err.response?.data, status: err.response?.status };\n\t\t\t\t}\n\t\t\t\t// in this case the field 'error' is included\n\t\t\t\treturn { ...err.response?.data, status: err.response?.status };\n\t\t\t}\n\t\t}\n\n\t\tif (err.message) {\n\t\t\treturn { error: err.message };\n\t\t}\n\t}\n\n\treturn { error: err };\n};\n\nconst isTransientAxiosError = (err: unknown): boolean => {\n\tif (!axios.isAxiosError(err)) return false;\n\tif (!err.response) return true; // network error\n\tconst status = err.response.status ?? 0;\n\tif (status >= 500 && status < 600) return true; // 5xx\n\tconst code = (err.code ?? \"\").toString();\n\treturn [\"ECONNABORTED\", \"ENETUNREACH\", \"EAI_AGAIN\", \"ETIMEDOUT\"].includes(code);\n};\n\nexport const parseOrdersScoringParams = (orderScoringParams?: OrdersScoringParams): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (orderScoringParams !== undefined) {\n\t\tif (orderScoringParams.orderIds !== undefined) {\n\t\t\tparams.order_ids = orderScoringParams?.orderIds.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n\nexport const parseDropNotificationParams = (\n\tdropNotificationParams?: DropNotificationParams,\n): QueryParams => {\n\tconst params: QueryParams = {};\n\tif (dropNotificationParams !== undefined) {\n\t\tif (dropNotificationParams.ids !== undefined) {\n\t\t\tparams.ids = dropNotificationParams?.ids.join(\",\");\n\t\t}\n\t}\n\treturn params;\n};\n","import { parseUnits, zeroAddress } from \"viem\";\n\nimport { COLLATERAL_TOKEN_DECIMALS } from \"../../config.js\";\nimport { bytes32Zero } from \"../../constants.js\";\nimport type {\n\tOrderDataV1,\n\tOrderDataV2,\n\tSignatureTypeV1,\n\tSignatureTypeV2,\n} from \"../../order-utils/index.js\";\nimport type { RoundConfig, UserMarketOrderV1, UserMarketOrderV2 } from \"../../types/index.js\";\n\nimport { getMarketOrderRawAmounts } from \"./index.js\";\n\nexport async function buildMarketOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\troundConfig: RoundConfig,\n\tversion: 1,\n): Promise<OrderDataV1>;\nexport async function buildMarketOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\troundConfig: RoundConfig,\n\tversion?: 2,\n): Promise<OrderDataV2>;\nexport async function buildMarketOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\troundConfig: RoundConfig,\n\tversion: number,\n): Promise<OrderDataV1 | OrderDataV2>;\nexport async function buildMarketOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\troundConfig: RoundConfig,\n\tversion: number = 2,\n): Promise<OrderDataV1 | OrderDataV2> {\n\tconst { side, rawMakerAmt, rawTakerAmt } = getMarketOrderRawAmounts(\n\t\tuserMarketOrder.side,\n\t\tuserMarketOrder.amount,\n\t\tuserMarketOrder.price || 1,\n\t\troundConfig,\n\t);\n\n\tconst makerAmount = parseUnits(rawMakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();\n\tconst takerAmount = parseUnits(rawTakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();\n\n\tif (version === 1) {\n\t\tconst v1Order = userMarketOrder as UserMarketOrderV1;\n\t\treturn {\n\t\t\tmaker,\n\t\t\ttaker: v1Order.taker ?? zeroAddress,\n\t\t\ttokenId: userMarketOrder.tokenID,\n\t\t\tmakerAmount,\n\t\t\ttakerAmount,\n\t\t\tside,\n\t\t\tsigner,\n\t\t\tsignatureType: signatureType as unknown as SignatureTypeV1,\n\t\t\tfeeRateBps: v1Order.feeRateBps?.toString() ?? \"0\",\n\t\t\tnonce: v1Order.nonce?.toString() ?? \"0\",\n\t\t};\n\t}\n\n\treturn {\n\t\tmaker,\n\t\ttokenId: userMarketOrder.tokenID,\n\t\tmakerAmount,\n\t\ttakerAmount,\n\t\tside,\n\t\tsigner,\n\t\tsignatureType,\n\t\ttimestamp: Date.now().toString(),\n\t\tmetadata:\n\t\t\t\"metadata\" in userMarketOrder ? (userMarketOrder.metadata ?? bytes32Zero) : bytes32Zero,\n\t\tbuilder: userMarketOrder.builderCode ?? bytes32Zero,\n\t};\n}\n","type ContractConfig = {\n\texchange: string;\n\tnegRiskAdapter: string;\n\tnegRiskExchange: string;\n\tcollateral: string;\n\tconditionalTokens: string;\n\n\texchangeV2: string;\n\tnegRiskExchangeV2: string;\n};\n\nconst AMOY_CONTRACTS: ContractConfig = {\n\texchange: \"0xdFE02Eb6733538f8Ea35D585af8DE5958AD99E40\",\n\tnegRiskAdapter: \"0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296\",\n\tnegRiskExchange: \"0xC5d563A36AE78145C45a50134d48A1215220f80a\",\n\tcollateral: \"0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB\",\n\tconditionalTokens: \"0x69308FB512518e39F9b16112fA8d994F4e2Bf8bB\",\n\texchangeV2: \"0xE111180000d2663C0091e4f400237545B87B996B\",\n\tnegRiskExchangeV2: \"0xe2222d279d744050d28e00520010520000310F59\",\n};\n\nconst MATIC_CONTRACTS: ContractConfig = {\n\texchange: \"0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E\",\n\tnegRiskAdapter: \"0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296\",\n\tnegRiskExchange: \"0xC5d563A36AE78145C45a50134d48A1215220f80a\",\n\tcollateral: \"0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB\",\n\tconditionalTokens: \"0x4D97DCd97eC945f40cF65F87097ACe5EA0476045\",\n\texchangeV2: \"0xE111180000d2663C0091e4f400237545B87B996B\",\n\tnegRiskExchangeV2: \"0xe2222d279d744050d28e00520010520000310F59\",\n};\n\nconst COLLATERAL_TOKEN_DECIMALS = 6;\nconst CONDITIONAL_TOKEN_DECIMALS = 6;\n\nconst getContractConfig = (chainID: number): ContractConfig => {\n\tswitch (chainID) {\n\t\tcase 137:\n\t\t\treturn MATIC_CONTRACTS;\n\t\tcase 80002:\n\t\t\treturn AMOY_CONTRACTS;\n\t\tdefault:\n\t\t\tthrow new Error(\"Invalid network\");\n\t}\n};\n\nexport type { ContractConfig };\nexport { getContractConfig, COLLATERAL_TOKEN_DECIMALS, CONDITIONAL_TOKEN_DECIMALS };\n","import { hashTypedData } from \"viem\";\nimport { type ClobSigner, getSignerAddress, signTypedDataWithSigner } from \"../signing/signer.js\";\nimport {\n\tCTF_EXCHANGE_V1_DOMAIN_NAME,\n\tCTF_EXCHANGE_V1_DOMAIN_VERSION,\n\tCTF_EXCHANGE_V1_ORDER_STRUCT,\n} from \"./model/ctfExchangeV1TypedData.js\";\nimport { EIP712_DOMAIN, type EIP712TypedData } from \"./model/eip712.js\";\nimport type { OrderHash, OrderSignature } from \"./model/order.js\";\nimport type { OrderDataV1, OrderV1, SignedOrderV1 } from \"./model/orderDataV1.js\";\nimport { SignatureTypeV1 } from \"./model/signatureTypeV1.js\";\nimport { generateOrderSalt } from \"./utils.js\";\n\nconst ZERO_ADDRESS = \"0x0000000000000000000000000000000000000000\";\n\nexport class ExchangeOrderBuilderV1 {\n\tconstructor(\n\t\tprivate readonly contractAddress: string,\n\t\tprivate readonly chainId: number,\n\t\tprivate readonly signer: ClobSigner,\n\t\tprivate readonly generateSalt = generateOrderSalt,\n\t) {}\n\n\t/**\n\t * build an order object including the signature.\n\t * @param orderData\n\t * @returns a SignedOrder object (order + signature)\n\t */\n\tasync buildSignedOrder(orderData: OrderDataV1): Promise<SignedOrderV1> {\n\t\tconst order = await this.buildOrder(orderData);\n\t\tconst orderTypedData = this.buildOrderTypedData(order);\n\t\tconst orderSignature = await this.buildOrderSignature(orderTypedData);\n\t\treturn {\n\t\t\t...order,\n\t\t\tsignature: orderSignature,\n\t\t} as SignedOrderV1;\n\t}\n\n\t/**\n\t * Creates an Order object from order data.\n\t * @param OrderData\n\t * @returns a Order object (not signed)\n\t */\n\tasync buildOrder({\n\t\tmaker,\n\t\ttaker,\n\t\ttokenId,\n\t\tmakerAmount,\n\t\ttakerAmount,\n\t\tside,\n\t\tfeeRateBps,\n\t\tnonce,\n\t\tsigner,\n\t\texpiration,\n\t\tsignatureType,\n\t}: OrderDataV1): Promise<OrderV1> {\n\t\tif (!signer) {\n\t\t\tsigner = maker;\n\t\t}\n\n\t\tconst signerAddress = await getSignerAddress(this.signer);\n\t\tif (signer !== signerAddress) {\n\t\t\tthrow new Error(\"signer does not match\");\n\t\t}\n\n\t\tif (!expiration) {\n\t\t\texpiration = \"0\";\n\t\t}\n\n\t\tif (!signatureType) {\n\t\t\t// Default to EOA 712 sig type\n\t\t\tsignatureType = SignatureTypeV1.EOA;\n\t\t}\n\n\t\tlet takerAddress: string;\n\t\tif (typeof taker !== \"undefined\" && taker) {\n\t\t\ttakerAddress = taker;\n\t\t} else {\n\t\t\ttakerAddress = ZERO_ADDRESS;\n\t\t}\n\n\t\tlet feeRateBpsResolved: string;\n\t\tif (typeof feeRateBps !== \"undefined\" && feeRateBps) {\n\t\t\tfeeRateBpsResolved = feeRateBps.toString();\n\t\t} else {\n\t\t\tfeeRateBpsResolved = \"0\";\n\t\t}\n\n\t\tlet nonceResolved: string;\n\t\tif (typeof nonce !== \"undefined\" && nonce) {\n\t\t\tnonceResolved = nonce.toString();\n\t\t} else {\n\t\t\tnonceResolved = \"0\";\n\t\t}\n\n\t\treturn {\n\t\t\tsalt: this.generateSalt(),\n\t\t\tmaker,\n\t\t\tsigner,\n\t\t\ttaker: takerAddress,\n\t\t\ttokenId,\n\t\t\tmakerAmount,\n\t\t\ttakerAmount,\n\t\t\texpiration,\n\t\t\tnonce: nonceResolved,\n\t\t\tfeeRateBps: feeRateBpsResolved,\n\t\t\tside,\n\t\t\tsignatureType,\n\t\t};\n\t}\n\n\t/**\n\t * Parses an Order object to EIP712 typed data\n\t * @param order\n\t * @returns a EIP712TypedData object\n\t */\n\tbuildOrderTypedData(order: OrderV1): EIP712TypedData {\n\t\treturn {\n\t\t\tprimaryType: \"Order\",\n\t\t\ttypes: {\n\t\t\t\tEIP712Domain: EIP712_DOMAIN,\n\t\t\t\tOrder: CTF_EXCHANGE_V1_ORDER_STRUCT,\n\t\t\t},\n\t\t\tdomain: {\n\t\t\t\tname: CTF_EXCHANGE_V1_DOMAIN_NAME,\n\t\t\t\tversion: CTF_EXCHANGE_V1_DOMAIN_VERSION,\n\t\t\t\tchainId: this.chainId,\n\t\t\t\tverifyingContract: this.contractAddress,\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\tsalt: order.salt,\n\t\t\t\tmaker: order.maker,\n\t\t\t\tsigner: order.signer,\n\t\t\t\ttaker: order.taker,\n\t\t\t\ttokenId: order.tokenId,\n\t\t\t\tmakerAmount: order.makerAmount,\n\t\t\t\ttakerAmount: order.takerAmount,\n\t\t\t\texpiration: order.expiration,\n\t\t\t\tnonce: order.nonce,\n\t\t\t\tfeeRateBps: order.feeRateBps,\n\t\t\t\tside: order.side === \"BUY\" ? 0 : 1,\n\t\t\t\tsignatureType: order.signatureType,\n\t\t\t},\n\t\t};\n\t}\n\n\t/**\n\t * Generates order's signature from a EIP712TypedData object + the signer address\n\t * @param typedData\n\t * @returns a OrderSignature that is an string\n\t */\n\tbuildOrderSignature(typedData: EIP712TypedData): Promise<OrderSignature> {\n\t\tdelete typedData.types.EIP712Domain;\n\t\treturn signTypedDataWithSigner({\n\t\t\tsigner: this.signer,\n\t\t\tdomain: typedData.domain,\n\t\t\ttypes: typedData.types,\n\t\t\tvalue: typedData.message,\n\t\t\tprimaryType: typedData.primaryType,\n\t\t});\n\t}\n\n\t/**\n\t * Generates the hash of the order from a EIP712TypedData object.\n\t * @param orderTypedData\n\t * @returns a OrderHash that is an string\n\t */\n\tbuildOrderHash(orderTypedData: EIP712TypedData): OrderHash {\n\t\tconst digest = hashTypedData(orderTypedData);\n\t\treturn digest;\n\t}\n}\n","export const CTF_EXCHANGE_V1_DOMAIN_NAME = \"Polymarket CTF Exchange\";\n\nexport const CTF_EXCHANGE_V1_DOMAIN_VERSION = \"1\";\n\nexport const CTF_EXCHANGE_V1_ORDER_STRUCT = [\n\t{ name: \"salt\", type: \"uint256\" },\n\t{ name: \"maker\", type: \"address\" },\n\t{ name: \"signer\", type: \"address\" },\n\t{ name: \"taker\", type: \"address\" },\n\t{ name: \"tokenId\", type: \"uint256\" },\n\t{ name: \"makerAmount\", type: \"uint256\" },\n\t{ name: \"takerAmount\", type: \"uint256\" },\n\t{ name: \"expiration\", type: \"uint256\" },\n\t{ name: \"nonce\", type: \"uint256\" },\n\t{ name: \"feeRateBps\", type: \"uint256\" },\n\t{ name: \"side\", type: \"uint8\" },\n\t{ name: \"signatureType\", type: \"uint8\" },\n];\n","export interface EIP712TypedData {\n\ttypes: EIP712Types;\n\tdomain: EIP712Object;\n\tmessage: EIP712Object;\n\tprimaryType: string;\n}\n\nexport interface EIP712Types {\n\t[key: string]: EIP712Parameter[];\n}\n\nexport interface EIP712Parameter {\n\tname: string;\n\ttype: string;\n}\n\nexport declare type EIP712ObjectValue = string | number | EIP712Object;\n\nexport interface EIP712Object {\n\t[key: string]: EIP712ObjectValue;\n}\n\nexport interface MessageTypes {\n\t[additionalProperties: string]: MessageTypeProperty[];\n\tEIP712Domain: MessageTypeProperty[];\n}\n\nexport interface MessageTypeProperty {\n\tname: string;\n\ttype: string;\n}\n\nexport const EIP712_DOMAIN = [\n\t{ name: \"name\", type: \"string\" },\n\t{ name: \"version\", type: \"string\" },\n\t{ name: \"chainId\", type: \"uint256\" },\n\t{ name: \"verifyingContract\", type: \"address\" },\n];\n","export enum SignatureTypeV1 {\n\t/**\n\t * ECDSA EIP712 signatures signed by EOAs\n\t */\n\tEOA = 0,\n\n\t/**\n\t * EIP712 signatures signed by EOAs that own Polymarket Proxy wallets\n\t */\n\tPOLY_PROXY = 1,\n\n\t/**\n\t * EIP712 signatures signed by EOAs that own Polymarket Gnosis safes\n\t */\n\tPOLY_GNOSIS_SAFE = 2,\n}\n","export function generateOrderSalt(): string {\n\treturn `${Math.round(Math.random() * Date.now())}`;\n}\n","import { type Address, encodeAbiParameters, hashTypedData, keccak256, toHex } from \"viem\";\n\nimport { bytes32Zero } from \"../constants.js\";\nimport { type ClobSigner, getSignerAddress, signTypedDataWithSigner } from \"../signing/signer.js\";\nimport {\n\tCTF_EXCHANGE_V2_DOMAIN_NAME,\n\tCTF_EXCHANGE_V2_DOMAIN_VERSION,\n\tCTF_EXCHANGE_V2_ORDER_STRUCT,\n} from \"./model/ctfExchangeV2TypedData.js\";\nimport { EIP712_DOMAIN, type EIP712TypedData } from \"./model/eip712.js\";\nimport type { OrderHash, OrderSignature } from \"./model/order.js\";\nimport type { OrderDataV2, OrderV2, SignedOrderV2 } from \"./model/orderDataV2.js\";\nimport { SignatureTypeV2 } from \"./model/signatureTypeV2.js\";\nimport { generateOrderSalt } from \"./utils.js\";\n\nconst ORDER_TYPE_STRING =\n\t\"Order(uint256 salt,address maker,address signer,uint256 tokenId,uint256 makerAmount,uint256 takerAmount,uint8 side,uint8 signatureType,uint256 timestamp,bytes32 metadata,bytes32 builder)\";\n\nconst ORDER_TYPE_HASH = keccak256(toHex(ORDER_TYPE_STRING));\n\nconst DOMAIN_TYPE_HASH = keccak256(\n\ttoHex(\"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\"),\n);\n\nconst TYPED_DATA_SIGN_STRUCT = [\n\t{ name: \"contents\", type: \"Order\" },\n\t{ name: \"name\", type: \"string\" },\n\t{ name: \"version\", type: \"string\" },\n\t{ name: \"chainId\", type: \"uint256\" },\n\t{ name: \"verifyingContract\", type: \"address\" },\n\t{ name: \"salt\", type: \"bytes32\" },\n];\n\nconst CTF_EXCHANGE_NAME_HASH = keccak256(toHex(CTF_EXCHANGE_V2_DOMAIN_NAME));\nconst CTF_EXCHANGE_VERSION_HASH = keccak256(toHex(CTF_EXCHANGE_V2_DOMAIN_VERSION));\n\nexport class ExchangeOrderBuilderV2 {\n\tprivate readonly appDomainSep: `0x${string}`;\n\n\tconstructor(\n\t\tprivate readonly contractAddress: string,\n\t\tprivate readonly chainId: number,\n\t\tprivate readonly signer: ClobSigner,\n\t\tprivate readonly generateSalt = generateOrderSalt,\n\t) {\n\t\tthis.appDomainSep = keccak256(\n\t\t\tencodeAbiParameters(\n\t\t\t\t[\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"address\" },\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\tDOMAIN_TYPE_HASH,\n\t\t\t\t\tCTF_EXCHANGE_NAME_HASH,\n\t\t\t\t\tCTF_EXCHANGE_VERSION_HASH,\n\t\t\t\t\tBigInt(chainId),\n\t\t\t\t\tcontractAddress as Address,\n\t\t\t\t],\n\t\t\t),\n\t\t);\n\t}\n\n\tasync buildSignedOrder(orderData: OrderDataV2): Promise<SignedOrderV2> {\n\t\tconst order = await this.buildOrder(orderData);\n\t\tconst orderTypedData = this.buildOrderTypedData(order);\n\t\tconst orderSignature = await this.buildOrderSignature(orderTypedData);\n\n\t\treturn {\n\t\t\t...order,\n\t\t\tsignature: orderSignature,\n\t\t} as SignedOrderV2;\n\t}\n\n\tasync buildOrder({\n\t\tmaker,\n\t\ttokenId,\n\t\tmakerAmount,\n\t\ttakerAmount,\n\t\tside,\n\t\tsigner,\n\t\tsignatureType,\n\t\ttimestamp,\n\t\tmetadata,\n\t\tbuilder,\n\t\texpiration,\n\t}: OrderDataV2): Promise<OrderV2> {\n\t\tif (!signer) {\n\t\t\tsigner = maker;\n\t\t}\n\n\t\t// For POLY_1271 (deposit wallets), signer is the wallet contract — skip EOA address check\n\t\tif (signatureType !== SignatureTypeV2.POLY_1271) {\n\t\t\tconst signerAddress = await getSignerAddress(this.signer);\n\t\t\tif (signer !== signerAddress) {\n\t\t\t\tthrow new Error(\"signer does not match\");\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tsalt: this.generateSalt(),\n\t\t\tmaker,\n\t\t\tsigner,\n\t\t\ttokenId,\n\t\t\tmakerAmount,\n\t\t\ttakerAmount,\n\t\t\tside,\n\t\t\tsignatureType: signatureType ?? SignatureTypeV2.EOA,\n\t\t\tmetadata: metadata ?? bytes32Zero,\n\t\t\tbuilder: builder ?? bytes32Zero,\n\t\t\ttimestamp: timestamp ?? Date.now().toString(),\n\t\t\texpiration: expiration ?? \"0\",\n\t\t};\n\t}\n\n\tbuildOrderTypedData(order: OrderV2): EIP712TypedData {\n\t\treturn {\n\t\t\tprimaryType: \"Order\",\n\t\t\ttypes: {\n\t\t\t\tEIP712Domain: EIP712_DOMAIN,\n\t\t\t\tOrder: CTF_EXCHANGE_V2_ORDER_STRUCT,\n\t\t\t},\n\t\t\tdomain: {\n\t\t\t\tname: CTF_EXCHANGE_V2_DOMAIN_NAME,\n\t\t\t\tversion: CTF_EXCHANGE_V2_DOMAIN_VERSION,\n\t\t\t\tchainId: this.chainId,\n\t\t\t\tverifyingContract: this.contractAddress,\n\t\t\t},\n\t\t\tmessage: {\n\t\t\t\tsalt: order.salt,\n\t\t\t\tmaker: order.maker,\n\t\t\t\tsigner: order.signer,\n\t\t\t\ttokenId: order.tokenId,\n\t\t\t\tmakerAmount: order.makerAmount,\n\t\t\t\ttakerAmount: order.takerAmount,\n\t\t\t\ttimestamp: order.timestamp,\n\t\t\t\tside: order.side === \"BUY\" ? 0 : 1,\n\t\t\t\tsignatureType: order.signatureType,\n\t\t\t\tmetadata: order.metadata,\n\t\t\t\tbuilder: order.builder,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync buildOrderSignature(typedData: EIP712TypedData): Promise<OrderSignature> {\n\t\tdelete typedData.types.EIP712Domain;\n\n\t\tconst msg = typedData.message;\n\n\t\tif ((msg.signatureType as number) !== SignatureTypeV2.POLY_1271) {\n\t\t\treturn signTypedDataWithSigner({\n\t\t\t\tsigner: this.signer,\n\t\t\t\tdomain: typedData.domain,\n\t\t\t\ttypes: typedData.types,\n\t\t\t\tvalue: typedData.message,\n\t\t\t\tprimaryType: typedData.primaryType,\n\t\t\t});\n\t\t}\n\n\t\tconst contentsHash = keccak256(\n\t\t\tencodeAbiParameters(\n\t\t\t\t[\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"address\" },\n\t\t\t\t\t{ type: \"address\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"uint8\" },\n\t\t\t\t\t{ type: \"uint8\" },\n\t\t\t\t\t{ type: \"uint256\" },\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t\t{ type: \"bytes32\" },\n\t\t\t\t],\n\t\t\t\t[\n\t\t\t\t\tORDER_TYPE_HASH,\n\t\t\t\t\tBigInt(msg.salt as string),\n\t\t\t\t\tmsg.maker as Address,\n\t\t\t\t\tmsg.signer as Address,\n\t\t\t\t\tBigInt(msg.tokenId as string),\n\t\t\t\t\tBigInt(msg.makerAmount as string),\n\t\t\t\t\tBigInt(msg.takerAmount as string),\n\t\t\t\t\tmsg.side as number,\n\t\t\t\t\tmsg.signatureType as number,\n\t\t\t\t\tBigInt(msg.timestamp as string),\n\t\t\t\t\tmsg.metadata as `0x${string}`,\n\t\t\t\t\tmsg.builder as `0x${string}`,\n\t\t\t\t],\n\t\t\t),\n\t\t);\n\n\t\tconst innerSig = await signTypedDataWithSigner({\n\t\t\tsigner: this.signer,\n\t\t\tdomain: {\n\t\t\t\tname: CTF_EXCHANGE_V2_DOMAIN_NAME,\n\t\t\t\tversion: CTF_EXCHANGE_V2_DOMAIN_VERSION,\n\t\t\t\tchainId: this.chainId,\n\t\t\t\tverifyingContract: this.contractAddress,\n\t\t\t},\n\t\t\ttypes: {\n\t\t\t\tTypedDataSign: TYPED_DATA_SIGN_STRUCT,\n\t\t\t\tOrder: CTF_EXCHANGE_V2_ORDER_STRUCT,\n\t\t\t},\n\t\t\tprimaryType: \"TypedDataSign\",\n\t\t\tvalue: {\n\t\t\t\tcontents: typedData.message,\n\t\t\t\tname: \"DepositWallet\",\n\t\t\t\tversion: \"1\",\n\t\t\t\tchainId: this.chainId,\n\t\t\t\tverifyingContract: msg.signer,\n\t\t\t\tsalt: bytes32Zero,\n\t\t\t},\n\t\t});\n\n\t\t// innerSig (65) || appDomainSep (32) || contentsHash (32) || contentsType || uint16_BE(len)\n\t\tconst ctLen = ORDER_TYPE_STRING.length;\n\t\tconst lenHex = ctLen.toString(16).padStart(4, \"0\");\n\t\treturn `0x${innerSig.slice(2)}${this.appDomainSep.slice(2)}${contentsHash.slice(2)}${toHex(ORDER_TYPE_STRING).slice(2)}${lenHex}`;\n\t}\n\n\tbuildOrderHash(orderTypedData: EIP712TypedData): OrderHash {\n\t\treturn hashTypedData(orderTypedData);\n\t}\n}\n","export const CTF_EXCHANGE_V2_DOMAIN_NAME = \"Polymarket CTF Exchange\";\n\nexport const CTF_EXCHANGE_V2_DOMAIN_VERSION = \"2\";\n\nexport const CTF_EXCHANGE_V2_ORDER_STRUCT = [\n\t{ name: \"salt\", type: \"uint256\" },\n\t{ name: \"maker\", type: \"address\" },\n\t{ name: \"signer\", type: \"address\" },\n\t{ name: \"tokenId\", type: \"uint256\" },\n\t{ name: \"makerAmount\", type: \"uint256\" },\n\t{ name: \"takerAmount\", type: \"uint256\" },\n\t{ name: \"side\", type: \"uint8\" },\n\t{ name: \"signatureType\", type: \"uint8\" },\n\t{ name: \"timestamp\", type: \"uint256\" },\n\t{ name: \"metadata\", type: \"bytes32\" },\n\t{ name: \"builder\", type: \"bytes32\" },\n];\n","export enum SignatureTypeV2 {\n\t/**\n\t * ECDSA EIP712 signatures signed by EOAs\n\t */\n\tEOA = 0,\n\n\t/**\n\t * EIP712 signatures signed by EOAs that own Polymarket Proxy wallets\n\t */\n\tPOLY_PROXY = 1,\n\n\t/**\n\t * EIP712 signatures signed by EOAs that own Polymarket Gnosis safes\n\t */\n\tPOLY_GNOSIS_SAFE = 2,\n\n\t/**\n\t * EIP1271 signatures signed by smart contracts. To be used by smart contract wallets or vaults\n\t */\n\tPOLY_1271 = 3,\n}\n","import {\n\tExchangeOrderBuilderV1,\n\tExchangeOrderBuilderV2,\n\ttype OrderDataV1,\n\ttype OrderDataV2,\n\ttype SignedOrderV1,\n\ttype SignedOrderV2,\n} from \"../../order-utils/index.js\";\nimport type { ClobSigner } from \"../../signing/signer.js\";\n\n/**\n * Generate and sign a order\n *\n * @param signer\n * @param exchangeAddress ctf exchange contract address\n * @param chainId\n * @param OrderData\n * @returns SignedOrder\n */\nexport const buildOrder = async (\n\tsigner: ClobSigner,\n\texchangeAddress: string,\n\tchainId: number,\n\torderData: OrderDataV1 | OrderDataV2,\n\tversion: number = 2,\n): Promise<SignedOrderV1 | SignedOrderV2> => {\n\tswitch (version) {\n\t\tcase 1:\n\t\t\treturn buildOrderV1(signer, exchangeAddress, chainId, orderData as OrderDataV1);\n\t\tcase 2:\n\t\t\treturn buildOrderV2(signer, exchangeAddress, chainId, orderData as OrderDataV2);\n\t\tdefault:\n\t\t\tthrow new Error(`unsupported order version ${version}`);\n\t}\n};\n\nexport const buildOrderV1 = async (\n\tsigner: ClobSigner,\n\texchangeAddress: string,\n\tchainId: number,\n\torderData: OrderDataV1,\n): Promise<SignedOrderV1> => {\n\tconst ctfExchangeOrderBuilder = new ExchangeOrderBuilderV1(exchangeAddress, chainId, signer);\n\treturn ctfExchangeOrderBuilder.buildSignedOrder(orderData);\n};\n\nexport const buildOrderV2 = async (\n\tsigner: ClobSigner,\n\texchangeAddress: string,\n\tchainId: number,\n\torderData: OrderDataV2,\n): Promise<SignedOrderV2> => {\n\tconst ctfExchangeOrderBuilder = new ExchangeOrderBuilderV2(exchangeAddress, chainId, signer);\n\treturn ctfExchangeOrderBuilder.buildSignedOrder(orderData);\n};\n","import { parseUnits, zeroAddress } from \"viem\";\n\nimport { COLLATERAL_TOKEN_DECIMALS } from \"../../config.js\";\nimport { bytes32Zero } from \"../../constants.js\";\nimport type {\n\tOrderDataV1,\n\tOrderDataV2,\n\tSignatureTypeV1,\n\tSignatureTypeV2,\n} from \"../../order-utils/index.js\";\nimport type { RoundConfig, UserOrderV1, UserOrderV2 } from \"../../types/index.js\";\n\nimport { getOrderRawAmounts } from \"./getOrderRawAmounts.js\";\n\nexport async function buildOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserOrder: UserOrderV1 | UserOrderV2,\n\troundConfig: RoundConfig,\n\tversion: 1,\n): Promise<OrderDataV1>;\nexport async function buildOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserOrder: UserOrderV1 | UserOrderV2,\n\troundConfig: RoundConfig,\n\tversion?: 2,\n): Promise<OrderDataV2>;\nexport async function buildOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserOrder: UserOrderV1 | UserOrderV2,\n\troundConfig: RoundConfig,\n\tversion: number,\n): Promise<OrderDataV1 | OrderDataV2>;\nexport async function buildOrderCreationArgs(\n\tsigner: string,\n\tmaker: string,\n\tsignatureType: SignatureTypeV2,\n\tuserOrder: UserOrderV1 | UserOrderV2,\n\troundConfig: RoundConfig,\n\tversion: number = 2,\n): Promise<OrderDataV1 | OrderDataV2> {\n\tconst { side, rawMakerAmt, rawTakerAmt } = getOrderRawAmounts(\n\t\tuserOrder.side,\n\t\tuserOrder.size,\n\t\tuserOrder.price,\n\t\troundConfig,\n\t);\n\n\tconst makerAmount = parseUnits(rawMakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();\n\tconst takerAmount = parseUnits(rawTakerAmt.toString(), COLLATERAL_TOKEN_DECIMALS).toString();\n\n\tif (version === 1) {\n\t\tconst v1Order = userOrder as UserOrderV1;\n\t\treturn {\n\t\t\tmaker,\n\t\t\ttaker: v1Order.taker ?? zeroAddress,\n\t\t\ttokenId: userOrder.tokenID,\n\t\t\tmakerAmount,\n\t\t\ttakerAmount,\n\t\t\tside,\n\t\t\tsigner,\n\t\t\tsignatureType: signatureType as unknown as SignatureTypeV1,\n\t\t\tfeeRateBps: v1Order.feeRateBps?.toString() ?? \"0\",\n\t\t\tnonce: v1Order.nonce?.toString() ?? \"0\",\n\t\t\texpiration: userOrder.expiration !== undefined ? userOrder.expiration.toString() : \"0\",\n\t\t};\n\t}\n\n\treturn {\n\t\tmaker,\n\t\ttokenId: userOrder.tokenID,\n\t\tmakerAmount,\n\t\ttakerAmount,\n\t\tside,\n\t\tsigner,\n\t\tsignatureType,\n\t\ttimestamp: Date.now().toString(),\n\t\tmetadata: \"metadata\" in userOrder ? (userOrder.metadata ?? bytes32Zero) : bytes32Zero,\n\t\tbuilder: userOrder.builderCode ?? bytes32Zero,\n\t\texpiration: userOrder.expiration !== undefined ? userOrder.expiration.toString() : \"0\",\n\t};\n}\n","export enum Side {\n\tBUY = \"BUY\",\n\tSELL = \"SELL\",\n}\n","import { Side } from \"../order-utils/model/side.js\";\n\nexport { Side };\n\nexport interface ApiKeyCreds {\n\tkey: string;\n\tsecret: string;\n\tpassphrase: string;\n}\n\nexport interface BuilderConfig {\n\tbuilderCode: string;\n}\n\nexport interface ApiKeyRaw {\n\tapiKey: string;\n\tsecret: string;\n\tpassphrase: string;\n}\n\nexport interface L2HeaderArgs {\n\tmethod: string;\n\trequestPath: string;\n\tbody?: string;\n}\n\nexport type SimpleHeaders = Record<string, string | number | boolean>;\n\n// EIP712 sig verification\nexport interface L1PolyHeader extends SimpleHeaders {\n\tPOLY_ADDRESS: string;\n\tPOLY_SIGNATURE: string;\n\tPOLY_TIMESTAMP: string;\n\tPOLY_NONCE: string;\n}\n\n// API key verification\nexport interface L2PolyHeader extends SimpleHeaders {\n\tPOLY_ADDRESS: string;\n\tPOLY_SIGNATURE: string;\n\tPOLY_TIMESTAMP: string;\n\tPOLY_API_KEY: string;\n\tPOLY_PASSPHRASE: string;\n}\n\nexport enum OrderType {\n\tGTC = \"GTC\",\n\tFOK = \"FOK\",\n\tGTD = \"GTD\",\n\tFAK = \"FAK\",\n}\n\nexport interface OrderPayload {\n\torderID: string;\n}\n\nexport interface OrderResponse {\n\tsuccess: boolean;\n\terrorMsg: string;\n\torderID: string;\n\ttransactionsHashes?: string[];\n\ttradeIDs?: string[];\n\tstatus: string;\n\ttakingAmount: string;\n\tmakingAmount: string;\n}\n\nexport interface OpenOrder {\n\tid: string;\n\tstatus: string;\n\towner: string;\n\tmaker_address: string;\n\tmarket: string;\n\tasset_id: string;\n\tside: string;\n\toriginal_size: string;\n\tsize_matched: string;\n\tprice: string;\n\tassociate_trades: string[];\n\toutcome: string;\n\tcreated_at: number;\n\texpiration: string;\n\torder_type: string;\n}\n\nexport type OpenOrdersResponse = OpenOrder[];\n\nexport type PreMigrationOrder = OpenOrder;\n\nexport type PreMigrationOrdersResponse = PreMigrationOrder[];\n\nexport interface MakerOrder {\n\torder_id: string;\n\towner: string;\n\tmaker_address: string;\n\tmatched_amount: string;\n\tprice: string;\n\tfee_rate_bps: string;\n\tasset_id: string;\n\toutcome: string;\n\tside?: Side;\n\tbuilder_fee?: string;\n\tbuilder_code?: string;\n}\n\nexport interface Trade {\n\tid: string;\n\ttaker_order_id: string;\n\tmarket: string;\n\tasset_id: string;\n\tside: Side;\n\tsize: string;\n\tfee_rate_bps: string;\n\tprice: string;\n\tstatus: string;\n\tmatch_time: string;\n\tmatch_time_nano?: string;\n\tlast_update: string;\n\toutcome: string;\n\tbucket_index: number;\n\towner: string;\n\tmaker_address: string;\n\tmaker_orders: MakerOrder[];\n\ttransaction_hash?: string;\n\terr_msg?: string | null;\n\ttrader_side: \"TAKER\" | \"MAKER\";\n}\n\nexport interface ApiKeysResponse {\n\tapiKeys: ApiKeyCreds[];\n}\n\nexport interface BanStatus {\n\tclosed_only: boolean;\n}\n\nexport interface TradeParams {\n\tid?: string;\n\tmaker_address?: string;\n\tmarket?: string;\n\tasset_id?: string;\n\tbefore?: string;\n\tafter?: string;\n}\n\nexport interface BuilderTradeParams extends TradeParams {\n\tbuilder_code: string;\n}\n\nexport interface OpenOrderParams {\n\tid?: string;\n\tmarket?: string;\n\tasset_id?: string;\n}\n\nexport enum Chain {\n\tPOLYGON = 137,\n\tAMOY = 80002,\n}\n\nexport interface MarketPrice {\n\tt: number; // timestamp\n\tp: number; // price\n}\n\nexport interface PriceHistoryFilterParams {\n\tmarket?: string;\n\tstartTs?: number;\n\tendTs?: number;\n\tfidelity?: number;\n\tinterval?: PriceHistoryInterval;\n}\n\nexport enum PriceHistoryInterval {\n\tMAX = \"max\",\n\tONE_WEEK = \"1w\",\n\tONE_DAY = \"1d\",\n\tSIX_HOURS = \"6h\",\n\tONE_HOUR = \"1h\",\n}\n\nexport interface DropNotificationParams {\n\tids: string[];\n}\n\nexport interface Notification {\n\ttype: number;\n\towner: string;\n\n\tpayload: any;\n}\n\nexport interface OrderMarketCancelParams {\n\tmarket?: string;\n\tasset_id?: string;\n}\n\nexport interface OrderBookSummary {\n\tmarket: string;\n\tasset_id: string;\n\ttimestamp: string;\n\tbids: OrderSummary[];\n\tasks: OrderSummary[];\n\tmin_order_size: string;\n\ttick_size: string;\n\tneg_risk: boolean;\n\thash: string;\n\tlast_trade_price: string;\n}\n\nexport interface OrderSummary {\n\tprice: string;\n\tsize: string;\n}\n\nexport enum AssetType {\n\tCOLLATERAL = \"COLLATERAL\",\n\tCONDITIONAL = \"CONDITIONAL\",\n}\n\nexport interface BalanceAllowanceParams {\n\tasset_type: AssetType;\n\ttoken_id?: string;\n}\n\nexport interface BalanceAllowanceResponse {\n\tbalance: string;\n\tallowances: Record<string, string>;\n}\n\nexport interface OrderScoringParams {\n\torder_id: string;\n}\n\nexport interface OrderScoring {\n\tscoring: boolean;\n}\n\nexport interface OrdersScoringParams {\n\torderIds: string[];\n}\n\nexport type OrdersScoring = { [orderId in string]: boolean };\n\nexport type CreateOrderOptions = {\n\ttickSize: TickSize;\n\tnegRisk?: boolean;\n};\n\nexport type TickSize = \"0.1\" | \"0.01\" | \"0.001\" | \"0.0001\";\n\nexport interface RoundConfig {\n\treadonly price: number;\n\treadonly size: number;\n\treadonly amount: number;\n}\n\nexport interface TickSizes {\n\t[tokenId: string]: TickSize;\n}\n\nexport interface FeeRates {\n\t[tokenId: string]: number;\n}\n\nexport interface NegRisk {\n\t[tokenId: string]: boolean;\n}\n\nexport interface FeeInfo {\n\trate: number;\n\texponent: number;\n}\n\nexport interface FeeInfos {\n\t[tokenId: string]: FeeInfo;\n}\n\nexport interface BuilderFeeRates {\n\t[builderCode: string]: { maker: number; taker: number };\n}\n\nexport type TokenConditionMap = Record<string, string>;\n\nexport interface FeeDetails {\n\tr?: number; // fee rate\n\te?: number; // fee exponent\n\tto?: boolean; // taker only (omitted when false)\n}\n\nexport interface ClobRewards {\n\tmi?: number; // min size\n\tma?: number; // max spread\n\te?: boolean; // enabled\n\tsmoa?: boolean; // skip min order age\n\tmoas?: number; // min order age seconds\n}\n\nexport interface ClobToken {\n\tt: string; // token ID\n\to: string; // outcome\n}\n\nexport interface MarketDetails {\n\tc: string; // condition ID\n\tt: [ClobToken, ClobToken]; // YES and NO tokens\n\tmts: number; // min tick size\n\tnr?: boolean; // neg risk (omitted when false)\n\tfd?: FeeDetails; // platform fee details\n\tmbf?: number; // maker base fee\n\ttbf?: number; // taker base fee\n\tr: ClobRewards | null; // rewards config (always present, null if unset)\n\tao?: boolean; // accepting orders\n\tmos?: number; // min order size\n\tsd?: number; // seconds delay\n\tgst?: string; // game start time (ISO 8601)\n\tcbos?: boolean; // clear book on start\n\taot?: string; // accepting orders timestamp (ISO 8601)\n\trfqe?: boolean; // RFQ enabled\n\titode?: boolean; // taker order delay enabled\n\tibce?: boolean; // blockaid check enabled\n}\n\nexport interface PaginationPayload {\n\treadonly limit: number;\n\treadonly count: number;\n\treadonly next_cursor: string;\n\treadonly data: any[];\n}\n\nexport interface BookParams {\n\ttoken_id: string;\n\tside: Side;\n}\n\nexport interface UserEarning {\n\tdate: string;\n\tcondition_id: string;\n\tasset_address: string;\n\tmaker_address: string;\n\tearnings: number;\n\tasset_rate: number;\n}\n\nexport interface TotalUserEarning {\n\tdate: string;\n\tasset_address: string;\n\tmaker_address: string;\n\tearnings: number;\n\tasset_rate: number;\n}\n\nexport interface RewardsPercentages {\n\t[market: string]: number;\n}\n\nexport interface Token {\n\ttoken_id: string;\n\toutcome: string;\n\tprice: number;\n}\n\nexport interface RewardsConfig {\n\tasset_address: string;\n\tstart_date: string;\n\tend_date: string;\n\trate_per_day: number;\n\ttotal_rewards: number;\n}\n\nexport interface MarketReward {\n\tcondition_id: string;\n\tquestion: string;\n\tmarket_slug: string;\n\tevent_slug: string;\n\timage: string;\n\trewards_max_spread: number;\n\trewards_min_size: number;\n\ttokens: Token[];\n\trewards_config: RewardsConfig[];\n}\n\nexport interface Earning {\n\tasset_address: string;\n\tearnings: number;\n\tasset_rate: number;\n}\n\nexport interface UserRewardsEarning {\n\tcondition_id: string;\n\tquestion: string;\n\tmarket_slug: string;\n\tevent_slug: string;\n\timage: string;\n\trewards_max_spread: number;\n\trewards_min_size: number;\n\tmarket_competitiveness: number;\n\ttokens: Token[];\n\trewards_config: RewardsConfig[];\n\tmaker_address: string;\n\tearning_percentage: number;\n\tearnings: Earning[];\n}\n\nexport interface BuilderTrade {\n\tid: string;\n\ttradeType: string;\n\ttakerOrderHash: string;\n\tbuilder: string;\n\tmarket: string;\n\tassetId: string;\n\tside: string;\n\tsize: string;\n\tsizeUsdc: string;\n\tprice: string;\n\tstatus: string;\n\toutcome: string;\n\toutcomeIndex: number;\n\towner: string;\n\tmaker: string;\n\ttransactionHash: string;\n\tmatchTime: string;\n\tbucketIndex: number;\n\tfee: string;\n\tfeeUsdc: string;\n\tbuilderFee: string;\n\tbuilderCode: string;\n\terr_msg?: string | null;\n\tcreatedAt: string | null;\n\tupdatedAt: string | null;\n}\n\nexport interface ReadonlyApiKeyResponse {\n\tapiKey: string;\n}\n\nexport interface MarketTradeEvent {\n\tevent_type: string;\n\tmarket: {\n\t\tcondition_id: string;\n\t\tasset_id: string;\n\t\tquestion: string;\n\t\ticon: string;\n\t\tslug: string;\n\t};\n\tuser: {\n\t\taddress: string;\n\t\tusername: string;\n\t\tprofile_picture: string;\n\t\toptimized_profile_picture: string;\n\t\tpseudonym: string;\n\t};\n\tside: Side;\n\tsize: string;\n\tfee_rate_bps: string;\n\tprice: string;\n\toutcome: string;\n\toutcome_index: number;\n\ttransaction_hash: string;\n\ttimestamp: string;\n}\n\nexport interface BuilderApiKey {\n\tkey: string;\n\tsecret: string;\n\tpassphrase: string;\n}\n\nexport interface BuilderApiKeyResponse {\n\tkey: string;\n\tcreatedAt?: string;\n\trevokedAt?: string;\n}\n\nexport type ClobErrorResponseBody = {\n\terror: string;\n};\n\nexport interface TradesPaginatedResponse {\n\ttrades: Trade[];\n\tnext_cursor: string;\n\tlimit: number;\n\tcount: number;\n}\n\nexport interface BuilderTradesResponse {\n\ttrades: BuilderTrade[];\n\tnext_cursor: string;\n\tlimit: number;\n\tcount: number;\n}\n","import type { SignatureTypeV1, SignedOrderV1 } from \"../order-utils/index.js\";\n\nimport type { OrderType, Side } from \"./clob.js\";\n\nexport function orderToJsonV1<T extends OrderType>(\n\torder: SignedOrderV1,\n\towner: string,\n\torderType: T,\n\tpostOnly = false,\n\tdeferExec = false,\n): NewOrderV1<T> {\n\treturn {\n\t\tdeferExec,\n\t\tpostOnly,\n\t\torder: {\n\t\t\tsalt: parseInt(order.salt, 10),\n\t\t\tmaker: order.maker,\n\t\t\tsigner: order.signer,\n\t\t\ttaker: order.taker,\n\t\t\ttokenId: order.tokenId,\n\t\t\tmakerAmount: order.makerAmount,\n\t\t\ttakerAmount: order.takerAmount,\n\t\t\tside: order.side,\n\t\t\texpiration: order.expiration,\n\t\t\tnonce: order.nonce,\n\t\t\tfeeRateBps: order.feeRateBps,\n\t\t\tsignatureType: order.signatureType,\n\t\t\tsignature: order.signature,\n\t\t},\n\t\towner,\n\t\torderType,\n\t} as NewOrderV1<T>;\n}\n\nexport interface PostOrdersV1Args {\n\torder: SignedOrderV1;\n\torderType: OrderType;\n}\n\nexport interface NewOrderV1<T extends OrderType> {\n\treadonly order: {\n\t\treadonly salt: number;\n\t\treadonly maker: string;\n\t\treadonly signer: string;\n\t\treadonly taker: string;\n\t\treadonly tokenId: string;\n\t\treadonly makerAmount: string;\n\t\treadonly takerAmount: string;\n\t\treadonly expiration: string;\n\t\treadonly nonce: string;\n\t\treadonly feeRateBps: string;\n\t\treadonly side: string;\n\t\treadonly signatureType: SignatureTypeV1;\n\t\treadonly signature: string;\n\t};\n\treadonly owner: string;\n\treadonly orderType: T;\n\treadonly deferExec: boolean;\n\treadonly postOnly: boolean;\n}\n\n// Simplified order for users\nexport interface UserOrderV1 {\n\t/**\n\t * TokenID of the Conditional token asset being traded\n\t */\n\ttokenID: string;\n\n\t/**\n\t * Price used to create the order\n\t */\n\tprice: number;\n\n\t/**\n\t * Size in terms of the ConditionalToken\n\t */\n\tsize: number;\n\n\t/**\n\t * Side of the order\n\t */\n\tside: Side;\n\n\t/**\n\t * Fee rate, in basis points, charged to the order maker, charged on proceeds\n\t */\n\tfeeRateBps?: number;\n\n\t/**\n\t * Nonce used for onchain cancellations\n\t */\n\tnonce?: number;\n\n\t/**\n\t * Timestamp after which the order is expired.\n\t */\n\texpiration?: number;\n\n\t/**\n\t * Address of the order taker. The zero address is used to indicate a public order\n\t */\n\ttaker?: string;\n\n\t/**\n\t * Builder code (bytes32)\n\t */\n\tbuilderCode?: string;\n}\n\n// Simplified market order for users\nexport interface UserMarketOrderV1 {\n\t/**\n\t * TokenID of the Conditional token asset being traded\n\t */\n\ttokenID: string;\n\n\t/**\n\t * Price used to create the order\n\t * If it is not present the market price will be used.\n\t */\n\tprice?: number;\n\n\t/**\n\t * BUY orders: $$$ Amount to buy\n\t * SELL orders: Shares to sell\n\t */\n\tamount: number;\n\n\t/**\n\t * Side of the order\n\t */\n\tside: Side;\n\n\t/**\n\t * Fee rate, in basis points, charged to the order maker, charged on proceeds\n\t */\n\tfeeRateBps?: number;\n\n\t/**\n\t * Nonce used for onchain cancellations\n\t */\n\tnonce?: number;\n\n\t/**\n\t * Address of the order taker. The zero address is used to indicate a public order\n\t */\n\ttaker?: string;\n\n\t/**\n\t * Specifies the type of order execution:\n\t * - FOK (Fill or Kill): The order must be filled entirely or not at all.\n\t * - FAK (Fill and Kill): The order can be partially filled, and any unfilled portion is canceled.\n\t */\n\torderType?: OrderType.FOK | OrderType.FAK;\n\n\t/**\n\t * Builder code (bytes32)\n\t */\n\tbuilderCode?: string;\n}\n","import type { SignatureTypeV2, SignedOrderV2 } from \"../order-utils/index.js\";\n\nimport type { OrderType, Side } from \"./clob.js\";\n\nexport function orderToJsonV2<T extends OrderType>(\n\torder: SignedOrderV2,\n\towner: string,\n\torderType: T,\n\tpostOnly = false,\n\tdeferExec = false,\n): NewOrderV2<T> {\n\treturn {\n\t\tdeferExec,\n\t\tpostOnly,\n\t\torder: {\n\t\t\tsalt: parseInt(order.salt, 10),\n\t\t\tmaker: order.maker,\n\t\t\tsigner: order.signer,\n\t\t\ttaker: order.taker,\n\t\t\ttokenId: order.tokenId,\n\t\t\tmakerAmount: order.makerAmount,\n\t\t\ttakerAmount: order.takerAmount,\n\t\t\tside: order.side,\n\t\t\tsignatureType: order.signatureType,\n\t\t\ttimestamp: order.timestamp,\n\t\t\texpiration: order.expiration,\n\t\t\tmetadata: order.metadata,\n\t\t\tbuilder: order.builder,\n\t\t\tsignature: order.signature,\n\t\t},\n\t\towner,\n\t\torderType,\n\t} as NewOrderV2<T>;\n}\n\nexport interface PostOrdersV2Args {\n\torder: SignedOrderV2;\n\torderType: OrderType;\n}\n\nexport interface NewOrderV2<T extends OrderType> {\n\treadonly order: {\n\t\treadonly salt: number;\n\t\treadonly maker: string;\n\t\treadonly signer: string;\n\t\treadonly taker: string;\n\t\treadonly tokenId: string;\n\t\treadonly makerAmount: string;\n\t\treadonly takerAmount: string;\n\t\treadonly side: string;\n\t\treadonly signatureType: SignatureTypeV2;\n\t\treadonly timestamp: string;\n\t\treadonly expiration: string;\n\t\treadonly metadata: string;\n\t\treadonly builder: string;\n\t\treadonly signature: string;\n\t};\n\treadonly owner: string;\n\treadonly orderType: T;\n\treadonly deferExec: boolean;\n\treadonly postOnly: boolean;\n}\n\n// Simplified order for users\nexport interface UserOrderV2 {\n\t/**\n\t * TokenID of the Conditional token asset being traded\n\t */\n\ttokenID: string;\n\n\t/**\n\t * Price used to create the order\n\t */\n\tprice: number;\n\n\t/**\n\t * Size in terms of the ConditionalToken\n\t */\n\tsize: number;\n\n\t/**\n\t * Side of the order\n\t */\n\tside: Side;\n\n\t/**\n\t * Metadata (bytes32)\n\t */\n\tmetadata?: string;\n\n\t/**\n\t * Builder code (bytes32)\n\t */\n\tbuilderCode?: string;\n\n\t/**\n\t * Expiration timestamp (unix seconds). Defaults to 0 (no expiration).\n\t */\n\texpiration?: number;\n\n\t/**\n\t * User's USDC balance. If provided and sufficient to cover amount + fees, the order\n\t * size is used as-is. Otherwise fees are deducted from the order notional and size is reduced.\n\t * If this field is left empty, the default flow is to use the order size as-is.\n\t * This is used for marketable limit orders\n\t */\n\tuserUSDCBalance?: number;\n}\n\n// Simplified market order for users\nexport interface UserMarketOrderV2 {\n\t/**\n\t * TokenID of the Conditional token asset being traded\n\t */\n\ttokenID: string;\n\n\t/**\n\t * Price used to create the order\n\t * If it is not present the market price will be used.\n\t */\n\tprice?: number;\n\n\t/**\n\t * BUY orders: $$$ Amount to buy\n\t * SELL orders: Shares to sell\n\t */\n\tamount: number;\n\n\t/**\n\t * Side of the order\n\t */\n\tside: Side;\n\n\t/**\n\t * Specifies the type of order execution:\n\t * - FOK (Fill or Kill): The order must be filled entirely or not at all.\n\t * - FAK (Fill and Kill): The order can be partially filled, and any unfilled portion is canceled.\n\t */\n\torderType?: OrderType.FOK | OrderType.FAK;\n\n\t/**\n\t * User's USDC balance. If provided and sufficient to cover amount + fees, the order\n\t * amount is used as-is. Otherwise fees are deducted from the amount.\n\t * If this field is left empty, the default flow is to use the order amount as-is\n\t */\n\tuserUSDCBalance?: number;\n\n\t/**\n\t * Metadata (bytes32)\n\t */\n\tmetadata?: string;\n\n\t/**\n\t * Builder code (bytes32)\n\t */\n\tbuilderCode?: string;\n}\n","import type { SignedOrderV1, SignedOrderV2 } from \"../order-utils/index.js\";\nimport type { OrderType } from \"./clob.js\";\nimport type { PostOrdersV1Args, UserMarketOrderV1, UserOrderV1 } from \"./ordersV1.js\";\nimport type { PostOrdersV2Args, UserMarketOrderV2, UserOrderV2 } from \"./ordersV2.js\";\n\nexport type SignedOrder = SignedOrderV1 | SignedOrderV2;\n\nexport type PostOrdersArgs = { order: SignedOrder; orderType: OrderType };\n\nexport type VersionedSignedOrder =\n\t| { version: 1; order: SignedOrderV1 }\n\t| { version: 2; order: SignedOrderV2 };\n\nexport type VersionedUserOrder =\n\t| { version: 1; order: UserOrderV1 }\n\t| { version: 2; order: UserOrderV2 };\n\nexport type VersionedUserMarketOrder =\n\t| { version: 1; order: UserMarketOrderV1 }\n\t| { version: 2; order: UserMarketOrderV2 };\n\nexport type VersionedPostOrdersArgs =\n\t| { version: 1; args: PostOrdersV1Args }\n\t| { version: 2; args: PostOrdersV2Args };\n\nexport function isV2Order(order: SignedOrder | VersionedSignedOrder): order is SignedOrderV2 {\n\tif (\"version\" in order && \"order\" in order) {\n\t\t// VersionedSignedOrder type\n\t\treturn order.version === 2;\n\t}\n\t// Check for V2-specific fields\n\treturn \"timestamp\" in order && \"metadata\" in order && \"builder\" in order;\n}\n","import type { OrderBookSummary, TickSize } from \"./types/index.js\";\n\nexport const roundNormal = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.round((num + Number.EPSILON) * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const roundDown = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.floor(num * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const roundUp = (num: number, decimals: number): number => {\n\tif (decimalPlaces(num) <= decimals) {\n\t\treturn num;\n\t}\n\treturn Math.ceil(num * 10 ** decimals) / 10 ** decimals;\n};\n\nexport const decimalPlaces = (num: number): number => {\n\tif (Number.isInteger(num)) {\n\t\treturn 0;\n\t}\n\n\tconst arr = num.toString().split(\".\");\n\tif (arr.length <= 1) {\n\t\treturn 0;\n\t}\n\n\treturn arr[1].length;\n};\n\n/**\n * Calculates the hash for the given orderbook\n * @param orderbook\n * @returns\n */\nexport const generateOrderBookSummaryHash = async (\n\torderbook: OrderBookSummary,\n): Promise<string> => {\n\torderbook.hash = \"\";\n\tconst data = new TextEncoder().encode(JSON.stringify(orderbook));\n\tconst hashBuffer = await globalThis.crypto.subtle.digest(\"SHA-1\", data);\n\tconst hashArray = Array.from(new Uint8Array(hashBuffer));\n\tconst hash = hashArray.map(b => b.toString(16).padStart(2, \"0\")).join(\"\");\n\torderbook.hash = hash;\n\treturn hash;\n};\n\nexport const isTickSizeSmaller = (a: TickSize, b: TickSize): boolean => {\n\treturn parseFloat(a) < parseFloat(b);\n};\n\nexport const priceValid = (price: number, tickSize: TickSize): boolean => {\n\treturn price >= parseFloat(tickSize) && price <= 1 - parseFloat(tickSize);\n};\n","import { type RoundConfig, Side } from \"../../types/index.js\";\nimport { decimalPlaces, roundDown, roundNormal, roundUp } from \"../../utilities.js\";\n\nexport const getOrderRawAmounts = (\n\tside: Side,\n\tsize: number,\n\tprice: number,\n\troundConfig: RoundConfig,\n): { side: Side; rawMakerAmt: number; rawTakerAmt: number } => {\n\tconst rawPrice = roundNormal(price, roundConfig.price);\n\n\tif (side === Side.BUY) {\n\t\t// force 2 decimals places\n\t\tconst rawTakerAmt = roundDown(size, roundConfig.size);\n\n\t\tlet rawMakerAmt = rawTakerAmt * rawPrice;\n\t\tif (decimalPlaces(rawMakerAmt) > roundConfig.amount) {\n\t\t\trawMakerAmt = roundUp(rawMakerAmt, roundConfig.amount + 4);\n\t\t\tif (decimalPlaces(rawMakerAmt) > roundConfig.amount) {\n\t\t\t\trawMakerAmt = roundDown(rawMakerAmt, roundConfig.amount);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tside: Side.BUY,\n\t\t\trawMakerAmt,\n\t\t\trawTakerAmt,\n\t\t};\n\t} else {\n\t\tconst rawMakerAmt = roundDown(size, roundConfig.size);\n\n\t\tlet rawTakerAmt = rawMakerAmt * rawPrice;\n\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\trawTakerAmt = roundUp(rawTakerAmt, roundConfig.amount + 4);\n\t\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\t\trawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tside: Side.SELL,\n\t\t\trawMakerAmt,\n\t\t\trawTakerAmt,\n\t\t};\n\t}\n};\n","import { type OrderSummary, OrderType } from \"../../types/index.js\";\n\n/**\n * calculateBuyMarketPrice calculates the market price to buy a $$ amount\n * @param positions\n * @param amountToMatch worth to buy\n * @returns\n */\nexport const calculateBuyMarketPrice = (\n\tpositions: OrderSummary[],\n\tamountToMatch: number,\n\torderType: OrderType,\n) => {\n\tif (!positions.length) {\n\t\tthrow new Error(\"no match\");\n\t}\n\tlet sum = 0;\n\t/*\n Asks:\n [\n { price: '0.6', size: '100' },\n { price: '0.55', size: '100' },\n { price: '0.5', size: '100' }\n ]\n So, if the amount to match is $150 that will be reached at first position so price will be 0.6\n */\n\tfor (let i = positions.length - 1; i >= 0; i--) {\n\t\tconst p = positions[i];\n\t\tsum += parseFloat(p.size) * parseFloat(p.price);\n\t\tif (sum >= amountToMatch) {\n\t\t\treturn parseFloat(p.price);\n\t\t}\n\t}\n\tif (orderType === OrderType.FOK) {\n\t\tthrow new Error(\"no match\");\n\t}\n\treturn parseFloat(positions[0].price);\n};\n","import { type OrderSummary, OrderType } from \"../../types/index.js\";\n\n/**\n * calculateSellMarketPrice calculates the market price to sell a shares\n * @param positions\n * @param amountToMatch sells to share\n * @returns\n */\nexport const calculateSellMarketPrice = (\n\tpositions: OrderSummary[],\n\tamountToMatch: number,\n\torderType: OrderType,\n) => {\n\tif (!positions.length) {\n\t\tthrow new Error(\"no match\");\n\t}\n\tlet sum = 0;\n\t/*\n Bids:\n [\n { price: '0.4', size: '100' },\n { price: '0.45', size: '100' },\n { price: '0.5', size: '100' }\n ]\n So, if the amount to match is 300 that will be reached at the first position so price will be 0.4\n */\n\tfor (let i = positions.length - 1; i >= 0; i--) {\n\t\tconst p = positions[i];\n\t\tsum += parseFloat(p.size);\n\t\tif (sum >= amountToMatch) {\n\t\t\treturn parseFloat(p.price);\n\t\t}\n\t}\n\tif (orderType === OrderType.FOK) {\n\t\tthrow new Error(\"no match\");\n\t}\n\treturn parseFloat(positions[0].price);\n};\n","import type { RoundConfig, TickSize } from \"../../types/index.js\";\n\nexport const ROUNDING_CONFIG: Record<TickSize, RoundConfig> = {\n\t\"0.1\": {\n\t\tprice: 1,\n\t\tsize: 2,\n\t\tamount: 3,\n\t},\n\t\"0.01\": {\n\t\tprice: 2,\n\t\tsize: 2,\n\t\tamount: 4,\n\t},\n\t\"0.001\": {\n\t\tprice: 3,\n\t\tsize: 2,\n\t\tamount: 5,\n\t},\n\t\"0.0001\": {\n\t\tprice: 4,\n\t\tsize: 2,\n\t\tamount: 6,\n\t},\n};\n","import { getContractConfig } from \"../../config.js\";\nimport type { SignedOrderV1, SignedOrderV2 } from \"../../order-utils/index.js\";\nimport { SignatureTypeV2 } from \"../../order-utils/index.js\";\nimport { type ClobSigner, getSignerAddress } from \"../../signing/signer.js\";\nimport type {\n\tChain,\n\tCreateOrderOptions,\n\tUserMarketOrderV1,\n\tUserMarketOrderV2,\n} from \"../../types/index.js\";\nimport { buildMarketOrderCreationArgs } from \"./buildMarketOrderCreationArgs.js\";\nimport { buildOrder } from \"./buildOrder.js\";\nimport { ROUNDING_CONFIG } from \"./roundingConfig.js\";\n\nexport const createMarketOrder = async (\n\teoaSigner: ClobSigner,\n\tchainId: Chain,\n\tsignatureType: SignatureTypeV2,\n\tfunderAddress: string | undefined,\n\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\toptions: CreateOrderOptions,\n\tversion: number,\n): Promise<SignedOrderV1 | SignedOrderV2> => {\n\tconst eoaSignerAddress = await getSignerAddress(eoaSigner);\n\n\t// If funder address is not given, use the signer address\n\tconst maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;\n\n\t// For POLY_1271, both maker and signer in the order are the wallet address\n\tconst signerForOrder = signatureType === SignatureTypeV2.POLY_1271 ? maker : eoaSignerAddress;\n\tconst contractConfig = getContractConfig(chainId);\n\n\tconst orderData = await buildMarketOrderCreationArgs(\n\t\tsignerForOrder,\n\t\tmaker,\n\t\tsignatureType,\n\t\tuserMarketOrder,\n\t\tROUNDING_CONFIG[options.tickSize],\n\t\tversion,\n\t);\n\n\tlet exchangeContract: string;\n\tswitch (version) {\n\t\tcase 1:\n\t\t\tif (signatureType === SignatureTypeV2.POLY_1271) {\n\t\t\t\tthrow new Error(`signature type POLY_1271 is not supported for v1 orders`);\n\t\t\t}\n\t\t\texchangeContract = options.negRisk\n\t\t\t\t? contractConfig.negRiskExchange\n\t\t\t\t: contractConfig.exchange;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\texchangeContract = options.negRisk\n\t\t\t\t? contractConfig.negRiskExchangeV2\n\t\t\t\t: contractConfig.exchangeV2;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`unsupported order version ${version}`);\n\t}\n\n\treturn buildOrder(eoaSigner, exchangeContract, chainId, orderData, version);\n};\n","import { getContractConfig } from \"../../config.js\";\nimport type { SignedOrderV1, SignedOrderV2 } from \"../../order-utils/index.js\";\nimport { SignatureTypeV2 } from \"../../order-utils/index.js\";\nimport { type ClobSigner, getSignerAddress } from \"../../signing/signer.js\";\nimport type { Chain, CreateOrderOptions, UserOrderV1, UserOrderV2 } from \"../../types/index.js\";\nimport { buildOrder } from \"./buildOrder.js\";\nimport { buildOrderCreationArgs } from \"./buildOrderCreationArgs.js\";\nimport { ROUNDING_CONFIG } from \"./roundingConfig.js\";\n\nexport const createOrder = async (\n\teoaSigner: ClobSigner,\n\tchainId: Chain,\n\tsignatureType: SignatureTypeV2,\n\tfunderAddress: string | undefined,\n\tuserOrder: UserOrderV1 | UserOrderV2,\n\toptions: CreateOrderOptions,\n\tversion: number,\n): Promise<SignedOrderV1 | SignedOrderV2> => {\n\tconst eoaSignerAddress = await getSignerAddress(eoaSigner);\n\n\t// If funder address is not given, use the signer address\n\tconst maker = funderAddress === undefined ? eoaSignerAddress : funderAddress;\n\n\t// For POLY_1271, both maker and signer in the order are the wallet address\n\tconst signerForOrder = signatureType === SignatureTypeV2.POLY_1271 ? maker : eoaSignerAddress;\n\tconst contractConfig = getContractConfig(chainId);\n\n\tconst orderData = await buildOrderCreationArgs(\n\t\tsignerForOrder,\n\t\tmaker,\n\t\tsignatureType,\n\t\tuserOrder,\n\t\tROUNDING_CONFIG[options.tickSize],\n\t\tversion,\n\t);\n\tlet exchangeContract: string;\n\tswitch (version) {\n\t\tcase 1:\n\t\t\tif (signatureType === SignatureTypeV2.POLY_1271) {\n\t\t\t\tthrow new Error(`signature type POLY_1271 is not supported for v1 orders`);\n\t\t\t}\n\t\t\texchangeContract = options.negRisk\n\t\t\t\t? contractConfig.negRiskExchange\n\t\t\t\t: contractConfig.exchange;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\texchangeContract = options.negRisk\n\t\t\t\t? contractConfig.negRiskExchangeV2\n\t\t\t\t: contractConfig.exchangeV2;\n\t\t\tbreak;\n\t\tdefault:\n\t\t\tthrow new Error(`unsupported order version ${version}`);\n\t}\n\treturn buildOrder(eoaSigner, exchangeContract, chainId, orderData, version);\n};\n","import { type RoundConfig, Side } from \"../../types/index.js\";\nimport { decimalPlaces, roundDown, roundUp } from \"../../utilities.js\";\n\nexport const getMarketOrderRawAmounts = (\n\tside: Side,\n\tamount: number,\n\tprice: number,\n\troundConfig: RoundConfig,\n): { side: Side; rawMakerAmt: number; rawTakerAmt: number } => {\n\t// force 2 decimals places\n\tconst rawPrice = roundDown(price, roundConfig.price);\n\n\tif (side === Side.BUY) {\n\t\tconst rawMakerAmt = roundDown(amount, roundConfig.size);\n\t\tlet rawTakerAmt = rawMakerAmt / rawPrice;\n\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\trawTakerAmt = roundUp(rawTakerAmt, roundConfig.amount + 4);\n\t\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\t\trawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);\n\t\t\t}\n\t\t}\n\t\treturn {\n\t\t\tside: Side.BUY,\n\t\t\trawMakerAmt,\n\t\t\trawTakerAmt,\n\t\t};\n\t} else {\n\t\tconst rawMakerAmt = roundDown(amount, roundConfig.size);\n\t\tlet rawTakerAmt = rawMakerAmt * rawPrice;\n\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\trawTakerAmt = roundUp(rawTakerAmt, roundConfig.amount + 4);\n\t\t\tif (decimalPlaces(rawTakerAmt) > roundConfig.amount) {\n\t\t\t\trawTakerAmt = roundDown(rawTakerAmt, roundConfig.amount);\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tside: Side.SELL,\n\t\t\trawMakerAmt,\n\t\t\trawTakerAmt,\n\t\t};\n\t}\n};\n","import { SignatureTypeV2, type SignedOrderV1, type SignedOrderV2 } from \"../order-utils/index.js\";\nimport type { ClobSigner } from \"../signing/signer.js\";\nimport type {\n\tChain,\n\tCreateOrderOptions,\n\tUserMarketOrderV1,\n\tUserMarketOrderV2,\n\tUserOrderV1,\n\tUserOrderV2,\n} from \"../types/index.js\";\n\nimport { createMarketOrder, createOrder } from \"./helpers/index.js\";\n\nexport class OrderBuilder {\n\treadonly signer: ClobSigner;\n\n\treadonly chainId: Chain;\n\n\t// Signature type used sign orders, defaults to EOA type\n\treadonly signatureType: SignatureTypeV2;\n\n\t// Address which holds funds to be used.\n\t// Used for Polymarket proxy wallets and other smart contract wallets\n\t// If not provided, funderAddress is the signer address\n\treadonly funderAddress?: string;\n\n\t/**\n\t * Optional function to dynamically resolve the signer.\n\t * If provided, this function will be called to obtain a fresh signer instance\n\t * (e.g., for smart contract wallets or when the signer may change).\n\t * Should return a Wallet or JsonRpcSigner, or a Promise resolving to one.\n\t * If not provided, the static `signer` property is used.\n\t */\n\tprivate getSigner?: () => Promise<ClobSigner> | ClobSigner;\n\n\tconstructor(\n\t\tsigner: ClobSigner,\n\t\tchainId: Chain,\n\t\tsignatureType?: SignatureTypeV2,\n\t\tfunderAddress?: string,\n\t\tgetSigner?: () => Promise<ClobSigner> | ClobSigner,\n\t) {\n\t\tthis.signer = signer;\n\t\tthis.chainId = chainId;\n\t\tthis.signatureType = signatureType === undefined ? SignatureTypeV2.EOA : signatureType;\n\t\tthis.funderAddress = funderAddress;\n\t\tthis.getSigner = getSigner;\n\t}\n\n\t/**\n\t * Generate and sign a order\n\t */\n\tpublic async buildOrder(\n\t\tuserOrder: UserOrderV1 | UserOrderV2,\n\t\toptions: CreateOrderOptions,\n\t\tversion: number,\n\t): Promise<SignedOrderV1 | SignedOrderV2> {\n\t\tconst signer = await this.resolveSigner();\n\t\treturn createOrder(\n\t\t\tsigner,\n\t\t\tthis.chainId,\n\t\t\tthis.signatureType,\n\t\t\tthis.funderAddress,\n\t\t\tuserOrder,\n\t\t\toptions,\n\t\t\tversion,\n\t\t);\n\t}\n\n\t/**\n\t * Generate and sign a market order\n\t */\n\tpublic async buildMarketOrder(\n\t\tuserMarketOrder: UserMarketOrderV1 | UserMarketOrderV2,\n\t\toptions: CreateOrderOptions,\n\t\tversion: number,\n\t): Promise<SignedOrderV1 | SignedOrderV2> {\n\t\tconst signer = await this.resolveSigner();\n\t\treturn createMarketOrder(\n\t\t\tsigner,\n\t\t\tthis.chainId,\n\t\t\tthis.signatureType,\n\t\t\tthis.funderAddress,\n\t\t\tuserMarketOrder,\n\t\t\toptions,\n\t\t\tversion,\n\t\t);\n\t}\n\n\t/** Unified getter: use fresh signer if available */\n\tprivate async resolveSigner(): Promise<ClobSigner> {\n\t\tif (this.getSigner) {\n\t\t\tconst s = await this.getSigner();\n\t\t\tif (!s) throw new Error(\"getSigner() function returned undefined or null\");\n\t\t\treturn s;\n\t\t}\n\t\treturn this.signer;\n\t}\n}\n","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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","names":["axios","import_viem","SignatureTypeV1","import_viem","SignatureTypeV2","import_viem","Side","OrderType","Chain","PriceHistoryInterval","AssetType"]}