@clober/v2-sdk 0.0.1-a

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 +4 -0
  2. package/dist/cjs/.graphclient/index.js +243 -0
  3. package/dist/cjs/.graphclient/index.js.map +1 -0
  4. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js +14482 -0
  5. package/dist/cjs/.graphclient/sources/clober-v2/introspectionSchema.js.map +1 -0
  6. package/dist/cjs/.graphclient/sources/clober-v2/types.js +4 -0
  7. package/dist/cjs/.graphclient/sources/clober-v2/types.js.map +1 -0
  8. package/dist/cjs/abis/core/controller-abi.js +989 -0
  9. package/dist/cjs/abis/core/controller-abi.js.map +1 -0
  10. package/dist/cjs/abis/core/params-abi.js +62 -0
  11. package/dist/cjs/abis/core/params-abi.js.map +1 -0
  12. package/dist/cjs/apis/currency.js +87 -0
  13. package/dist/cjs/apis/currency.js.map +1 -0
  14. package/dist/cjs/apis/market.js +63 -0
  15. package/dist/cjs/apis/market.js.map +1 -0
  16. package/dist/cjs/apis/open-order.js +90 -0
  17. package/dist/cjs/apis/open-order.js.map +1 -0
  18. package/dist/cjs/approval.js +74 -0
  19. package/dist/cjs/approval.js.map +1 -0
  20. package/dist/cjs/call.js +545 -0
  21. package/dist/cjs/call.js.map +1 -0
  22. package/dist/cjs/constants/action.js +14 -0
  23. package/dist/cjs/constants/action.js.map +1 -0
  24. package/dist/cjs/constants/addresses.js +13 -0
  25. package/dist/cjs/constants/addresses.js.map +1 -0
  26. package/dist/cjs/constants/chain.js +13 -0
  27. package/dist/cjs/constants/chain.js.map +1 -0
  28. package/dist/cjs/constants/currency.js +12 -0
  29. package/dist/cjs/constants/currency.js.map +1 -0
  30. package/dist/cjs/constants/fee.js +7 -0
  31. package/dist/cjs/constants/fee.js.map +1 -0
  32. package/dist/cjs/constants/price.js +6 -0
  33. package/dist/cjs/constants/price.js.map +1 -0
  34. package/dist/cjs/constants/subgraph-url.js +8 -0
  35. package/dist/cjs/constants/subgraph-url.js.map +1 -0
  36. package/dist/cjs/index.js +22 -0
  37. package/dist/cjs/index.js.map +1 -0
  38. package/dist/cjs/model/book.js +130 -0
  39. package/dist/cjs/model/book.js.map +1 -0
  40. package/dist/cjs/model/currency.js +3 -0
  41. package/dist/cjs/model/currency.js.map +1 -0
  42. package/dist/cjs/model/depth.js +3 -0
  43. package/dist/cjs/model/depth.js.map +1 -0
  44. package/dist/cjs/model/fee-policy.js +42 -0
  45. package/dist/cjs/model/fee-policy.js.map +1 -0
  46. package/dist/cjs/model/market.js +215 -0
  47. package/dist/cjs/model/market.js.map +1 -0
  48. package/dist/cjs/model/open-order.js +3 -0
  49. package/dist/cjs/model/open-order.js.map +1 -0
  50. package/dist/cjs/package.json +1 -0
  51. package/dist/cjs/signature.js +178 -0
  52. package/dist/cjs/signature.js.map +1 -0
  53. package/dist/cjs/tsconfig.build.tsbuildinfo +1 -0
  54. package/dist/cjs/type.js +6 -0
  55. package/dist/cjs/type.js.map +1 -0
  56. package/dist/cjs/utils/approval.js +46 -0
  57. package/dist/cjs/utils/approval.js.map +1 -0
  58. package/dist/cjs/utils/book-id.js +25 -0
  59. package/dist/cjs/utils/book-id.js.map +1 -0
  60. package/dist/cjs/utils/build-transaction.js +31 -0
  61. package/dist/cjs/utils/build-transaction.js.map +1 -0
  62. package/dist/cjs/utils/decimals.js +17 -0
  63. package/dist/cjs/utils/decimals.js.map +1 -0
  64. package/dist/cjs/utils/market.js +53 -0
  65. package/dist/cjs/utils/market.js.map +1 -0
  66. package/dist/cjs/utils/math.js +83 -0
  67. package/dist/cjs/utils/math.js.map +1 -0
  68. package/dist/cjs/utils/prices.js +22 -0
  69. package/dist/cjs/utils/prices.js.map +1 -0
  70. package/dist/cjs/utils/tick.js +106 -0
  71. package/dist/cjs/utils/tick.js.map +1 -0
  72. package/dist/cjs/utils/time.js +9 -0
  73. package/dist/cjs/utils/time.js.map +1 -0
  74. package/dist/cjs/utils/unit.js +38 -0
  75. package/dist/cjs/utils/unit.js.map +1 -0
  76. package/dist/cjs/view.js +185 -0
  77. package/dist/cjs/view.js.map +1 -0
  78. package/dist/esm/.graphclient/index.js +233 -0
  79. package/dist/esm/.graphclient/index.js.map +1 -0
  80. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js +14480 -0
  81. package/dist/esm/.graphclient/sources/clober-v2/introspectionSchema.js.map +1 -0
  82. package/dist/esm/.graphclient/sources/clober-v2/types.js +3 -0
  83. package/dist/esm/.graphclient/sources/clober-v2/types.js.map +1 -0
  84. package/dist/esm/abis/core/controller-abi.js +986 -0
  85. package/dist/esm/abis/core/controller-abi.js.map +1 -0
  86. package/dist/esm/abis/core/params-abi.js +59 -0
  87. package/dist/esm/abis/core/params-abi.js.map +1 -0
  88. package/dist/esm/apis/currency.js +83 -0
  89. package/dist/esm/apis/currency.js.map +1 -0
  90. package/dist/esm/apis/market.js +59 -0
  91. package/dist/esm/apis/market.js.map +1 -0
  92. package/dist/esm/apis/open-order.js +85 -0
  93. package/dist/esm/apis/open-order.js.map +1 -0
  94. package/dist/esm/approval.js +70 -0
  95. package/dist/esm/approval.js.map +1 -0
  96. package/dist/esm/call.js +535 -0
  97. package/dist/esm/call.js.map +1 -0
  98. package/dist/esm/constants/action.js +11 -0
  99. package/dist/esm/constants/action.js.map +1 -0
  100. package/dist/esm/constants/addresses.js +10 -0
  101. package/dist/esm/constants/addresses.js.map +1 -0
  102. package/dist/esm/constants/chain.js +10 -0
  103. package/dist/esm/constants/chain.js.map +1 -0
  104. package/dist/esm/constants/currency.js +9 -0
  105. package/dist/esm/constants/currency.js.map +1 -0
  106. package/dist/esm/constants/fee.js +4 -0
  107. package/dist/esm/constants/fee.js.map +1 -0
  108. package/dist/esm/constants/price.js +3 -0
  109. package/dist/esm/constants/price.js.map +1 -0
  110. package/dist/esm/constants/subgraph-url.js +5 -0
  111. package/dist/esm/constants/subgraph-url.js.map +1 -0
  112. package/dist/esm/index.js +6 -0
  113. package/dist/esm/index.js.map +1 -0
  114. package/dist/esm/model/book.js +126 -0
  115. package/dist/esm/model/book.js.map +1 -0
  116. package/dist/esm/model/currency.js +2 -0
  117. package/dist/esm/model/currency.js.map +1 -0
  118. package/dist/esm/model/depth.js +2 -0
  119. package/dist/esm/model/depth.js.map +1 -0
  120. package/dist/esm/model/fee-policy.js +38 -0
  121. package/dist/esm/model/fee-policy.js.map +1 -0
  122. package/dist/esm/model/market.js +211 -0
  123. package/dist/esm/model/market.js.map +1 -0
  124. package/dist/esm/model/open-order.js +2 -0
  125. package/dist/esm/model/open-order.js.map +1 -0
  126. package/dist/esm/package.json +1 -0
  127. package/dist/esm/signature.js +174 -0
  128. package/dist/esm/signature.js.map +1 -0
  129. package/dist/esm/tsconfig.build.tsbuildinfo +1 -0
  130. package/dist/esm/type.js +2 -0
  131. package/dist/esm/type.js.map +1 -0
  132. package/dist/esm/utils/approval.js +42 -0
  133. package/dist/esm/utils/approval.js.map +1 -0
  134. package/dist/esm/utils/book-id.js +21 -0
  135. package/dist/esm/utils/book-id.js.map +1 -0
  136. package/dist/esm/utils/build-transaction.js +27 -0
  137. package/dist/esm/utils/build-transaction.js.map +1 -0
  138. package/dist/esm/utils/decimals.js +12 -0
  139. package/dist/esm/utils/decimals.js.map +1 -0
  140. package/dist/esm/utils/market.js +49 -0
  141. package/dist/esm/utils/market.js.map +1 -0
  142. package/dist/esm/utils/math.js +78 -0
  143. package/dist/esm/utils/math.js.map +1 -0
  144. package/dist/esm/utils/prices.js +17 -0
  145. package/dist/esm/utils/prices.js.map +1 -0
  146. package/dist/esm/utils/tick.js +100 -0
  147. package/dist/esm/utils/tick.js.map +1 -0
  148. package/dist/esm/utils/time.js +5 -0
  149. package/dist/esm/utils/time.js.map +1 -0
  150. package/dist/esm/utils/unit.js +34 -0
  151. package/dist/esm/utils/unit.js.map +1 -0
  152. package/dist/esm/view.js +177 -0
  153. package/dist/esm/view.js.map +1 -0
  154. package/dist/types/.graphclient/index.d.ts +1281 -0
  155. package/dist/types/.graphclient/index.d.ts.map +1 -0
  156. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts +3 -0
  157. package/dist/types/.graphclient/sources/clober-v2/introspectionSchema.d.ts.map +1 -0
  158. package/dist/types/.graphclient/sources/clober-v2/types.d.ts +984 -0
  159. package/dist/types/.graphclient/sources/clober-v2/types.d.ts.map +1 -0
  160. package/dist/types/abis/core/controller-abi.d.ts +757 -0
  161. package/dist/types/abis/core/controller-abi.d.ts.map +1 -0
  162. package/dist/types/abis/core/params-abi.d.ts +21 -0
  163. package/dist/types/abis/core/params-abi.d.ts.map +1 -0
  164. package/dist/types/apis/currency.d.ts +4 -0
  165. package/dist/types/apis/currency.d.ts.map +1 -0
  166. package/dist/types/apis/market.d.ts +4 -0
  167. package/dist/types/apis/market.d.ts.map +1 -0
  168. package/dist/types/apis/open-order.d.ts +5 -0
  169. package/dist/types/apis/open-order.d.ts.map +1 -0
  170. package/dist/types/approval.d.ts +32 -0
  171. package/dist/types/approval.d.ts.map +1 -0
  172. package/dist/types/call.d.ts +234 -0
  173. package/dist/types/call.d.ts.map +1 -0
  174. package/dist/types/constants/action.d.ts +10 -0
  175. package/dist/types/constants/action.d.ts.map +1 -0
  176. package/dist/types/constants/addresses.d.ts +9 -0
  177. package/dist/types/constants/addresses.d.ts.map +1 -0
  178. package/dist/types/constants/chain.d.ts +9 -0
  179. package/dist/types/constants/chain.d.ts.map +1 -0
  180. package/dist/types/constants/currency.d.ts +8 -0
  181. package/dist/types/constants/currency.d.ts.map +1 -0
  182. package/dist/types/constants/fee.d.ts +4 -0
  183. package/dist/types/constants/fee.d.ts.map +1 -0
  184. package/dist/types/constants/price.d.ts +3 -0
  185. package/dist/types/constants/price.d.ts.map +1 -0
  186. package/dist/types/constants/subgraph-url.d.ts +5 -0
  187. package/dist/types/constants/subgraph-url.d.ts.map +1 -0
  188. package/dist/types/index.d.ts +6 -0
  189. package/dist/types/index.d.ts.map +1 -0
  190. package/dist/types/model/book.d.ts +31 -0
  191. package/dist/types/model/book.d.ts.map +1 -0
  192. package/dist/types/model/currency.d.ts +7 -0
  193. package/dist/types/model/currency.d.ts.map +1 -0
  194. package/dist/types/model/depth.d.ts +11 -0
  195. package/dist/types/model/depth.d.ts.map +1 -0
  196. package/dist/types/model/fee-policy.d.ts +15 -0
  197. package/dist/types/model/fee-policy.d.ts.map +1 -0
  198. package/dist/types/model/market.d.ts +44 -0
  199. package/dist/types/model/market.d.ts.map +1 -0
  200. package/dist/types/model/open-order.d.ts +28 -0
  201. package/dist/types/model/open-order.d.ts.map +1 -0
  202. package/dist/types/signature.d.ts +40 -0
  203. package/dist/types/signature.d.ts.map +1 -0
  204. package/dist/types/type.d.ts +34 -0
  205. package/dist/types/type.d.ts.map +1 -0
  206. package/dist/types/utils/approval.d.ts +3 -0
  207. package/dist/types/utils/approval.d.ts.map +1 -0
  208. package/dist/types/utils/book-id.d.ts +2 -0
  209. package/dist/types/utils/book-id.d.ts.map +1 -0
  210. package/dist/types/utils/build-transaction.d.ts +5 -0
  211. package/dist/types/utils/build-transaction.d.ts.map +1 -0
  212. package/dist/types/utils/decimals.d.ts +3 -0
  213. package/dist/types/utils/decimals.d.ts.map +1 -0
  214. package/dist/types/utils/market.d.ts +7 -0
  215. package/dist/types/utils/market.d.ts.map +1 -0
  216. package/dist/types/utils/math.d.ts +3 -0
  217. package/dist/types/utils/math.d.ts.map +1 -0
  218. package/dist/types/utils/prices.d.ts +3 -0
  219. package/dist/types/utils/prices.d.ts.map +1 -0
  220. package/dist/types/utils/tick.d.ts +4 -0
  221. package/dist/types/utils/tick.d.ts.map +1 -0
  222. package/dist/types/utils/time.d.ts +2 -0
  223. package/dist/types/utils/time.d.ts.map +1 -0
  224. package/dist/types/utils/unit.d.ts +4 -0
  225. package/dist/types/utils/unit.d.ts.map +1 -0
  226. package/dist/types/view.d.ts +129 -0
  227. package/dist/types/view.d.ts.map +1 -0
  228. package/package.json +46 -0
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CHAIN_IDS = void 0;
4
+ var chain_1 = require("./constants/chain");
5
+ Object.defineProperty(exports, "CHAIN_IDS", { enumerable: true, get: function () { return chain_1.CHAIN_IDS; } });
6
+ //# sourceMappingURL=type.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"type.js","sourceRoot":"","sources":["../../src/type.ts"],"names":[],"mappings":";;;AAMA,2CAA6C;AAApC,kGAAA,SAAS,OAAA"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchIsApprovedForAll = void 0;
4
+ const viem_1 = require("viem");
5
+ const chain_1 = require("../constants/chain");
6
+ const addresses_1 = require("../constants/addresses");
7
+ const _abi = [
8
+ {
9
+ inputs: [
10
+ {
11
+ internalType: 'address',
12
+ name: 'owner',
13
+ type: 'address',
14
+ },
15
+ {
16
+ internalType: 'address',
17
+ name: 'operator',
18
+ type: 'address',
19
+ },
20
+ ],
21
+ name: 'isApprovedForAll',
22
+ outputs: [
23
+ {
24
+ internalType: 'bool',
25
+ name: '',
26
+ type: 'bool',
27
+ },
28
+ ],
29
+ stateMutability: 'view',
30
+ type: 'function',
31
+ },
32
+ ];
33
+ async function fetchIsApprovedForAll(chainId, owner, rpcUrl) {
34
+ const publicClient = (0, viem_1.createPublicClient)({
35
+ chain: chain_1.CHAIN_MAP[chainId],
36
+ transport: rpcUrl ? (0, viem_1.http)(rpcUrl) : (0, viem_1.http)(),
37
+ });
38
+ return publicClient.readContract({
39
+ address: addresses_1.CONTRACT_ADDRESSES[chainId].BookManager,
40
+ abi: _abi,
41
+ functionName: 'isApprovedForAll',
42
+ args: [owner, addresses_1.CONTRACT_ADDRESSES[chainId].Controller],
43
+ });
44
+ }
45
+ exports.fetchIsApprovedForAll = fetchIsApprovedForAll;
46
+ //# sourceMappingURL=approval.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approval.js","sourceRoot":"","sources":["../../../src/utils/approval.ts"],"names":[],"mappings":";;;AAAA,+BAA+C;AAE/C,8CAAyD;AACzD,sDAA2D;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;AAEH,KAAK,UAAU,qBAAqB,CACzC,OAAkB,EAClB,KAAoB,EACpB,MAAe;IAEf,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAC;QACtC,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,GAAE;KAC1C,CAAC,CAAA;IACF,OAAO,YAAY,CAAC,YAAY,CAAC;QAC/B,OAAO,EAAE,8BAAkB,CAAC,OAAO,CAAE,CAAC,WAAW;QACjD,GAAG,EAAE,IAAI;QACT,YAAY,EAAE,kBAAkB;QAChC,IAAI,EAAE,CAAC,KAAK,EAAE,8BAAkB,CAAC,OAAO,CAAE,CAAC,UAAU,CAAC;KACvD,CAAC,CAAA;AACJ,CAAC;AAfD,sDAeC"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toBookId = void 0;
4
+ const viem_1 = require("viem");
5
+ const fee_1 = require("../constants/fee");
6
+ const toBookId = (inputToken, outputToken, unit) => {
7
+ const value = (0, viem_1.keccak256)((0, viem_1.encodeAbiParameters)([
8
+ { name: 'base', type: 'address' },
9
+ { name: 'unit', type: 'uint64' },
10
+ { name: 'quote', type: 'address' },
11
+ { name: 'makerPolicy', type: 'uint24' },
12
+ { name: 'hooks', type: 'address' },
13
+ { name: 'takerPolicy', type: 'uint24' },
14
+ ], [
15
+ outputToken,
16
+ unit,
17
+ inputToken,
18
+ Number(fee_1.MAKER_DEFAULT_POLICY.value),
19
+ viem_1.zeroAddress,
20
+ Number(fee_1.TAKER_DEFAULT_POLICY.value),
21
+ ]));
22
+ return BigInt(value) & (2n ** 192n - 1n);
23
+ };
24
+ exports.toBookId = toBookId;
25
+ //# sourceMappingURL=book-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"book-id.js","sourceRoot":"","sources":["../../../src/utils/book-id.ts"],"names":[],"mappings":";;;AAAA,+BAAkE;AAElE,0CAA6E;AAEtE,MAAM,QAAQ,GAAG,CACtB,UAAyB,EACzB,WAA0B,EAC1B,IAAY,EACZ,EAAE;IACF,MAAM,KAAK,GAAG,IAAA,gBAAS,EACrB,IAAA,0BAAmB,EACjB;QACE,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE;QACjC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE;QAChC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;QACvC,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE;QAClC,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE;KACxC,EACD;QACE,WAAW;QACX,IAAI;QACJ,UAAU;QACV,MAAM,CAAC,0BAAoB,CAAC,KAAK,CAAC;QAClC,kBAAW;QACX,MAAM,CAAC,0BAAoB,CAAC,KAAK,CAAC;KACnC,CACF,CACF,CAAA;IACD,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,IAAI,IAAI,GAAG,EAAE,CAAC,CAAA;AAC1C,CAAC,CAAA;AA1BY,QAAA,QAAQ,YA0BpB"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildTransaction = void 0;
4
+ const viem_1 = require("viem");
5
+ const chain_1 = require("../constants/chain");
6
+ const buildTransaction = async (chainId, args, rpcUrl) => {
7
+ const publicClient = (0, viem_1.createPublicClient)({
8
+ chain: chain_1.CHAIN_MAP[chainId],
9
+ transport: rpcUrl ? (0, viem_1.http)(rpcUrl) : (0, viem_1.http)(),
10
+ });
11
+ const data = (0, viem_1.encodeFunctionData)(args);
12
+ const [gas, gasPrice] = await Promise.all([
13
+ publicClient.estimateGas({
14
+ account: args.account,
15
+ data,
16
+ to: args.address,
17
+ value: args.value || 0n,
18
+ }),
19
+ publicClient.getGasPrice(),
20
+ ]);
21
+ return {
22
+ gas,
23
+ gasPrice,
24
+ data,
25
+ value: args.value || 0n,
26
+ to: args.address,
27
+ from: args.account,
28
+ };
29
+ };
30
+ exports.buildTransaction = buildTransaction;
31
+ //# sourceMappingURL=build-transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build-transaction.js","sourceRoot":"","sources":["../../../src/utils/build-transaction.ts"],"names":[],"mappings":";;;AAAA,+BAMa;AAEb,8CAAyD;AAGlD,MAAM,gBAAgB,GAAG,KAAK,EACnC,OAAkB,EAClB,IAA0D,EAC1D,MAAe,EACO,EAAE;IACxB,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAC;QACtC,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,GAAE;KAC1C,CAAC,CAAA;IACF,MAAM,IAAI,GAAG,IAAA,yBAAkB,EAAC,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;AA3BY,QAAA,gBAAgB,oBA2B5B"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.quoteToBase = exports.baseToQuote = void 0;
4
+ const price_1 = require("../constants/price");
5
+ const math_1 = require("./math");
6
+ const tick_1 = require("./tick");
7
+ const baseToQuote = (tick, base, roundingUp) => {
8
+ const y = 1n << price_1.PRICE_PRECISION;
9
+ return (0, math_1.divide)(base * (0, tick_1.toPrice)(tick), y, roundingUp);
10
+ };
11
+ exports.baseToQuote = baseToQuote;
12
+ const quoteToBase = (tick, quote, roundingUp) => {
13
+ const x = quote << price_1.PRICE_PRECISION;
14
+ return (0, math_1.divide)(x, (0, tick_1.toPrice)(tick), roundingUp);
15
+ };
16
+ exports.quoteToBase = quoteToBase;
17
+ //# sourceMappingURL=decimals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimals.js","sourceRoot":"","sources":["../../../src/utils/decimals.ts"],"names":[],"mappings":";;;AAAA,8CAAoD;AAEpD,iCAA+B;AAC/B,iCAAgC;AAEzB,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,IAAY,EACZ,UAAmB,EACX,EAAE;IACV,MAAM,CAAC,GAAG,EAAE,IAAI,uBAAe,CAAA;IAC/B,OAAO,IAAA,aAAM,EAAC,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAA;AACpD,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB;AAEM,MAAM,WAAW,GAAG,CACzB,IAAY,EACZ,KAAa,EACb,UAAmB,EACX,EAAE;IACV,MAAM,CAAC,GAAG,KAAK,IAAI,uBAAe,CAAA;IAClC,OAAO,IAAA,aAAM,EAAC,CAAC,EAAE,IAAA,cAAO,EAAC,IAAI,CAAC,EAAE,UAAU,CAAC,CAAA;AAC7C,CAAC,CAAA;AAPY,QAAA,WAAW,eAOvB"}
@@ -0,0 +1,53 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getMarketId = void 0;
4
+ const viem_1 = require("viem");
5
+ const currency_1 = require("../constants/currency");
6
+ const getMarketId = (chainId, tokenAddresses) => {
7
+ if (tokenAddresses.length !== 2) {
8
+ throw new Error('Invalid token pair');
9
+ }
10
+ tokenAddresses = tokenAddresses.map((address) => (0, viem_1.getAddress)(address));
11
+ // include stable coin
12
+ const stable = tokenAddresses.find((address) => {
13
+ return currency_1.STABLE_COIN_ADDRESSES[chainId].map((addresses) => (0, viem_1.getAddress)(addresses)).some((addresses) => addresses.includes(address));
14
+ });
15
+ if (stable) {
16
+ const other = tokenAddresses.find((address) => !(0, viem_1.isAddressEqual)(address, stable));
17
+ return {
18
+ marketId: `${other}/${stable}`,
19
+ quoteTokenAddress: stable,
20
+ baseTokenAddress: other,
21
+ };
22
+ }
23
+ // include eth
24
+ const eth = tokenAddresses.find((address) => (0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
25
+ if (eth) {
26
+ const other = tokenAddresses.find((address) => !(0, viem_1.isAddressEqual)(address, viem_1.zeroAddress));
27
+ return {
28
+ marketId: `${other}/${eth}`,
29
+ quoteTokenAddress: eth,
30
+ baseTokenAddress: other,
31
+ };
32
+ }
33
+ // include weth
34
+ const weth = tokenAddresses.find((address) => {
35
+ return currency_1.WETH_ADDRESSES[chainId].map((addresses) => (0, viem_1.getAddress)(addresses)).some((addresses) => addresses.includes(address));
36
+ });
37
+ if (weth) {
38
+ const other = tokenAddresses.find((address) => !(0, viem_1.isAddressEqual)(address, weth));
39
+ return {
40
+ marketId: `${other}/${weth}`,
41
+ quoteTokenAddress: weth,
42
+ baseTokenAddress: other,
43
+ };
44
+ }
45
+ const _tokens = tokenAddresses.sort((a, b) => a.localeCompare(b));
46
+ return {
47
+ marketId: `${_tokens[0]}/${_tokens[1]}`,
48
+ quoteTokenAddress: _tokens[0],
49
+ baseTokenAddress: _tokens[1],
50
+ };
51
+ };
52
+ exports.getMarketId = getMarketId;
53
+ //# sourceMappingURL=market.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"market.js","sourceRoot":"","sources":["../../../src/utils/market.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.lnWad = exports.divide = void 0;
4
+ const divide = (x, y, roundUp) => {
5
+ if (roundUp) {
6
+ if (x === 0n) {
7
+ return 0n;
8
+ }
9
+ else {
10
+ return (x - 1n) / y + 1n;
11
+ }
12
+ }
13
+ else {
14
+ return x / y;
15
+ }
16
+ };
17
+ exports.divide = divide;
18
+ const lnWad = (x) => {
19
+ const or = (a, b) => a | b;
20
+ const xor = (a, b) => a ^ b;
21
+ const and = (a, b) => a & b;
22
+ const add = (a, b) => a + b;
23
+ const sub = (a, b) => a - b;
24
+ const mul = (a, b) => a * b;
25
+ const sdiv = (a, b) => a / b;
26
+ const lt = (a, b) => (a < b ? 1n : 0n);
27
+ const shl = (x, y) => y << x;
28
+ const shr = (x, y) => y >> x;
29
+ const sar = (x, y) => y >> x;
30
+ const byte = (i, x) => (x >> (248n - i * 8n)) & 0xffn;
31
+ // We want to convert `x` from `10**18` fixed point to `2**96` fixed point.
32
+ // We do this by multiplying by `2**96 / 10**18`. But since
33
+ // `ln(x * C) = ln(x) + ln(C)`, we can simply do nothing here
34
+ // and add `ln(2**96 / 10**18)` at the end.
35
+ // Compute `k = log2(x) - 96`, `r = 159 - k = 255 - log2(x) = 255 ^ log2(x)`.
36
+ let r = shl(7n, lt(0xffffffffffffffffffffffffffffffffn, x));
37
+ r = or(r, shl(6n, lt(0xffffffffffffffffn, shr(r, x))));
38
+ r = or(r, shl(5n, lt(0xffffffffn, shr(r, x))));
39
+ r = or(r, shl(4n, lt(0xffffn, shr(r, x))));
40
+ r = or(r, shl(3n, lt(0xffn, shr(r, x))));
41
+ // forgefmt: disable-next-item
42
+ r = xor(r, byte(and(0x1fn, shr(shr(r, x), 0x8421084210842108cc6318c6db6d54ben)), 0xf8f9f9faf9fdfafbf9fdfcfdfafbfcfef9fafdfafcfcfbfefafafcfbffffffffn));
43
+ // Reduce range of x to (1, 2) * 2**96
44
+ // ln(2^k * x) = k * ln(2) + ln(x)
45
+ x = shr(159n, shl(r, x));
46
+ // Evaluate using a (8, 8)-term rational approximation.
47
+ // `p` is made monic, we will multiply by a scale factor later.
48
+ // forgefmt: disable-next-item
49
+ let p = sub(
50
+ // This heavily nested expression is to avoid stack-too-deep for via-ir.
51
+ sar(96n, mul(add(43456485725739037958740375743393n, sar(96n, mul(add(24828157081833163892658089445524n, sar(96n, mul(add(3273285459638523848632254066296n, x), x))), x))), x)), 11111509109440967052023855526967n);
52
+ p = sub(sar(96n, mul(p, x)), 45023709667254063763336534515857n);
53
+ p = sub(sar(96n, mul(p, x)), 14706773417378608786704636184526n);
54
+ p = sub(mul(p, x), shl(96n, 795164235651350426258249787498n));
55
+ // We leave `p` in `2**192` basis so we don't need to scale it back up for the division.
56
+ // `q` is monic by convention.
57
+ let q = add(5573035233440673466300451813936n, x);
58
+ q = add(71694874799317883764090561454958n, sar(96n, mul(x, q)));
59
+ q = add(283447036172924575727196451306956n, sar(96n, mul(x, q)));
60
+ q = add(401686690394027663651624208769553n, sar(96n, mul(x, q)));
61
+ q = add(204048457590392012362485061816622n, sar(96n, mul(x, q)));
62
+ q = add(31853899698501571402653359427138n, sar(96n, mul(x, q)));
63
+ q = add(909429971244387300277376558375n, sar(96n, mul(x, q)));
64
+ // `p / q` is in the range `(0, 0.125) * 2**96`.
65
+ // Finalization, we need to:
66
+ // - Multiply by the scale factor `s = 5.549…`.
67
+ // - Add `ln(2**96 / 10**18)`.
68
+ // - Add `k * ln(2)`.
69
+ // - Multiply by `10**18 / 2**96 = 5**18 >> 78`.
70
+ // The q polynomial is known not to have zeros in the domain.
71
+ // No scaling required because p is already `2**96` too large.
72
+ p = sdiv(p, q);
73
+ // Multiply by the scaling factor: `s * 5**18 * 2**96`, base is now `5**18 * 2**192`.
74
+ p = mul(1677202110996718588342820967067443963516166n, p);
75
+ // Add `ln(2) * k * 5**18 * 2**192`.
76
+ // forgefmt: disable-next-item
77
+ p = add(mul(16597577552685614221487285958193947469193820559219878177908093499208371n, sub(159n, r)), p);
78
+ // Base conversion: mul `2**96 / (5**18 * 2**192)`.
79
+ r = sdiv(p, 302231454903657293676544000000000000000000n);
80
+ return r;
81
+ };
82
+ exports.lnWad = lnWad;
83
+ //# sourceMappingURL=math.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"math.js","sourceRoot":"","sources":["../../../src/utils/math.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parsePrice = exports.formatPrice = void 0;
4
+ const bignumber_js_1 = require("bignumber.js");
5
+ const price_1 = require("../constants/price");
6
+ const formatPrice = (price, quoteDecimals, baseDecimals) => {
7
+ return new bignumber_js_1.default(price.toString())
8
+ .div(new bignumber_js_1.default(2).pow(price_1.PRICE_PRECISION.toString()))
9
+ .times(new bignumber_js_1.default(10).pow(baseDecimals))
10
+ .div(new bignumber_js_1.default(10).pow(quoteDecimals))
11
+ .toNumber();
12
+ };
13
+ exports.formatPrice = formatPrice;
14
+ const parsePrice = (price, quoteDecimals, baseDecimals) => {
15
+ const value = new bignumber_js_1.default(price)
16
+ .times(new bignumber_js_1.default(2).pow(price_1.PRICE_PRECISION.toString()))
17
+ .times(new bignumber_js_1.default(10).pow(quoteDecimals))
18
+ .div(new bignumber_js_1.default(10).pow(baseDecimals));
19
+ return BigInt(value.isInteger() ? value.toFixed() : value.integerValue().toFixed());
20
+ };
21
+ exports.parsePrice = parsePrice;
22
+ //# sourceMappingURL=prices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prices.js","sourceRoot":"","sources":["../../../src/utils/prices.ts"],"names":[],"mappings":";;;AAAA,+CAAoC;AAEpC,8CAAoD;AAE7C,MAAM,WAAW,GAAG,CACzB,KAAa,EACb,aAAqB,EACrB,YAAoB,EACZ,EAAE;IACV,OAAO,IAAI,sBAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;SACnC,GAAG,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SACrD,KAAK,CAAC,IAAI,sBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;SAC1C,GAAG,CAAC,IAAI,sBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SACzC,QAAQ,EAAE,CAAA;AACf,CAAC,CAAA;AAVY,QAAA,WAAW,eAUvB;AAEM,MAAM,UAAU,GAAG,CACxB,KAAa,EACb,aAAqB,EACrB,YAAoB,EACZ,EAAE;IACV,MAAM,KAAK,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC;SAC/B,KAAK,CAAC,IAAI,sBAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,uBAAe,CAAC,QAAQ,EAAE,CAAC,CAAC;SACvD,KAAK,CAAC,IAAI,sBAAS,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;SAC3C,GAAG,CAAC,IAAI,sBAAS,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;AAZY,QAAA,UAAU,cAYtB"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPrice = exports.fromPrice = exports.invertPrice = void 0;
4
+ const price_1 = require("../constants/price");
5
+ const math_1 = require("./math");
6
+ const _R0 = 0xfff97272373d413259a46990n;
7
+ const _R1 = 0xfff2e50f5f656932ef12357cn;
8
+ const _R2 = 0xffe5caca7e10e4e61c3624ean;
9
+ const _R3 = 0xffcb9843d60f6159c9db5883n;
10
+ const _R4 = 0xff973b41fa98c081472e6896n;
11
+ const _R5 = 0xff2ea16466c96a3843ec78b3n;
12
+ const _R6 = 0xfe5dee046a99a2a811c461f1n;
13
+ const _R7 = 0xfcbe86c7900a88aedcffc83bn;
14
+ const _R8 = 0xf987a7253ac413176f2b074cn;
15
+ const _R9 = 0xf3392b0822b70005940c7a39n;
16
+ const _R10 = 0xe7159475a2c29b7443b29c7fn;
17
+ const _R11 = 0xd097f3bdfd2022b8845ad8f7n;
18
+ const _R12 = 0xa9f746462d870fdf8a65dc1fn;
19
+ const _R13 = 0x70d869a156d2a1b890bb3df6n;
20
+ const _R14 = 0x31be135f97d08fd981231505n;
21
+ const _R15 = 0x9aa508b5b7a84e1c677de54n;
22
+ const _R16 = 0x5d6af8dedb81196699c329n;
23
+ const _R17 = 0x2216e584f5fa1ea92604n;
24
+ const _R18 = 0x48a170391f7dc42n;
25
+ const invertPrice = (price) => {
26
+ return price ? (1n << (price_1.PRICE_PRECISION * 2n)) / price : 0n;
27
+ };
28
+ exports.invertPrice = invertPrice;
29
+ const fromPrice = (price) => {
30
+ const tick = ((0, math_1.lnWad)(price) * 42951820407860n) / 2n ** 128n;
31
+ if ((0, exports.toPrice)(tick) > price) {
32
+ return tick - 1n;
33
+ }
34
+ return tick;
35
+ };
36
+ exports.fromPrice = fromPrice;
37
+ const toPrice = (tick) => {
38
+ const absTick = tick < 0n ? -tick : tick;
39
+ let price = 0n;
40
+ if ((absTick & 0x1n) !== 0n) {
41
+ price = _R0;
42
+ }
43
+ else {
44
+ price = 1n << price_1.PRICE_PRECISION;
45
+ }
46
+ if ((absTick & 0x2n) != 0n) {
47
+ price = (price * _R1) >> price_1.PRICE_PRECISION;
48
+ }
49
+ if ((absTick & 0x4n) != 0n) {
50
+ price = (price * _R2) >> price_1.PRICE_PRECISION;
51
+ }
52
+ if ((absTick & 0x8n) != 0n) {
53
+ price = (price * _R3) >> price_1.PRICE_PRECISION;
54
+ }
55
+ if ((absTick & 0x10n) != 0n) {
56
+ price = (price * _R4) >> price_1.PRICE_PRECISION;
57
+ }
58
+ if ((absTick & 0x20n) != 0n) {
59
+ price = (price * _R5) >> price_1.PRICE_PRECISION;
60
+ }
61
+ if ((absTick & 0x40n) != 0n) {
62
+ price = (price * _R6) >> price_1.PRICE_PRECISION;
63
+ }
64
+ if ((absTick & 0x80n) != 0n) {
65
+ price = (price * _R7) >> price_1.PRICE_PRECISION;
66
+ }
67
+ if ((absTick & 0x100n) != 0n) {
68
+ price = (price * _R8) >> price_1.PRICE_PRECISION;
69
+ }
70
+ if ((absTick & 0x200n) != 0n) {
71
+ price = (price * _R9) >> price_1.PRICE_PRECISION;
72
+ }
73
+ if ((absTick & 0x400n) != 0n) {
74
+ price = (price * _R10) >> price_1.PRICE_PRECISION;
75
+ }
76
+ if ((absTick & 0x800n) != 0n) {
77
+ price = (price * _R11) >> price_1.PRICE_PRECISION;
78
+ }
79
+ if ((absTick & 0x1000n) != 0n) {
80
+ price = (price * _R12) >> price_1.PRICE_PRECISION;
81
+ }
82
+ if ((absTick & 0x2000n) != 0n) {
83
+ price = (price * _R13) >> price_1.PRICE_PRECISION;
84
+ }
85
+ if ((absTick & 0x4000n) != 0n) {
86
+ price = (price * _R14) >> price_1.PRICE_PRECISION;
87
+ }
88
+ if ((absTick & 0x8000n) != 0n) {
89
+ price = (price * _R15) >> price_1.PRICE_PRECISION;
90
+ }
91
+ if ((absTick & 0x10000n) != 0n) {
92
+ price = (price * _R16) >> price_1.PRICE_PRECISION;
93
+ }
94
+ if ((absTick & 0x20000n) != 0n) {
95
+ price = (price * _R17) >> price_1.PRICE_PRECISION;
96
+ }
97
+ if ((absTick & 0x40000n) != 0n) {
98
+ price = (price * _R18) >> price_1.PRICE_PRECISION;
99
+ }
100
+ if (tick > 0n) {
101
+ price = 0x1000000000000000000000000000000000000000000000000n / price;
102
+ }
103
+ return price;
104
+ };
105
+ exports.toPrice = toPrice;
106
+ //# sourceMappingURL=tick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tick.js","sourceRoot":"","sources":["../../../src/utils/tick.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDeadlineTimestampInSeconds = void 0;
4
+ const currentTimestampInSeconds = () => Math.floor(new Date().getTime() / 1000);
5
+ const getDeadlineTimestampInSeconds = () => {
6
+ return BigInt(Math.floor(currentTimestampInSeconds() + 60 * 20));
7
+ };
8
+ exports.getDeadlineTimestampInSeconds = getDeadlineTimestampInSeconds;
9
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","sourceRoot":"","sources":["../../../src/utils/time.ts"],"names":[],"mappings":";;;AAAA,MAAM,yBAAyB,GAAG,GAAW,EAAE,CAC7C,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAA;AAElC,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;AAFY,QAAA,6BAA6B,iCAEzC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.calculateUnit = void 0;
4
+ const viem_1 = require("viem");
5
+ const chain_1 = require("../constants/chain");
6
+ const _abi = [
7
+ {
8
+ inputs: [],
9
+ name: 'totalSupply',
10
+ outputs: [
11
+ {
12
+ internalType: 'uint256',
13
+ name: '',
14
+ type: 'uint256',
15
+ },
16
+ ],
17
+ stateMutability: 'view',
18
+ type: 'function',
19
+ },
20
+ ];
21
+ const calculateUnit = async (chainId, quote, rpcUrl) => {
22
+ if ((0, viem_1.isAddressEqual)(quote.address, viem_1.zeroAddress)) {
23
+ return 10n ** 12n;
24
+ }
25
+ const publicClient = (0, viem_1.createPublicClient)({
26
+ chain: chain_1.CHAIN_MAP[chainId],
27
+ transport: rpcUrl ? (0, viem_1.http)(rpcUrl) : (0, viem_1.http)(),
28
+ });
29
+ const totalSupply = await publicClient.readContract({
30
+ address: quote.address,
31
+ abi: _abi,
32
+ functionName: 'totalSupply',
33
+ });
34
+ return (10n **
35
+ BigInt(totalSupply <= 2n ** 64n ? 0n : Math.max(quote.decimals - 6, 0)));
36
+ };
37
+ exports.calculateUnit = calculateUnit;
38
+ //# sourceMappingURL=unit.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit.js","sourceRoot":"","sources":["../../../src/utils/unit.ts"],"names":[],"mappings":";;;AAAA,+BAA4E;AAG5E,8CAAyD;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;AAEH,MAAM,aAAa,GAAG,KAAK,EAChC,OAAkB,EAClB,KAAe,EACf,MAAe,EACf,EAAE;IACF,IAAI,IAAA,qBAAc,EAAC,KAAK,CAAC,OAAO,EAAE,kBAAW,CAAC,EAAE,CAAC;QAC/C,OAAO,GAAG,IAAI,GAAG,CAAA;IACnB,CAAC;IACD,MAAM,YAAY,GAAG,IAAA,yBAAkB,EAAC;QACtC,KAAK,EAAE,iBAAS,CAAC,OAAO,CAAC;QACzB,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAA,WAAI,EAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAA,WAAI,GAAE;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;AArBY,QAAA,aAAa,iBAqBzB"}