@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
package/test/tick.test.ts DELETED
@@ -1,230 +0,0 @@
1
- import { expect, test } from 'vitest'
2
- import { getAddress } from 'viem'
3
-
4
- import { fromPrice, toPrice } from '../src/utils/tick'
5
- import { baseToQuote, quoteToBase } from '../src/utils/decimals'
6
-
7
- import { publicClient } from './utils/constants'
8
-
9
- const _abi = [
10
- {
11
- inputs: [
12
- {
13
- internalType: 'Tick',
14
- name: 'tick',
15
- type: 'int24',
16
- },
17
- {
18
- internalType: 'uint256',
19
- name: 'base',
20
- type: 'uint256',
21
- },
22
- {
23
- internalType: 'bool',
24
- name: 'roundingUp',
25
- type: 'bool',
26
- },
27
- ],
28
- name: 'baseToQuote',
29
- outputs: [
30
- {
31
- internalType: 'uint256',
32
- name: '',
33
- type: 'uint256',
34
- },
35
- ],
36
- stateMutability: 'pure',
37
- type: 'function',
38
- },
39
- {
40
- inputs: [
41
- {
42
- internalType: 'uint256',
43
- name: 'price',
44
- type: 'uint256',
45
- },
46
- ],
47
- name: 'fromPrice',
48
- outputs: [
49
- {
50
- internalType: 'int24',
51
- name: '',
52
- type: 'int24',
53
- },
54
- ],
55
- stateMutability: 'pure',
56
- type: 'function',
57
- },
58
- {
59
- inputs: [
60
- {
61
- internalType: 'Tick',
62
- name: 'tick',
63
- type: 'int24',
64
- },
65
- {
66
- internalType: 'uint256',
67
- name: 'quote',
68
- type: 'uint256',
69
- },
70
- {
71
- internalType: 'bool',
72
- name: 'roundingUp',
73
- type: 'bool',
74
- },
75
- ],
76
- name: 'quoteToBase',
77
- outputs: [
78
- {
79
- internalType: 'uint256',
80
- name: '',
81
- type: 'uint256',
82
- },
83
- ],
84
- stateMutability: 'pure',
85
- type: 'function',
86
- },
87
- {
88
- inputs: [
89
- {
90
- internalType: 'int24',
91
- name: 'tick',
92
- type: 'int24',
93
- },
94
- ],
95
- name: 'toPrice',
96
- outputs: [
97
- {
98
- internalType: 'uint256',
99
- name: 'price',
100
- type: 'uint256',
101
- },
102
- ],
103
- stateMutability: 'pure',
104
- type: 'function',
105
- },
106
- ] as const
107
-
108
- const TICK_WRAPPER_ADDRESS =
109
- '0xBEB8502F63A7c34a9591D3Fd1eEBca18a41FA0c8' as `0x${string}`
110
-
111
- const MAX_TICK = Math.pow(2, 19) - 1
112
- const MIN_TICK = -1 * MAX_TICK
113
-
114
- const MIN_PRICE = 1350587n
115
- const MAX_PRICE = 4647684107270898330752324302845848816923571339324334n
116
-
117
- const randomInteger = (start: number, end: number) => {
118
- return Math.floor(Math.random() * (end - start + 1) + start)
119
- }
120
-
121
- test('index to price', async () => {
122
- const randomPriceIndices = [
123
- MIN_TICK,
124
- ...Array.from({ length: 500 }, () => randomInteger(-500000, 500000)),
125
- MAX_TICK,
126
- ]
127
- const actualPrices = (
128
- (await publicClient.multicall({
129
- contracts: randomPriceIndices.map((priceIndex) => ({
130
- address: getAddress(TICK_WRAPPER_ADDRESS),
131
- abi: _abi,
132
- functionName: 'toPrice',
133
- args: [priceIndex],
134
- })),
135
- })) as { result: bigint }[]
136
- ).map(({ result }) => result)
137
-
138
- const expectedPrices = randomPriceIndices.map((priceIndex) =>
139
- toPrice(BigInt(priceIndex)),
140
- )
141
- expect(expectedPrices).toEqual(actualPrices)
142
- })
143
-
144
- test('price to index', async () => {
145
- const randomPriceIndices = [
146
- MIN_TICK,
147
- ...Array.from({ length: 500 }, () => randomInteger(-500000, 500000)),
148
- MAX_TICK,
149
- ]
150
-
151
- const actualPrices = (
152
- (await publicClient.multicall({
153
- contracts: randomPriceIndices.map((priceIndex) => ({
154
- address: TICK_WRAPPER_ADDRESS,
155
- abi: _abi,
156
- functionName: 'toPrice',
157
- args: [priceIndex],
158
- })),
159
- })) as { result: bigint }[]
160
- ).map(({ result }) => result)
161
-
162
- const actualPriceIndices = (
163
- (await publicClient.multicall({
164
- contracts: actualPrices.map((price) => ({
165
- address: TICK_WRAPPER_ADDRESS,
166
- abi: _abi,
167
- functionName: 'fromPrice',
168
- args: [price],
169
- })),
170
- })) as { result: number }[]
171
- ).map(({ result }) => BigInt(result))
172
- const expectedPriceIndices = actualPrices.map((price) => fromPrice(price))
173
- expect(expectedPriceIndices).toEqual(actualPriceIndices)
174
- })
175
-
176
- test('price to index for min and max', async () => {
177
- const actualPrices = [MIN_PRICE, MAX_PRICE]
178
- const actualPriceIndices = (
179
- (await publicClient.multicall({
180
- contracts: actualPrices.map((price) => ({
181
- address: TICK_WRAPPER_ADDRESS,
182
- abi: _abi,
183
- functionName: 'fromPrice',
184
- args: [price],
185
- })),
186
- })) as { result: number }[]
187
- ).map(({ result }) => BigInt(result))
188
- const expectedPriceIndices = actualPrices.map((price) => fromPrice(price))
189
- expect(expectedPriceIndices).toEqual(actualPriceIndices)
190
- })
191
-
192
- test('quote to base', async () => {
193
- const randomPriceIndices = Array.from({ length: 100 }, () =>
194
- randomInteger(-100000, 100000),
195
- )
196
- const actual = (
197
- (await publicClient.multicall({
198
- contracts: randomPriceIndices.map((priceIndex) => ({
199
- address: TICK_WRAPPER_ADDRESS,
200
- abi: _abi,
201
- functionName: 'quoteToBase',
202
- args: [priceIndex, 1000000n, true],
203
- })),
204
- })) as { result: bigint }[]
205
- ).map(({ result }) => result)
206
- const expected = randomPriceIndices.map((priceIndex) =>
207
- quoteToBase(BigInt(priceIndex), 1000000n, true),
208
- )
209
- expect(expected).toEqual(actual)
210
- })
211
-
212
- test('base to quote', async () => {
213
- const randomPriceIndices = Array.from({ length: 100 }, () =>
214
- randomInteger(-100000, 100000),
215
- )
216
- const actual = (
217
- (await publicClient.multicall({
218
- contracts: randomPriceIndices.map((priceIndex) => ({
219
- address: TICK_WRAPPER_ADDRESS,
220
- abi: _abi,
221
- functionName: 'baseToQuote',
222
- args: [priceIndex, 1000000n, true],
223
- })),
224
- })) as { result: bigint }[]
225
- ).map(({ result }) => result)
226
- const expected = randomPriceIndices.map((priceIndex) =>
227
- baseToQuote(BigInt(priceIndex), 1000000n, true),
228
- )
229
- expect(expected).toEqual(actual)
230
- })
@@ -1,12 +0,0 @@
1
- {
2
- "extends": "../tsconfig.base.json",
3
- "include": ["*.ts"],
4
- "compilerOptions": {
5
- "types": ["node"],
6
- "lib": ["DOM"],
7
- "baseUrl": ".",
8
- "paths": {
9
- "@clober/v2-sdk": ["../src/index.ts"]
10
- },
11
- }
12
- }
@@ -1,12 +0,0 @@
1
- import { createPublicClient, http } from 'viem'
2
- import { arbitrumSepolia } from 'viem/chains'
3
-
4
- import { FORK_URL } from './constants'
5
-
6
- export const fetchBlockNumer = async (): Promise<bigint> => {
7
- const publicClient = createPublicClient({
8
- chain: arbitrumSepolia,
9
- transport: http(FORK_URL),
10
- })
11
- return publicClient.getBlockNumber()
12
- }
@@ -1,25 +0,0 @@
1
- import * as dotenv from 'dotenv'
2
- import { privateKeyToAccount } from 'viem/accounts'
3
- import { createPublicClient, createWalletClient, http } from 'viem'
4
-
5
- import { cloberTestChain } from './test-chain'
6
-
7
- dotenv.config()
8
-
9
- export const FORK_URL =
10
- process.env.ARBITRUM_SEPOLIA_RPC_URL ||
11
- 'https://arbitrum-sepolia-archive.allthatnode.com'
12
- export const account = privateKeyToAccount(
13
- process.env.DEV_PRIVATE_KEY as `0x${string}`,
14
- )
15
-
16
- export const publicClient = createPublicClient({
17
- chain: cloberTestChain,
18
- transport: http(FORK_URL),
19
- })
20
-
21
- export const walletClient = createWalletClient({
22
- chain: cloberTestChain,
23
- account,
24
- transport: http(FORK_URL),
25
- })
@@ -1,44 +0,0 @@
1
- import { createPublicClient, http } from 'viem'
2
-
3
- import { CHAIN_IDS } from '../../src'
4
- import { CHAIN_MAP } from '../../src/constants/chain'
5
-
6
- const _abi = [
7
- {
8
- inputs: [
9
- {
10
- internalType: 'address',
11
- name: 'account',
12
- type: 'address',
13
- },
14
- ],
15
- name: 'balanceOf',
16
- outputs: [
17
- {
18
- internalType: 'uint256',
19
- name: '',
20
- type: 'uint256',
21
- },
22
- ],
23
- stateMutability: 'view',
24
- type: 'function',
25
- },
26
- ] as const
27
-
28
- export const fetchTokenBalance = async (
29
- chainId: CHAIN_IDS,
30
- token: `0x${string}`,
31
- userAddress: `0x${string}`,
32
- rpcUrl: string,
33
- ): Promise<bigint> => {
34
- const publicClient = createPublicClient({
35
- chain: CHAIN_MAP[chainId],
36
- transport: http(rpcUrl),
37
- })
38
- return publicClient.readContract({
39
- address: token,
40
- abi: _abi,
41
- functionName: 'balanceOf',
42
- args: [userAddress],
43
- })
44
- }
@@ -1,148 +0,0 @@
1
- import { createPublicClient, http, isAddressEqual } from 'viem'
2
- import { arbitrumSepolia } from 'viem/chains'
3
-
4
- import { CHAIN_MAP, CHAIN_IDS } from '../../src/constants/chain'
5
- import { getMarketId } from '../../src/utils/market'
6
- import { formatPrice } from '../../src/utils/prices'
7
- import { invertPrice, toPrice } from '../../src/utils/tick'
8
- import { fetchCurrency } from '../../src/apis/currency'
9
- import { toBookId } from '../../src/utils/book-id'
10
- import { CONTRACT_ADDRESSES } from '../../src/constants/addresses'
11
-
12
- import { cloberTestChain } from './test-chain'
13
-
14
- const MAX_TICK = 2n ** 19n - 1n
15
- const _abi = [
16
- {
17
- inputs: [
18
- {
19
- internalType: 'BookId',
20
- name: 'id',
21
- type: 'uint192',
22
- },
23
- {
24
- internalType: 'Tick',
25
- name: 'tick',
26
- type: 'int24',
27
- },
28
- {
29
- internalType: 'uint256',
30
- name: 'n',
31
- type: 'uint256',
32
- },
33
- ],
34
- name: 'getLiquidity',
35
- outputs: [
36
- {
37
- components: [
38
- {
39
- internalType: 'Tick',
40
- name: 'tick',
41
- type: 'int24',
42
- },
43
- {
44
- internalType: 'uint64',
45
- name: 'depth',
46
- type: 'uint64',
47
- },
48
- ],
49
- internalType: 'struct IBookViewer.Liquidity[]',
50
- name: 'liquidity',
51
- type: 'tuple[]',
52
- },
53
- ],
54
- stateMutability: 'view',
55
- type: 'function',
56
- },
57
- ] as const
58
-
59
- const fetchDepth = async (
60
- chainId: CHAIN_IDS,
61
- inputToken: `0x${string}`,
62
- outputToken: `0x${string}`,
63
- bookId: bigint,
64
- rpcUrl: string,
65
- ): Promise<
66
- {
67
- price: number
68
- amount: bigint
69
- }[]
70
- > => {
71
- const { quoteTokenAddress, baseTokenAddress } = getMarketId(chainId, [
72
- outputToken,
73
- inputToken,
74
- ])
75
- const isBid = isAddressEqual(inputToken, quoteTokenAddress)
76
- const [quoteCurrency, baseCurrency] = await Promise.all([
77
- fetchCurrency(chainId, quoteTokenAddress, rpcUrl),
78
- fetchCurrency(chainId, baseTokenAddress, rpcUrl),
79
- ])
80
- const publicClient = createPublicClient({
81
- chain: CHAIN_MAP[chainId],
82
- transport: http(rpcUrl),
83
- })
84
- const depths = await publicClient.readContract({
85
- address: CONTRACT_ADDRESSES[arbitrumSepolia.id]!.BookViewer,
86
- abi: _abi,
87
- functionName: 'getLiquidity',
88
- args: [bookId, Number(MAX_TICK), 50n],
89
- })
90
- return depths.map(({ tick, depth }: { tick: number; depth: bigint }) => ({
91
- price: isBid
92
- ? formatPrice(
93
- toPrice(BigInt(tick)),
94
- quoteCurrency.decimals,
95
- baseCurrency.decimals,
96
- )
97
- : formatPrice(
98
- invertPrice(toPrice(BigInt(tick))),
99
- quoteCurrency.decimals,
100
- baseCurrency.decimals,
101
- ),
102
- amount: depth,
103
- }))
104
- }
105
-
106
- export const fetchAskDepth = async (rpcUrl: string) => {
107
- const askBookId = toBookId(
108
- '0x0000000000000000000000000000000000000000',
109
- '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
110
- 10n ** 12n,
111
- )
112
- return fetchDepth(
113
- cloberTestChain.id,
114
- '0x0000000000000000000000000000000000000000',
115
- '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
116
- askBookId,
117
- rpcUrl,
118
- )
119
- }
120
-
121
- export const fetchBidDepth = async (rpcUrl: string) => {
122
- const bidBookId = toBookId(
123
- '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
124
- '0x0000000000000000000000000000000000000000',
125
- 1n,
126
- )
127
- return fetchDepth(
128
- cloberTestChain.id,
129
- '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
130
- '0x0000000000000000000000000000000000000000',
131
- bidBookId,
132
- rpcUrl,
133
- )
134
- }
135
-
136
- export const getSize = (
137
- depth: { price: number; amount: bigint }[],
138
- from: number,
139
- to: number,
140
- ) => {
141
- return Number(
142
- (
143
- depth.find(({ price }) => from <= price && price <= to) ?? {
144
- amount: 0n,
145
- }
146
- ).amount,
147
- )
148
- }
@@ -1,26 +0,0 @@
1
- import { Chain } from 'viem'
2
- import { arbitrumSepolia } from 'viem/chains'
3
-
4
- export const cloberTestChain: Chain = {
5
- id: arbitrumSepolia.id,
6
- name: 'Clober Test Chain',
7
- nativeCurrency: {
8
- name: 'Ether',
9
- symbol: 'ETH',
10
- decimals: 18,
11
- },
12
- rpcUrls: {
13
- default: {
14
- http: [''],
15
- },
16
- public: {
17
- http: [''],
18
- },
19
- },
20
- contracts: {
21
- multicall3: {
22
- address: '0xca11bde05977b3631167028862be2a173976ca11',
23
- blockCreated: 81930,
24
- },
25
- },
26
- }
@@ -1,15 +0,0 @@
1
- import { defineConfig } from 'vitest/config'
2
-
3
- export default defineConfig({
4
- envDir: '.',
5
- test: {
6
- disableConsoleIntercept: false,
7
- environment: 'node',
8
- include: ['*.test.ts'],
9
- alias: {
10
- '@clober/v2-sdk': '../src/index.ts',
11
- },
12
- testTimeout: 40000000,
13
- hookTimeout: 40000000,
14
- },
15
- })
@@ -1,37 +0,0 @@
1
- {
2
- "include": [],
3
- "compilerOptions": {
4
- // Incremental builds
5
- "incremental": true,
6
-
7
- // Type checking
8
- "strict": true,
9
- "skipLibCheck": true,
10
- "useDefineForClassFields": true,
11
- "exactOptionalPropertyTypes": true,
12
- "noFallthroughCasesInSwitch": true,
13
- "noImplicitOverride": true,
14
- "noImplicitReturns": true,
15
- "noUnusedLocals": true,
16
- "noUnusedParameters": true,
17
- "noUncheckedIndexedAccess": true,
18
-
19
- // Modules
20
- "module": "ES2022",
21
- "moduleResolution": "node",
22
-
23
- // JavaScript support
24
- "allowJs": false,
25
- "checkJs": false,
26
-
27
- // Interop constraints
28
- "forceConsistentCasingInFileNames": true,
29
-
30
- // Language and environment
31
- "lib": ["ESNext"],
32
- "target": "ESNext",
33
-
34
- // Sourcemaps
35
- "sourceMap": true
36
- }
37
- }
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "include": ["src/**/*.ts"],
4
- "exclude": ["src/**/*.test.ts"],
5
- "compilerOptions": {
6
- "types": ["node"],
7
- "lib": ["DOM"]
8
- }
9
- }
package/tsconfig.json DELETED
@@ -1,9 +0,0 @@
1
- {
2
- "extends": "./tsconfig.base.json",
3
- "include": ["src/**/*.ts"],
4
- "exclude": ["src/**/*.test.ts"],
5
- "compilerOptions": {
6
- "types": ["node"],
7
- "lib": ["DOM"]
8
- }
9
- }