@polymarket/clob-client-v2 1.0.4 → 1.0.6-main.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 (206) hide show
  1. package/README.md +3 -0
  2. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  3. package/dist/client.cjs +892 -0
  4. package/dist/client.cjs.map +1 -0
  5. package/dist/client.d.cts +167 -0
  6. package/dist/client.d.ts +169 -0
  7. package/dist/client.js +892 -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 +15 -1039
  47. package/dist/index.d.ts +17 -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/createExchangeV3OrderFromAmounts.cjs +31 -0
  70. package/dist/order-builder/helpers/createExchangeV3OrderFromAmounts.cjs.map +1 -0
  71. package/dist/order-builder/helpers/createExchangeV3OrderFromAmounts.js +31 -0
  72. package/dist/order-builder/helpers/createExchangeV3OrderFromAmounts.js.map +1 -0
  73. package/dist/order-builder/helpers/createMarketOrder.cjs +34 -0
  74. package/dist/order-builder/helpers/createMarketOrder.cjs.map +1 -0
  75. package/dist/order-builder/helpers/createMarketOrder.js +34 -0
  76. package/dist/order-builder/helpers/createMarketOrder.js.map +1 -0
  77. package/dist/order-builder/helpers/createOrder.cjs +34 -0
  78. package/dist/order-builder/helpers/createOrder.cjs.map +1 -0
  79. package/dist/order-builder/helpers/createOrder.js +34 -0
  80. package/dist/order-builder/helpers/createOrder.js.map +1 -0
  81. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs +36 -0
  82. package/dist/order-builder/helpers/getMarketOrderRawAmounts.cjs.map +1 -0
  83. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js +36 -0
  84. package/dist/order-builder/helpers/getMarketOrderRawAmounts.js.map +1 -0
  85. package/dist/order-builder/helpers/getOrderRawAmounts.cjs +36 -0
  86. package/dist/order-builder/helpers/getOrderRawAmounts.cjs.map +1 -0
  87. package/dist/order-builder/helpers/getOrderRawAmounts.js +36 -0
  88. package/dist/order-builder/helpers/getOrderRawAmounts.js.map +1 -0
  89. package/dist/order-builder/helpers/roundingConfig.cjs +28 -0
  90. package/dist/order-builder/helpers/roundingConfig.cjs.map +1 -0
  91. package/dist/order-builder/helpers/roundingConfig.js +27 -0
  92. package/dist/order-builder/helpers/roundingConfig.js.map +1 -0
  93. package/dist/order-builder/index.d.ts +1 -0
  94. package/dist/order-builder/orderBuilder.cjs +58 -0
  95. package/dist/order-builder/orderBuilder.cjs.map +1 -0
  96. package/dist/order-builder/orderBuilder.d.cts +42 -0
  97. package/dist/order-builder/orderBuilder.d.ts +44 -0
  98. package/dist/order-builder/orderBuilder.js +58 -0
  99. package/dist/order-builder/orderBuilder.js.map +1 -0
  100. package/dist/order-utils/exchangeOrderBuilderV1.cjs +128 -0
  101. package/dist/order-utils/exchangeOrderBuilderV1.cjs.map +1 -0
  102. package/dist/order-utils/exchangeOrderBuilderV1.d.ts +2 -0
  103. package/dist/order-utils/exchangeOrderBuilderV1.js +127 -0
  104. package/dist/order-utils/exchangeOrderBuilderV1.js.map +1 -0
  105. package/dist/order-utils/exchangeOrderBuilderV2.cjs +196 -0
  106. package/dist/order-utils/exchangeOrderBuilderV2.cjs.map +1 -0
  107. package/dist/order-utils/exchangeOrderBuilderV2.d.ts +2 -0
  108. package/dist/order-utils/exchangeOrderBuilderV2.js +194 -0
  109. package/dist/order-utils/exchangeOrderBuilderV2.js.map +1 -0
  110. package/dist/order-utils/index.d.ts +7 -0
  111. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs +60 -0
  112. package/dist/order-utils/model/ctfExchangeV1TypedData.cjs.map +1 -0
  113. package/dist/order-utils/model/ctfExchangeV1TypedData.js +57 -0
  114. package/dist/order-utils/model/ctfExchangeV1TypedData.js.map +1 -0
  115. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs +58 -0
  116. package/dist/order-utils/model/ctfExchangeV2TypedData.cjs.map +1 -0
  117. package/dist/order-utils/model/ctfExchangeV2TypedData.js +54 -0
  118. package/dist/order-utils/model/ctfExchangeV2TypedData.js.map +1 -0
  119. package/dist/order-utils/model/eip712.cjs +24 -0
  120. package/dist/order-utils/model/eip712.cjs.map +1 -0
  121. package/dist/order-utils/model/eip712.d.cts +9 -0
  122. package/dist/order-utils/model/eip712.d.ts +9 -0
  123. package/dist/order-utils/model/eip712.js +23 -0
  124. package/dist/order-utils/model/eip712.js.map +1 -0
  125. package/dist/order-utils/model/order.d.cts +5 -0
  126. package/dist/order-utils/model/order.d.ts +5 -0
  127. package/dist/order-utils/model/orderDataV1.d.cts +68 -0
  128. package/dist/order-utils/model/orderDataV1.d.ts +69 -0
  129. package/dist/order-utils/model/orderDataV2.d.cts +68 -0
  130. package/dist/order-utils/model/orderDataV2.d.ts +69 -0
  131. package/dist/order-utils/model/side.cjs +11 -0
  132. package/dist/order-utils/model/side.cjs.map +1 -0
  133. package/dist/order-utils/model/side.d.cts +8 -0
  134. package/dist/order-utils/model/side.d.ts +8 -0
  135. package/dist/order-utils/model/side.js +10 -0
  136. package/dist/order-utils/model/side.js.map +1 -0
  137. package/dist/order-utils/model/signatureTypeV1.cjs +21 -0
  138. package/dist/order-utils/model/signatureTypeV1.cjs.map +1 -0
  139. package/dist/order-utils/model/signatureTypeV1.d.cts +18 -0
  140. package/dist/order-utils/model/signatureTypeV1.d.ts +18 -0
  141. package/dist/order-utils/model/signatureTypeV1.js +20 -0
  142. package/dist/order-utils/model/signatureTypeV1.js.map +1 -0
  143. package/dist/order-utils/model/signatureTypeV2.cjs +25 -0
  144. package/dist/order-utils/model/signatureTypeV2.cjs.map +1 -0
  145. package/dist/order-utils/model/signatureTypeV2.d.cts +22 -0
  146. package/dist/order-utils/model/signatureTypeV2.d.ts +22 -0
  147. package/dist/order-utils/model/signatureTypeV2.js +24 -0
  148. package/dist/order-utils/model/signatureTypeV2.js.map +1 -0
  149. package/dist/order-utils/utils.cjs +9 -0
  150. package/dist/order-utils/utils.cjs.map +1 -0
  151. package/dist/order-utils/utils.js +8 -0
  152. package/dist/order-utils/utils.js.map +1 -0
  153. package/dist/signing/constants.cjs +7 -0
  154. package/dist/signing/constants.cjs.map +1 -0
  155. package/dist/signing/constants.js +6 -0
  156. package/dist/signing/constants.js.map +1 -0
  157. package/dist/signing/eip712.cjs +51 -0
  158. package/dist/signing/eip712.cjs.map +1 -0
  159. package/dist/signing/eip712.d.ts +2 -0
  160. package/dist/signing/eip712.js +51 -0
  161. package/dist/signing/eip712.js.map +1 -0
  162. package/dist/signing/hmac.cjs +40 -0
  163. package/dist/signing/hmac.cjs.map +1 -0
  164. package/dist/signing/hmac.js +39 -0
  165. package/dist/signing/hmac.js.map +1 -0
  166. package/dist/signing/index.d.ts +2 -0
  167. package/dist/signing/signer.cjs +41 -0
  168. package/dist/signing/signer.cjs.map +1 -0
  169. package/dist/signing/signer.d.cts +17 -0
  170. package/dist/signing/signer.d.ts +17 -0
  171. package/dist/signing/signer.js +39 -0
  172. package/dist/signing/signer.js.map +1 -0
  173. package/dist/types/clob.cjs +35 -0
  174. package/dist/types/clob.cjs.map +1 -0
  175. package/dist/types/clob.d.cts +427 -0
  176. package/dist/types/clob.d.ts +427 -0
  177. package/dist/types/clob.js +32 -0
  178. package/dist/types/clob.js.map +1 -0
  179. package/dist/types/index.d.ts +6 -0
  180. package/dist/types/ordersV1.cjs +29 -0
  181. package/dist/types/ordersV1.cjs.map +1 -0
  182. package/dist/types/ordersV1.d.cts +115 -0
  183. package/dist/types/ordersV1.d.ts +116 -0
  184. package/dist/types/ordersV1.js +28 -0
  185. package/dist/types/ordersV1.js.map +1 -0
  186. package/dist/types/ordersV2.cjs +30 -0
  187. package/dist/types/ordersV2.cjs.map +1 -0
  188. package/dist/types/ordersV2.d.cts +113 -0
  189. package/dist/types/ordersV2.d.ts +114 -0
  190. package/dist/types/ordersV2.js +29 -0
  191. package/dist/types/ordersV2.js.map +1 -0
  192. package/dist/types/ordersV3.d.cts +43 -0
  193. package/dist/types/ordersV3.d.ts +43 -0
  194. package/dist/types/unifiedOrder.cjs +10 -0
  195. package/dist/types/unifiedOrder.cjs.map +1 -0
  196. package/dist/types/unifiedOrder.d.cts +56 -0
  197. package/dist/types/unifiedOrder.d.ts +57 -0
  198. package/dist/types/unifiedOrder.js +9 -0
  199. package/dist/types/unifiedOrder.js.map +1 -0
  200. package/dist/utilities.cjs +50 -0
  201. package/dist/utilities.cjs.map +1 -0
  202. package/dist/utilities.js +43 -0
  203. package/dist/utilities.js.map +1 -0
  204. package/package.json +3 -3
  205. package/dist/index.cjs.map +0 -1
  206. package/dist/index.js.map +0 -1
@@ -0,0 +1,128 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_signer = require('../signing/signer.cjs');
3
+ const require_ctfExchangeV1TypedData = require('./model/ctfExchangeV1TypedData.cjs');
4
+ const require_eip712 = require('./model/eip712.cjs');
5
+ const require_signatureTypeV1 = require('./model/signatureTypeV1.cjs');
6
+ const require_utils = require('./utils.cjs');
7
+ let viem = require("viem");
8
+
9
+ //#region src/order-utils/exchangeOrderBuilderV1.ts
10
+ const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
11
+ var ExchangeOrderBuilderV1 = class {
12
+ constructor(contractAddress, chainId, signer, generateSalt = require_utils.generateOrderSalt) {
13
+ this.contractAddress = contractAddress;
14
+ this.chainId = chainId;
15
+ this.signer = signer;
16
+ this.generateSalt = generateSalt;
17
+ }
18
+ /**
19
+ * build an order object including the signature.
20
+ * @param orderData
21
+ * @returns a SignedOrder object (order + signature)
22
+ */
23
+ async buildSignedOrder(orderData) {
24
+ const order = await this.buildOrder(orderData);
25
+ const orderTypedData = this.buildOrderTypedData(order);
26
+ const orderSignature = await this.buildOrderSignature(orderTypedData);
27
+ return {
28
+ ...order,
29
+ signature: orderSignature
30
+ };
31
+ }
32
+ /**
33
+ * Creates an Order object from order data.
34
+ * @param OrderData
35
+ * @returns a Order object (not signed)
36
+ */
37
+ async buildOrder({ maker, taker, tokenId, makerAmount, takerAmount, side, feeRateBps, nonce, signer, expiration, signatureType }) {
38
+ if (!signer) signer = maker;
39
+ const signerAddress = await require_signer.getSignerAddress(this.signer);
40
+ if (signer !== signerAddress) throw new Error("signer does not match");
41
+ if (!expiration) expiration = "0";
42
+ if (!signatureType) signatureType = require_signatureTypeV1.SignatureTypeV1.EOA;
43
+ let takerAddress;
44
+ if (typeof taker !== "undefined" && taker) takerAddress = taker;
45
+ else takerAddress = ZERO_ADDRESS;
46
+ let feeRateBpsResolved;
47
+ if (typeof feeRateBps !== "undefined" && feeRateBps) feeRateBpsResolved = feeRateBps.toString();
48
+ else feeRateBpsResolved = "0";
49
+ let nonceResolved;
50
+ if (typeof nonce !== "undefined" && nonce) nonceResolved = nonce.toString();
51
+ else nonceResolved = "0";
52
+ return {
53
+ salt: this.generateSalt(),
54
+ maker,
55
+ signer,
56
+ taker: takerAddress,
57
+ tokenId,
58
+ makerAmount,
59
+ takerAmount,
60
+ expiration,
61
+ nonce: nonceResolved,
62
+ feeRateBps: feeRateBpsResolved,
63
+ side,
64
+ signatureType
65
+ };
66
+ }
67
+ /**
68
+ * Parses an Order object to EIP712 typed data
69
+ * @param order
70
+ * @returns a EIP712TypedData object
71
+ */
72
+ buildOrderTypedData(order) {
73
+ return {
74
+ primaryType: "Order",
75
+ types: {
76
+ EIP712Domain: require_eip712.EIP712_DOMAIN,
77
+ Order: require_ctfExchangeV1TypedData.CTF_EXCHANGE_V1_ORDER_STRUCT
78
+ },
79
+ domain: {
80
+ name: require_ctfExchangeV1TypedData.CTF_EXCHANGE_V1_DOMAIN_NAME,
81
+ version: require_ctfExchangeV1TypedData.CTF_EXCHANGE_V1_DOMAIN_VERSION,
82
+ chainId: this.chainId,
83
+ verifyingContract: this.contractAddress
84
+ },
85
+ message: {
86
+ salt: order.salt,
87
+ maker: order.maker,
88
+ signer: order.signer,
89
+ taker: order.taker,
90
+ tokenId: order.tokenId,
91
+ makerAmount: order.makerAmount,
92
+ takerAmount: order.takerAmount,
93
+ expiration: order.expiration,
94
+ nonce: order.nonce,
95
+ feeRateBps: order.feeRateBps,
96
+ side: order.side === "BUY" ? 0 : 1,
97
+ signatureType: order.signatureType
98
+ }
99
+ };
100
+ }
101
+ /**
102
+ * Generates order's signature from a EIP712TypedData object + the signer address
103
+ * @param typedData
104
+ * @returns a OrderSignature that is an string
105
+ */
106
+ buildOrderSignature(typedData) {
107
+ delete typedData.types.EIP712Domain;
108
+ return require_signer.signTypedDataWithSigner({
109
+ signer: this.signer,
110
+ domain: typedData.domain,
111
+ types: typedData.types,
112
+ value: typedData.message,
113
+ primaryType: typedData.primaryType
114
+ });
115
+ }
116
+ /**
117
+ * Generates the hash of the order from a EIP712TypedData object.
118
+ * @param orderTypedData
119
+ * @returns a OrderHash that is an string
120
+ */
121
+ buildOrderHash(orderTypedData) {
122
+ return (0, viem.hashTypedData)(orderTypedData);
123
+ }
124
+ };
125
+
126
+ //#endregion
127
+ exports.ExchangeOrderBuilderV1 = ExchangeOrderBuilderV1;
128
+ //# sourceMappingURL=exchangeOrderBuilderV1.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeOrderBuilderV1.cjs","names":["contractAddress: string","chainId: number","signer: ClobSigner","generateOrderSalt","getSignerAddress","SignatureTypeV1","takerAddress: string","feeRateBpsResolved: string","nonceResolved: string","EIP712_DOMAIN","CTF_EXCHANGE_V1_ORDER_STRUCT","CTF_EXCHANGE_V1_DOMAIN_NAME","CTF_EXCHANGE_V1_DOMAIN_VERSION","signTypedDataWithSigner"],"sources":["../../src/order-utils/exchangeOrderBuilderV1.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;;AAaA,MAAM,eAAe;AAErB,IAAa,yBAAb,MAAoC;CACnC,YACC,AAAiBA,iBACjB,AAAiBC,SACjB,AAAiBC,QACjB,AAAiB,eAAeC,iCAC/B;EAJgB;EACA;EACA;EACA;;;;;;;CAQlB,MAAM,iBAAiB,WAAgD;EACtE,MAAM,QAAQ,MAAM,KAAK,WAAW,UAAU;EAC9C,MAAM,iBAAiB,KAAK,oBAAoB,MAAM;EACtD,MAAM,iBAAiB,MAAM,KAAK,oBAAoB,eAAe;AACrE,SAAO;GACN,GAAG;GACH,WAAW;GACX;;;;;;;CAQF,MAAM,WAAW,EAChB,OACA,OACA,SACA,aACA,aACA,MACA,YACA,OACA,QACA,YACA,iBACiC;AACjC,MAAI,CAAC,OACJ,UAAS;EAGV,MAAM,gBAAgB,MAAMC,gCAAiB,KAAK,OAAO;AACzD,MAAI,WAAW,cACd,OAAM,IAAI,MAAM,wBAAwB;AAGzC,MAAI,CAAC,WACJ,cAAa;AAGd,MAAI,CAAC,cAEJ,iBAAgBC,wCAAgB;EAGjC,IAAIC;AACJ,MAAI,OAAO,UAAU,eAAe,MACnC,gBAAe;MAEf,gBAAe;EAGhB,IAAIC;AACJ,MAAI,OAAO,eAAe,eAAe,WACxC,sBAAqB,WAAW,UAAU;MAE1C,sBAAqB;EAGtB,IAAIC;AACJ,MAAI,OAAO,UAAU,eAAe,MACnC,iBAAgB,MAAM,UAAU;MAEhC,iBAAgB;AAGjB,SAAO;GACN,MAAM,KAAK,cAAc;GACzB;GACA;GACA,OAAO;GACP;GACA;GACA;GACA;GACA,OAAO;GACP,YAAY;GACZ;GACA;GACA;;;;;;;CAQF,oBAAoB,OAAiC;AACpD,SAAO;GACN,aAAa;GACb,OAAO;IACN,cAAcC;IACd,OAAOC;IACP;GACD,QAAQ;IACP,MAAMC;IACN,SAASC;IACT,SAAS,KAAK;IACd,mBAAmB,KAAK;IACxB;GACD,SAAS;IACR,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,SAAS,MAAM;IACf,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,YAAY,MAAM;IAClB,OAAO,MAAM;IACb,YAAY,MAAM;IAClB,MAAM,MAAM,SAAS,QAAQ,IAAI;IACjC,eAAe,MAAM;IACrB;GACD;;;;;;;CAQF,oBAAoB,WAAqD;AACxE,SAAO,UAAU,MAAM;AACvB,SAAOC,uCAAwB;GAC9B,QAAQ,KAAK;GACb,QAAQ,UAAU;GAClB,OAAO,UAAU;GACjB,OAAO,UAAU;GACjB,aAAa,UAAU;GACvB,CAAC;;;;;;;CAQH,eAAe,gBAA4C;AAE1D,iCAD6B,eAAe"}
@@ -0,0 +1,2 @@
1
+ import "../signing/signer.js";
2
+ import "./model/orderDataV1.js";
@@ -0,0 +1,127 @@
1
+ import { getSignerAddress, signTypedDataWithSigner } from "../signing/signer.js";
2
+ import { CTF_EXCHANGE_V1_DOMAIN_NAME, CTF_EXCHANGE_V1_DOMAIN_VERSION, CTF_EXCHANGE_V1_ORDER_STRUCT } from "./model/ctfExchangeV1TypedData.js";
3
+ import { EIP712_DOMAIN } from "./model/eip712.js";
4
+ import { SignatureTypeV1 } from "./model/signatureTypeV1.js";
5
+ import { generateOrderSalt } from "./utils.js";
6
+ import { hashTypedData } from "viem";
7
+
8
+ //#region src/order-utils/exchangeOrderBuilderV1.ts
9
+ const ZERO_ADDRESS = "0x0000000000000000000000000000000000000000";
10
+ var ExchangeOrderBuilderV1 = class {
11
+ constructor(contractAddress, chainId, signer, generateSalt = generateOrderSalt) {
12
+ this.contractAddress = contractAddress;
13
+ this.chainId = chainId;
14
+ this.signer = signer;
15
+ this.generateSalt = generateSalt;
16
+ }
17
+ /**
18
+ * build an order object including the signature.
19
+ * @param orderData
20
+ * @returns a SignedOrder object (order + signature)
21
+ */
22
+ async buildSignedOrder(orderData) {
23
+ const order = await this.buildOrder(orderData);
24
+ const orderTypedData = this.buildOrderTypedData(order);
25
+ const orderSignature = await this.buildOrderSignature(orderTypedData);
26
+ return {
27
+ ...order,
28
+ signature: orderSignature
29
+ };
30
+ }
31
+ /**
32
+ * Creates an Order object from order data.
33
+ * @param OrderData
34
+ * @returns a Order object (not signed)
35
+ */
36
+ async buildOrder({ maker, taker, tokenId, makerAmount, takerAmount, side, feeRateBps, nonce, signer, expiration, signatureType }) {
37
+ if (!signer) signer = maker;
38
+ const signerAddress = await getSignerAddress(this.signer);
39
+ if (signer !== signerAddress) throw new Error("signer does not match");
40
+ if (!expiration) expiration = "0";
41
+ if (!signatureType) signatureType = SignatureTypeV1.EOA;
42
+ let takerAddress;
43
+ if (typeof taker !== "undefined" && taker) takerAddress = taker;
44
+ else takerAddress = ZERO_ADDRESS;
45
+ let feeRateBpsResolved;
46
+ if (typeof feeRateBps !== "undefined" && feeRateBps) feeRateBpsResolved = feeRateBps.toString();
47
+ else feeRateBpsResolved = "0";
48
+ let nonceResolved;
49
+ if (typeof nonce !== "undefined" && nonce) nonceResolved = nonce.toString();
50
+ else nonceResolved = "0";
51
+ return {
52
+ salt: this.generateSalt(),
53
+ maker,
54
+ signer,
55
+ taker: takerAddress,
56
+ tokenId,
57
+ makerAmount,
58
+ takerAmount,
59
+ expiration,
60
+ nonce: nonceResolved,
61
+ feeRateBps: feeRateBpsResolved,
62
+ side,
63
+ signatureType
64
+ };
65
+ }
66
+ /**
67
+ * Parses an Order object to EIP712 typed data
68
+ * @param order
69
+ * @returns a EIP712TypedData object
70
+ */
71
+ buildOrderTypedData(order) {
72
+ return {
73
+ primaryType: "Order",
74
+ types: {
75
+ EIP712Domain: EIP712_DOMAIN,
76
+ Order: CTF_EXCHANGE_V1_ORDER_STRUCT
77
+ },
78
+ domain: {
79
+ name: CTF_EXCHANGE_V1_DOMAIN_NAME,
80
+ version: CTF_EXCHANGE_V1_DOMAIN_VERSION,
81
+ chainId: this.chainId,
82
+ verifyingContract: this.contractAddress
83
+ },
84
+ message: {
85
+ salt: order.salt,
86
+ maker: order.maker,
87
+ signer: order.signer,
88
+ taker: order.taker,
89
+ tokenId: order.tokenId,
90
+ makerAmount: order.makerAmount,
91
+ takerAmount: order.takerAmount,
92
+ expiration: order.expiration,
93
+ nonce: order.nonce,
94
+ feeRateBps: order.feeRateBps,
95
+ side: order.side === "BUY" ? 0 : 1,
96
+ signatureType: order.signatureType
97
+ }
98
+ };
99
+ }
100
+ /**
101
+ * Generates order's signature from a EIP712TypedData object + the signer address
102
+ * @param typedData
103
+ * @returns a OrderSignature that is an string
104
+ */
105
+ buildOrderSignature(typedData) {
106
+ delete typedData.types.EIP712Domain;
107
+ return signTypedDataWithSigner({
108
+ signer: this.signer,
109
+ domain: typedData.domain,
110
+ types: typedData.types,
111
+ value: typedData.message,
112
+ primaryType: typedData.primaryType
113
+ });
114
+ }
115
+ /**
116
+ * Generates the hash of the order from a EIP712TypedData object.
117
+ * @param orderTypedData
118
+ * @returns a OrderHash that is an string
119
+ */
120
+ buildOrderHash(orderTypedData) {
121
+ return hashTypedData(orderTypedData);
122
+ }
123
+ };
124
+
125
+ //#endregion
126
+ export { ExchangeOrderBuilderV1 };
127
+ //# sourceMappingURL=exchangeOrderBuilderV1.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeOrderBuilderV1.js","names":["contractAddress: string","chainId: number","signer: ClobSigner","takerAddress: string","feeRateBpsResolved: string","nonceResolved: string"],"sources":["../../src/order-utils/exchangeOrderBuilderV1.ts"],"sourcesContent":["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"],"mappings":";;;;;;;;AAaA,MAAM,eAAe;AAErB,IAAa,yBAAb,MAAoC;CACnC,YACC,AAAiBA,iBACjB,AAAiBC,SACjB,AAAiBC,QACjB,AAAiB,eAAe,mBAC/B;EAJgB;EACA;EACA;EACA;;;;;;;CAQlB,MAAM,iBAAiB,WAAgD;EACtE,MAAM,QAAQ,MAAM,KAAK,WAAW,UAAU;EAC9C,MAAM,iBAAiB,KAAK,oBAAoB,MAAM;EACtD,MAAM,iBAAiB,MAAM,KAAK,oBAAoB,eAAe;AACrE,SAAO;GACN,GAAG;GACH,WAAW;GACX;;;;;;;CAQF,MAAM,WAAW,EAChB,OACA,OACA,SACA,aACA,aACA,MACA,YACA,OACA,QACA,YACA,iBACiC;AACjC,MAAI,CAAC,OACJ,UAAS;EAGV,MAAM,gBAAgB,MAAM,iBAAiB,KAAK,OAAO;AACzD,MAAI,WAAW,cACd,OAAM,IAAI,MAAM,wBAAwB;AAGzC,MAAI,CAAC,WACJ,cAAa;AAGd,MAAI,CAAC,cAEJ,iBAAgB,gBAAgB;EAGjC,IAAIC;AACJ,MAAI,OAAO,UAAU,eAAe,MACnC,gBAAe;MAEf,gBAAe;EAGhB,IAAIC;AACJ,MAAI,OAAO,eAAe,eAAe,WACxC,sBAAqB,WAAW,UAAU;MAE1C,sBAAqB;EAGtB,IAAIC;AACJ,MAAI,OAAO,UAAU,eAAe,MACnC,iBAAgB,MAAM,UAAU;MAEhC,iBAAgB;AAGjB,SAAO;GACN,MAAM,KAAK,cAAc;GACzB;GACA;GACA,OAAO;GACP;GACA;GACA;GACA;GACA,OAAO;GACP,YAAY;GACZ;GACA;GACA;;;;;;;CAQF,oBAAoB,OAAiC;AACpD,SAAO;GACN,aAAa;GACb,OAAO;IACN,cAAc;IACd,OAAO;IACP;GACD,QAAQ;IACP,MAAM;IACN,SAAS;IACT,SAAS,KAAK;IACd,mBAAmB,KAAK;IACxB;GACD,SAAS;IACR,MAAM,MAAM;IACZ,OAAO,MAAM;IACb,QAAQ,MAAM;IACd,OAAO,MAAM;IACb,SAAS,MAAM;IACf,aAAa,MAAM;IACnB,aAAa,MAAM;IACnB,YAAY,MAAM;IAClB,OAAO,MAAM;IACb,YAAY,MAAM;IAClB,MAAM,MAAM,SAAS,QAAQ,IAAI;IACjC,eAAe,MAAM;IACrB;GACD;;;;;;;CAQF,oBAAoB,WAAqD;AACxE,SAAO,UAAU,MAAM;AACvB,SAAO,wBAAwB;GAC9B,QAAQ,KAAK;GACb,QAAQ,UAAU;GAClB,OAAO,UAAU;GACjB,OAAO,UAAU;GACjB,aAAa,UAAU;GACvB,CAAC;;;;;;;CAQH,eAAe,gBAA4C;AAE1D,SADe,cAAc,eAAe"}
@@ -0,0 +1,196 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ const require_constants = require('../constants.cjs');
3
+ const require_signer = require('../signing/signer.cjs');
4
+ const require_eip712 = require('./model/eip712.cjs');
5
+ const require_utils = require('./utils.cjs');
6
+ const require_ctfExchangeV2TypedData = require('./model/ctfExchangeV2TypedData.cjs');
7
+ const require_signatureTypeV2 = require('./model/signatureTypeV2.cjs');
8
+ let viem = require("viem");
9
+
10
+ //#region src/order-utils/exchangeOrderBuilderV2.ts
11
+ const ORDER_TYPE_STRING = "Order(uint256 salt,address maker,address signer,uint256 tokenId,uint256 makerAmount,uint256 takerAmount,uint8 side,uint8 signatureType,uint256 timestamp,bytes32 metadata,bytes32 builder)";
12
+ const ORDER_TYPE_HASH = (0, viem.keccak256)((0, viem.toHex)(ORDER_TYPE_STRING));
13
+ const DOMAIN_TYPE_HASH = (0, viem.keccak256)((0, viem.toHex)("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"));
14
+ const TYPED_DATA_SIGN_STRUCT = [
15
+ {
16
+ name: "contents",
17
+ type: "Order"
18
+ },
19
+ {
20
+ name: "name",
21
+ type: "string"
22
+ },
23
+ {
24
+ name: "version",
25
+ type: "string"
26
+ },
27
+ {
28
+ name: "chainId",
29
+ type: "uint256"
30
+ },
31
+ {
32
+ name: "verifyingContract",
33
+ type: "address"
34
+ },
35
+ {
36
+ name: "salt",
37
+ type: "bytes32"
38
+ }
39
+ ];
40
+ const CTF_EXCHANGE_NAME_HASH = (0, viem.keccak256)((0, viem.toHex)(require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_DOMAIN_NAME));
41
+ var ExchangeOrderBuilderV2 = class {
42
+ appDomainSep;
43
+ constructor(contractAddress, chainId, signer, generateSalt = require_utils.generateOrderSalt, domainVersion = require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_DOMAIN_VERSION) {
44
+ this.contractAddress = contractAddress;
45
+ this.chainId = chainId;
46
+ this.signer = signer;
47
+ this.generateSalt = generateSalt;
48
+ this.domainVersion = domainVersion;
49
+ this.appDomainSep = (0, viem.keccak256)((0, viem.encodeAbiParameters)([
50
+ { type: "bytes32" },
51
+ { type: "bytes32" },
52
+ { type: "bytes32" },
53
+ { type: "uint256" },
54
+ { type: "address" }
55
+ ], [
56
+ DOMAIN_TYPE_HASH,
57
+ CTF_EXCHANGE_NAME_HASH,
58
+ (0, viem.keccak256)((0, viem.toHex)(domainVersion)),
59
+ BigInt(chainId),
60
+ contractAddress
61
+ ]));
62
+ }
63
+ async buildSignedOrder(orderData) {
64
+ const order = await this.buildOrder(orderData);
65
+ const orderTypedData = this.buildOrderTypedData(order);
66
+ const orderSignature = await this.buildOrderSignature(orderTypedData);
67
+ return {
68
+ ...order,
69
+ signature: orderSignature
70
+ };
71
+ }
72
+ async buildOrder({ maker, tokenId, makerAmount, takerAmount, side, signer, signatureType, timestamp, metadata, builder, expiration }) {
73
+ if (!signer) signer = maker;
74
+ if (signatureType !== require_signatureTypeV2.SignatureTypeV2.POLY_1271) {
75
+ const signerAddress = await require_signer.getSignerAddress(this.signer);
76
+ if (signer !== signerAddress) throw new Error("signer does not match");
77
+ }
78
+ return {
79
+ salt: this.generateSalt(),
80
+ maker,
81
+ signer,
82
+ tokenId,
83
+ makerAmount,
84
+ takerAmount,
85
+ side,
86
+ signatureType: signatureType ?? require_signatureTypeV2.SignatureTypeV2.EOA,
87
+ metadata: metadata ?? require_constants.bytes32Zero,
88
+ builder: builder ?? require_constants.bytes32Zero,
89
+ timestamp: timestamp ?? Date.now().toString(),
90
+ expiration: expiration ?? "0"
91
+ };
92
+ }
93
+ buildOrderTypedData(order) {
94
+ return {
95
+ primaryType: "Order",
96
+ types: {
97
+ EIP712Domain: require_eip712.EIP712_DOMAIN,
98
+ Order: require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_ORDER_STRUCT
99
+ },
100
+ domain: {
101
+ name: require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_DOMAIN_NAME,
102
+ version: this.domainVersion,
103
+ chainId: this.chainId,
104
+ verifyingContract: this.contractAddress
105
+ },
106
+ message: {
107
+ salt: order.salt,
108
+ maker: order.maker,
109
+ signer: order.signer,
110
+ tokenId: order.tokenId,
111
+ makerAmount: order.makerAmount,
112
+ takerAmount: order.takerAmount,
113
+ timestamp: order.timestamp,
114
+ side: order.side === "BUY" ? 0 : 1,
115
+ signatureType: order.signatureType,
116
+ metadata: order.metadata,
117
+ builder: order.builder
118
+ }
119
+ };
120
+ }
121
+ async buildOrderSignature(typedData) {
122
+ delete typedData.types.EIP712Domain;
123
+ const msg = typedData.message;
124
+ if (msg.signatureType !== require_signatureTypeV2.SignatureTypeV2.POLY_1271) return require_signer.signTypedDataWithSigner({
125
+ signer: this.signer,
126
+ domain: typedData.domain,
127
+ types: typedData.types,
128
+ value: typedData.message,
129
+ primaryType: typedData.primaryType
130
+ });
131
+ const contentsHash = (0, viem.keccak256)((0, viem.encodeAbiParameters)([
132
+ { type: "bytes32" },
133
+ { type: "uint256" },
134
+ { type: "address" },
135
+ { type: "address" },
136
+ { type: "uint256" },
137
+ { type: "uint256" },
138
+ { type: "uint256" },
139
+ { type: "uint8" },
140
+ { type: "uint8" },
141
+ { type: "uint256" },
142
+ { type: "bytes32" },
143
+ { type: "bytes32" }
144
+ ], [
145
+ ORDER_TYPE_HASH,
146
+ BigInt(msg.salt),
147
+ msg.maker,
148
+ msg.signer,
149
+ BigInt(msg.tokenId),
150
+ BigInt(msg.makerAmount),
151
+ BigInt(msg.takerAmount),
152
+ msg.side,
153
+ msg.signatureType,
154
+ BigInt(msg.timestamp),
155
+ msg.metadata,
156
+ msg.builder
157
+ ]));
158
+ const innerSig = await require_signer.signTypedDataWithSigner({
159
+ signer: this.signer,
160
+ domain: {
161
+ name: require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_DOMAIN_NAME,
162
+ version: this.domainVersion,
163
+ chainId: this.chainId,
164
+ verifyingContract: this.contractAddress
165
+ },
166
+ types: {
167
+ TypedDataSign: TYPED_DATA_SIGN_STRUCT,
168
+ Order: require_ctfExchangeV2TypedData.CTF_EXCHANGE_V2_ORDER_STRUCT
169
+ },
170
+ primaryType: "TypedDataSign",
171
+ value: {
172
+ contents: typedData.message,
173
+ name: "DepositWallet",
174
+ version: "1",
175
+ chainId: this.chainId,
176
+ verifyingContract: msg.signer,
177
+ salt: require_constants.bytes32Zero
178
+ }
179
+ });
180
+ const lenHex = 186 .toString(16).padStart(4, "0");
181
+ return `0x${innerSig.slice(2)}${this.appDomainSep.slice(2)}${contentsHash.slice(2)}${(0, viem.toHex)(ORDER_TYPE_STRING).slice(2)}${lenHex}`;
182
+ }
183
+ buildOrderHash(orderTypedData) {
184
+ return (0, viem.hashTypedData)(orderTypedData);
185
+ }
186
+ };
187
+ var ExchangeOrderBuilderV3 = class extends ExchangeOrderBuilderV2 {
188
+ constructor(contractAddress, chainId, signer, generateSalt = require_utils.generateOrderSalt) {
189
+ super(contractAddress, chainId, signer, generateSalt, require_ctfExchangeV2TypedData.CTF_EXCHANGE_V3_DOMAIN_VERSION);
190
+ }
191
+ };
192
+
193
+ //#endregion
194
+ exports.ExchangeOrderBuilderV2 = ExchangeOrderBuilderV2;
195
+ exports.ExchangeOrderBuilderV3 = ExchangeOrderBuilderV3;
196
+ //# sourceMappingURL=exchangeOrderBuilderV2.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchangeOrderBuilderV2.cjs","names":["CTF_EXCHANGE_V2_DOMAIN_NAME","contractAddress: string","chainId: number","signer: ClobSigner","generateOrderSalt","CTF_EXCHANGE_V2_DOMAIN_VERSION","SignatureTypeV2","getSignerAddress","bytes32Zero","EIP712_DOMAIN","CTF_EXCHANGE_V2_ORDER_STRUCT","signTypedDataWithSigner","CTF_EXCHANGE_V3_DOMAIN_VERSION"],"sources":["../../src/order-utils/exchangeOrderBuilderV2.ts"],"sourcesContent":["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\tCTF_EXCHANGE_V3_DOMAIN_VERSION,\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));\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\tprivate readonly domainVersion = CTF_EXCHANGE_V2_DOMAIN_VERSION,\n\t) {\n\t\tconst exchangeVersionHash = keccak256(toHex(domainVersion));\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\texchangeVersionHash,\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: this.domainVersion,\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: this.domainVersion,\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\nexport class ExchangeOrderBuilderV3 extends ExchangeOrderBuilderV2 {\n\tconstructor(\n\t\tcontractAddress: string,\n\t\tchainId: number,\n\t\tsigner: ClobSigner,\n\t\tgenerateSalt = generateOrderSalt,\n\t) {\n\t\tsuper(contractAddress, chainId, signer, generateSalt, CTF_EXCHANGE_V3_DOMAIN_VERSION);\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import "../signing/signer.js";
2
+ import "./model/orderDataV2.js";