@clober/v2-sdk 0.0.1-k → 0.0.1

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 (228) hide show
  1. package/README.md +1 -1
  2. package/package.json +6 -20
  3. package/dist/cjs/.graphclient/index.js +0 -243
  4. package/dist/cjs/.graphclient/index.js.map +0 -1
  5. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js +0 -14485
  6. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js.map +0 -1
  7. package/dist/cjs/.graphclient/sources/clober-v2/types.js +0 -4
  8. package/dist/cjs/.graphclient/sources/clober-v2/types.js.map +0 -1
  9. package/dist/cjs/abis/core/controller-abi.js +0 -989
  10. package/dist/cjs/abis/core/controller-abi.js.map +0 -1
  11. package/dist/cjs/abis/core/params-abi.js +0 -62
  12. package/dist/cjs/abis/core/params-abi.js.map +0 -1
  13. package/dist/cjs/apis/currency.js +0 -87
  14. package/dist/cjs/apis/currency.js.map +0 -1
  15. package/dist/cjs/apis/market.js +0 -63
  16. package/dist/cjs/apis/market.js.map +0 -1
  17. package/dist/cjs/apis/open-order.js +0 -90
  18. package/dist/cjs/apis/open-order.js.map +0 -1
  19. package/dist/cjs/approval.js +0 -74
  20. package/dist/cjs/approval.js.map +0 -1
  21. package/dist/cjs/call.js +0 -545
  22. package/dist/cjs/call.js.map +0 -1
  23. package/dist/cjs/constants/action.js +0 -14
  24. package/dist/cjs/constants/action.js.map +0 -1
  25. package/dist/cjs/constants/addresses.js +0 -13
  26. package/dist/cjs/constants/addresses.js.map +0 -1
  27. package/dist/cjs/constants/chain.js +0 -13
  28. package/dist/cjs/constants/chain.js.map +0 -1
  29. package/dist/cjs/constants/currency.js +0 -12
  30. package/dist/cjs/constants/currency.js.map +0 -1
  31. package/dist/cjs/constants/fee.js +0 -7
  32. package/dist/cjs/constants/fee.js.map +0 -1
  33. package/dist/cjs/constants/price.js +0 -6
  34. package/dist/cjs/constants/price.js.map +0 -1
  35. package/dist/cjs/constants/subgraph-url.js +0 -8
  36. package/dist/cjs/constants/subgraph-url.js.map +0 -1
  37. package/dist/cjs/index.js +0 -22
  38. package/dist/cjs/index.js.map +0 -1
  39. package/dist/cjs/model/book.js +0 -130
  40. package/dist/cjs/model/book.js.map +0 -1
  41. package/dist/cjs/model/currency.js +0 -3
  42. package/dist/cjs/model/currency.js.map +0 -1
  43. package/dist/cjs/model/depth.js +0 -3
  44. package/dist/cjs/model/depth.js.map +0 -1
  45. package/dist/cjs/model/fee-policy.js +0 -42
  46. package/dist/cjs/model/fee-policy.js.map +0 -1
  47. package/dist/cjs/model/market.js +0 -215
  48. package/dist/cjs/model/market.js.map +0 -1
  49. package/dist/cjs/model/open-order.js +0 -3
  50. package/dist/cjs/model/open-order.js.map +0 -1
  51. package/dist/cjs/package.json +0 -1
  52. package/dist/cjs/signature.js +0 -178
  53. package/dist/cjs/signature.js.map +0 -1
  54. package/dist/cjs/tsconfig.build.tsbuildinfo +0 -1
  55. package/dist/cjs/type.js +0 -6
  56. package/dist/cjs/type.js.map +0 -1
  57. package/dist/cjs/utils/approval.js +0 -46
  58. package/dist/cjs/utils/approval.js.map +0 -1
  59. package/dist/cjs/utils/book-id.js +0 -25
  60. package/dist/cjs/utils/book-id.js.map +0 -1
  61. package/dist/cjs/utils/build-transaction.js +0 -31
  62. package/dist/cjs/utils/build-transaction.js.map +0 -1
  63. package/dist/cjs/utils/decimals.js +0 -17
  64. package/dist/cjs/utils/decimals.js.map +0 -1
  65. package/dist/cjs/utils/market.js +0 -53
  66. package/dist/cjs/utils/market.js.map +0 -1
  67. package/dist/cjs/utils/math.js +0 -83
  68. package/dist/cjs/utils/math.js.map +0 -1
  69. package/dist/cjs/utils/prices.js +0 -22
  70. package/dist/cjs/utils/prices.js.map +0 -1
  71. package/dist/cjs/utils/tick.js +0 -106
  72. package/dist/cjs/utils/tick.js.map +0 -1
  73. package/dist/cjs/utils/time.js +0 -9
  74. package/dist/cjs/utils/time.js.map +0 -1
  75. package/dist/cjs/utils/unit.js +0 -38
  76. package/dist/cjs/utils/unit.js.map +0 -1
  77. package/dist/cjs/view.js +0 -185
  78. package/dist/cjs/view.js.map +0 -1
  79. package/dist/esm/.graphclient/index.js +0 -233
  80. package/dist/esm/.graphclient/index.js.map +0 -1
  81. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js +0 -14483
  82. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js.map +0 -1
  83. package/dist/esm/.graphclient/sources/clober-v2/types.js +0 -3
  84. package/dist/esm/.graphclient/sources/clober-v2/types.js.map +0 -1
  85. package/dist/esm/abis/core/controller-abi.js +0 -986
  86. package/dist/esm/abis/core/controller-abi.js.map +0 -1
  87. package/dist/esm/abis/core/params-abi.js +0 -59
  88. package/dist/esm/abis/core/params-abi.js.map +0 -1
  89. package/dist/esm/apis/currency.js +0 -83
  90. package/dist/esm/apis/currency.js.map +0 -1
  91. package/dist/esm/apis/market.js +0 -59
  92. package/dist/esm/apis/market.js.map +0 -1
  93. package/dist/esm/apis/open-order.js +0 -85
  94. package/dist/esm/apis/open-order.js.map +0 -1
  95. package/dist/esm/approval.js +0 -70
  96. package/dist/esm/approval.js.map +0 -1
  97. package/dist/esm/call.js +0 -535
  98. package/dist/esm/call.js.map +0 -1
  99. package/dist/esm/constants/action.js +0 -11
  100. package/dist/esm/constants/action.js.map +0 -1
  101. package/dist/esm/constants/addresses.js +0 -10
  102. package/dist/esm/constants/addresses.js.map +0 -1
  103. package/dist/esm/constants/chain.js +0 -10
  104. package/dist/esm/constants/chain.js.map +0 -1
  105. package/dist/esm/constants/currency.js +0 -9
  106. package/dist/esm/constants/currency.js.map +0 -1
  107. package/dist/esm/constants/fee.js +0 -4
  108. package/dist/esm/constants/fee.js.map +0 -1
  109. package/dist/esm/constants/price.js +0 -3
  110. package/dist/esm/constants/price.js.map +0 -1
  111. package/dist/esm/constants/subgraph-url.js +0 -5
  112. package/dist/esm/constants/subgraph-url.js.map +0 -1
  113. package/dist/esm/index.js +0 -6
  114. package/dist/esm/index.js.map +0 -1
  115. package/dist/esm/model/book.js +0 -126
  116. package/dist/esm/model/book.js.map +0 -1
  117. package/dist/esm/model/currency.js +0 -2
  118. package/dist/esm/model/currency.js.map +0 -1
  119. package/dist/esm/model/depth.js +0 -2
  120. package/dist/esm/model/depth.js.map +0 -1
  121. package/dist/esm/model/fee-policy.js +0 -38
  122. package/dist/esm/model/fee-policy.js.map +0 -1
  123. package/dist/esm/model/market.js +0 -211
  124. package/dist/esm/model/market.js.map +0 -1
  125. package/dist/esm/model/open-order.js +0 -2
  126. package/dist/esm/model/open-order.js.map +0 -1
  127. package/dist/esm/package.json +0 -1
  128. package/dist/esm/signature.js +0 -174
  129. package/dist/esm/signature.js.map +0 -1
  130. package/dist/esm/tsconfig.build.tsbuildinfo +0 -1
  131. package/dist/esm/type.js +0 -2
  132. package/dist/esm/type.js.map +0 -1
  133. package/dist/esm/utils/approval.js +0 -42
  134. package/dist/esm/utils/approval.js.map +0 -1
  135. package/dist/esm/utils/book-id.js +0 -21
  136. package/dist/esm/utils/book-id.js.map +0 -1
  137. package/dist/esm/utils/build-transaction.js +0 -27
  138. package/dist/esm/utils/build-transaction.js.map +0 -1
  139. package/dist/esm/utils/decimals.js +0 -12
  140. package/dist/esm/utils/decimals.js.map +0 -1
  141. package/dist/esm/utils/market.js +0 -49
  142. package/dist/esm/utils/market.js.map +0 -1
  143. package/dist/esm/utils/math.js +0 -78
  144. package/dist/esm/utils/math.js.map +0 -1
  145. package/dist/esm/utils/prices.js +0 -17
  146. package/dist/esm/utils/prices.js.map +0 -1
  147. package/dist/esm/utils/tick.js +0 -100
  148. package/dist/esm/utils/tick.js.map +0 -1
  149. package/dist/esm/utils/time.js +0 -5
  150. package/dist/esm/utils/time.js.map +0 -1
  151. package/dist/esm/utils/unit.js +0 -34
  152. package/dist/esm/utils/unit.js.map +0 -1
  153. package/dist/esm/view.js +0 -177
  154. package/dist/esm/view.js.map +0 -1
  155. package/dist/types/.graphclient/index.d.ts +0 -1281
  156. package/dist/types/.graphclient/index.d.ts.map +0 -1
  157. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts +0 -3
  158. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts.map +0 -1
  159. package/dist/types/.graphclient/sources/clober-v2/types.d.ts +0 -984
  160. package/dist/types/.graphclient/sources/clober-v2/types.d.ts.map +0 -1
  161. package/dist/types/abis/core/controller-abi.d.ts +0 -757
  162. package/dist/types/abis/core/controller-abi.d.ts.map +0 -1
  163. package/dist/types/abis/core/params-abi.d.ts +0 -21
  164. package/dist/types/abis/core/params-abi.d.ts.map +0 -1
  165. package/dist/types/apis/currency.d.ts +0 -4
  166. package/dist/types/apis/currency.d.ts.map +0 -1
  167. package/dist/types/apis/market.d.ts +0 -4
  168. package/dist/types/apis/market.d.ts.map +0 -1
  169. package/dist/types/apis/open-order.d.ts +0 -5
  170. package/dist/types/apis/open-order.d.ts.map +0 -1
  171. package/dist/types/approval.d.ts +0 -32
  172. package/dist/types/approval.d.ts.map +0 -1
  173. package/dist/types/call.d.ts +0 -234
  174. package/dist/types/call.d.ts.map +0 -1
  175. package/dist/types/constants/action.d.ts +0 -10
  176. package/dist/types/constants/action.d.ts.map +0 -1
  177. package/dist/types/constants/addresses.d.ts +0 -9
  178. package/dist/types/constants/addresses.d.ts.map +0 -1
  179. package/dist/types/constants/chain.d.ts +0 -9
  180. package/dist/types/constants/chain.d.ts.map +0 -1
  181. package/dist/types/constants/currency.d.ts +0 -8
  182. package/dist/types/constants/currency.d.ts.map +0 -1
  183. package/dist/types/constants/fee.d.ts +0 -4
  184. package/dist/types/constants/fee.d.ts.map +0 -1
  185. package/dist/types/constants/price.d.ts +0 -3
  186. package/dist/types/constants/price.d.ts.map +0 -1
  187. package/dist/types/constants/subgraph-url.d.ts +0 -5
  188. package/dist/types/constants/subgraph-url.d.ts.map +0 -1
  189. package/dist/types/index.d.ts +0 -6
  190. package/dist/types/index.d.ts.map +0 -1
  191. package/dist/types/model/book.d.ts +0 -31
  192. package/dist/types/model/book.d.ts.map +0 -1
  193. package/dist/types/model/currency.d.ts +0 -7
  194. package/dist/types/model/currency.d.ts.map +0 -1
  195. package/dist/types/model/depth.d.ts +0 -11
  196. package/dist/types/model/depth.d.ts.map +0 -1
  197. package/dist/types/model/fee-policy.d.ts +0 -15
  198. package/dist/types/model/fee-policy.d.ts.map +0 -1
  199. package/dist/types/model/market.d.ts +0 -44
  200. package/dist/types/model/market.d.ts.map +0 -1
  201. package/dist/types/model/open-order.d.ts +0 -28
  202. package/dist/types/model/open-order.d.ts.map +0 -1
  203. package/dist/types/signature.d.ts +0 -40
  204. package/dist/types/signature.d.ts.map +0 -1
  205. package/dist/types/type.d.ts +0 -34
  206. package/dist/types/type.d.ts.map +0 -1
  207. package/dist/types/utils/approval.d.ts +0 -3
  208. package/dist/types/utils/approval.d.ts.map +0 -1
  209. package/dist/types/utils/book-id.d.ts +0 -2
  210. package/dist/types/utils/book-id.d.ts.map +0 -1
  211. package/dist/types/utils/build-transaction.d.ts +0 -5
  212. package/dist/types/utils/build-transaction.d.ts.map +0 -1
  213. package/dist/types/utils/decimals.d.ts +0 -3
  214. package/dist/types/utils/decimals.d.ts.map +0 -1
  215. package/dist/types/utils/market.d.ts +0 -7
  216. package/dist/types/utils/market.d.ts.map +0 -1
  217. package/dist/types/utils/math.d.ts +0 -3
  218. package/dist/types/utils/math.d.ts.map +0 -1
  219. package/dist/types/utils/prices.d.ts +0 -3
  220. package/dist/types/utils/prices.d.ts.map +0 -1
  221. package/dist/types/utils/tick.d.ts +0 -4
  222. package/dist/types/utils/tick.d.ts.map +0 -1
  223. package/dist/types/utils/time.d.ts +0 -2
  224. package/dist/types/utils/time.d.ts.map +0 -1
  225. package/dist/types/utils/unit.d.ts +0 -4
  226. package/dist/types/utils/unit.d.ts.map +0 -1
  227. package/dist/types/view.d.ts +0 -129
  228. package/dist/types/view.d.ts.map +0 -1
@@ -1,27 +0,0 @@
1
- import { createPublicClient, encodeFunctionData, http, } from 'viem';
2
- import { CHAIN_MAP } from '../constants/chain';
3
- export const buildTransaction = async (chainId, args, rpcUrl) => {
4
- const publicClient = createPublicClient({
5
- chain: CHAIN_MAP[chainId],
6
- transport: rpcUrl ? http(rpcUrl) : http(),
7
- });
8
- const data = encodeFunctionData(args);
9
- const [gas, gasPrice] = await Promise.all([
10
- publicClient.estimateGas({
11
- account: args.account,
12
- data,
13
- to: args.address,
14
- value: args.value || 0n,
15
- }),
16
- publicClient.getGasPrice(),
17
- ]);
18
- return {
19
- gas,
20
- gasPrice,
21
- data,
22
- value: args.value || 0n,
23
- to: args.address,
24
- from: args.account,
25
- };
26
- };
27
- //# sourceMappingURL=build-transaction.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"build-transaction.js","sourceRoot":"","sources":["../../../src/utils/build-transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,GAGL,MAAM,MAAM,CAAA;AAEb,OAAO,EAAa,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAGzD,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EACnC,OAAkB,EAClB,IAA0D,EAC1D,MAAe,EACO,EAAE;IACxB,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,IAAI,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACxC,YAAY,CAAC,WAAW,CAAC;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI;YACJ,EAAE,EAAE,IAAI,CAAC,OAAO;YAChB,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;SACxB,CAAC;QACF,YAAY,CAAC,WAAW,EAAE;KAC3B,CAAC,CAAA;IACF,OAAO;QACL,GAAG;QACH,QAAQ;QACR,IAAI;QACJ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE;QACvB,EAAE,EAAE,IAAI,CAAC,OAAO;QAChB,IAAI,EAAE,IAAI,CAAC,OAAO;KACnB,CAAA;AACH,CAAC,CAAA"}
@@ -1,12 +0,0 @@
1
- import { PRICE_PRECISION } from '../constants/price';
2
- import { divide } from './math';
3
- import { toPrice } from './tick';
4
- export const baseToQuote = (tick, base, roundingUp) => {
5
- const y = 1n << PRICE_PRECISION;
6
- return divide(base * toPrice(tick), y, roundingUp);
7
- };
8
- export const quoteToBase = (tick, quote, roundingUp) => {
9
- const x = quote << PRICE_PRECISION;
10
- return divide(x, toPrice(tick), roundingUp);
11
- };
12
- //# sourceMappingURL=decimals.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"decimals.js","sourceRoot":"","sources":["../../../src/utils/decimals.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAA;AAEhC,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,IAAY,EACZ,UAAmB,EACX,EAAE;IACV,MAAM,CAAC,GAAG,EAAE,IAAI,eAAe,CAAA;IAC/B,OAAO,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;AACpD,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,KAAa,EACb,UAAmB,EACX,EAAE;IACV,MAAM,CAAC,GAAG,KAAK,IAAI,eAAe,CAAA;IAClC,OAAO,MAAM,CAAC,CAAC,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;AAC7C,CAAC,CAAA"}
@@ -1,49 +0,0 @@
1
- import { getAddress, isAddressEqual, zeroAddress } from 'viem';
2
- import { STABLE_COIN_ADDRESSES, WETH_ADDRESSES } from '../constants/currency';
3
- export const getMarketId = (chainId, tokenAddresses) => {
4
- if (tokenAddresses.length !== 2) {
5
- throw new Error('Invalid token pair');
6
- }
7
- tokenAddresses = tokenAddresses.map((address) => getAddress(address));
8
- // include stable coin
9
- const stable = tokenAddresses.find((address) => {
10
- return STABLE_COIN_ADDRESSES[chainId].map((addresses) => getAddress(addresses)).some((addresses) => addresses.includes(address));
11
- });
12
- if (stable) {
13
- const other = tokenAddresses.find((address) => !isAddressEqual(address, stable));
14
- return {
15
- marketId: `${other}/${stable}`,
16
- quoteTokenAddress: stable,
17
- baseTokenAddress: other,
18
- };
19
- }
20
- // include eth
21
- const eth = tokenAddresses.find((address) => isAddressEqual(address, zeroAddress));
22
- if (eth) {
23
- const other = tokenAddresses.find((address) => !isAddressEqual(address, zeroAddress));
24
- return {
25
- marketId: `${other}/${eth}`,
26
- quoteTokenAddress: eth,
27
- baseTokenAddress: other,
28
- };
29
- }
30
- // include weth
31
- const weth = tokenAddresses.find((address) => {
32
- return WETH_ADDRESSES[chainId].map((addresses) => getAddress(addresses)).some((addresses) => addresses.includes(address));
33
- });
34
- if (weth) {
35
- const other = tokenAddresses.find((address) => !isAddressEqual(address, weth));
36
- return {
37
- marketId: `${other}/${weth}`,
38
- quoteTokenAddress: weth,
39
- baseTokenAddress: other,
40
- };
41
- }
42
- const _tokens = tokenAddresses.sort((a, b) => a.localeCompare(b));
43
- return {
44
- marketId: `${_tokens[0]}/${_tokens[1]}`,
45
- quoteTokenAddress: _tokens[0],
46
- baseTokenAddress: _tokens[1],
47
- };
48
- };
49
- //# sourceMappingURL=market.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/utils/market.ts"],"names":[],"mappings":"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"}
@@ -1,78 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"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"}
@@ -1,17 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,100 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../src/utils/tick.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
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
@@ -1 +0,0 @@
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"}
@@ -1,34 +0,0 @@
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
@@ -1 +0,0 @@
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"}
package/dist/esm/view.js DELETED
@@ -1,177 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"view.js","sourceRoot":"","sources":["../../src/view.ts"],"names":[],"mappings":"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"}