@grimoirelabs/core 0.1.0

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 (205) hide show
  1. package/dist/builders/expressions.d.ts +33 -0
  2. package/dist/builders/expressions.d.ts.map +1 -0
  3. package/dist/builders/expressions.js +57 -0
  4. package/dist/builders/expressions.js.map +1 -0
  5. package/dist/builders/index.d.ts +44 -0
  6. package/dist/builders/index.d.ts.map +1 -0
  7. package/dist/builders/index.js +32 -0
  8. package/dist/builders/index.js.map +1 -0
  9. package/dist/builders/spell-builder.d.ts +124 -0
  10. package/dist/builders/spell-builder.d.ts.map +1 -0
  11. package/dist/builders/spell-builder.js +299 -0
  12. package/dist/builders/spell-builder.js.map +1 -0
  13. package/dist/builders/step-builder.d.ts +212 -0
  14. package/dist/builders/step-builder.d.ts.map +1 -0
  15. package/dist/builders/step-builder.js +499 -0
  16. package/dist/builders/step-builder.js.map +1 -0
  17. package/dist/compiler/expression-parser.d.ts +14 -0
  18. package/dist/compiler/expression-parser.d.ts.map +1 -0
  19. package/dist/compiler/expression-parser.js +460 -0
  20. package/dist/compiler/expression-parser.js.map +1 -0
  21. package/dist/compiler/grimoire/ast.d.ts +450 -0
  22. package/dist/compiler/grimoire/ast.d.ts.map +1 -0
  23. package/dist/compiler/grimoire/ast.js +19 -0
  24. package/dist/compiler/grimoire/ast.js.map +1 -0
  25. package/dist/compiler/grimoire/errors.d.ts +65 -0
  26. package/dist/compiler/grimoire/errors.d.ts.map +1 -0
  27. package/dist/compiler/grimoire/errors.js +86 -0
  28. package/dist/compiler/grimoire/errors.js.map +1 -0
  29. package/dist/compiler/grimoire/index.d.ts +24 -0
  30. package/dist/compiler/grimoire/index.d.ts.map +1 -0
  31. package/dist/compiler/grimoire/index.js +63 -0
  32. package/dist/compiler/grimoire/index.js.map +1 -0
  33. package/dist/compiler/grimoire/parser.d.ts +135 -0
  34. package/dist/compiler/grimoire/parser.d.ts.map +1 -0
  35. package/dist/compiler/grimoire/parser.js +2148 -0
  36. package/dist/compiler/grimoire/parser.js.map +1 -0
  37. package/dist/compiler/grimoire/tokenizer.d.ts +59 -0
  38. package/dist/compiler/grimoire/tokenizer.d.ts.map +1 -0
  39. package/dist/compiler/grimoire/tokenizer.js +509 -0
  40. package/dist/compiler/grimoire/tokenizer.js.map +1 -0
  41. package/dist/compiler/grimoire/transformer.d.ts +71 -0
  42. package/dist/compiler/grimoire/transformer.d.ts.map +1 -0
  43. package/dist/compiler/grimoire/transformer.js +1011 -0
  44. package/dist/compiler/grimoire/transformer.js.map +1 -0
  45. package/dist/compiler/index.d.ts +45 -0
  46. package/dist/compiler/index.d.ts.map +1 -0
  47. package/dist/compiler/index.js +97 -0
  48. package/dist/compiler/index.js.map +1 -0
  49. package/dist/compiler/ir-generator.d.ts +16 -0
  50. package/dist/compiler/ir-generator.d.ts.map +1 -0
  51. package/dist/compiler/ir-generator.js +997 -0
  52. package/dist/compiler/ir-generator.js.map +1 -0
  53. package/dist/compiler/validator.d.ts +15 -0
  54. package/dist/compiler/validator.d.ts.map +1 -0
  55. package/dist/compiler/validator.js +401 -0
  56. package/dist/compiler/validator.js.map +1 -0
  57. package/dist/index.d.ts +16 -0
  58. package/dist/index.d.ts.map +1 -0
  59. package/dist/index.js +17 -0
  60. package/dist/index.js.map +1 -0
  61. package/dist/runtime/circuit-breaker.d.ts +59 -0
  62. package/dist/runtime/circuit-breaker.d.ts.map +1 -0
  63. package/dist/runtime/circuit-breaker.js +155 -0
  64. package/dist/runtime/circuit-breaker.js.map +1 -0
  65. package/dist/runtime/context.d.ts +92 -0
  66. package/dist/runtime/context.d.ts.map +1 -0
  67. package/dist/runtime/context.js +219 -0
  68. package/dist/runtime/context.js.map +1 -0
  69. package/dist/runtime/error-classifier.d.ts +16 -0
  70. package/dist/runtime/error-classifier.d.ts.map +1 -0
  71. package/dist/runtime/error-classifier.js +38 -0
  72. package/dist/runtime/error-classifier.js.map +1 -0
  73. package/dist/runtime/expression-evaluator.d.ts +36 -0
  74. package/dist/runtime/expression-evaluator.d.ts.map +1 -0
  75. package/dist/runtime/expression-evaluator.js +391 -0
  76. package/dist/runtime/expression-evaluator.js.map +1 -0
  77. package/dist/runtime/index.d.ts +12 -0
  78. package/dist/runtime/index.d.ts.map +1 -0
  79. package/dist/runtime/index.js +11 -0
  80. package/dist/runtime/index.js.map +1 -0
  81. package/dist/runtime/interpreter.d.ts +59 -0
  82. package/dist/runtime/interpreter.d.ts.map +1 -0
  83. package/dist/runtime/interpreter.js +414 -0
  84. package/dist/runtime/interpreter.js.map +1 -0
  85. package/dist/runtime/skills/registry.d.ts +11 -0
  86. package/dist/runtime/skills/registry.d.ts.map +1 -0
  87. package/dist/runtime/skills/registry.js +73 -0
  88. package/dist/runtime/skills/registry.js.map +1 -0
  89. package/dist/runtime/sqlite-state-store.d.ts +28 -0
  90. package/dist/runtime/sqlite-state-store.d.ts.map +1 -0
  91. package/dist/runtime/sqlite-state-store.js +180 -0
  92. package/dist/runtime/sqlite-state-store.js.map +1 -0
  93. package/dist/runtime/state-store.d.ts +52 -0
  94. package/dist/runtime/state-store.d.ts.map +1 -0
  95. package/dist/runtime/state-store.js +32 -0
  96. package/dist/runtime/state-store.js.map +1 -0
  97. package/dist/runtime/steps/action.d.ts +17 -0
  98. package/dist/runtime/steps/action.d.ts.map +1 -0
  99. package/dist/runtime/steps/action.js +430 -0
  100. package/dist/runtime/steps/action.js.map +1 -0
  101. package/dist/runtime/steps/advisory.d.ts +28 -0
  102. package/dist/runtime/steps/advisory.d.ts.map +1 -0
  103. package/dist/runtime/steps/advisory.js +209 -0
  104. package/dist/runtime/steps/advisory.js.map +1 -0
  105. package/dist/runtime/steps/compute.d.ts +9 -0
  106. package/dist/runtime/steps/compute.d.ts.map +1 -0
  107. package/dist/runtime/steps/compute.js +74 -0
  108. package/dist/runtime/steps/compute.js.map +1 -0
  109. package/dist/runtime/steps/conditional.d.ts +14 -0
  110. package/dist/runtime/steps/conditional.d.ts.map +1 -0
  111. package/dist/runtime/steps/conditional.js +58 -0
  112. package/dist/runtime/steps/conditional.js.map +1 -0
  113. package/dist/runtime/steps/emit.d.ts +9 -0
  114. package/dist/runtime/steps/emit.d.ts.map +1 -0
  115. package/dist/runtime/steps/emit.js +70 -0
  116. package/dist/runtime/steps/emit.js.map +1 -0
  117. package/dist/runtime/steps/halt.d.ts +9 -0
  118. package/dist/runtime/steps/halt.d.ts.map +1 -0
  119. package/dist/runtime/steps/halt.js +19 -0
  120. package/dist/runtime/steps/halt.js.map +1 -0
  121. package/dist/runtime/steps/loop.d.ts +14 -0
  122. package/dist/runtime/steps/loop.d.ts.map +1 -0
  123. package/dist/runtime/steps/loop.js +109 -0
  124. package/dist/runtime/steps/loop.js.map +1 -0
  125. package/dist/runtime/steps/parallel.d.ts +9 -0
  126. package/dist/runtime/steps/parallel.d.ts.map +1 -0
  127. package/dist/runtime/steps/parallel.js +87 -0
  128. package/dist/runtime/steps/parallel.js.map +1 -0
  129. package/dist/runtime/steps/pipeline.d.ts +9 -0
  130. package/dist/runtime/steps/pipeline.d.ts.map +1 -0
  131. package/dist/runtime/steps/pipeline.js +125 -0
  132. package/dist/runtime/steps/pipeline.js.map +1 -0
  133. package/dist/runtime/steps/try.d.ts +13 -0
  134. package/dist/runtime/steps/try.d.ts.map +1 -0
  135. package/dist/runtime/steps/try.js +222 -0
  136. package/dist/runtime/steps/try.js.map +1 -0
  137. package/dist/runtime/steps/wait.d.ts +9 -0
  138. package/dist/runtime/steps/wait.d.ts.map +1 -0
  139. package/dist/runtime/steps/wait.js +38 -0
  140. package/dist/runtime/steps/wait.js.map +1 -0
  141. package/dist/types/actions.d.ts +162 -0
  142. package/dist/types/actions.d.ts.map +1 -0
  143. package/dist/types/actions.js +5 -0
  144. package/dist/types/actions.js.map +1 -0
  145. package/dist/types/execution.d.ts +276 -0
  146. package/dist/types/execution.d.ts.map +1 -0
  147. package/dist/types/execution.js +5 -0
  148. package/dist/types/execution.js.map +1 -0
  149. package/dist/types/expressions.d.ts +100 -0
  150. package/dist/types/expressions.d.ts.map +1 -0
  151. package/dist/types/expressions.js +48 -0
  152. package/dist/types/expressions.js.map +1 -0
  153. package/dist/types/index.d.ts +14 -0
  154. package/dist/types/index.d.ts.map +1 -0
  155. package/dist/types/index.js +5 -0
  156. package/dist/types/index.js.map +1 -0
  157. package/dist/types/ir.d.ts +187 -0
  158. package/dist/types/ir.d.ts.map +1 -0
  159. package/dist/types/ir.js +5 -0
  160. package/dist/types/ir.js.map +1 -0
  161. package/dist/types/policy.d.ts +123 -0
  162. package/dist/types/policy.d.ts.map +1 -0
  163. package/dist/types/policy.js +5 -0
  164. package/dist/types/policy.js.map +1 -0
  165. package/dist/types/primitives.d.ts +76 -0
  166. package/dist/types/primitives.d.ts.map +1 -0
  167. package/dist/types/primitives.js +10 -0
  168. package/dist/types/primitives.js.map +1 -0
  169. package/dist/types/steps.d.ts +226 -0
  170. package/dist/types/steps.d.ts.map +1 -0
  171. package/dist/types/steps.js +5 -0
  172. package/dist/types/steps.js.map +1 -0
  173. package/dist/venues/index.d.ts +6 -0
  174. package/dist/venues/index.d.ts.map +1 -0
  175. package/dist/venues/index.js +26 -0
  176. package/dist/venues/index.js.map +1 -0
  177. package/dist/venues/types.d.ts +40 -0
  178. package/dist/venues/types.d.ts.map +1 -0
  179. package/dist/venues/types.js +5 -0
  180. package/dist/venues/types.js.map +1 -0
  181. package/dist/wallet/executor.d.ts +109 -0
  182. package/dist/wallet/executor.d.ts.map +1 -0
  183. package/dist/wallet/executor.js +354 -0
  184. package/dist/wallet/executor.js.map +1 -0
  185. package/dist/wallet/index.d.ts +14 -0
  186. package/dist/wallet/index.d.ts.map +1 -0
  187. package/dist/wallet/index.js +13 -0
  188. package/dist/wallet/index.js.map +1 -0
  189. package/dist/wallet/keystore.d.ts +44 -0
  190. package/dist/wallet/keystore.d.ts.map +1 -0
  191. package/dist/wallet/keystore.js +296 -0
  192. package/dist/wallet/keystore.js.map +1 -0
  193. package/dist/wallet/provider.d.ts +111 -0
  194. package/dist/wallet/provider.d.ts.map +1 -0
  195. package/dist/wallet/provider.js +309 -0
  196. package/dist/wallet/provider.js.map +1 -0
  197. package/dist/wallet/tx-builder.d.ts +85 -0
  198. package/dist/wallet/tx-builder.d.ts.map +1 -0
  199. package/dist/wallet/tx-builder.js +290 -0
  200. package/dist/wallet/tx-builder.js.map +1 -0
  201. package/dist/wallet/types.d.ts +116 -0
  202. package/dist/wallet/types.d.ts.map +1 -0
  203. package/dist/wallet/types.js +86 -0
  204. package/dist/wallet/types.js.map +1 -0
  205. package/package.json +39 -0
@@ -0,0 +1,309 @@
1
+ /**
2
+ * RPC Provider management
3
+ *
4
+ * Handles connection to blockchain nodes with:
5
+ * - Automatic fallback to backup URLs
6
+ * - Retry with exponential backoff
7
+ * - Gas price estimation
8
+ */
9
+ import { http, createPublicClient } from "viem";
10
+ import { arbitrum, base, mainnet, optimism, polygon, sepolia } from "viem/chains";
11
+ /** HyperEVM chain definition */
12
+ const hyperEVM = {
13
+ id: 999,
14
+ name: "HyperEVM",
15
+ nativeCurrency: { name: "Ether", symbol: "ETH", decimals: 18 },
16
+ rpcUrls: {
17
+ default: { http: ["https://rpc.hyperliquid.xyz/evm"] },
18
+ },
19
+ };
20
+ /** Map chain IDs to viem chain objects */
21
+ const VIEM_CHAINS = {
22
+ 1: mainnet,
23
+ 10: optimism,
24
+ 137: polygon,
25
+ 42161: arbitrum,
26
+ 8453: base,
27
+ 999: hyperEVM,
28
+ 11155111: sepolia,
29
+ };
30
+ /** Default provider configurations */
31
+ const DEFAULT_CONFIGS = {
32
+ 1: {
33
+ chainId: 1,
34
+ rpcUrl: "https://eth.llamarpc.com",
35
+ fallbackUrls: ["https://rpc.ankr.com/eth", "https://ethereum.publicnode.com"],
36
+ timeout: 30000,
37
+ retries: 3,
38
+ },
39
+ 10: {
40
+ chainId: 10,
41
+ rpcUrl: "https://mainnet.optimism.io",
42
+ fallbackUrls: ["https://rpc.ankr.com/optimism"],
43
+ timeout: 30000,
44
+ retries: 3,
45
+ },
46
+ 137: {
47
+ chainId: 137,
48
+ rpcUrl: "https://polygon-rpc.com",
49
+ fallbackUrls: ["https://rpc.ankr.com/polygon"],
50
+ timeout: 30000,
51
+ retries: 3,
52
+ },
53
+ 42161: {
54
+ chainId: 42161,
55
+ rpcUrl: "https://arb1.arbitrum.io/rpc",
56
+ fallbackUrls: ["https://rpc.ankr.com/arbitrum"],
57
+ timeout: 30000,
58
+ retries: 3,
59
+ },
60
+ 8453: {
61
+ chainId: 8453,
62
+ rpcUrl: "https://mainnet.base.org",
63
+ fallbackUrls: ["https://base.llamarpc.com"],
64
+ timeout: 30000,
65
+ retries: 3,
66
+ },
67
+ 999: {
68
+ chainId: 999,
69
+ rpcUrl: "https://rpc.hyperliquid.xyz/evm",
70
+ timeout: 30000,
71
+ retries: 3,
72
+ },
73
+ 11155111: {
74
+ chainId: 11155111,
75
+ rpcUrl: "https://rpc.sepolia.org",
76
+ fallbackUrls: ["https://ethereum-sepolia.publicnode.com"],
77
+ timeout: 30000,
78
+ retries: 3,
79
+ },
80
+ };
81
+ /**
82
+ * Provider wrapper with fallback and retry support
83
+ */
84
+ export class Provider {
85
+ client;
86
+ config;
87
+ currentUrlIndex = 0;
88
+ constructor(config) {
89
+ this.config = {
90
+ ...config,
91
+ timeout: config.timeout ?? 30000,
92
+ retries: config.retries ?? 3,
93
+ };
94
+ const chain = VIEM_CHAINS[config.chainId];
95
+ if (!chain) {
96
+ throw new Error(`Unsupported chain ID: ${config.chainId}`);
97
+ }
98
+ this.client = createPublicClient({
99
+ chain,
100
+ transport: http(config.rpcUrl, {
101
+ timeout: this.config.timeout,
102
+ retryCount: this.config.retries,
103
+ }),
104
+ });
105
+ }
106
+ /**
107
+ * Get the chain ID
108
+ */
109
+ get chainId() {
110
+ return this.config.chainId;
111
+ }
112
+ /**
113
+ * Get the current RPC URL
114
+ */
115
+ get rpcUrl() {
116
+ const urls = [this.config.rpcUrl, ...(this.config.fallbackUrls ?? [])];
117
+ return urls[this.currentUrlIndex] ?? this.config.rpcUrl;
118
+ }
119
+ /**
120
+ * Get underlying viem client
121
+ */
122
+ getClient() {
123
+ return this.client;
124
+ }
125
+ /**
126
+ * Get the current block number
127
+ */
128
+ async getBlockNumber() {
129
+ return await this.withRetry(() => this.client.getBlockNumber());
130
+ }
131
+ /**
132
+ * Get the balance of an address
133
+ */
134
+ async getBalance(address) {
135
+ return await this.withRetry(() => this.client.getBalance({ address: address }));
136
+ }
137
+ /**
138
+ * Get the nonce for an address
139
+ */
140
+ async getNonce(address) {
141
+ return await this.withRetry(() => this.client.getTransactionCount({ address: address }));
142
+ }
143
+ /**
144
+ * Estimate gas for a transaction
145
+ */
146
+ async estimateGas(tx) {
147
+ return await this.withRetry(() => this.client.estimateGas({
148
+ to: tx.to,
149
+ data: tx.data,
150
+ value: tx.value,
151
+ account: tx.from,
152
+ }));
153
+ }
154
+ /**
155
+ * Get current gas prices (EIP-1559)
156
+ */
157
+ async getGasPrices() {
158
+ const block = (await this.withRetry(() => this.client.getBlock({ blockTag: "latest" })));
159
+ const baseFee = block.baseFeePerGas ?? 0n;
160
+ // Default priority fee of 1.5 gwei, or use oracle if available
161
+ const priorityFee = 1500000000n; // 1.5 gwei
162
+ return {
163
+ maxFeePerGas: baseFee * 2n + priorityFee,
164
+ maxPriorityFeePerGas: priorityFee,
165
+ };
166
+ }
167
+ /**
168
+ * Get full gas estimate for a transaction
169
+ */
170
+ async getGasEstimate(tx) {
171
+ const [gasLimit, gasPrices] = await Promise.all([this.estimateGas(tx), this.getGasPrices()]);
172
+ // Add 20% buffer to gas limit
173
+ const bufferedGasLimit = (gasLimit * 120n) / 100n;
174
+ return {
175
+ gasLimit: bufferedGasLimit,
176
+ maxFeePerGas: gasPrices.maxFeePerGas,
177
+ maxPriorityFeePerGas: gasPrices.maxPriorityFeePerGas,
178
+ estimatedCost: bufferedGasLimit * gasPrices.maxFeePerGas,
179
+ };
180
+ }
181
+ /**
182
+ * Read contract data
183
+ */
184
+ async readContract(params) {
185
+ return await this.withRetry(() => this.client.readContract({
186
+ address: params.address,
187
+ abi: params.abi,
188
+ functionName: params.functionName,
189
+ args: params.args,
190
+ }));
191
+ }
192
+ /**
193
+ * Wait for a transaction receipt
194
+ */
195
+ async waitForTransaction(hash, confirmations = 1) {
196
+ return await this.withRetry(() => this.client.waitForTransactionReceipt({
197
+ hash: hash,
198
+ confirmations,
199
+ }));
200
+ }
201
+ /**
202
+ * Execute with retry and fallback
203
+ */
204
+ async withRetry(fn) {
205
+ const urls = [this.config.rpcUrl, ...(this.config.fallbackUrls ?? [])];
206
+ let lastError = null;
207
+ for (let urlIndex = 0; urlIndex < urls.length; urlIndex++) {
208
+ for (let attempt = 0; attempt < (this.config.retries ?? 3); attempt++) {
209
+ try {
210
+ return await fn();
211
+ }
212
+ catch (error) {
213
+ lastError = error;
214
+ // If this is a rate limit or connection error, try next URL
215
+ if (this.shouldSwitchProvider(error)) {
216
+ break;
217
+ }
218
+ // Exponential backoff
219
+ if (attempt < (this.config.retries ?? 3) - 1) {
220
+ await this.sleep(2 ** attempt * 1000);
221
+ }
222
+ }
223
+ }
224
+ // Try next URL
225
+ if (urlIndex < urls.length - 1) {
226
+ this.switchToUrl(urlIndex + 1);
227
+ }
228
+ }
229
+ throw lastError ?? new Error("All retry attempts failed");
230
+ }
231
+ /**
232
+ * Check if we should switch to a different provider
233
+ */
234
+ shouldSwitchProvider(error) {
235
+ if (error instanceof Error) {
236
+ const message = error.message.toLowerCase();
237
+ return (message.includes("rate limit") ||
238
+ message.includes("too many requests") ||
239
+ message.includes("connection refused") ||
240
+ message.includes("econnrefused") ||
241
+ message.includes("timeout"));
242
+ }
243
+ return false;
244
+ }
245
+ /**
246
+ * Switch to a different RPC URL
247
+ */
248
+ switchToUrl(index) {
249
+ const urls = [this.config.rpcUrl, ...(this.config.fallbackUrls ?? [])];
250
+ if (index >= urls.length)
251
+ return;
252
+ this.currentUrlIndex = index;
253
+ const chain = VIEM_CHAINS[this.config.chainId];
254
+ this.client = createPublicClient({
255
+ chain,
256
+ transport: http(urls[index], {
257
+ timeout: this.config.timeout,
258
+ retryCount: this.config.retries,
259
+ }),
260
+ });
261
+ }
262
+ /**
263
+ * Sleep for a duration
264
+ */
265
+ sleep(ms) {
266
+ return new Promise((resolve) => setTimeout(resolve, ms));
267
+ }
268
+ }
269
+ /**
270
+ * Create a provider for a specific chain
271
+ */
272
+ export function createProvider(chainId, rpcUrl) {
273
+ const defaultConfig = DEFAULT_CONFIGS[chainId];
274
+ if (!defaultConfig && !rpcUrl) {
275
+ throw new Error(`No default configuration for chain ${chainId}. Please provide an RPC URL.`);
276
+ }
277
+ const config = {
278
+ chainId,
279
+ rpcUrl: rpcUrl ?? defaultConfig?.rpcUrl ?? "",
280
+ fallbackUrls: defaultConfig?.fallbackUrls,
281
+ timeout: defaultConfig?.timeout ?? 30000,
282
+ retries: defaultConfig?.retries ?? 3,
283
+ };
284
+ return new Provider(config);
285
+ }
286
+ /**
287
+ * Format wei to human-readable string
288
+ */
289
+ export function formatWei(wei, decimals = 18) {
290
+ const divisor = 10n ** BigInt(decimals);
291
+ const integerPart = wei / divisor;
292
+ const fractionalPart = wei % divisor;
293
+ if (fractionalPart === 0n) {
294
+ return integerPart.toString();
295
+ }
296
+ const fractionalStr = fractionalPart.toString().padStart(decimals, "0");
297
+ const trimmed = fractionalStr.replace(/0+$/, "");
298
+ return `${integerPart}.${trimmed}`;
299
+ }
300
+ /**
301
+ * Format gas cost to USD (rough estimate)
302
+ */
303
+ export function formatGasCostUsd(gasUsed, gasPrice, ethPriceUsd = 2000) {
304
+ const costWei = gasUsed * gasPrice;
305
+ const costEth = Number(costWei) / 1e18;
306
+ const costUsd = costEth * ethPriceUsd;
307
+ return `$${costUsd.toFixed(2)}`;
308
+ }
309
+ //# sourceMappingURL=provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/wallet/provider.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,IAAI,EAA+B,kBAAkB,EAAE,MAAM,MAAM,CAAC;AAC7E,OAAO,EAAc,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAI9F,gCAAgC;AAChC,MAAM,QAAQ,GAAU;IACtB,EAAE,EAAE,GAAG;IACP,IAAI,EAAE,UAAU;IAChB,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;IAC9D,OAAO,EAAE;QACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,iCAAiC,CAAC,EAAE;KACvD;CACF,CAAC;AAEF,0CAA0C;AAC1C,MAAM,WAAW,GAA0B;IACzC,CAAC,EAAE,OAAO;IACV,EAAE,EAAE,QAAQ;IACZ,GAAG,EAAE,OAAO;IACZ,KAAK,EAAE,QAAQ;IACf,IAAI,EAAE,IAAI;IACV,GAAG,EAAE,QAAQ;IACb,QAAQ,EAAE,OAAO;CAClB,CAAC;AAEF,sCAAsC;AACtC,MAAM,eAAe,GAAmC;IACtD,CAAC,EAAE;QACD,OAAO,EAAE,CAAC;QACV,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,CAAC,0BAA0B,EAAE,iCAAiC,CAAC;QAC7E,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,EAAE,EAAE;QACF,OAAO,EAAE,EAAE;QACX,MAAM,EAAE,6BAA6B;QACrC,YAAY,EAAE,CAAC,+BAA+B,CAAC;QAC/C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,GAAG,EAAE;QACH,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE,CAAC,8BAA8B,CAAC;QAC9C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;QACd,MAAM,EAAE,8BAA8B;QACtC,YAAY,EAAE,CAAC,+BAA+B,CAAC;QAC/C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,IAAI,EAAE;QACJ,OAAO,EAAE,IAAI;QACb,MAAM,EAAE,0BAA0B;QAClC,YAAY,EAAE,CAAC,2BAA2B,CAAC;QAC3C,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,GAAG,EAAE;QACH,OAAO,EAAE,GAAG;QACZ,MAAM,EAAE,iCAAiC;QACzC,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;IACD,QAAQ,EAAE;QACR,OAAO,EAAE,QAAQ;QACjB,MAAM,EAAE,yBAAyB;QACjC,YAAY,EAAE,CAAC,yCAAyC,CAAC;QACzD,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,CAAC;KACX;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,MAAM,CAAe;IACrB,MAAM,CAAiB;IACvB,eAAe,GAAG,CAAC,CAAC;IAE5B,YAAY,MAAsB;QAChC,IAAI,CAAC,MAAM,GAAG;YACZ,GAAG,MAAM;YACT,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,KAAK;YAChC,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,CAAC;SAC7B,CAAC;QAEF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;YAC/B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC7B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAChC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,MAAM;QACR,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC1D,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc;QAClB,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAC,OAAgB;QAC/B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC,CAC9D,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAgB;QAC7B,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,OAAwB,EAAE,CAAC,CACvE,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,WAAW,CAAC,EAKjB;QACC,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC;YACtB,EAAE,EAAE,EAAE,CAAC,EAAmB;YAC1B,IAAI,EAAE,EAAE,CAAC,IAAiC;YAC1C,KAAK,EAAE,EAAE,CAAC,KAAK;YACf,OAAO,EAAE,EAAE,CAAC,IAAiC;SAC9C,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY;QAIhB,MAAM,KAAK,GAAG,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC,CAEtF,CAAC;QAEF,MAAM,OAAO,GAAG,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC;QAC1C,+DAA+D;QAC/D,MAAM,WAAW,GAAG,WAAW,CAAC,CAAC,WAAW;QAE5C,OAAO;YACL,YAAY,EAAE,OAAO,GAAG,EAAE,GAAG,WAAW;YACxC,oBAAoB,EAAE,WAAW;SAClC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,cAAc,CAAC,EAKpB;QACC,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;QAE7F,8BAA8B;QAC9B,MAAM,gBAAgB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAElD,OAAO;YACL,QAAQ,EAAE,gBAAgB;YAC1B,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,oBAAoB,EAAE,SAAS,CAAC,oBAAoB;YACpD,aAAa,EAAE,gBAAgB,GAAG,SAAS,CAAC,YAAY;SACzD,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,YAAY,CAAI,MAKrB;QACC,OAAO,MAAM,IAAI,CAAC,SAAS,CACzB,GAAG,EAAE,CACH,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC;YACvB,OAAO,EAAE,MAAM,CAAC,OAAwB;YACxC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,IAAI,EAAE,MAAM,CAAC,IAAI;SAClB,CAAe,CACnB,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,kBAAkB,CAAC,IAAY,EAAE,aAAa,GAAG,CAAC;QACtD,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAC/B,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC;YACpC,IAAI,EAAE,IAAqB;YAC3B,aAAa;SACd,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAI,EAAoB;QAC7C,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,SAAS,GAAiB,IAAI,CAAC;QAEnC,KAAK,IAAI,QAAQ,GAAG,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE,CAAC;YAC1D,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;gBACtE,IAAI,CAAC;oBACH,OAAO,MAAM,EAAE,EAAE,CAAC;gBACpB,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,SAAS,GAAG,KAAc,CAAC;oBAE3B,4DAA4D;oBAC5D,IAAI,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;wBACrC,MAAM;oBACR,CAAC;oBAED,sBAAsB;oBACtB,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;wBAC7C,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,IAAI,CAAC,CAAC;oBACxC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,eAAe;YACf,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC/B,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;QAED,MAAM,SAAS,IAAI,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC5D,CAAC;IAED;;OAEG;IACK,oBAAoB,CAAC,KAAc;QACzC,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO,CACL,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;gBAC9B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;gBACrC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;gBACtC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;gBAChC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAC5B,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,WAAW,CAAC,KAAa;QAC/B,MAAM,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC;QACvE,IAAI,KAAK,IAAI,IAAI,CAAC,MAAM;YAAE,OAAO;QAEjC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,MAAM,GAAG,kBAAkB,CAAC;YAC/B,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAC3B,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAChC,CAAC;SACH,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,EAAU;QACtB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe,EAAE,MAAe;IAC7D,MAAM,aAAa,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE/C,IAAI,CAAC,aAAa,IAAI,CAAC,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,sCAAsC,OAAO,8BAA8B,CAAC,CAAC;IAC/F,CAAC;IAED,MAAM,MAAM,GAAmB;QAC7B,OAAO;QACP,MAAM,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,IAAI,EAAE;QAC7C,YAAY,EAAE,aAAa,EAAE,YAAY;QACzC,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,KAAK;QACxC,OAAO,EAAE,aAAa,EAAE,OAAO,IAAI,CAAC;KACrC,CAAC;IAEF,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW,EAAE,QAAQ,GAAG,EAAE;IAClD,MAAM,OAAO,GAAG,GAAG,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,WAAW,GAAG,GAAG,GAAG,OAAO,CAAC;IAClC,MAAM,cAAc,GAAG,GAAG,GAAG,OAAO,CAAC;IAErC,IAAI,cAAc,KAAK,EAAE,EAAE,CAAC;QAC1B,OAAO,WAAW,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IAED,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAEjD,OAAO,GAAG,WAAW,IAAI,OAAO,EAAE,CAAC;AACrC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe,EAAE,QAAgB,EAAE,WAAW,GAAG,IAAI;IACpF,MAAM,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC;IACnC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC;IACvC,MAAM,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;IAEtC,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;AAClC,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Transaction builder
3
+ *
4
+ * Builds transactions from spell actions, supporting:
5
+ * - ERC20 operations (transfer, approve)
6
+ * - Swap operations
7
+ * - Lending operations (deposit, withdraw)
8
+ */
9
+ import type { Action } from "../types/actions.js";
10
+ import type { Address } from "../types/primitives.js";
11
+ import type { Provider } from "./provider.js";
12
+ import type { GasEstimate, TransactionRequest } from "./types.js";
13
+ /** Built transaction with metadata */
14
+ export interface BuiltTransaction {
15
+ /** The transaction request */
16
+ tx: TransactionRequest;
17
+ /** Human-readable description */
18
+ description: string;
19
+ /** Gas estimate */
20
+ gasEstimate?: GasEstimate;
21
+ /** Action this transaction executes */
22
+ action: Action;
23
+ }
24
+ /**
25
+ * Transaction builder class
26
+ */
27
+ export declare class TransactionBuilder {
28
+ private provider;
29
+ private fromAddress;
30
+ constructor(provider: Provider, fromAddress: Address);
31
+ /**
32
+ * Build a transaction from an action
33
+ */
34
+ buildAction(action: Action): Promise<BuiltTransaction>;
35
+ /**
36
+ * Build a transfer transaction (native ETH or ERC20)
37
+ */
38
+ buildTransfer(action: Action): Promise<BuiltTransaction>;
39
+ /**
40
+ * Build an ERC20 approve transaction
41
+ */
42
+ buildApprove(action: Action): Promise<BuiltTransaction>;
43
+ /**
44
+ * Build a swap transaction (placeholder - requires venue adapter)
45
+ */
46
+ buildSwap(action: Action): Promise<BuiltTransaction>;
47
+ /**
48
+ * Build a lending deposit transaction (placeholder - requires venue adapter)
49
+ */
50
+ buildLend(action: Action): Promise<BuiltTransaction>;
51
+ /**
52
+ * Build a withdrawal transaction (placeholder - requires venue adapter)
53
+ */
54
+ buildWithdraw(action: Action): Promise<BuiltTransaction>;
55
+ /**
56
+ * Build a raw transaction
57
+ */
58
+ buildRaw(to: Address, data: string, value?: bigint, description?: string): Promise<BuiltTransaction>;
59
+ /**
60
+ * Check ERC20 allowance
61
+ */
62
+ checkAllowance(tokenAddress: Address, spenderAddress: Address): Promise<bigint>;
63
+ /**
64
+ * Check ERC20 balance
65
+ */
66
+ checkBalance(tokenAddress: Address): Promise<bigint>;
67
+ /**
68
+ * Get token decimals
69
+ */
70
+ getTokenDecimals(tokenAddress: Address): Promise<number>;
71
+ /**
72
+ * Get token symbol
73
+ */
74
+ getTokenSymbol(tokenAddress: Address): Promise<string>;
75
+ /**
76
+ * Resolve asset symbol to address
77
+ * TODO: Implement proper asset registry
78
+ */
79
+ private resolveAssetAddress;
80
+ }
81
+ /**
82
+ * Create a transaction builder
83
+ */
84
+ export declare function createTransactionBuilder(provider: Provider, fromAddress: Address): TransactionBuilder;
85
+ //# sourceMappingURL=tx-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tx-builder.d.ts","sourceRoot":"","sources":["../../src/wallet/tx-builder.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,OAAO,KAAK,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAYlE,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,8BAA8B;IAC9B,EAAE,EAAE,kBAAkB,CAAC;IACvB,iCAAiC;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB;IACnB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,uCAAuC;IACvC,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,WAAW,CAAU;gBAEjB,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO;IAKpD;;OAEG;IACG,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAiB5D;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAgD9D;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuC7D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY1D;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY1D;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAY9D;;OAEG;IACG,QAAQ,CACZ,EAAE,EAAE,OAAO,EACX,IAAI,EAAE,MAAM,EACZ,KAAK,SAAK,EACV,WAAW,SAAoB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAgC5B;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IASrF;;OAEG;IACG,YAAY,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAS1D;;OAEG;IACG,gBAAgB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ9D;;OAEG;IACG,cAAc,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;IAQ5D;;;OAGG;IACH,OAAO,CAAC,mBAAmB;CA0B5B;AA2BD;;GAEG;AACH,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,OAAO,GACnB,kBAAkB,CAEpB"}