@clober/v2-sdk 0.0.2-a → 0.0.2-b

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 (215) hide show
  1. package/dist/cjs/abis/core/controller-abi.js +989 -0
  2. package/dist/cjs/abis/core/controller-abi.js.map +1 -0
  3. package/dist/cjs/abis/core/params-abi.js +62 -0
  4. package/dist/cjs/abis/core/params-abi.js.map +1 -0
  5. package/dist/cjs/apis/currency.js +87 -0
  6. package/dist/cjs/apis/currency.js.map +1 -0
  7. package/dist/cjs/apis/market.js +57 -0
  8. package/dist/cjs/apis/market.js.map +1 -0
  9. package/dist/cjs/apis/open-order.js +90 -0
  10. package/dist/cjs/apis/open-order.js.map +1 -0
  11. package/dist/cjs/apis/subgraph.js +26 -0
  12. package/dist/cjs/apis/subgraph.js.map +1 -0
  13. package/dist/cjs/approval.js +74 -0
  14. package/dist/cjs/approval.js.map +1 -0
  15. package/dist/cjs/call.js +545 -0
  16. package/dist/cjs/call.js.map +1 -0
  17. package/dist/cjs/constants/action.js +14 -0
  18. package/dist/cjs/constants/action.js.map +1 -0
  19. package/dist/cjs/constants/addresses.js +13 -0
  20. package/dist/cjs/constants/addresses.js.map +1 -0
  21. package/dist/cjs/constants/chain.js +13 -0
  22. package/dist/cjs/constants/chain.js.map +1 -0
  23. package/dist/cjs/constants/currency.js +12 -0
  24. package/dist/cjs/constants/currency.js.map +1 -0
  25. package/dist/cjs/constants/fee.js +7 -0
  26. package/dist/cjs/constants/fee.js.map +1 -0
  27. package/dist/cjs/constants/price.js +6 -0
  28. package/dist/cjs/constants/price.js.map +1 -0
  29. package/dist/cjs/constants/subgraph-url.js +8 -0
  30. package/dist/cjs/constants/subgraph-url.js.map +1 -0
  31. package/dist/cjs/index.js +22 -0
  32. package/dist/cjs/index.js.map +1 -0
  33. package/dist/cjs/model/book.js +130 -0
  34. package/dist/cjs/model/book.js.map +1 -0
  35. package/dist/cjs/model/currency.js +3 -0
  36. package/dist/cjs/model/currency.js.map +1 -0
  37. package/dist/cjs/model/depth.js +3 -0
  38. package/dist/cjs/model/depth.js.map +1 -0
  39. package/dist/cjs/model/fee-policy.js +42 -0
  40. package/dist/cjs/model/fee-policy.js.map +1 -0
  41. package/dist/cjs/model/market.js +215 -0
  42. package/dist/cjs/model/market.js.map +1 -0
  43. package/dist/cjs/model/open-order.js +3 -0
  44. package/dist/cjs/model/open-order.js.map +1 -0
  45. package/dist/cjs/package.json +1 -0
  46. package/dist/cjs/signature.js +178 -0
  47. package/dist/cjs/signature.js.map +1 -0
  48. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -0
  49. package/dist/cjs/type.js +6 -0
  50. package/dist/cjs/type.js.map +1 -0
  51. package/dist/cjs/utils/approval.js +46 -0
  52. package/dist/cjs/utils/approval.js.map +1 -0
  53. package/dist/cjs/utils/book-id.js +25 -0
  54. package/dist/cjs/utils/book-id.js.map +1 -0
  55. package/dist/cjs/utils/build-transaction.js +31 -0
  56. package/dist/cjs/utils/build-transaction.js.map +1 -0
  57. package/dist/cjs/utils/decimals.js +17 -0
  58. package/dist/cjs/utils/decimals.js.map +1 -0
  59. package/dist/cjs/utils/market.js +53 -0
  60. package/dist/cjs/utils/market.js.map +1 -0
  61. package/dist/cjs/utils/math.js +83 -0
  62. package/dist/cjs/utils/math.js.map +1 -0
  63. package/dist/cjs/utils/prices.js +22 -0
  64. package/dist/cjs/utils/prices.js.map +1 -0
  65. package/dist/cjs/utils/tick.js +106 -0
  66. package/dist/cjs/utils/tick.js.map +1 -0
  67. package/dist/cjs/utils/time.js +9 -0
  68. package/dist/cjs/utils/time.js.map +1 -0
  69. package/dist/cjs/utils/unit.js +38 -0
  70. package/dist/cjs/utils/unit.js.map +1 -0
  71. package/dist/cjs/view.js +185 -0
  72. package/dist/cjs/view.js.map +1 -0
  73. package/dist/esm/abis/core/controller-abi.js +986 -0
  74. package/dist/esm/abis/core/controller-abi.js.map +1 -0
  75. package/dist/esm/abis/core/params-abi.js +59 -0
  76. package/dist/esm/abis/core/params-abi.js.map +1 -0
  77. package/dist/esm/apis/currency.js +83 -0
  78. package/dist/esm/apis/currency.js.map +1 -0
  79. package/dist/esm/apis/market.js +53 -0
  80. package/dist/esm/apis/market.js.map +1 -0
  81. package/dist/esm/apis/open-order.js +85 -0
  82. package/dist/esm/apis/open-order.js.map +1 -0
  83. package/dist/esm/apis/subgraph.js +22 -0
  84. package/dist/esm/apis/subgraph.js.map +1 -0
  85. package/dist/esm/approval.js +70 -0
  86. package/dist/esm/approval.js.map +1 -0
  87. package/dist/esm/call.js +535 -0
  88. package/dist/esm/call.js.map +1 -0
  89. package/dist/esm/constants/action.js +11 -0
  90. package/dist/esm/constants/action.js.map +1 -0
  91. package/dist/esm/constants/addresses.js +10 -0
  92. package/dist/esm/constants/addresses.js.map +1 -0
  93. package/dist/esm/constants/chain.js +10 -0
  94. package/dist/esm/constants/chain.js.map +1 -0
  95. package/dist/esm/constants/currency.js +9 -0
  96. package/dist/esm/constants/currency.js.map +1 -0
  97. package/dist/esm/constants/fee.js +4 -0
  98. package/dist/esm/constants/fee.js.map +1 -0
  99. package/dist/esm/constants/price.js +3 -0
  100. package/dist/esm/constants/price.js.map +1 -0
  101. package/dist/esm/constants/subgraph-url.js +5 -0
  102. package/dist/esm/constants/subgraph-url.js.map +1 -0
  103. package/dist/esm/index.js +6 -0
  104. package/dist/esm/index.js.map +1 -0
  105. package/dist/esm/model/book.js +126 -0
  106. package/dist/esm/model/book.js.map +1 -0
  107. package/dist/esm/model/currency.js +2 -0
  108. package/dist/esm/model/currency.js.map +1 -0
  109. package/dist/esm/model/depth.js +2 -0
  110. package/dist/esm/model/depth.js.map +1 -0
  111. package/dist/esm/model/fee-policy.js +38 -0
  112. package/dist/esm/model/fee-policy.js.map +1 -0
  113. package/dist/esm/model/market.js +211 -0
  114. package/dist/esm/model/market.js.map +1 -0
  115. package/dist/esm/model/open-order.js +2 -0
  116. package/dist/esm/model/open-order.js.map +1 -0
  117. package/dist/esm/package.json +1 -0
  118. package/dist/esm/signature.js +174 -0
  119. package/dist/esm/signature.js.map +1 -0
  120. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  121. package/dist/esm/type.js +2 -0
  122. package/dist/esm/type.js.map +1 -0
  123. package/dist/esm/utils/approval.js +42 -0
  124. package/dist/esm/utils/approval.js.map +1 -0
  125. package/dist/esm/utils/book-id.js +21 -0
  126. package/dist/esm/utils/book-id.js.map +1 -0
  127. package/dist/esm/utils/build-transaction.js +27 -0
  128. package/dist/esm/utils/build-transaction.js.map +1 -0
  129. package/dist/esm/utils/decimals.js +12 -0
  130. package/dist/esm/utils/decimals.js.map +1 -0
  131. package/dist/esm/utils/market.js +49 -0
  132. package/dist/esm/utils/market.js.map +1 -0
  133. package/dist/esm/utils/math.js +78 -0
  134. package/dist/esm/utils/math.js.map +1 -0
  135. package/dist/esm/utils/prices.js +17 -0
  136. package/dist/esm/utils/prices.js.map +1 -0
  137. package/dist/esm/utils/tick.js +100 -0
  138. package/dist/esm/utils/tick.js.map +1 -0
  139. package/dist/esm/utils/time.js +5 -0
  140. package/dist/esm/utils/time.js.map +1 -0
  141. package/dist/esm/utils/unit.js +34 -0
  142. package/dist/esm/utils/unit.js.map +1 -0
  143. package/dist/esm/view.js +177 -0
  144. package/dist/esm/view.js.map +1 -0
  145. package/dist/types/abis/core/controller-abi.d.ts +757 -0
  146. package/dist/types/abis/core/controller-abi.d.ts.map +1 -0
  147. package/dist/types/abis/core/params-abi.d.ts +21 -0
  148. package/dist/types/abis/core/params-abi.d.ts.map +1 -0
  149. package/dist/types/apis/currency.d.ts +4 -0
  150. package/dist/types/apis/currency.d.ts.map +1 -0
  151. package/dist/types/apis/market.d.ts +4 -0
  152. package/dist/types/apis/market.d.ts.map +1 -0
  153. package/dist/types/apis/open-order.d.ts +5 -0
  154. package/dist/types/apis/open-order.d.ts.map +1 -0
  155. package/dist/types/apis/subgraph.d.ts +3 -0
  156. package/dist/types/apis/subgraph.d.ts.map +1 -0
  157. package/dist/types/approval.d.ts +32 -0
  158. package/dist/types/approval.d.ts.map +1 -0
  159. package/dist/types/call.d.ts +234 -0
  160. package/dist/types/call.d.ts.map +1 -0
  161. package/dist/types/constants/action.d.ts +10 -0
  162. package/dist/types/constants/action.d.ts.map +1 -0
  163. package/dist/types/constants/addresses.d.ts +9 -0
  164. package/dist/types/constants/addresses.d.ts.map +1 -0
  165. package/dist/types/constants/chain.d.ts +9 -0
  166. package/dist/types/constants/chain.d.ts.map +1 -0
  167. package/dist/types/constants/currency.d.ts +8 -0
  168. package/dist/types/constants/currency.d.ts.map +1 -0
  169. package/dist/types/constants/fee.d.ts +4 -0
  170. package/dist/types/constants/fee.d.ts.map +1 -0
  171. package/dist/types/constants/price.d.ts +3 -0
  172. package/dist/types/constants/price.d.ts.map +1 -0
  173. package/dist/types/constants/subgraph-url.d.ts +5 -0
  174. package/dist/types/constants/subgraph-url.d.ts.map +1 -0
  175. package/dist/types/index.d.ts +6 -0
  176. package/dist/types/index.d.ts.map +1 -0
  177. package/dist/types/model/book.d.ts +52 -0
  178. package/dist/types/model/book.d.ts.map +1 -0
  179. package/dist/types/model/currency.d.ts +7 -0
  180. package/dist/types/model/currency.d.ts.map +1 -0
  181. package/dist/types/model/depth.d.ts +11 -0
  182. package/dist/types/model/depth.d.ts.map +1 -0
  183. package/dist/types/model/fee-policy.d.ts +15 -0
  184. package/dist/types/model/fee-policy.d.ts.map +1 -0
  185. package/dist/types/model/market.d.ts +44 -0
  186. package/dist/types/model/market.d.ts.map +1 -0
  187. package/dist/types/model/open-order.d.ts +54 -0
  188. package/dist/types/model/open-order.d.ts.map +1 -0
  189. package/dist/types/signature.d.ts +40 -0
  190. package/dist/types/signature.d.ts.map +1 -0
  191. package/dist/types/type.d.ts +34 -0
  192. package/dist/types/type.d.ts.map +1 -0
  193. package/dist/types/utils/approval.d.ts +3 -0
  194. package/dist/types/utils/approval.d.ts.map +1 -0
  195. package/dist/types/utils/book-id.d.ts +2 -0
  196. package/dist/types/utils/book-id.d.ts.map +1 -0
  197. package/dist/types/utils/build-transaction.d.ts +5 -0
  198. package/dist/types/utils/build-transaction.d.ts.map +1 -0
  199. package/dist/types/utils/decimals.d.ts +3 -0
  200. package/dist/types/utils/decimals.d.ts.map +1 -0
  201. package/dist/types/utils/market.d.ts +7 -0
  202. package/dist/types/utils/market.d.ts.map +1 -0
  203. package/dist/types/utils/math.d.ts +3 -0
  204. package/dist/types/utils/math.d.ts.map +1 -0
  205. package/dist/types/utils/prices.d.ts +3 -0
  206. package/dist/types/utils/prices.d.ts.map +1 -0
  207. package/dist/types/utils/tick.d.ts +4 -0
  208. package/dist/types/utils/tick.d.ts.map +1 -0
  209. package/dist/types/utils/time.d.ts +2 -0
  210. package/dist/types/utils/time.d.ts.map +1 -0
  211. package/dist/types/utils/unit.d.ts +4 -0
  212. package/dist/types/utils/unit.d.ts.map +1 -0
  213. package/dist/types/view.d.ts +129 -0
  214. package/dist/types/view.d.ts.map +1 -0
  215. package/package.json +2 -2
@@ -0,0 +1,78 @@
1
+ export const divide = (x, y, roundUp) => {
2
+ if (roundUp) {
3
+ if (x === 0n) {
4
+ return 0n;
5
+ }
6
+ else {
7
+ return (x - 1n) / y + 1n;
8
+ }
9
+ }
10
+ else {
11
+ return x / y;
12
+ }
13
+ };
14
+ export const lnWad = (x) => {
15
+ const or = (a, b) => a | b;
16
+ const xor = (a, b) => a ^ b;
17
+ const and = (a, b) => a & b;
18
+ const add = (a, b) => a + b;
19
+ const sub = (a, b) => a - b;
20
+ const mul = (a, b) => a * b;
21
+ const sdiv = (a, b) => a / b;
22
+ const lt = (a, b) => (a < b ? 1n : 0n);
23
+ const shl = (x, y) => y << x;
24
+ const shr = (x, y) => y >> x;
25
+ const sar = (x, y) => y >> x;
26
+ const byte = (i, x) => (x >> (248n - i * 8n)) & 0xffn;
27
+ // We want to convert `x` from `10**18` fixed point to `2**96` fixed point.
28
+ // We do this by multiplying by `2**96 / 10**18`. But since
29
+ // `ln(x * C) = ln(x) + ln(C)`, we can simply do nothing here
30
+ // and add `ln(2**96 / 10**18)` at the end.
31
+ // Compute `k = log2(x) - 96`, `r = 159 - k = 255 - log2(x) = 255 ^ log2(x)`.
32
+ let r = shl(7n, lt(0xffffffffffffffffffffffffffffffffn, x));
33
+ r = or(r, shl(6n, lt(0xffffffffffffffffn, shr(r, x))));
34
+ r = or(r, shl(5n, lt(0xffffffffn, shr(r, x))));
35
+ r = or(r, shl(4n, lt(0xffffn, shr(r, x))));
36
+ r = or(r, shl(3n, lt(0xffn, shr(r, x))));
37
+ // forgefmt: disable-next-item
38
+ r = xor(r, byte(and(0x1fn, shr(shr(r, x), 0x8421084210842108cc6318c6db6d54ben)), 0xf8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffffn));
39
+ // Reduce range of x to (1, 2) * 2**96
40
+ // ln(2^k * x) = k * ln(2) + ln(x)
41
+ x = shr(159n, shl(r, x));
42
+ // Evaluate using a (8, 8)-term rational approximation.
43
+ // `p` is made monic, we will multiply by a scale factor later.
44
+ // forgefmt: disable-next-item
45
+ let p = sub(
46
+ // This heavily nested expression is to avoid stack-too-deep for via-ir.
47
+ sar(96n, mul(add(43456485725739037958740375743393n, sar(96n, mul(add(24828157081833163892658089445524n, sar(96n, mul(add(3273285459638523848632254066296n, x), x))), x))), x)), 11111509109440967052023855526967n);
48
+ p = sub(sar(96n, mul(p, x)), 45023709667254063763336534515857n);
49
+ p = sub(sar(96n, mul(p, x)), 14706773417378608786704636184526n);
50
+ p = sub(mul(p, x), shl(96n, 795164235651350426258249787498n));
51
+ // We leave `p` in `2**192` basis so we don't need to scale it back up for the division.
52
+ // `q` is monic by convention.
53
+ let q = add(5573035233440673466300451813936n, x);
54
+ q = add(71694874799317883764090561454958n, sar(96n, mul(x, q)));
55
+ q = add(283447036172924575727196451306956n, sar(96n, mul(x, q)));
56
+ q = add(401686690394027663651624208769553n, sar(96n, mul(x, q)));
57
+ q = add(204048457590392012362485061816622n, sar(96n, mul(x, q)));
58
+ q = add(31853899698501571402653359427138n, sar(96n, mul(x, q)));
59
+ q = add(909429971244387300277376558375n, sar(96n, mul(x, q)));
60
+ // `p / q` is in the range `(0, 0.125) * 2**96`.
61
+ // Finalization, we need to:
62
+ // - Multiply by the scale factor `s = 5.549…`.
63
+ // - Add `ln(2**96 / 10**18)`.
64
+ // - Add `k * ln(2)`.
65
+ // - Multiply by `10**18 / 2**96 = 5**18 >> 78`.
66
+ // The q polynomial is known not to have zeros in the domain.
67
+ // No scaling required because p is already `2**96` too large.
68
+ p = sdiv(p, q);
69
+ // Multiply by the scaling factor: `s * 5**18 * 2**96`, base is now `5**18 * 2**192`.
70
+ p = mul(1677202110996718588342820967067443963516166n, p);
71
+ // Add `ln(2) * k * 5**18 * 2**192`.
72
+ // forgefmt: disable-next-item
73
+ p = add(mul(16597577552685614221487285958193947469193820559219878177908093499208371n, sub(159n, r)), p);
74
+ // Base conversion: mul `2**96 / (5**18 * 2**192)`.
75
+ r = sdiv(p, 302231454903657293676544000000000000000000n);
76
+ return r;
77
+ };
78
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { PRICE_PRECISION } from '../constants/price';
3
+ export const formatPrice = (price, quoteDecimals, baseDecimals) => {
4
+ return new BigNumber(price.toString())
5
+ .div(new BigNumber(2).pow(PRICE_PRECISION.toString()))
6
+ .times(new BigNumber(10).pow(baseDecimals))
7
+ .div(new BigNumber(10).pow(quoteDecimals))
8
+ .toNumber();
9
+ };
10
+ export const parsePrice = (price, quoteDecimals, baseDecimals) => {
11
+ const value = new BigNumber(price)
12
+ .times(new BigNumber(2).pow(PRICE_PRECISION.toString()))
13
+ .times(new BigNumber(10).pow(quoteDecimals))
14
+ .div(new BigNumber(10).pow(baseDecimals));
15
+ return BigInt(value.isInteger() ? value.toFixed() : value.integerValue().toFixed());
16
+ };
17
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../../../src/utils/prices.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,cAAc,CAAA;AAEpC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAa,EACb,aAAqB,EACrB,YAAoB,EACZ,EAAE;IACV,OAAO,IAAI,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACnC,GAAG,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrD,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SAC1C,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACzC,QAAQ,EAAE,CAAA;AACf,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,UAAU,GAAG,CACxB,KAAa,EACb,aAAqB,EACrB,YAAoB,EACZ,EAAE;IACV,MAAM,KAAK,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC;SAC/B,KAAK,CAAC,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvD,KAAK,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SAC3C,GAAG,CAAC,IAAI,SAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,CAAA;IAC3C,OAAO,MAAM,CACX,KAAK,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,CACrE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,100 @@
1
+ import { PRICE_PRECISION } from '../constants/price';
2
+ import { lnWad } from './math';
3
+ const _R0 = 0xfff97272373d413259a46990n;
4
+ const _R1 = 0xfff2e50f5f656932ef12357cn;
5
+ const _R2 = 0xffe5caca7e10e4e61c3624ean;
6
+ const _R3 = 0xffcb9843d60f6159c9db5883n;
7
+ const _R4 = 0xff973b41fa98c081472e6896n;
8
+ const _R5 = 0xff2ea16466c96a3843ec78b3n;
9
+ const _R6 = 0xfe5dee046a99a2a811c461f1n;
10
+ const _R7 = 0xfcbe86c7900a88aedcffc83bn;
11
+ const _R8 = 0xf987a7253ac413176f2b074cn;
12
+ const _R9 = 0xf3392b0822b70005940c7a39n;
13
+ const _R10 = 0xe7159475a2c29b7443b29c7fn;
14
+ const _R11 = 0xd097f3bdfd2022b8845ad8f7n;
15
+ const _R12 = 0xa9f746462d870fdf8a65dc1fn;
16
+ const _R13 = 0x70d869a156d2a1b890bb3df6n;
17
+ const _R14 = 0x31be135f97d08fd981231505n;
18
+ const _R15 = 0x9aa508b5b7a84e1c677de54n;
19
+ const _R16 = 0x5d6af8dedb81196699c329n;
20
+ const _R17 = 0x2216e584f5fa1ea92604n;
21
+ const _R18 = 0x48a170391f7dc42n;
22
+ export const invertPrice = (price) => {
23
+ return price ? (1n << (PRICE_PRECISION * 2n)) / price : 0n;
24
+ };
25
+ export const fromPrice = (price) => {
26
+ const tick = (lnWad(price) * 42951820407860n) / 2n ** 128n;
27
+ if (toPrice(tick) > price) {
28
+ return tick - 1n;
29
+ }
30
+ return tick;
31
+ };
32
+ export const toPrice = (tick) => {
33
+ const absTick = tick < 0n ? -tick : tick;
34
+ let price = 0n;
35
+ if ((absTick & 0x1n) !== 0n) {
36
+ price = _R0;
37
+ }
38
+ else {
39
+ price = 1n << PRICE_PRECISION;
40
+ }
41
+ if ((absTick & 0x2n) != 0n) {
42
+ price = (price * _R1) >> PRICE_PRECISION;
43
+ }
44
+ if ((absTick & 0x4n) != 0n) {
45
+ price = (price * _R2) >> PRICE_PRECISION;
46
+ }
47
+ if ((absTick & 0x8n) != 0n) {
48
+ price = (price * _R3) >> PRICE_PRECISION;
49
+ }
50
+ if ((absTick & 0x10n) != 0n) {
51
+ price = (price * _R4) >> PRICE_PRECISION;
52
+ }
53
+ if ((absTick & 0x20n) != 0n) {
54
+ price = (price * _R5) >> PRICE_PRECISION;
55
+ }
56
+ if ((absTick & 0x40n) != 0n) {
57
+ price = (price * _R6) >> PRICE_PRECISION;
58
+ }
59
+ if ((absTick & 0x80n) != 0n) {
60
+ price = (price * _R7) >> PRICE_PRECISION;
61
+ }
62
+ if ((absTick & 0x100n) != 0n) {
63
+ price = (price * _R8) >> PRICE_PRECISION;
64
+ }
65
+ if ((absTick & 0x200n) != 0n) {
66
+ price = (price * _R9) >> PRICE_PRECISION;
67
+ }
68
+ if ((absTick & 0x400n) != 0n) {
69
+ price = (price * _R10) >> PRICE_PRECISION;
70
+ }
71
+ if ((absTick & 0x800n) != 0n) {
72
+ price = (price * _R11) >> PRICE_PRECISION;
73
+ }
74
+ if ((absTick & 0x1000n) != 0n) {
75
+ price = (price * _R12) >> PRICE_PRECISION;
76
+ }
77
+ if ((absTick & 0x2000n) != 0n) {
78
+ price = (price * _R13) >> PRICE_PRECISION;
79
+ }
80
+ if ((absTick & 0x4000n) != 0n) {
81
+ price = (price * _R14) >> PRICE_PRECISION;
82
+ }
83
+ if ((absTick & 0x8000n) != 0n) {
84
+ price = (price * _R15) >> PRICE_PRECISION;
85
+ }
86
+ if ((absTick & 0x10000n) != 0n) {
87
+ price = (price * _R16) >> PRICE_PRECISION;
88
+ }
89
+ if ((absTick & 0x20000n) != 0n) {
90
+ price = (price * _R17) >> PRICE_PRECISION;
91
+ }
92
+ if ((absTick & 0x40000n) != 0n) {
93
+ price = (price * _R18) >> PRICE_PRECISION;
94
+ }
95
+ if (tick > 0n) {
96
+ price = 0x1000000000000000000000000000000000000000000000000n / price;
97
+ }
98
+ return price;
99
+ };
100
+ //# sourceMappingURL=tick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../src/utils/tick.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ const currentTimestampInSeconds = () => Math.floor(new Date().getTime() / 1000);
2
+ export const getDeadlineTimestampInSeconds = () => {
3
+ return BigInt(Math.floor(currentTimestampInSeconds() + 60 * 20));
4
+ };
5
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":"AAAA,MAAM,yBAAyB,GAAG,GAAW,EAAE,CAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;AAEzC,MAAM,CAAC,MAAM,6BAA6B,GAAG,GAAW,EAAE;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,yBAAyB,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AAClE,CAAC,CAAA"}
@@ -0,0 +1,34 @@
1
+ import { createPublicClient, http, isAddressEqual, zeroAddress } from 'viem';
2
+ import { CHAIN_MAP } from '../constants/chain';
3
+ const _abi = [
4
+ {
5
+ inputs: [],
6
+ name: 'totalSupply',
7
+ outputs: [
8
+ {
9
+ internalType: 'uint256',
10
+ name: '',
11
+ type: 'uint256',
12
+ },
13
+ ],
14
+ stateMutability: 'view',
15
+ type: 'function',
16
+ },
17
+ ];
18
+ export const calculateUnit = async (chainId, quote, rpcUrl) => {
19
+ if (isAddressEqual(quote.address, zeroAddress)) {
20
+ return 10n ** 12n;
21
+ }
22
+ const publicClient = createPublicClient({
23
+ chain: CHAIN_MAP[chainId],
24
+ transport: rpcUrl ? http(rpcUrl) : http(),
25
+ });
26
+ const totalSupply = await publicClient.readContract({
27
+ address: quote.address,
28
+ abi: _abi,
29
+ functionName: 'totalSupply',
30
+ });
31
+ return (10n **
32
+ BigInt(totalSupply <= 2n ** 64n ? 0n : Math.max(quote.decimals - 6, 0)));
33
+ };
34
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../src/utils/unit.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,MAAM,CAAA;AAG5E,OAAO,EAAa,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAEzD,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE,EAAE;QACV,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,SAAS;aAChB;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,OAAkB,EAClB,KAAe,EACf,MAAe,EACf,EAAE;IACF,IAAI,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,IAAI,GAAG,CAAA;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,KAAK,EAAE,SAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;KAC1C,CAAC,CAAA;IACF,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,YAAY,CAAC;QAClD,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,aAAa;KAC5B,CAAC,CAAA;IACF,OAAO,CACL,GAAG;QACH,MAAM,CAAC,WAAW,IAAI,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CACxE,CAAA;AACH,CAAC,CAAA"}
@@ -0,0 +1,177 @@
1
+ import { formatUnits, isAddressEqual, parseUnits } from 'viem';
2
+ import { fetchMarket } from './apis/market';
3
+ import { parsePrice } from './utils/prices';
4
+ import { MAX_PRICE } from './constants/price';
5
+ import { fetchOpenOrder, fetchOpenOrders } from './apis/open-order';
6
+ /**
7
+ * Get market information by chain id and token addresses
8
+ * @param chainId - chain id from {@link CHAIN_IDS}
9
+ * @param token0 - token0 address
10
+ * @param token1 - token1 address
11
+ * @param options
12
+ * @param options.rpcUrl - RPC URL of the blockchain
13
+ * @returns A market {@link Market}
14
+ *
15
+ * @example
16
+ * import { getMarket } from '@clober/v2-sdk'
17
+ *
18
+ * const market = await getMarket(
19
+ * 421614,
20
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
21
+ * '0x0000000000000000000000000000000000000000',
22
+ * )
23
+ */
24
+ export const getMarket = async (chainId, token0, token1, options) => {
25
+ if (isAddressEqual(token0, token1)) {
26
+ throw new Error('Token0 and token1 must be different');
27
+ }
28
+ const market = await fetchMarket(chainId, [token0, token1], options?.rpcUrl);
29
+ return {
30
+ chainId,
31
+ quote: market.quote,
32
+ base: market.base,
33
+ makerFee: market.makerFee,
34
+ takerFee: market.takerFee,
35
+ bids: market.bids,
36
+ bidBookOpen: market.bidBookOpen,
37
+ asks: market.asks,
38
+ askBookOpen: market.askBookOpen,
39
+ };
40
+ };
41
+ /**
42
+ * Calculates the expected output for a given input amount, based on the provided market data.
43
+ *
44
+ * @param chainId The chain ID of the blockchain.
45
+ * @param inputToken The address of the input token.
46
+ * @param outputToken The address of the output token.
47
+ * @param amountIn The amount of expected input amount. (ex 1.2 ETH -> 1.2)
48
+ * @param options
49
+ * @param options.limitPrice The maximum limit price to spend.
50
+ * @param options.rpcUrl The RPC URL of the blockchain.
51
+ * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
52
+ * @example
53
+ * import { getExpectedOutput } from '@clober/v2-sdk'
54
+ *
55
+ * const { takenAmount, spendAmount } = await getExpectedOutput(
56
+ * 421614,
57
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
58
+ * '0x0000000000000000000000000000000000000000',
59
+ * '1000.123', // spend 1000.123 USDC
60
+ * )
61
+ */
62
+ export const getExpectedOutput = async (chainId, inputToken, outputToken, amountIn, options) => {
63
+ const market = await fetchMarket(chainId, [inputToken, outputToken], options?.rpcUrl);
64
+ const isBid = isAddressEqual(market.quote.address, inputToken);
65
+ const rawLimitPrice = options && options.limitPrice
66
+ ? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
67
+ : isBid
68
+ ? MAX_PRICE
69
+ : 0n;
70
+ const inputCurrency = isBid ? market.quote : market.base;
71
+ const result = market.spend({
72
+ spendBase: !isBid,
73
+ limitPrice: rawLimitPrice,
74
+ amountIn: parseUnits(amountIn, inputCurrency.decimals),
75
+ });
76
+ const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
77
+ takenAmount: acc.takenAmount + takenAmount,
78
+ spendAmount: acc.spendAmount + spendAmount,
79
+ }), { takenAmount: 0n, spendAmount: 0n });
80
+ return {
81
+ takenAmount: formatUnits(takenAmount, isBid ? market.base.decimals : market.quote.decimals),
82
+ spendAmount: formatUnits(spendAmount, isBid ? market.quote.decimals : market.base.decimals),
83
+ result: Object.entries(result).map(([bookId, { takenAmount, spendAmount }]) => ({
84
+ bookId: BigInt(bookId),
85
+ takenAmount,
86
+ spendAmount,
87
+ })),
88
+ };
89
+ };
90
+ /**
91
+ * Calculates the expected input for a given output amount, based on the provided market data.
92
+ *
93
+ * @param chainId The chain ID of the blockchain.
94
+ * @param inputToken The address of the input token.
95
+ * @param outputToken The address of the output token.
96
+ * @param amountOut The amount of expected output amount. (ex 1.2 ETH -> 1.2)
97
+ * @param options
98
+ * @param options.limitPrice The maximum limit price to take.
99
+ * @param options.rpcUrl The RPC URL of the blockchain.
100
+ * @returns A Promise resolving to an object containing the taken amount, spend amount and result of the calculation.
101
+ * @example
102
+ * import { getExpectedInput } from '@clober/v2-sdk'
103
+ *
104
+ * const { takenAmount, spendAmount } = await getExpectedInput(
105
+ * 421614,
106
+ * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
107
+ * '0x0000000000000000000000000000000000000000',
108
+ * '0.1', // take 0.1 ETH
109
+ * )
110
+ */
111
+ export const getExpectedInput = async (chainId, inputToken, outputToken, amountOut, options) => {
112
+ const market = await fetchMarket(chainId, [inputToken, outputToken], options?.rpcUrl);
113
+ const isBid = isAddressEqual(market.quote.address, inputToken);
114
+ const rawLimitPrice = options && options.limitPrice
115
+ ? parsePrice(Number(options.limitPrice), market.quote.decimals, market.base.decimals)
116
+ : isBid
117
+ ? MAX_PRICE
118
+ : 0n;
119
+ const outputCurrency = isBid ? market.base : market.quote;
120
+ const result = market.take({
121
+ takeQuote: !isBid,
122
+ limitPrice: rawLimitPrice,
123
+ amountOut: parseUnits(amountOut, outputCurrency.decimals),
124
+ });
125
+ const { takenAmount, spendAmount } = Object.values(result).reduce((acc, { takenAmount, spendAmount }) => ({
126
+ takenAmount: acc.takenAmount + takenAmount,
127
+ spendAmount: acc.spendAmount + spendAmount,
128
+ }), { takenAmount: 0n, spendAmount: 0n });
129
+ return {
130
+ takenAmount: formatUnits(takenAmount, isBid ? market.base.decimals : market.quote.decimals),
131
+ spendAmount: formatUnits(spendAmount, isBid ? market.quote.decimals : market.base.decimals),
132
+ result: Object.entries(result).map(([bookId, { takenAmount, spendAmount }]) => ({
133
+ bookId: BigInt(bookId),
134
+ takenAmount,
135
+ spendAmount,
136
+ })),
137
+ };
138
+ };
139
+ /**
140
+ * Retrieves the open order with the specified ID on the given chain.
141
+ *
142
+ * @param {CHAIN_IDS} chainId The chain ID.
143
+ * @param {string} id The ID of the open order.
144
+ * @param options
145
+ * @param options.rpcUrl The RPC URL of the blockchain.
146
+ * @returns {Promise<OpenOrder>} Promise resolving to the open order object, or undefined if not found.
147
+ * @example
148
+ * import { getOpenOrder } from '@clober/v2-sdk'
149
+ *
150
+ * const openOrder = await getOpenOrder(
151
+ * 421614,
152
+ * '46223845323662364279893361453861711542636620039907198451770258805035840307200'
153
+ * )
154
+ */
155
+ export const getOpenOrder = async (chainId, id, options) => {
156
+ return fetchOpenOrder(chainId, id, options?.rpcUrl);
157
+ };
158
+ /**
159
+ * Retrieves open orders for the specified user on the given chain.
160
+ *
161
+ * @param {CHAIN_IDS} chainId The chain ID.
162
+ * @param {`0x${string}`} userAddress The Ethereum address of the user.
163
+ * @param options
164
+ * @param options.rpcUrl The RPC URL of the blockchain.
165
+ * @returns {Promise<OpenOrder[]>} Promise resolving to an array of open orders.
166
+ * @example
167
+ * import { getOpenOrders } from '@clober/v2-sdk'
168
+ *
169
+ * const openOrders = await getOpenOrders(
170
+ * 421614,
171
+ * '0x5F79EE8f8fA862E98201120d83c4eC39D9468D49'
172
+ * )
173
+ */
174
+ export const getOpenOrders = async (chainId, userAddress, options) => {
175
+ return fetchOpenOrders(chainId, userAddress, options?.rpcUrl);
176
+ };
177
+ //# sourceMappingURL=view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}