@clober/v2-sdk 0.0.1-b → 0.0.1-dev

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 (297) hide show
  1. package/dist/cjs/.graphclient/index.js +243 -0
  2. package/dist/cjs/.graphclient/index.js.map +1 -0
  3. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js +14482 -0
  4. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js.map +1 -0
  5. package/dist/cjs/.graphclient/sources/clober-v2/types.js +4 -0
  6. package/dist/cjs/.graphclient/sources/clober-v2/types.js.map +1 -0
  7. package/dist/cjs/abis/core/controller-abi.js +989 -0
  8. package/dist/cjs/abis/core/controller-abi.js.map +1 -0
  9. package/dist/cjs/abis/core/params-abi.js +62 -0
  10. package/dist/cjs/abis/core/params-abi.js.map +1 -0
  11. package/dist/cjs/apis/currency.js +87 -0
  12. package/dist/cjs/apis/currency.js.map +1 -0
  13. package/dist/cjs/apis/market.js +63 -0
  14. package/dist/cjs/apis/market.js.map +1 -0
  15. package/dist/cjs/apis/open-order.js +90 -0
  16. package/dist/cjs/apis/open-order.js.map +1 -0
  17. package/dist/cjs/approval.js +74 -0
  18. package/dist/cjs/approval.js.map +1 -0
  19. package/dist/cjs/call.js +545 -0
  20. package/dist/cjs/call.js.map +1 -0
  21. package/dist/cjs/constants/action.js +14 -0
  22. package/dist/cjs/constants/action.js.map +1 -0
  23. package/dist/cjs/constants/addresses.js +13 -0
  24. package/dist/cjs/constants/addresses.js.map +1 -0
  25. package/dist/cjs/constants/chain.js +13 -0
  26. package/dist/cjs/constants/chain.js.map +1 -0
  27. package/dist/cjs/constants/currency.js +12 -0
  28. package/dist/cjs/constants/currency.js.map +1 -0
  29. package/dist/cjs/constants/fee.js +7 -0
  30. package/dist/cjs/constants/fee.js.map +1 -0
  31. package/dist/cjs/constants/price.js +6 -0
  32. package/dist/cjs/constants/price.js.map +1 -0
  33. package/dist/cjs/constants/subgraph-url.js +8 -0
  34. package/dist/cjs/constants/subgraph-url.js.map +1 -0
  35. package/dist/cjs/index.js +22 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/model/book.js +130 -0
  38. package/dist/cjs/model/book.js.map +1 -0
  39. package/dist/cjs/model/currency.js +3 -0
  40. package/dist/cjs/model/currency.js.map +1 -0
  41. package/dist/cjs/model/depth.js +3 -0
  42. package/dist/cjs/model/depth.js.map +1 -0
  43. package/dist/cjs/model/fee-policy.js +42 -0
  44. package/dist/cjs/model/fee-policy.js.map +1 -0
  45. package/dist/cjs/model/market.js +215 -0
  46. package/dist/cjs/model/market.js.map +1 -0
  47. package/dist/cjs/model/open-order.js +3 -0
  48. package/dist/cjs/model/open-order.js.map +1 -0
  49. package/dist/cjs/package.json +1 -0
  50. package/dist/cjs/signature.js +178 -0
  51. package/dist/cjs/signature.js.map +1 -0
  52. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -0
  53. package/dist/cjs/type.js +6 -0
  54. package/dist/cjs/type.js.map +1 -0
  55. package/dist/cjs/utils/approval.js +46 -0
  56. package/dist/cjs/utils/approval.js.map +1 -0
  57. package/dist/cjs/utils/book-id.js +25 -0
  58. package/dist/cjs/utils/book-id.js.map +1 -0
  59. package/dist/cjs/utils/build-transaction.js +31 -0
  60. package/dist/cjs/utils/build-transaction.js.map +1 -0
  61. package/dist/cjs/utils/decimals.js +17 -0
  62. package/dist/cjs/utils/decimals.js.map +1 -0
  63. package/dist/cjs/utils/market.js +53 -0
  64. package/dist/cjs/utils/market.js.map +1 -0
  65. package/dist/cjs/utils/math.js +83 -0
  66. package/dist/cjs/utils/math.js.map +1 -0
  67. package/dist/cjs/utils/prices.js +22 -0
  68. package/dist/cjs/utils/prices.js.map +1 -0
  69. package/dist/cjs/utils/tick.js +106 -0
  70. package/dist/cjs/utils/tick.js.map +1 -0
  71. package/dist/cjs/utils/time.js +9 -0
  72. package/dist/cjs/utils/time.js.map +1 -0
  73. package/dist/cjs/utils/unit.js +38 -0
  74. package/dist/cjs/utils/unit.js.map +1 -0
  75. package/dist/cjs/view.js +185 -0
  76. package/dist/cjs/view.js.map +1 -0
  77. package/dist/esm/.graphclient/index.js +233 -0
  78. package/dist/esm/.graphclient/index.js.map +1 -0
  79. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js +14480 -0
  80. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js.map +1 -0
  81. package/dist/esm/.graphclient/sources/clober-v2/types.js +3 -0
  82. package/dist/esm/.graphclient/sources/clober-v2/types.js.map +1 -0
  83. package/dist/esm/abis/core/controller-abi.js +986 -0
  84. package/dist/esm/abis/core/controller-abi.js.map +1 -0
  85. package/dist/esm/abis/core/params-abi.js +59 -0
  86. package/dist/esm/abis/core/params-abi.js.map +1 -0
  87. package/dist/esm/apis/currency.js +83 -0
  88. package/dist/esm/apis/currency.js.map +1 -0
  89. package/dist/esm/apis/market.js +59 -0
  90. package/dist/esm/apis/market.js.map +1 -0
  91. package/dist/esm/apis/open-order.js +85 -0
  92. package/dist/esm/apis/open-order.js.map +1 -0
  93. package/dist/esm/approval.js +70 -0
  94. package/dist/esm/approval.js.map +1 -0
  95. package/dist/esm/call.js +535 -0
  96. package/dist/esm/call.js.map +1 -0
  97. package/dist/esm/constants/action.js +11 -0
  98. package/dist/esm/constants/action.js.map +1 -0
  99. package/dist/esm/constants/addresses.js +10 -0
  100. package/dist/esm/constants/addresses.js.map +1 -0
  101. package/dist/esm/constants/chain.js +10 -0
  102. package/dist/esm/constants/chain.js.map +1 -0
  103. package/dist/esm/constants/currency.js +9 -0
  104. package/dist/esm/constants/currency.js.map +1 -0
  105. package/dist/esm/constants/fee.js +4 -0
  106. package/dist/esm/constants/fee.js.map +1 -0
  107. package/dist/esm/constants/price.js +3 -0
  108. package/dist/esm/constants/price.js.map +1 -0
  109. package/dist/esm/constants/subgraph-url.js +5 -0
  110. package/dist/esm/constants/subgraph-url.js.map +1 -0
  111. package/dist/esm/index.js +6 -0
  112. package/dist/esm/index.js.map +1 -0
  113. package/dist/esm/model/book.js +126 -0
  114. package/dist/esm/model/book.js.map +1 -0
  115. package/dist/esm/model/currency.js +2 -0
  116. package/dist/esm/model/currency.js.map +1 -0
  117. package/dist/esm/model/depth.js +2 -0
  118. package/dist/esm/model/depth.js.map +1 -0
  119. package/dist/esm/model/fee-policy.js +38 -0
  120. package/dist/esm/model/fee-policy.js.map +1 -0
  121. package/dist/esm/model/market.js +211 -0
  122. package/dist/esm/model/market.js.map +1 -0
  123. package/dist/esm/model/open-order.js +2 -0
  124. package/dist/esm/model/open-order.js.map +1 -0
  125. package/dist/esm/package.json +1 -0
  126. package/dist/esm/signature.js +174 -0
  127. package/dist/esm/signature.js.map +1 -0
  128. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  129. package/dist/esm/type.js +2 -0
  130. package/dist/esm/type.js.map +1 -0
  131. package/dist/esm/utils/approval.js +42 -0
  132. package/dist/esm/utils/approval.js.map +1 -0
  133. package/{src/utils/book-id.ts → dist/esm/utils/book-id.js} +9 -19
  134. package/dist/esm/utils/book-id.js.map +1 -0
  135. package/dist/esm/utils/build-transaction.js +27 -0
  136. package/dist/esm/utils/build-transaction.js.map +1 -0
  137. package/dist/esm/utils/decimals.js +12 -0
  138. package/dist/esm/utils/decimals.js.map +1 -0
  139. package/dist/esm/utils/market.js +49 -0
  140. package/dist/esm/utils/market.js.map +1 -0
  141. package/dist/esm/utils/math.js +78 -0
  142. package/dist/esm/utils/math.js.map +1 -0
  143. package/dist/esm/utils/prices.js +17 -0
  144. package/dist/esm/utils/prices.js.map +1 -0
  145. package/dist/esm/utils/tick.js +100 -0
  146. package/dist/esm/utils/tick.js.map +1 -0
  147. package/dist/esm/utils/time.js +5 -0
  148. package/dist/esm/utils/time.js.map +1 -0
  149. package/dist/esm/utils/unit.js +34 -0
  150. package/dist/esm/utils/unit.js.map +1 -0
  151. package/dist/esm/view.js +177 -0
  152. package/dist/esm/view.js.map +1 -0
  153. package/dist/types/.graphclient/index.d.ts +1281 -0
  154. package/dist/types/.graphclient/index.d.ts.map +1 -0
  155. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts +3 -0
  156. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts.map +1 -0
  157. package/dist/types/.graphclient/sources/clober-v2/types.d.ts +984 -0
  158. package/dist/types/.graphclient/sources/clober-v2/types.d.ts.map +1 -0
  159. package/dist/types/abis/core/controller-abi.d.ts +757 -0
  160. package/dist/types/abis/core/controller-abi.d.ts.map +1 -0
  161. package/dist/types/abis/core/params-abi.d.ts +21 -0
  162. package/dist/types/abis/core/params-abi.d.ts.map +1 -0
  163. package/dist/types/apis/currency.d.ts +4 -0
  164. package/dist/types/apis/currency.d.ts.map +1 -0
  165. package/dist/types/apis/market.d.ts +4 -0
  166. package/dist/types/apis/market.d.ts.map +1 -0
  167. package/dist/types/apis/open-order.d.ts +5 -0
  168. package/dist/types/apis/open-order.d.ts.map +1 -0
  169. package/dist/types/approval.d.ts +32 -0
  170. package/dist/types/approval.d.ts.map +1 -0
  171. package/dist/types/call.d.ts +234 -0
  172. package/dist/types/call.d.ts.map +1 -0
  173. package/dist/types/constants/action.d.ts +10 -0
  174. package/dist/types/constants/action.d.ts.map +1 -0
  175. package/dist/types/constants/addresses.d.ts +9 -0
  176. package/dist/types/constants/addresses.d.ts.map +1 -0
  177. package/dist/types/constants/chain.d.ts +9 -0
  178. package/dist/types/constants/chain.d.ts.map +1 -0
  179. package/dist/types/constants/currency.d.ts +8 -0
  180. package/dist/types/constants/currency.d.ts.map +1 -0
  181. package/dist/types/constants/fee.d.ts +4 -0
  182. package/dist/types/constants/fee.d.ts.map +1 -0
  183. package/dist/types/constants/price.d.ts +3 -0
  184. package/dist/types/constants/price.d.ts.map +1 -0
  185. package/dist/types/constants/subgraph-url.d.ts +5 -0
  186. package/dist/types/constants/subgraph-url.d.ts.map +1 -0
  187. package/dist/types/index.d.ts +6 -0
  188. package/dist/types/index.d.ts.map +1 -0
  189. package/dist/types/model/book.d.ts +31 -0
  190. package/dist/types/model/book.d.ts.map +1 -0
  191. package/dist/types/model/currency.d.ts +7 -0
  192. package/dist/types/model/currency.d.ts.map +1 -0
  193. package/dist/types/model/depth.d.ts +11 -0
  194. package/dist/types/model/depth.d.ts.map +1 -0
  195. package/dist/types/model/fee-policy.d.ts +15 -0
  196. package/dist/types/model/fee-policy.d.ts.map +1 -0
  197. package/dist/types/model/market.d.ts +44 -0
  198. package/dist/types/model/market.d.ts.map +1 -0
  199. package/dist/types/model/open-order.d.ts +28 -0
  200. package/dist/types/model/open-order.d.ts.map +1 -0
  201. package/dist/types/signature.d.ts +40 -0
  202. package/dist/types/signature.d.ts.map +1 -0
  203. package/dist/types/type.d.ts +34 -0
  204. package/dist/types/type.d.ts.map +1 -0
  205. package/dist/types/utils/approval.d.ts +3 -0
  206. package/dist/types/utils/approval.d.ts.map +1 -0
  207. package/dist/types/utils/book-id.d.ts +2 -0
  208. package/dist/types/utils/book-id.d.ts.map +1 -0
  209. package/dist/types/utils/build-transaction.d.ts +5 -0
  210. package/dist/types/utils/build-transaction.d.ts.map +1 -0
  211. package/dist/types/utils/decimals.d.ts +3 -0
  212. package/dist/types/utils/decimals.d.ts.map +1 -0
  213. package/dist/types/utils/market.d.ts +7 -0
  214. package/dist/types/utils/market.d.ts.map +1 -0
  215. package/dist/types/utils/math.d.ts +3 -0
  216. package/dist/types/utils/math.d.ts.map +1 -0
  217. package/dist/types/utils/prices.d.ts +3 -0
  218. package/dist/types/utils/prices.d.ts.map +1 -0
  219. package/dist/types/utils/tick.d.ts +4 -0
  220. package/dist/types/utils/tick.d.ts.map +1 -0
  221. package/dist/types/utils/time.d.ts +2 -0
  222. package/dist/types/utils/time.d.ts.map +1 -0
  223. package/dist/types/utils/unit.d.ts +4 -0
  224. package/dist/types/utils/unit.d.ts.map +1 -0
  225. package/dist/types/view.d.ts +129 -0
  226. package/dist/types/view.d.ts.map +1 -0
  227. package/package.json +14 -6
  228. package/.eslintignore +0 -1
  229. package/.eslintrc.yaml +0 -34
  230. package/.github/workflows/ci.yaml +0 -88
  231. package/.github/workflows/deployer.yaml +0 -19
  232. package/.nvmrc +0 -1
  233. package/.prettierignore +0 -6
  234. package/.prettierrc +0 -7
  235. package/src/.graphclient/index.ts +0 -1695
  236. package/src/.graphclient/schema.graphql +0 -1116
  237. package/src/.graphclient/sources/clober-v2/introspectionSchema.ts +0 -14481
  238. package/src/.graphclient/sources/clober-v2/schema.graphql +0 -1116
  239. package/src/.graphclient/sources/clober-v2/types.ts +0 -1133
  240. package/src/.graphclientrc.yml +0 -12
  241. package/src/abis/core/controller-abi.ts +0 -985
  242. package/src/abis/core/params-abi.ts +0 -59
  243. package/src/apis/currency.ts +0 -92
  244. package/src/apis/graphql/books.graphql +0 -25
  245. package/src/apis/graphql/open-order.graphql +0 -29
  246. package/src/apis/graphql/open-orders.graphql +0 -29
  247. package/src/apis/market.ts +0 -85
  248. package/src/apis/open-order.ts +0 -145
  249. package/src/approval.ts +0 -82
  250. package/src/call.ts +0 -705
  251. package/src/constants/action.ts +0 -9
  252. package/src/constants/addresses.ts +0 -17
  253. package/src/constants/chain.ts +0 -12
  254. package/src/constants/currency.ts +0 -15
  255. package/src/constants/fee.ts +0 -4
  256. package/src/constants/price.ts +0 -3
  257. package/src/constants/subgraph-url.ts +0 -8
  258. package/src/index.ts +0 -5
  259. package/src/model/book.ts +0 -166
  260. package/src/model/currency.ts +0 -6
  261. package/src/model/depth.ts +0 -11
  262. package/src/model/fee-policy.ts +0 -51
  263. package/src/model/market.ts +0 -320
  264. package/src/model/open-order.ts +0 -16
  265. package/src/signature.ts +0 -196
  266. package/src/type.ts +0 -38
  267. package/src/utils/approval.ts +0 -48
  268. package/src/utils/build-transaction.ts +0 -39
  269. package/src/utils/decimals.ts +0 -22
  270. package/src/utils/market.ts +0 -74
  271. package/src/utils/math.ts +0 -117
  272. package/src/utils/prices.ts +0 -29
  273. package/src/utils/tick.ts +0 -104
  274. package/src/utils/time.ts +0 -6
  275. package/src/utils/unit.ts +0 -43
  276. package/src/view.ts +0 -258
  277. package/test/book-id.test.ts +0 -101
  278. package/test/fee-policy.test.ts +0 -228
  279. package/test/get-expected-input.test.ts +0 -206
  280. package/test/get-expected-output.test.ts +0 -206
  281. package/test/limit-order.test.ts +0 -279
  282. package/test/market-order.test.ts +0 -245
  283. package/test/market.test.ts +0 -68
  284. package/test/math.test.ts +0 -91
  285. package/test/open-order.test.ts +0 -112
  286. package/test/open.test.ts +0 -15
  287. package/test/tick.test.ts +0 -230
  288. package/test/tsconfig.json +0 -12
  289. package/test/utils/chain.ts +0 -12
  290. package/test/utils/constants.ts +0 -25
  291. package/test/utils/currency.ts +0 -44
  292. package/test/utils/depth.ts +0 -148
  293. package/test/utils/test-chain.ts +0 -26
  294. package/test/vitest.config.ts +0 -15
  295. package/tsconfig.base.json +0 -37
  296. package/tsconfig.build.json +0 -9
  297. package/tsconfig.json +0 -9
@@ -0,0 +1,185 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getOpenOrders = exports.getOpenOrder = exports.getExpectedInput = exports.getExpectedOutput = exports.getMarket = void 0;
4
+ const viem_1 = require("viem");
5
+ const market_1 = require("./apis/market");
6
+ const prices_1 = require("./utils/prices");
7
+ const price_1 = require("./constants/price");
8
+ const open_order_1 = require("./apis/open-order");
9
+ /**
10
+ * Get market information by chain id and token addresses
11
+ * @param chainId - chain id from {@link CHAIN_IDS}
12
+ * @param token0 - token0 address
13
+ * @param token1 - token1 address
14
+ * @param options
15
+ * @param options.rpcUrl - RPC URL of the blockchain
16
+ * @returns A market {@link Market}
17
+ *
18
+ * @example
19
+ * import { getMarket } from '@clober/v2-sdk'
20
+ *
21
+ * const market = await getMarket(
22
+ * 421614,
23
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
24
+ * '0x0000000000000000000000000000000000000000',
25
+ * )
26
+ */
27
+ const getMarket = async (chainId, token0, token1, options) => {
28
+ if ((0, viem_1.isAddressEqual)(token0, token1)) {
29
+ throw new Error('Token0 and token1 must be different');
30
+ }
31
+ const market = await (0, market_1.fetchMarket)(chainId, [token0, token1], options?.rpcUrl);
32
+ return {
33
+ chainId,
34
+ quote: market.quote,
35
+ base: market.base,
36
+ makerFee: market.makerFee,
37
+ takerFee: market.takerFee,
38
+ bids: market.bids,
39
+ bidBookOpen: market.bidBookOpen,
40
+ asks: market.asks,
41
+ askBookOpen: market.askBookOpen,
42
+ };
43
+ };
44
+ exports.getMarket = getMarket;
45
+ /**
46
+ * Calculates the expected output for a given input amount, based on the provided market data.
47
+ *
48
+ * @param chainId The chain ID of the blockchain.
49
+ * @param inputToken The address of the input token.
50
+ * @param outputToken The address of the output token.
51
+ * @param amountIn The amount of expected input amount. (ex 1.2 ETH -> 1.2)
52
+ * @param options
53
+ * @param options.limitPrice The maximum limit price to spend.
54
+ * @param options.rpcUrl The RPC URL of the blockchain.
55
+ * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
56
+ * @example
57
+ * import { getExpectedOutput } from '@clober/v2-sdk'
58
+ *
59
+ * const { takenAmount, spendAmount } = await getExpectedOutput(
60
+ * 421614,
61
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
62
+ * '0x0000000000000000000000000000000000000000',
63
+ * '1000.123', // spend 1000.123 USDC
64
+ * )
65
+ */
66
+ const getExpectedOutput = async (chainId, inputToken, outputToken, amountIn, options) => {
67
+ const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken], options?.rpcUrl);
68
+ const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
69
+ const rawLimitPrice = options && options.limitPrice
70
+ ? (0, prices_1.parsePrice)(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
71
+ : isBid
72
+ ? price_1.MAX_PRICE
73
+ : 0n;
74
+ const inputCurrency = isBid ? market.quote : market.base;
75
+ const result = market.spend({
76
+ spendBase: !isBid,
77
+ limitPrice: rawLimitPrice,
78
+ amountIn: (0, viem_1.parseUnits)(amountIn, inputCurrency.decimals),
79
+ });
80
+ const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
81
+ takenAmount: acc.takenAmount + takenAmount,
82
+ spendAmount: acc.spendAmount + spendAmount,
83
+ }), { takenAmount: 0n, spendAmount: 0n });
84
+ return {
85
+ takenAmount: (0, viem_1.formatUnits)(takenAmount, isBid ? market.base.decimals : market.quote.decimals),
86
+ spendAmount: (0, viem_1.formatUnits)(spendAmount, isBid ? market.quote.decimals : market.base.decimals),
87
+ result: Object.entries(result).map(([bookId, { takenAmount, spendAmount }]) => ({
88
+ bookId: BigInt(bookId),
89
+ takenAmount,
90
+ spendAmount,
91
+ })),
92
+ };
93
+ };
94
+ exports.getExpectedOutput = getExpectedOutput;
95
+ /**
96
+ * Calculates the expected input for a given output amount, based on the provided market data.
97
+ *
98
+ * @param chainId The chain ID of the blockchain.
99
+ * @param inputToken The address of the input token.
100
+ * @param outputToken The address of the output token.
101
+ * @param amountOut The amount of expected output amount. (ex 1.2 ETH -> 1.2)
102
+ * @param options
103
+ * @param options.limitPrice The maximum limit price to take.
104
+ * @param options.rpcUrl The RPC URL of the blockchain.
105
+ * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
106
+ * @example
107
+ * import { getExpectedInput } from '@clober/v2-sdk'
108
+ *
109
+ * const { takenAmount, spendAmount } = await getExpectedInput(
110
+ * 421614,
111
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
112
+ * '0x0000000000000000000000000000000000000000',
113
+ * '0.1', // take 0.1 ETH
114
+ * )
115
+ */
116
+ const getExpectedInput = async (chainId, inputToken, outputToken, amountOut, options) => {
117
+ const market = await (0, market_1.fetchMarket)(chainId, [inputToken, outputToken], options?.rpcUrl);
118
+ const isBid = (0, viem_1.isAddressEqual)(market.quote.address, inputToken);
119
+ const rawLimitPrice = options && options.limitPrice
120
+ ? (0, prices_1.parsePrice)(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
121
+ : isBid
122
+ ? price_1.MAX_PRICE
123
+ : 0n;
124
+ const outputCurrency = isBid ? market.base : market.quote;
125
+ const result = market.take({
126
+ takeQuote: !isBid,
127
+ limitPrice: rawLimitPrice,
128
+ amountOut: (0, viem_1.parseUnits)(amountOut, outputCurrency.decimals),
129
+ });
130
+ const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
131
+ takenAmount: acc.takenAmount + takenAmount,
132
+ spendAmount: acc.spendAmount + spendAmount,
133
+ }), { takenAmount: 0n, spendAmount: 0n });
134
+ return {
135
+ takenAmount: (0, viem_1.formatUnits)(takenAmount, isBid ? market.base.decimals : market.quote.decimals),
136
+ spendAmount: (0, viem_1.formatUnits)(spendAmount, isBid ? market.quote.decimals : market.base.decimals),
137
+ result: Object.entries(result).map(([bookId, { takenAmount, spendAmount }]) => ({
138
+ bookId: BigInt(bookId),
139
+ takenAmount,
140
+ spendAmount,
141
+ })),
142
+ };
143
+ };
144
+ exports.getExpectedInput = getExpectedInput;
145
+ /**
146
+ * Retrieves the open order with the specified ID on the given chain.
147
+ *
148
+ * @param {CHAIN_IDS} chainId The chain ID.
149
+ * @param {string} id The ID of the open order.
150
+ * @param options
151
+ * @param options.rpcUrl The RPC URL of the blockchain.
152
+ * @returns {Promise<OpenOrder>} Promise resolving to the open order object, or undefined if not found.
153
+ * @example
154
+ * import { getOpenOrder } from '@clober/v2-sdk'
155
+ *
156
+ * const openOrder = await getOpenOrder(
157
+ * 421614,
158
+ * '46223845323662364279893361453861711542636620039907198451770258805035840307200'
159
+ * )
160
+ */
161
+ const getOpenOrder = async (chainId, id, options) => {
162
+ return (0, open_order_1.fetchOpenOrder)(chainId, id, options?.rpcUrl);
163
+ };
164
+ exports.getOpenOrder = getOpenOrder;
165
+ /**
166
+ * Retrieves open orders for the specified user on the given chain.
167
+ *
168
+ * @param {CHAIN_IDS} chainId The chain ID.
169
+ * @param {`0x${string}`} userAddress The Ethereum address of the user.
170
+ * @param options
171
+ * @param options.rpcUrl The RPC URL of the blockchain.
172
+ * @returns {Promise<OpenOrder[]>} Promise resolving to an array of open orders.
173
+ * @example
174
+ * import { getOpenOrders } from '@clober/v2-sdk'
175
+ *
176
+ * const openOrders = await getOpenOrders(
177
+ * 421614,
178
+ * '0x5F79EE8f8fA862E98201120d83c4eC39D9468D49'
179
+ * )
180
+ */
181
+ const getOpenOrders = async (chainId, userAddress, options) => {
182
+ return (0, open_order_1.fetchOpenOrders)(chainId, userAddress, options?.rpcUrl);
183
+ };
184
+ exports.getOpenOrders = getOpenOrders;
185
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,233 @@
1
+ import { gql } from '@graphql-mesh/utils';
2
+ import { PubSub } from '@graphql-mesh/utils';
3
+ import { DefaultLogger } from '@graphql-mesh/utils';
4
+ import MeshCache from "@graphql-mesh/cache-localforage";
5
+ import { fetch as fetchFn } from '@whatwg-node/fetch';
6
+ import GraphqlHandler from "@graphql-mesh/graphql";
7
+ import BareMerger from "@graphql-mesh/merger-bare";
8
+ import { printWithCache } from '@graphql-mesh/utils';
9
+ import { createMeshHTTPHandler } from '@graphql-mesh/http';
10
+ import { getMesh } from '@graphql-mesh/runtime';
11
+ import { MeshStore, FsStoreStorageAdapter } from '@graphql-mesh/store';
12
+ import { path as pathModule } from '@graphql-mesh/cross-helpers';
13
+ import * as importedModule$0 from "./sources/clober-v2/introspectionSchema";
14
+ const baseDir = pathModule.join(typeof __dirname === 'string' ? __dirname : '/', '..');
15
+ const importFn = (moduleId) => {
16
+ const relativeModuleId = (pathModule.isAbsolute(moduleId) ? pathModule.relative(baseDir, moduleId) : moduleId).split('\\').join('/').replace(baseDir + '/', '');
17
+ switch (relativeModuleId) {
18
+ case ".graphclient/sources/clober-v2/introspectionSchema":
19
+ return Promise.resolve(importedModule$0);
20
+ default:
21
+ return Promise.reject(new Error(`Cannot find module '${relativeModuleId}'.`));
22
+ }
23
+ };
24
+ const rootStore = new MeshStore('.graphclient', new FsStoreStorageAdapter({
25
+ cwd: baseDir,
26
+ importFn,
27
+ fileType: "ts",
28
+ }), {
29
+ readonly: true,
30
+ validate: false
31
+ });
32
+ export const rawServeConfig = undefined;
33
+ export async function getMeshOptions() {
34
+ const pubsub = new PubSub();
35
+ const sourcesStore = rootStore.child('sources');
36
+ const logger = new DefaultLogger("GraphClient");
37
+ const cache = new MeshCache({
38
+ ...{},
39
+ importFn,
40
+ store: rootStore.child('cache'),
41
+ pubsub,
42
+ logger,
43
+ });
44
+ const sources = [];
45
+ const transforms = [];
46
+ const additionalEnvelopPlugins = [];
47
+ const cloberV2Transforms = [];
48
+ const additionalTypeDefs = [];
49
+ const cloberV2Handler = new GraphqlHandler({
50
+ name: "clober-v2",
51
+ config: { "endpoint": "{context.url:https://subgraph.satsuma-prod.com/f6a8c4889b7b/clober/v2-core-subgraph/api}" },
52
+ baseDir,
53
+ cache,
54
+ pubsub,
55
+ store: sourcesStore.child("clober-v2"),
56
+ logger: logger.child("clober-v2"),
57
+ importFn,
58
+ });
59
+ sources[0] = {
60
+ name: 'clober-v2',
61
+ handler: cloberV2Handler,
62
+ transforms: cloberV2Transforms
63
+ };
64
+ const additionalResolvers = [];
65
+ const merger = new BareMerger({
66
+ cache,
67
+ pubsub,
68
+ logger: logger.child('bareMerger'),
69
+ store: rootStore.child('bareMerger')
70
+ });
71
+ return {
72
+ sources,
73
+ transforms,
74
+ additionalTypeDefs,
75
+ additionalResolvers,
76
+ cache,
77
+ pubsub,
78
+ merger,
79
+ logger,
80
+ additionalEnvelopPlugins,
81
+ get documents() {
82
+ return [
83
+ {
84
+ document: GetBooksDocument,
85
+ get rawSDL() {
86
+ return printWithCache(GetBooksDocument);
87
+ },
88
+ location: 'GetBooksDocument.graphql'
89
+ }, {
90
+ document: GetOpenOrderDocument,
91
+ get rawSDL() {
92
+ return printWithCache(GetOpenOrderDocument);
93
+ },
94
+ location: 'GetOpenOrderDocument.graphql'
95
+ }, {
96
+ document: GetOpenOrdersDocument,
97
+ get rawSDL() {
98
+ return printWithCache(GetOpenOrdersDocument);
99
+ },
100
+ location: 'GetOpenOrdersDocument.graphql'
101
+ }
102
+ ];
103
+ },
104
+ fetchFn,
105
+ };
106
+ }
107
+ export function createBuiltMeshHTTPHandler() {
108
+ return createMeshHTTPHandler({
109
+ baseDir,
110
+ getBuiltMesh: getBuiltGraphClient,
111
+ rawServeConfig: undefined,
112
+ });
113
+ }
114
+ let meshInstance$;
115
+ export function getBuiltGraphClient() {
116
+ if (meshInstance$ == null) {
117
+ meshInstance$ = getMeshOptions().then(meshOptions => getMesh(meshOptions)).then(mesh => {
118
+ const id = mesh.pubsub.subscribe('destroy', () => {
119
+ meshInstance$ = undefined;
120
+ mesh.pubsub.unsubscribe(id);
121
+ });
122
+ return mesh;
123
+ });
124
+ }
125
+ return meshInstance$;
126
+ }
127
+ export const execute = (...args) => getBuiltGraphClient().then(({ execute }) => execute(...args));
128
+ export const subscribe = (...args) => getBuiltGraphClient().then(({ subscribe }) => subscribe(...args));
129
+ export function getBuiltGraphSDK(globalContext) {
130
+ const sdkRequester$ = getBuiltGraphClient().then(({ sdkRequesterFactory }) => sdkRequesterFactory(globalContext));
131
+ return getSdk((...args) => sdkRequester$.then(sdkRequester => sdkRequester(...args)));
132
+ }
133
+ export const getBooksDocument = gql `
134
+ query getBooks($baseTokenAddress: String!, $quoteTokenAddress: String!) {
135
+ books(
136
+ where: {base: $baseTokenAddress, quote: $quoteTokenAddress, makerPolicy: "8888308", takerPolicy: "8889608", hooks: "0x0000000000000000000000000000000000000000"}
137
+ ) {
138
+ id
139
+ base {
140
+ id
141
+ name
142
+ symbol
143
+ decimals
144
+ }
145
+ quote {
146
+ id
147
+ name
148
+ symbol
149
+ decimals
150
+ }
151
+ unit
152
+ depths {
153
+ tick
154
+ price
155
+ rawAmount
156
+ }
157
+ }
158
+ }
159
+ `;
160
+ export const getOpenOrderDocument = gql `
161
+ query getOpenOrder($orderId: ID!) {
162
+ openOrder(id: $orderId) {
163
+ id
164
+ book {
165
+ id
166
+ base {
167
+ id
168
+ name
169
+ symbol
170
+ decimals
171
+ }
172
+ quote {
173
+ id
174
+ name
175
+ symbol
176
+ decimals
177
+ }
178
+ unit
179
+ }
180
+ tick
181
+ txHash
182
+ createdAt
183
+ rawAmount
184
+ rawFilledAmount
185
+ rawClaimedAmount
186
+ rawClaimableAmount
187
+ }
188
+ }
189
+ `;
190
+ export const getOpenOrdersDocument = gql `
191
+ query getOpenOrders($userAddress: String!) {
192
+ openOrders(where: {user: $userAddress}) {
193
+ id
194
+ book {
195
+ id
196
+ base {
197
+ id
198
+ name
199
+ symbol
200
+ decimals
201
+ }
202
+ quote {
203
+ id
204
+ name
205
+ symbol
206
+ decimals
207
+ }
208
+ unit
209
+ }
210
+ tick
211
+ txHash
212
+ createdAt
213
+ rawAmount
214
+ rawFilledAmount
215
+ rawClaimedAmount
216
+ rawClaimableAmount
217
+ }
218
+ }
219
+ `;
220
+ export function getSdk(requester) {
221
+ return {
222
+ getBooks(variables, options) {
223
+ return requester(getBooksDocument, variables, options);
224
+ },
225
+ getOpenOrder(variables, options) {
226
+ return requester(getOpenOrderDocument, variables, options);
227
+ },
228
+ getOpenOrders(variables, options) {
229
+ return requester(getOpenOrdersDocument, variables, options);
230
+ }
231
+ };
232
+ }
233
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/.graphclient/index.ts"],"names":[],"mappings":"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"}