@clober/v2-sdk 0.0.3-b → 0.0.4-6.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 (236) hide show
  1. package/README.md +12 -4
  2. package/dist/cjs/abis/core/book-manager-abi.js +112 -0
  3. package/dist/cjs/abis/core/book-manager-abi.js.map +1 -0
  4. package/dist/cjs/abis/core/book-viewer-abi.js +321 -0
  5. package/dist/cjs/abis/core/book-viewer-abi.js.map +1 -0
  6. package/dist/cjs/abis/core/controller-abi.js +29 -24
  7. package/dist/cjs/abis/core/controller-abi.js.map +1 -1
  8. package/dist/cjs/apis/chart-logs.js +154 -0
  9. package/dist/cjs/apis/chart-logs.js.map +1 -0
  10. package/dist/cjs/apis/market.js +63 -34
  11. package/dist/cjs/apis/market.js.map +1 -1
  12. package/dist/cjs/apis/open-order.js +60 -25
  13. package/dist/cjs/apis/open-order.js.map +1 -1
  14. package/dist/cjs/approval.js +79 -32
  15. package/dist/cjs/approval.js.map +1 -1
  16. package/dist/cjs/call.js +346 -245
  17. package/dist/cjs/call.js.map +1 -1
  18. package/dist/cjs/constants/addresses.js +26 -1
  19. package/dist/cjs/constants/addresses.js.map +1 -1
  20. package/dist/cjs/constants/chain.js +19 -1
  21. package/dist/cjs/constants/chain.js.map +1 -1
  22. package/dist/cjs/constants/client.js +18 -0
  23. package/dist/cjs/constants/client.js.map +1 -0
  24. package/dist/cjs/constants/currency.js +28 -2
  25. package/dist/cjs/constants/currency.js.map +1 -1
  26. package/dist/cjs/constants/fee.js +17 -2
  27. package/dist/cjs/constants/fee.js.map +1 -1
  28. package/dist/cjs/constants/subgraph.js +57 -0
  29. package/dist/cjs/constants/subgraph.js.map +1 -0
  30. package/dist/cjs/constants/test-chain.js +27 -0
  31. package/dist/cjs/constants/test-chain.js.map +1 -0
  32. package/dist/cjs/index.js +20 -6
  33. package/dist/cjs/index.js.map +1 -1
  34. package/dist/cjs/model/book.js +47 -29
  35. package/dist/cjs/model/book.js.map +1 -1
  36. package/dist/cjs/model/chart-log.js +3 -0
  37. package/dist/cjs/model/chart-log.js.map +1 -0
  38. package/dist/cjs/model/market.js +43 -182
  39. package/dist/cjs/model/market.js.map +1 -1
  40. package/dist/cjs/signature.js +25 -25
  41. package/dist/cjs/signature.js.map +1 -1
  42. package/dist/cjs/type.js +16 -1
  43. package/dist/cjs/type.js.map +1 -1
  44. package/dist/cjs/utils/allowance.js +40 -0
  45. package/dist/cjs/utils/allowance.js.map +1 -0
  46. package/dist/cjs/utils/approval.js +3 -8
  47. package/dist/cjs/utils/approval.js.map +1 -1
  48. package/dist/cjs/utils/bigint.js +9 -0
  49. package/dist/cjs/utils/bigint.js.map +1 -0
  50. package/dist/cjs/utils/book-id.js +7 -7
  51. package/dist/cjs/utils/book-id.js.map +1 -1
  52. package/dist/cjs/utils/build-transaction.js +10 -13
  53. package/dist/cjs/utils/build-transaction.js.map +1 -1
  54. package/dist/cjs/utils/currency.js +166 -0
  55. package/dist/cjs/utils/currency.js.map +1 -0
  56. package/dist/cjs/utils/decorator.js +15 -0
  57. package/dist/cjs/utils/decorator.js.map +1 -0
  58. package/dist/cjs/utils/open.js +36 -0
  59. package/dist/cjs/utils/open.js.map +1 -0
  60. package/dist/cjs/utils/order.js +102 -0
  61. package/dist/cjs/utils/order.js.map +1 -0
  62. package/dist/cjs/utils/prices.js +1 -1
  63. package/dist/cjs/utils/unit-size.js +49 -0
  64. package/dist/cjs/utils/unit-size.js.map +1 -0
  65. package/dist/cjs/utils.js +14 -0
  66. package/dist/cjs/utils.js.map +1 -0
  67. package/dist/cjs/view.js +64 -49
  68. package/dist/cjs/view.js.map +1 -1
  69. package/dist/esm/abis/core/book-manager-abi.js +109 -0
  70. package/dist/esm/abis/core/book-manager-abi.js.map +1 -0
  71. package/dist/esm/abis/core/book-viewer-abi.js +318 -0
  72. package/dist/esm/abis/core/book-viewer-abi.js.map +1 -0
  73. package/dist/esm/abis/core/controller-abi.js +29 -24
  74. package/dist/esm/abis/core/controller-abi.js.map +1 -1
  75. package/dist/esm/apis/chart-logs.js +150 -0
  76. package/dist/esm/apis/chart-logs.js.map +1 -0
  77. package/dist/esm/apis/market.js +63 -34
  78. package/dist/esm/apis/market.js.map +1 -1
  79. package/dist/esm/apis/open-order.js +61 -25
  80. package/dist/esm/apis/open-order.js.map +1 -1
  81. package/dist/esm/approval.js +118 -45
  82. package/dist/esm/approval.js.map +1 -1
  83. package/dist/esm/call.js +464 -342
  84. package/dist/esm/call.js.map +1 -1
  85. package/dist/esm/constants/addresses.js +26 -1
  86. package/dist/esm/constants/addresses.js.map +1 -1
  87. package/dist/esm/constants/chain.js +20 -2
  88. package/dist/esm/constants/chain.js.map +1 -1
  89. package/dist/esm/constants/client.js +14 -0
  90. package/dist/esm/constants/client.js.map +1 -0
  91. package/dist/esm/constants/currency.js +28 -2
  92. package/dist/esm/constants/currency.js.map +1 -1
  93. package/dist/esm/constants/fee.js +17 -2
  94. package/dist/esm/constants/fee.js.map +1 -1
  95. package/dist/esm/constants/subgraph.js +53 -0
  96. package/dist/esm/constants/subgraph.js.map +1 -0
  97. package/dist/esm/constants/test-chain.js +24 -0
  98. package/dist/esm/constants/test-chain.js.map +1 -0
  99. package/dist/esm/index.js +1 -0
  100. package/dist/esm/index.js.map +1 -1
  101. package/dist/esm/model/book.js +47 -29
  102. package/dist/esm/model/book.js.map +1 -1
  103. package/dist/esm/model/chart-log.js +2 -0
  104. package/dist/esm/model/chart-log.js.map +1 -0
  105. package/dist/esm/model/market.js +44 -187
  106. package/dist/esm/model/market.js.map +1 -1
  107. package/dist/esm/signature.js +40 -45
  108. package/dist/esm/signature.js.map +1 -1
  109. package/dist/esm/type.js +15 -0
  110. package/dist/esm/type.js.map +1 -1
  111. package/dist/esm/utils/allowance.js +36 -0
  112. package/dist/esm/utils/allowance.js.map +1 -0
  113. package/dist/esm/utils/approval.js +3 -8
  114. package/dist/esm/utils/approval.js.map +1 -1
  115. package/dist/esm/utils/bigint.js +5 -0
  116. package/dist/esm/utils/bigint.js.map +1 -0
  117. package/dist/esm/utils/book-id.js +7 -7
  118. package/dist/esm/utils/book-id.js.map +1 -1
  119. package/dist/esm/utils/build-transaction.js +11 -14
  120. package/dist/esm/utils/build-transaction.js.map +1 -1
  121. package/dist/esm/utils/currency.js +161 -0
  122. package/dist/esm/utils/currency.js.map +1 -0
  123. package/dist/esm/utils/decorator.js +11 -0
  124. package/dist/esm/utils/decorator.js.map +1 -0
  125. package/dist/esm/utils/open.js +32 -0
  126. package/dist/esm/utils/open.js.map +1 -0
  127. package/dist/esm/utils/order.js +98 -0
  128. package/dist/esm/utils/order.js.map +1 -0
  129. package/dist/esm/utils/prices.js +1 -1
  130. package/dist/esm/utils/unit-size.js +45 -0
  131. package/dist/esm/utils/unit-size.js.map +1 -0
  132. package/dist/esm/utils.js +4 -0
  133. package/dist/esm/utils.js.map +1 -0
  134. package/dist/esm/view.js +164 -71
  135. package/dist/esm/view.js.map +1 -1
  136. package/dist/tsconfig.build.tsbuildinfo +1 -1
  137. package/dist/types/abis/core/book-manager-abi.d.ts +82 -0
  138. package/dist/types/abis/core/book-manager-abi.d.ts.map +1 -0
  139. package/dist/types/abis/core/book-viewer-abi.d.ts +243 -0
  140. package/dist/types/abis/core/book-viewer-abi.d.ts.map +1 -0
  141. package/dist/types/abis/core/controller-abi.d.ts +23 -19
  142. package/dist/types/abis/core/controller-abi.d.ts.map +1 -1
  143. package/dist/types/apis/chart-logs.d.ts +5 -0
  144. package/dist/types/apis/chart-logs.d.ts.map +1 -0
  145. package/dist/types/apis/market.d.ts +1 -1
  146. package/dist/types/apis/market.d.ts.map +1 -1
  147. package/dist/types/apis/open-order.d.ts +4 -3
  148. package/dist/types/apis/open-order.d.ts.map +1 -1
  149. package/dist/types/approval.d.ts +50 -15
  150. package/dist/types/approval.d.ts.map +1 -1
  151. package/dist/types/call.d.ts +191 -123
  152. package/dist/types/call.d.ts.map +1 -1
  153. package/dist/types/constants/addresses.d.ts.map +1 -1
  154. package/dist/types/constants/chain.d.ts +6 -2
  155. package/dist/types/constants/chain.d.ts.map +1 -1
  156. package/dist/types/constants/client.d.ts +5 -0
  157. package/dist/types/constants/client.d.ts.map +1 -0
  158. package/dist/types/constants/currency.d.ts.map +1 -1
  159. package/dist/types/constants/fee.d.ts +7 -2
  160. package/dist/types/constants/fee.d.ts.map +1 -1
  161. package/dist/types/constants/subgraph.d.ts +10 -0
  162. package/dist/types/constants/subgraph.d.ts.map +1 -0
  163. package/dist/types/constants/test-chain.d.ts +3 -0
  164. package/dist/types/constants/test-chain.d.ts.map +1 -0
  165. package/dist/types/index.d.ts +1 -0
  166. package/dist/types/index.d.ts.map +1 -1
  167. package/dist/types/model/book.d.ts +13 -29
  168. package/dist/types/model/book.d.ts.map +1 -1
  169. package/dist/types/model/chart-log.d.ts +9 -0
  170. package/dist/types/model/chart-log.d.ts.map +1 -0
  171. package/dist/types/model/depth.d.ts +3 -5
  172. package/dist/types/model/depth.d.ts.map +1 -1
  173. package/dist/types/model/market.d.ts +15 -19
  174. package/dist/types/model/market.d.ts.map +1 -1
  175. package/dist/types/model/open-order.d.ts +16 -8
  176. package/dist/types/model/open-order.d.ts.map +1 -1
  177. package/dist/types/signature.d.ts +23 -25
  178. package/dist/types/signature.d.ts.map +1 -1
  179. package/dist/types/type.d.ts +54 -8
  180. package/dist/types/type.d.ts.map +1 -1
  181. package/dist/types/utils/allowance.d.ts +3 -0
  182. package/dist/types/utils/allowance.d.ts.map +1 -0
  183. package/dist/types/utils/approval.d.ts +1 -1
  184. package/dist/types/utils/approval.d.ts.map +1 -1
  185. package/dist/types/utils/bigint.d.ts +2 -0
  186. package/dist/types/utils/bigint.d.ts.map +1 -0
  187. package/dist/types/utils/book-id.d.ts +2 -1
  188. package/dist/types/utils/book-id.d.ts.map +1 -1
  189. package/dist/types/utils/build-transaction.d.ts +3 -4
  190. package/dist/types/utils/build-transaction.d.ts.map +1 -1
  191. package/dist/types/utils/currency.d.ts +7 -0
  192. package/dist/types/utils/currency.d.ts.map +1 -0
  193. package/dist/types/utils/decorator.d.ts +6 -0
  194. package/dist/types/utils/decorator.d.ts.map +1 -0
  195. package/dist/types/utils/open.d.ts +3 -0
  196. package/dist/types/utils/open.d.ts.map +1 -0
  197. package/dist/types/utils/order.d.ts +8 -0
  198. package/dist/types/utils/order.d.ts.map +1 -0
  199. package/dist/types/utils/prices.d.ts +1 -1
  200. package/dist/types/utils/unit-size.d.ts +4 -0
  201. package/dist/types/utils/unit-size.d.ts.map +1 -0
  202. package/dist/types/utils.d.ts +4 -0
  203. package/dist/types/utils.d.ts.map +1 -0
  204. package/dist/types/view.d.ts +164 -52
  205. package/dist/types/view.d.ts.map +1 -1
  206. package/package.json +1 -1
  207. package/dist/cjs/abis/core/params-abi.js +0 -62
  208. package/dist/cjs/abis/core/params-abi.js.map +0 -1
  209. package/dist/cjs/apis/currency.js +0 -87
  210. package/dist/cjs/apis/currency.js.map +0 -1
  211. package/dist/cjs/apis/subgraph.js +0 -26
  212. package/dist/cjs/apis/subgraph.js.map +0 -1
  213. package/dist/cjs/constants/subgraph-url.js +0 -8
  214. package/dist/cjs/constants/subgraph-url.js.map +0 -1
  215. package/dist/cjs/utils/unit.js +0 -38
  216. package/dist/cjs/utils/unit.js.map +0 -1
  217. package/dist/esm/abis/core/params-abi.js +0 -59
  218. package/dist/esm/abis/core/params-abi.js.map +0 -1
  219. package/dist/esm/apis/currency.js +0 -83
  220. package/dist/esm/apis/currency.js.map +0 -1
  221. package/dist/esm/apis/subgraph.js +0 -22
  222. package/dist/esm/apis/subgraph.js.map +0 -1
  223. package/dist/esm/constants/subgraph-url.js +0 -5
  224. package/dist/esm/constants/subgraph-url.js.map +0 -1
  225. package/dist/esm/utils/unit.js +0 -34
  226. package/dist/esm/utils/unit.js.map +0 -1
  227. package/dist/types/abis/core/params-abi.d.ts +0 -21
  228. package/dist/types/abis/core/params-abi.d.ts.map +0 -1
  229. package/dist/types/apis/currency.d.ts +0 -4
  230. package/dist/types/apis/currency.d.ts.map +0 -1
  231. package/dist/types/apis/subgraph.d.ts +0 -3
  232. package/dist/types/apis/subgraph.d.ts.map +0 -1
  233. package/dist/types/constants/subgraph-url.d.ts +0 -5
  234. package/dist/types/constants/subgraph-url.d.ts.map +0 -1
  235. package/dist/types/utils/unit.d.ts +0 -4
  236. package/dist/types/utils/unit.d.ts.map +0 -1
@@ -3,21 +3,20 @@ import { getMarketId } from '../utils/market';
3
3
  import { invertPrice, toPrice } from '../utils/tick';
4
4
  import { formatPrice } from '../utils/prices';
5
5
  import { MAKER_DEFAULT_POLICY, TAKER_DEFAULT_POLICY } from '../constants/fee';
6
- import { divide } from '../utils/math';
7
- import { baseToQuote, quoteToBase } from '../utils/decimals';
6
+ import { quoteToBase } from '../utils/decimals';
8
7
  export class Market {
9
- constructor({ chainId, tokens, books, }) {
8
+ constructor({ chainId, tokens, bidBook, askBook, }) {
10
9
  Object.defineProperty(this, "makerFee", {
11
10
  enumerable: true,
12
11
  configurable: true,
13
12
  writable: true,
14
- value: (Number(MAKER_DEFAULT_POLICY.rate) * 100) / 1e6
13
+ value: void 0
15
14
  });
16
15
  Object.defineProperty(this, "takerFee", {
17
16
  enumerable: true,
18
17
  configurable: true,
19
18
  writable: true,
20
- value: (Number(TAKER_DEFAULT_POLICY.rate) * 100) / 1e6
19
+ value: void 0
21
20
  });
22
21
  Object.defineProperty(this, "id", {
23
22
  enumerable: true,
@@ -43,25 +42,19 @@ export class Market {
43
42
  writable: true,
44
43
  value: void 0
45
44
  });
46
- Object.defineProperty(this, "bidBookOpen", {
47
- enumerable: true,
48
- configurable: true,
49
- writable: true,
50
- value: void 0
51
- });
52
45
  Object.defineProperty(this, "asks", {
53
46
  enumerable: true,
54
47
  configurable: true,
55
48
  writable: true,
56
49
  value: void 0
57
50
  });
58
- Object.defineProperty(this, "askBookOpen", {
51
+ Object.defineProperty(this, "bidBook", {
59
52
  enumerable: true,
60
53
  configurable: true,
61
54
  writable: true,
62
55
  value: void 0
63
56
  });
64
- Object.defineProperty(this, "books", {
57
+ Object.defineProperty(this, "askBook", {
65
58
  enumerable: true,
66
59
  configurable: true,
67
60
  writable: true,
@@ -74,20 +67,22 @@ export class Market {
74
67
  value: ({ takeQuote, limitPrice, amountOut, // quote if takeQuote, base otherwise
75
68
  }) => {
76
69
  if (takeQuote) {
77
- const bidDepths = this.books
78
- .filter((book) => isAddressEqual(book.quote.address, this.quote.address))
79
- .flatMap((book) => book.depths);
80
- return this.takeInner({ depths: bidDepths, limitPrice, amountOut });
70
+ return {
71
+ bookId: this.bidBook.id,
72
+ ...this.bidBook.take({
73
+ limitPrice,
74
+ amountOut,
75
+ }),
76
+ };
81
77
  }
82
78
  else {
83
- const askDepths = this.books
84
- .filter((book) => isAddressEqual(book.quote.address, this.base.address))
85
- .flatMap((book) => book.depths);
86
- return this.takeInner({
87
- depths: askDepths,
88
- limitPrice: invertPrice(limitPrice),
89
- amountOut,
90
- });
79
+ return {
80
+ bookId: this.askBook.id,
81
+ ...this.askBook.take({
82
+ limitPrice: invertPrice(limitPrice),
83
+ amountOut,
84
+ }),
85
+ };
91
86
  }
92
87
  }
93
88
  });
@@ -95,187 +90,49 @@ export class Market {
95
90
  enumerable: true,
96
91
  configurable: true,
97
92
  writable: true,
98
- value: ({ spendBase, limitPrice, amountIn, // base if spendBase, quote otherwise
93
+ value: ({ spentBase, limitPrice, amountIn, // base if spentBase, quote otherwise
99
94
  }) => {
100
- if (spendBase) {
101
- const bidDepths = this.books
102
- .filter((book) => isAddressEqual(book.quote.address, this.quote.address))
103
- .flatMap((book) => book.depths);
104
- return this.spendInner({ depths: bidDepths, limitPrice, amountIn });
95
+ if (spentBase) {
96
+ return {
97
+ bookId: this.bidBook.id,
98
+ ...this.bidBook.spend({
99
+ limitPrice,
100
+ amountIn,
101
+ }),
102
+ };
105
103
  }
106
104
  else {
107
- const askDepths = this.books
108
- .filter((book) => isAddressEqual(book.quote.address, this.base.address))
109
- .flatMap((book) => book.depths);
110
- return this.spendInner({
111
- depths: askDepths,
112
- limitPrice: invertPrice(limitPrice),
113
- amountIn,
114
- });
115
- }
116
- }
117
- });
118
- Object.defineProperty(this, "takeInner", {
119
- enumerable: true,
120
- configurable: true,
121
- writable: true,
122
- value: ({ depths, // only bid orders
123
- limitPrice, amountOut, // quote
124
- }) => {
125
- if (depths.length === 0) {
126
- return {};
127
- }
128
- const takeResult = {};
129
- for (const depth of depths) {
130
- if (!takeResult[depth.bookId]) {
131
- takeResult[depth.bookId] = {
132
- takenAmount: 0n,
133
- spendAmount: 0n,
134
- };
135
- }
136
- }
137
- let totalTakenQuoteAmount = 0n;
138
- const ticks = depths
139
- .sort((a, b) => Number(b.tick) - Number(a.tick))
140
- .map((depth) => depth.tick);
141
- let index = 0;
142
- let tick = ticks[index];
143
- while (tick > -8388608n) {
144
- if (limitPrice > toPrice(tick)) {
145
- break;
146
- }
147
- const currentDepth = depths.find((depth) => depth.tick === tick);
148
- const currentBook = this.books.find((book) => book.id === BigInt(currentDepth.bookId));
149
- let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
150
- ? TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountOut - totalTakenQuoteAmount, true)
151
- : amountOut - totalTakenQuoteAmount;
152
- maxAmount = divide(maxAmount, currentBook.unit, true);
153
- if (maxAmount === 0n) {
154
- break;
155
- }
156
- let quoteAmount = (currentDepth.rawAmount > maxAmount
157
- ? maxAmount
158
- : currentDepth.rawAmount) * currentBook.unit;
159
- let baseAmount = quoteToBase(tick, quoteAmount, true);
160
- if (TAKER_DEFAULT_POLICY.usesQuote) {
161
- quoteAmount =
162
- quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
163
- }
164
- else {
165
- baseAmount =
166
- baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
167
- }
168
- if (quoteAmount === 0n) {
169
- break;
170
- }
171
- takeResult[currentDepth.bookId].takenAmount += quoteAmount;
172
- takeResult[currentDepth.bookId].spendAmount += baseAmount;
173
- totalTakenQuoteAmount += quoteAmount;
174
- if (amountOut <= totalTakenQuoteAmount) {
175
- break;
176
- }
177
- if (ticks.length === index + 1) {
178
- break;
179
- }
180
- index++;
181
- tick = ticks[index];
182
- }
183
- return Object.fromEntries(Object.entries(takeResult).filter(([, value]) => value.spendAmount > 0 && value.takenAmount > 0));
184
- }
185
- });
186
- Object.defineProperty(this, "spendInner", {
187
- enumerable: true,
188
- configurable: true,
189
- writable: true,
190
- value: ({ depths, // only bid orders
191
- limitPrice, amountIn, // base
192
- }) => {
193
- if (depths.length === 0) {
194
- return {};
195
- }
196
- const spendResult = {};
197
- for (const depth of depths) {
198
- if (!spendResult[depth.bookId]) {
199
- spendResult[depth.bookId] = {
200
- takenAmount: 0n,
201
- spendAmount: 0n,
202
- };
203
- }
204
- }
205
- let totalSpendBaseAmount = 0n;
206
- const ticks = depths
207
- .sort((a, b) => Number(b.tick) - Number(a.tick))
208
- .map((depth) => depth.tick);
209
- let index = 0;
210
- let tick = ticks[index];
211
- while (totalSpendBaseAmount <= amountIn && tick > -8388608n) {
212
- if (limitPrice > toPrice(tick)) {
213
- break;
214
- }
215
- const currentDepth = depths.find((depth) => depth.tick === tick);
216
- const currentBook = this.books.find((book) => book.id === BigInt(currentDepth.bookId));
217
- let maxAmount = TAKER_DEFAULT_POLICY.usesQuote
218
- ? amountIn - totalSpendBaseAmount
219
- : TAKER_DEFAULT_POLICY.calculateOriginalAmount(amountIn - totalSpendBaseAmount, false);
220
- maxAmount = baseToQuote(tick, maxAmount, false) / currentBook.unit;
221
- if (maxAmount === 0n) {
222
- break;
223
- }
224
- let quoteAmount = (currentDepth.rawAmount > maxAmount
225
- ? maxAmount
226
- : currentDepth.rawAmount) * currentBook.unit;
227
- let baseAmount = quoteToBase(tick, quoteAmount, true);
228
- if (TAKER_DEFAULT_POLICY.usesQuote) {
229
- quoteAmount =
230
- quoteAmount - TAKER_DEFAULT_POLICY.calculateFee(quoteAmount, false);
231
- }
232
- else {
233
- baseAmount =
234
- baseAmount + TAKER_DEFAULT_POLICY.calculateFee(baseAmount, false);
235
- }
236
- if (baseAmount === 0n) {
237
- break;
238
- }
239
- spendResult[currentDepth.bookId].takenAmount += quoteAmount;
240
- spendResult[currentDepth.bookId].spendAmount += baseAmount;
241
- totalSpendBaseAmount += baseAmount;
242
- if (ticks.length === index + 1) {
243
- break;
244
- }
245
- index++;
246
- tick = ticks[index];
105
+ return {
106
+ bookId: this.askBook.id,
107
+ ...this.askBook.spend({
108
+ limitPrice: invertPrice(limitPrice),
109
+ amountIn,
110
+ }),
111
+ };
247
112
  }
248
- return Object.fromEntries(Object.entries(spendResult).filter(([, value]) => value.spendAmount > 0 && value.takenAmount > 0));
249
113
  }
250
114
  });
251
115
  const { marketId, quoteTokenAddress, baseTokenAddress } = getMarketId(chainId, tokens.map((token) => token.address));
252
116
  this.id = marketId;
253
117
  this.quote = tokens.find((token) => isAddressEqual(token.address, quoteTokenAddress));
254
118
  this.base = tokens.find((token) => isAddressEqual(token.address, baseTokenAddress));
255
- this.bids = books
256
- .filter((book) => isAddressEqual(book.quote.address, this.quote.address))
257
- .flatMap((book) => book.depths)
258
- .map((depth) => ({
119
+ this.makerFee = (Number(MAKER_DEFAULT_POLICY[chainId].rate) * 100) / 1e6;
120
+ this.takerFee = (Number(TAKER_DEFAULT_POLICY[chainId].rate) * 100) / 1e6;
121
+ this.bids = bidBook.depths.map((depth) => ({
259
122
  price: formatPrice(toPrice(depth.tick), this.quote.decimals, this.base.decimals),
260
- baseAmount: quoteToBase(depth.tick, depth.rawAmount * depth.unit, false),
123
+ baseAmount: quoteToBase(depth.tick, depth.unitAmount * bidBook.unitSize, false),
261
124
  }));
262
- this.bidBookOpen =
263
- books.filter((book) => isAddressEqual(book.quote.address, this.quote.address)).length > 0;
264
- this.asks = books
265
- .filter((book) => isAddressEqual(book.quote.address, this.base.address))
266
- .flatMap((book) => book.depths)
267
- .map((depth) => {
125
+ this.asks = askBook.depths.map((depth) => {
268
126
  const price = invertPrice(toPrice(depth.tick));
269
127
  const readablePrice = formatPrice(price, this.quote.decimals, this.base.decimals);
270
- const baseAmount = depth.rawAmount * depth.unit;
128
+ const baseAmount = depth.unitAmount * askBook.unitSize;
271
129
  return {
272
130
  price: readablePrice,
273
131
  baseAmount,
274
132
  };
275
133
  });
276
- this.askBookOpen =
277
- books.filter((book) => isAddressEqual(book.quote.address, this.base.address)).length > 0;
278
- this.books = books;
134
+ this.bidBook = bidBook;
135
+ this.askBook = askBook;
279
136
  }
280
137
  }
281
138
  //# sourceMappingURL=market.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/model/market.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/model/market.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAE7C,OAAO,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,eAAe,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAM/C,MAAM,OAAO,MAAM;IAYjB,YAAY,EACV,OAAO,EACP,MAAM,EACN,OAAO,EACP,OAAO,GAMR;QArBD;;;;;WAAgB;QAChB;;;;;WAAgB;QAEhB;;;;;WAAU;QACV;;;;;WAAe;QACf;;;;;WAAc;QACd;;;;;WAAa;QACb;;;;;WAAa;QACb;;;;;WAAa;QACb;;;;;WAAa;QA8Db;;;;mBAAO,CAAC,EACN,SAAS,EACT,UAAU,EACV,SAAS,EAAE,qCAAqC;cAKjD,EAAE,EAAE;gBACH,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO;wBACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACvB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;4BACnB,UAAU;4BACV,SAAS;yBACV,CAAC;qBACH,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACvB,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;4BACnB,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;4BACnC,SAAS;yBACV,CAAC;qBACH,CAAA;gBACH,CAAC;YACH,CAAC;WAAA;QAED;;;;mBAAQ,CAAC,EACP,SAAS,EACT,UAAU,EACV,QAAQ,EAAE,qCAAqC;cAKhD,EAAE,EAAE;gBACH,IAAI,SAAS,EAAE,CAAC;oBACd,OAAO;wBACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACvB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;4BACpB,UAAU;4BACV,QAAQ;yBACT,CAAC;qBACH,CAAA;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO;wBACL,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,EAAE;wBACvB,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;4BACpB,UAAU,EAAE,WAAW,CAAC,UAAU,CAAC;4BACnC,QAAQ;yBACT,CAAC;qBACH,CAAA;gBACH,CAAC;YACH,CAAC;WAAA;QAvGC,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,GAAG,WAAW,CACnE,OAAO,EACP,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CACrC,CAAA;QACD,IAAI,CAAC,EAAE,GAAG,QAAQ,CAAA;QAClB,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CACjC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,iBAAkB,CAAC,CACjD,CAAA;QACF,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAChC,cAAc,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAiB,CAAC,CAChD,CAAA;QAEF,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QACxE,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAA;QAExE,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAC5B,CAAC,KAAK,EAAE,EAAE,CACR,CAAC;YACC,KAAK,EAAE,WAAW,CAChB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EACnB,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CACnB;YACD,UAAU,EAAE,WAAW,CACrB,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,EACnC,KAAK,CACN;SACF,CAAU,CACd,CAAA;QAED,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;YAC9C,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EACL,IAAI,CAAC,KAAK,CAAC,QAAQ,EACnB,IAAI,CAAC,IAAI,CAAC,QAAQ,CACnB,CAAA;YACD,MAAM,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAA;YACtD,OAAO;gBACL,KAAK,EAAE,aAAa;gBACpB,UAAU;aACF,CAAA;QACZ,CAAC,CAAC,CAAA;QAEF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAA;IACxB,CAAC;CAyDF"}
@@ -1,8 +1,9 @@
1
- import { createPublicClient, hexToSignature, http, parseUnits, verifyTypedData, zeroHash, } from 'viem';
2
- import { CHAIN_MAP } from './constants/chain';
1
+ import { hexToSignature, parseUnits, verifyTypedData } from 'viem';
3
2
  import { getDeadlineTimestampInSeconds } from './utils/time';
4
3
  import { CONTRACT_ADDRESSES } from './constants/addresses';
5
- import { fetchCurrency } from './apis/currency';
4
+ import { fetchCurrency } from './utils/currency';
5
+ import { cachedPublicClients } from './constants/client';
6
+ import { decorator } from './utils/decorator';
6
7
  const _abi = [
7
8
  {
8
9
  inputs: [],
@@ -51,54 +52,48 @@ const _abi = [
51
52
  },
52
53
  ];
53
54
  /**
55
+ * @dev This function relates with `viem` dependency
54
56
  * Signs an ERC20 permit using EIP-712 encoding.
55
57
  *
56
58
  * @param {CHAIN_IDS} chainId The chain ID.
57
- * @param {HDAccount | PrivateKeyAccount} account The Ethereum account used for signing using
58
- * [viem - Local Accounts (Private Key, Mnemonic, etc)](https://viem.sh/docs/accounts/local#local-accounts-private-key-mnemonic-etc).
59
+ * @param {WalletClient} walletClient The wallet client.
59
60
  * @param {`0x${string}`} token The ERC20 token address.
60
61
  * @param {string} amount The amount of tokens to permit.
61
62
  * @param options
62
63
  * @param options.rpcUrl The RPC URL of the blockchain.
63
- * @returns {Promise<PermitSignature>} Promise resolving to the permit signature.
64
+ * @returns {Promise<erc20PermitParam | undefined>} The signed permit.
64
65
  * @example
65
66
  * import { signERC20Permit } from '@clober/v2-sdk'
66
- * import { privateKeyToAccount } from 'viem/accounts'
67
67
  *
68
- * const { deadline, r, s, v } = await signERC20Permit(
69
- * 421614,
70
- * privateKeyToAccount('0x...')
71
- * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
72
- * '1000.123', // spend 1000.123 USDC
73
- * )
68
+ * const walletClient = createWalletClient({
69
+ * chain: arbitrumSepolia,
70
+ * account: mnemonicToAccount('legal ...'),
71
+ * transport: http(),
72
+ * })
74
73
  *
75
- * @example
76
- * import { signERC20Permit } from '@clober/v2-sdk'
77
- * import { mnemonicToAccount } from 'viem/accounts'
78
- *
79
- * const { deadline, r, s, v } = await signERC20Permit(
80
- * 421614,
81
- * mnemonicToAccount('legal ...')
82
- * '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
83
- * '1000.123', // spend 1000.123 USDC
84
- * )
74
+ * const { deadline, r, s, v } = await signERC20Permit({
75
+ * chainId: 421614,
76
+ * walletClient
77
+ * token: '0x00bfd44e79fb7f6dd5887a9426c8ef85a0cd23e0',
78
+ * amount: '1000.123', // spend 1000.123 USDC
79
+ * })
85
80
  */
86
- export const signERC20Permit = async (chainId, account, token, amount, options) => {
87
- const currency = await fetchCurrency(chainId, token, options?.rpcUrl);
81
+ export const signERC20Permit = decorator(async ({ chainId, walletClient, token, amount, }) => {
82
+ if (!walletClient.account) {
83
+ throw new Error('Account is not found');
84
+ }
85
+ const currency = await fetchCurrency(chainId, token);
88
86
  const spender = CONTRACT_ADDRESSES[chainId].Controller;
89
- const publicClient = createPublicClient({
90
- chain: CHAIN_MAP[chainId],
91
- transport: options?.rpcUrl ? http(options.rpcUrl) : http(),
92
- });
93
87
  const value = parseUnits(amount, currency.decimals);
94
- const [{ result: nonce }, { result: version }, { result: name }] = await publicClient.multicall({
88
+ const owner = walletClient.account.address;
89
+ const [{ result: nonce }, { result: version }, { result: name }] = await cachedPublicClients[chainId].multicall({
95
90
  allowFailure: true,
96
91
  contracts: [
97
92
  {
98
93
  address: token,
99
94
  abi: _abi,
100
95
  functionName: 'nonces',
101
- args: [account.address],
96
+ args: [owner],
102
97
  },
103
98
  {
104
99
  address: token,
@@ -113,12 +108,7 @@ export const signERC20Permit = async (chainId, account, token, amount, options)
113
108
  ],
114
109
  });
115
110
  if (nonce === undefined || !name) {
116
- return {
117
- r: zeroHash,
118
- s: zeroHash,
119
- v: 0,
120
- deadline: 0n,
121
- };
111
+ return undefined;
122
112
  }
123
113
  const deadline = getDeadlineTimestampInSeconds();
124
114
  const data = {
@@ -129,7 +119,7 @@ export const signERC20Permit = async (chainId, account, token, amount, options)
129
119
  verifyingContract: currency.address,
130
120
  },
131
121
  message: {
132
- owner: account.address,
122
+ owner,
133
123
  spender,
134
124
  value,
135
125
  nonce,
@@ -152,23 +142,28 @@ export const signERC20Permit = async (chainId, account, token, amount, options)
152
142
  ],
153
143
  },
154
144
  };
155
- const signature = await account.signTypedData({
145
+ const signature = await walletClient.signTypedData({
156
146
  ...data,
147
+ account: walletClient.account,
157
148
  });
158
149
  const valid = await verifyTypedData({
159
150
  ...data,
160
151
  signature,
161
- address: account.address,
152
+ address: owner,
162
153
  });
163
154
  if (!valid) {
164
155
  throw new Error('Invalid signature');
165
156
  }
166
157
  const { v, s, r } = hexToSignature(signature);
167
158
  return {
168
- v: Number(v),
169
- s,
170
- r,
171
- deadline,
159
+ token,
160
+ permitAmount: value,
161
+ signature: {
162
+ v: Number(v),
163
+ s,
164
+ r,
165
+ deadline,
166
+ },
172
167
  };
173
- };
168
+ });
174
169
  //# sourceMappingURL=signature.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"signature.js","sourceRoot":"","sources":["../../src/signature.ts"],"names":[],"mappings":"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"}
package/dist/esm/type.js CHANGED
@@ -1,2 +1,17 @@
1
1
  export { CHAIN_IDS } from './constants/chain';
2
+ export var CHART_LOG_INTERVALS;
3
+ (function (CHART_LOG_INTERVALS) {
4
+ CHART_LOG_INTERVALS["oneMinute"] = "1m";
5
+ CHART_LOG_INTERVALS["threeMinutes"] = "3m";
6
+ CHART_LOG_INTERVALS["fiveMinutes"] = "5m";
7
+ CHART_LOG_INTERVALS["tenMinutes"] = "10m";
8
+ CHART_LOG_INTERVALS["fifteenMinutes"] = "15m";
9
+ CHART_LOG_INTERVALS["thirtyMinutes"] = "30m";
10
+ CHART_LOG_INTERVALS["oneHour"] = "1h";
11
+ CHART_LOG_INTERVALS["twoHours"] = "2h";
12
+ CHART_LOG_INTERVALS["fourHours"] = "4h";
13
+ CHART_LOG_INTERVALS["sixHours"] = "6h";
14
+ CHART_LOG_INTERVALS["oneDay"] = "1d";
15
+ CHART_LOG_INTERVALS["oneWeek"] = "1w";
16
+ })(CHART_LOG_INTERVALS || (CHART_LOG_INTERVALS = {}));
2
17
  //# sourceMappingURL=type.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAwE7C,MAAM,CAAN,IAAY,mBAaX;AAbD,WAAY,mBAAmB;IAC7B,uCAAgB,CAAA;IAChB,0CAAmB,CAAA;IACnB,yCAAkB,CAAA;IAClB,yCAAkB,CAAA;IAClB,6CAAsB,CAAA;IACtB,4CAAqB,CAAA;IACrB,qCAAc,CAAA;IACd,sCAAe,CAAA;IACf,uCAAgB,CAAA;IAChB,sCAAe,CAAA;IACf,oCAAa,CAAA;IACb,qCAAc,CAAA;AAChB,CAAC,EAbW,mBAAmB,KAAnB,mBAAmB,QAa9B"}
@@ -0,0 +1,36 @@
1
+ import { cachedPublicClients } from '../constants/client';
2
+ const _abi = [
3
+ {
4
+ inputs: [
5
+ {
6
+ internalType: 'address',
7
+ name: 'owner',
8
+ type: 'address',
9
+ },
10
+ {
11
+ internalType: 'address',
12
+ name: 'spender',
13
+ type: 'address',
14
+ },
15
+ ],
16
+ name: 'allowance',
17
+ outputs: [
18
+ {
19
+ internalType: 'uint256',
20
+ name: '',
21
+ type: 'uint256',
22
+ },
23
+ ],
24
+ stateMutability: 'view',
25
+ type: 'function',
26
+ },
27
+ ];
28
+ export async function fetchAllowance(chainId, token, userAddress, spenderAddress) {
29
+ return cachedPublicClients[chainId].readContract({
30
+ address: token,
31
+ abi: _abi,
32
+ functionName: 'allowance',
33
+ args: [userAddress, spenderAddress],
34
+ });
35
+ }
36
+ //# sourceMappingURL=allowance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"allowance.js","sourceRoot":"","sources":["../../../src/utils/allowance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAGzD,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,SAAS;gBACf,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,WAAW;QACjB,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,KAAK,UAAU,cAAc,CAClC,OAAkB,EAClB,KAAoB,EACpB,WAA0B,EAC1B,cAA6B;IAE7B,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAC/C,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,WAAW;QACzB,IAAI,EAAE,CAAC,WAAW,EAAE,cAAc,CAAC;KACpC,CAAC,CAAA;AACJ,CAAC"}
@@ -1,6 +1,5 @@
1
- import { createPublicClient, http } from 'viem';
2
- import { CHAIN_MAP } from '../constants/chain';
3
1
  import { CONTRACT_ADDRESSES } from '../constants/addresses';
2
+ import { cachedPublicClients } from '../constants/client';
4
3
  const _abi = [
5
4
  {
6
5
  inputs: [
@@ -27,12 +26,8 @@ const _abi = [
27
26
  type: 'function',
28
27
  },
29
28
  ];
30
- export async function fetchIsApprovedForAll(chainId, owner, rpcUrl) {
31
- const publicClient = createPublicClient({
32
- chain: CHAIN_MAP[chainId],
33
- transport: rpcUrl ? http(rpcUrl) : http(),
34
- });
35
- return publicClient.readContract({
29
+ export async function fetchIsApprovedForAll(chainId, owner) {
30
+ return cachedPublicClients[chainId].readContract({
36
31
  address: CONTRACT_ADDRESSES[chainId].BookManager,
37
32
  abi: _abi,
38
33
  functionName: 'isApprovedForAll',
@@ -1 +1 @@
1
- {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/utils/approval.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAE/C,OAAO,EAAa,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAE3D,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,MAAM;aACb;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAkB,EAClB,KAAoB,EACpB,MAAe;IAEf,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,OAAO,YAAY,CAAC,YAAY,CAAC;QAC/B,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAE,CAAC,WAAW;QACjD,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAE,CAAC,UAAU,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/utils/approval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AAEzD,MAAM,IAAI,GAAG;IACX;QACE,MAAM,EAAE;YACN;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,SAAS;aAChB;YACD;gBACE,YAAY,EAAE,SAAS;gBACvB,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,SAAS;aAChB;SACF;QACD,IAAI,EAAE,kBAAkB;QACxB,OAAO,EAAE;YACP;gBACE,YAAY,EAAE,MAAM;gBACpB,IAAI,EAAE,EAAE;gBACR,IAAI,EAAE,MAAM;aACb;SACF;QACD,eAAe,EAAE,MAAM;QACvB,IAAI,EAAE,UAAU;KACjB;CACO,CAAA;AAEV,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,OAAkB,EAClB,KAAoB;IAEpB,OAAO,mBAAmB,CAAC,OAAO,CAAC,CAAC,YAAY,CAAC;QAC/C,OAAO,EAAE,kBAAkB,CAAC,OAAO,CAAE,CAAC,WAAW;QACjD,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAE,CAAC,UAAU,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC"}
@@ -0,0 +1,5 @@
1
+ export const applyPercent = (amount, percent, decimal = 6) => {
2
+ return ((amount * BigInt(Math.floor(percent * 10 ** decimal))) /
3
+ BigInt(100 * 10 ** decimal));
4
+ };
5
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bigint.js","sourceRoot":"","sources":["../../../src/utils/bigint.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,CAC1B,MAAc,EACd,OAAe,EACf,UAAkB,CAAC,EACX,EAAE;IACV,OAAO,CACL,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,IAAI,OAAO,CAAC,CAAC,CAAC;QACtD,MAAM,CAAC,GAAG,GAAG,EAAE,IAAI,OAAO,CAAC,CAC5B,CAAA;AACH,CAAC,CAAA"}
@@ -1,20 +1,20 @@
1
1
  import { encodeAbiParameters, keccak256, zeroAddress } from 'viem';
2
2
  import { MAKER_DEFAULT_POLICY, TAKER_DEFAULT_POLICY } from '../constants/fee';
3
- export const toBookId = (inputToken, outputToken, unit) => {
3
+ export const toBookId = (chainId, quote, base, unitSize) => {
4
4
  const value = keccak256(encodeAbiParameters([
5
5
  { name: 'base', type: 'address' },
6
- { name: 'unit', type: 'uint64' },
6
+ { name: 'unitSize', type: 'uint64' },
7
7
  { name: 'quote', type: 'address' },
8
8
  { name: 'makerPolicy', type: 'uint24' },
9
9
  { name: 'hooks', type: 'address' },
10
10
  { name: 'takerPolicy', type: 'uint24' },
11
11
  ], [
12
- outputToken,
13
- unit,
14
- inputToken,
15
- Number(MAKER_DEFAULT_POLICY.value),
12
+ base,
13
+ unitSize,
14
+ quote,
15
+ Number(MAKER_DEFAULT_POLICY[chainId].value),
16
16
  zeroAddress,
17
- Number(TAKER_DEFAULT_POLICY.value),
17
+ Number(TAKER_DEFAULT_POLICY[chainId].value),
18
18
  ]));
19
19
  return BigInt(value) & (2n ** 192n - 1n);
20
20
  };