@clawlogic/sdk 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +227 -0
  2. package/dist/abis/agentIdentityRegistryAbi.d.ts +532 -0
  3. package/dist/abis/agentIdentityRegistryAbi.d.ts.map +1 -0
  4. package/dist/abis/agentIdentityRegistryAbi.js +2 -0
  5. package/dist/abis/agentIdentityRegistryAbi.js.map +1 -0
  6. package/dist/abis/agentRegistryAbi.d.ts +265 -0
  7. package/dist/abis/agentRegistryAbi.d.ts.map +1 -0
  8. package/dist/abis/agentRegistryAbi.js +151 -0
  9. package/dist/abis/agentRegistryAbi.js.map +1 -0
  10. package/dist/abis/agentReputationRegistryAbi.d.ts +224 -0
  11. package/dist/abis/agentReputationRegistryAbi.d.ts.map +1 -0
  12. package/dist/abis/agentReputationRegistryAbi.js +2 -0
  13. package/dist/abis/agentReputationRegistryAbi.js.map +1 -0
  14. package/dist/abis/agentValidationRegistryAbi.d.ts +281 -0
  15. package/dist/abis/agentValidationRegistryAbi.d.ts.map +1 -0
  16. package/dist/abis/agentValidationRegistryAbi.js +2 -0
  17. package/dist/abis/agentValidationRegistryAbi.js.map +1 -0
  18. package/dist/abis/outcomeTokenAbi.d.ts +255 -0
  19. package/dist/abis/outcomeTokenAbi.d.ts.map +1 -0
  20. package/dist/abis/outcomeTokenAbi.js +152 -0
  21. package/dist/abis/outcomeTokenAbi.js.map +1 -0
  22. package/dist/abis/predictionMarketHookAbi.d.ts +396 -0
  23. package/dist/abis/predictionMarketHookAbi.d.ts.map +1 -0
  24. package/dist/abis/predictionMarketHookAbi.js +212 -0
  25. package/dist/abis/predictionMarketHookAbi.js.map +1 -0
  26. package/dist/client.d.ts +241 -0
  27. package/dist/client.d.ts.map +1 -0
  28. package/dist/client.js +569 -0
  29. package/dist/client.js.map +1 -0
  30. package/dist/config.d.ts +84 -0
  31. package/dist/config.d.ts.map +1 -0
  32. package/dist/config.js +134 -0
  33. package/dist/config.js.map +1 -0
  34. package/dist/identity.d.ts +133 -0
  35. package/dist/identity.d.ts.map +1 -0
  36. package/dist/identity.js +314 -0
  37. package/dist/identity.js.map +1 -0
  38. package/dist/index.d.ts +13 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +19 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/types.d.ts +191 -0
  43. package/dist/types.d.ts.map +1 -0
  44. package/dist/types.js +11 -0
  45. package/dist/types.js.map +1 -0
  46. package/package.json +51 -0
  47. package/src/abis/.gitkeep +0 -0
  48. package/src/abis/AgentRegistry.json +1 -0
  49. package/src/abis/ENSAgentHelper.json +1 -0
  50. package/src/abis/OutcomeToken.json +1 -0
  51. package/src/abis/PredictionMarketHook.json +1 -0
  52. package/src/abis/agentIdentityRegistryAbi.ts +1 -0
  53. package/src/abis/agentRegistryAbi.ts +150 -0
  54. package/src/abis/agentReputationRegistryAbi.ts +1 -0
  55. package/src/abis/agentValidationRegistryAbi.ts +1 -0
  56. package/src/abis/outcomeTokenAbi.ts +153 -0
  57. package/src/abis/predictionMarketHookAbi.ts +214 -0
  58. package/src/client.ts +722 -0
  59. package/src/config.ts +161 -0
  60. package/src/identity.ts +395 -0
  61. package/src/index.ts +48 -0
  62. package/src/types.ts +207 -0
package/dist/client.js ADDED
@@ -0,0 +1,569 @@
1
+ import { createPublicClient, createWalletClient, http, getContract, } from 'viem';
2
+ import { privateKeyToAccount } from 'viem/accounts';
3
+ import { agentRegistryAbi } from './abis/agentRegistryAbi.js';
4
+ import { predictionMarketHookAbi } from './abis/predictionMarketHookAbi.js';
5
+ import { outcomeTokenAbi } from './abis/outcomeTokenAbi.js';
6
+ // ─────────────────────────────────────────────────────────────────────────────
7
+ // Chain definition for Arbitrum Sepolia (in case viem does not export it)
8
+ // ─────────────────────────────────────────────────────────────────────────────
9
+ const arbitrumSepolia = {
10
+ id: 421614,
11
+ name: 'Arbitrum Sepolia',
12
+ nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
13
+ rpcUrls: {
14
+ default: { http: ['https://sepolia-rollup.arbitrum.io/rpc'] },
15
+ },
16
+ blockExplorers: {
17
+ default: { name: 'Arbiscan', url: 'https://sepolia.arbiscan.io' },
18
+ },
19
+ testnet: true,
20
+ };
21
+ // ─────────────────────────────────────────────────────────────────────────────
22
+ // Helper: build a viem Chain object from a config
23
+ // ─────────────────────────────────────────────────────────────────────────────
24
+ function buildChain(config) {
25
+ if (config.chainId === 421614) {
26
+ return {
27
+ ...arbitrumSepolia,
28
+ rpcUrls: {
29
+ default: { http: [config.rpcUrl] },
30
+ },
31
+ };
32
+ }
33
+ return {
34
+ id: config.chainId,
35
+ name: `Chain ${config.chainId}`,
36
+ nativeCurrency: { name: 'Ether', symbol: 'ETH', decimals: 18 },
37
+ rpcUrls: {
38
+ default: { http: [config.rpcUrl] },
39
+ },
40
+ };
41
+ }
42
+ // ─────────────────────────────────────────────────────────────────────────────
43
+ // ClawlogicClient
44
+ // ─────────────────────────────────────────────────────────────────────────────
45
+ /**
46
+ * Main client for interacting with the $CLAWLOGIC protocol.
47
+ *
48
+ * Provides methods for:
49
+ * - Agent registration & lookup (AgentRegistry)
50
+ * - Market creation, minting, assertion & settlement (PredictionMarketHook)
51
+ * - Outcome token balance queries (OutcomeToken ERC-20)
52
+ * - Event watching for real-time market activity
53
+ *
54
+ * Requires a private key for write operations. Read-only operations work
55
+ * without a private key (pass `undefined` and only use read methods).
56
+ */
57
+ export class ClawlogicClient {
58
+ /** Protocol configuration (chain, RPC, contract addresses). */
59
+ config;
60
+ /** viem public client for read operations. */
61
+ publicClient;
62
+ /** viem wallet client for write operations (undefined if read-only). */
63
+ walletClient;
64
+ /** The account derived from the private key (undefined if read-only). */
65
+ account;
66
+ /** Typed contract handle for AgentRegistry (read-only). */
67
+ registryRead;
68
+ /** Typed contract handle for PredictionMarketHook (read-only). */
69
+ hookRead;
70
+ /**
71
+ * Create a new ClawlogicClient.
72
+ *
73
+ * @param config - Protocol configuration with chain info and contract addresses.
74
+ * @param privateKey - Hex-encoded private key for signing transactions.
75
+ * Pass `undefined` for a read-only client.
76
+ */
77
+ constructor(config, privateKey) {
78
+ this.config = config;
79
+ const chain = buildChain(config);
80
+ this.publicClient = createPublicClient({
81
+ chain,
82
+ transport: http(config.rpcUrl),
83
+ });
84
+ if (privateKey) {
85
+ this.account = privateKeyToAccount(privateKey);
86
+ this.walletClient = createWalletClient({
87
+ account: this.account,
88
+ chain,
89
+ transport: http(config.rpcUrl),
90
+ });
91
+ }
92
+ this.registryRead = getContract({
93
+ address: config.contracts.agentRegistry,
94
+ abi: agentRegistryAbi,
95
+ client: this.publicClient,
96
+ });
97
+ this.hookRead = getContract({
98
+ address: config.contracts.predictionMarketHook,
99
+ abi: predictionMarketHookAbi,
100
+ client: this.publicClient,
101
+ });
102
+ }
103
+ // ─────────────────────────────────────────────────────────────────────────
104
+ // Private helpers
105
+ // ─────────────────────────────────────────────────────────────────────────
106
+ /**
107
+ * Ensure a wallet client is available for write operations.
108
+ * Throws a descriptive error if the client was created in read-only mode.
109
+ */
110
+ requireWallet() {
111
+ if (!this.walletClient || !this.account) {
112
+ throw new Error('ClawlogicClient: No private key provided. ' +
113
+ 'Write operations require a private key in the constructor.');
114
+ }
115
+ return this.walletClient;
116
+ }
117
+ /**
118
+ * Wait for a transaction receipt and return the transaction hash.
119
+ */
120
+ async waitForTx(hash) {
121
+ await this.publicClient.waitForTransactionReceipt({ hash });
122
+ return hash;
123
+ }
124
+ // ═══════════════════════════════════════════════════════════════════════════
125
+ // Agent Registry Methods
126
+ // ═══════════════════════════════════════════════════════════════════════════
127
+ /**
128
+ * Register the caller as an agent in the AgentRegistry.
129
+ *
130
+ * @param name - Human-readable agent name (e.g., "AlphaTrader"). Must be non-empty.
131
+ * @param attestation - TEE attestation bytes (hex-encoded). Defaults to "0x" (empty).
132
+ * @returns Transaction hash of the registration.
133
+ */
134
+ async registerAgent(name, attestation = '0x') {
135
+ const wallet = this.requireWallet();
136
+ const hash = await wallet.writeContract({
137
+ address: this.config.contracts.agentRegistry,
138
+ abi: agentRegistryAbi,
139
+ functionName: 'registerAgent',
140
+ args: [name, attestation],
141
+ });
142
+ return this.waitForTx(hash);
143
+ }
144
+ /**
145
+ * Check whether an address is a registered agent.
146
+ *
147
+ * @param address - The address to check.
148
+ * @returns True if the address is registered as an agent.
149
+ */
150
+ async isAgent(address) {
151
+ const result = await this.publicClient.readContract({
152
+ address: this.config.contracts.agentRegistry,
153
+ abi: agentRegistryAbi,
154
+ functionName: 'isAgent',
155
+ args: [address],
156
+ });
157
+ return result;
158
+ }
159
+ /**
160
+ * Get the full agent info for a registered address.
161
+ *
162
+ * @param address - The agent address to look up.
163
+ * @returns AgentInfo with name, attestation, registeredAt, and exists flag.
164
+ */
165
+ async getAgent(address) {
166
+ const result = await this.publicClient.readContract({
167
+ address: this.config.contracts.agentRegistry,
168
+ abi: agentRegistryAbi,
169
+ functionName: 'getAgent',
170
+ args: [address],
171
+ });
172
+ // The result is a tuple struct: { name, attestation, registeredAt, exists }
173
+ const agent = result;
174
+ return {
175
+ address,
176
+ name: agent.name,
177
+ attestation: agent.attestation,
178
+ registeredAt: agent.registeredAt,
179
+ exists: agent.exists,
180
+ };
181
+ }
182
+ /**
183
+ * Get the total number of registered agents.
184
+ *
185
+ * @returns The agent count as a bigint.
186
+ */
187
+ async getAgentCount() {
188
+ const result = await this.publicClient.readContract({
189
+ address: this.config.contracts.agentRegistry,
190
+ abi: agentRegistryAbi,
191
+ functionName: 'getAgentCount',
192
+ });
193
+ return result;
194
+ }
195
+ /**
196
+ * Get all registered agent addresses.
197
+ *
198
+ * @returns Array of agent addresses.
199
+ */
200
+ async getAgentAddresses() {
201
+ const result = await this.publicClient.readContract({
202
+ address: this.config.contracts.agentRegistry,
203
+ abi: agentRegistryAbi,
204
+ functionName: 'getAgentAddresses',
205
+ });
206
+ return result;
207
+ }
208
+ // ═══════════════════════════════════════════════════════════════════════════
209
+ // Prediction Market Methods (Write)
210
+ // ═══════════════════════════════════════════════════════════════════════════
211
+ /**
212
+ * Create a new prediction market.
213
+ *
214
+ * The caller must be a registered agent. If `reward > 0`, the caller must
215
+ * have previously approved that amount of the bond currency (i_currency)
216
+ * to the PredictionMarketHook contract.
217
+ *
218
+ * @param outcome1 - Label for outcome 1 (e.g., "yes").
219
+ * @param outcome2 - Label for outcome 2 (e.g., "no").
220
+ * @param description - Human-readable market question.
221
+ * @param reward - Amount of bond currency offered as incentive to the asserter.
222
+ * @param requiredBond - Minimum bond required from an asserter.
223
+ * @returns Transaction hash of the market creation.
224
+ */
225
+ async initializeMarket(outcome1, outcome2, description, reward, requiredBond) {
226
+ const wallet = this.requireWallet();
227
+ const hash = await wallet.writeContract({
228
+ address: this.config.contracts.predictionMarketHook,
229
+ abi: predictionMarketHookAbi,
230
+ functionName: 'initializeMarket',
231
+ args: [outcome1, outcome2, description, reward, requiredBond],
232
+ });
233
+ return this.waitForTx(hash);
234
+ }
235
+ /**
236
+ * Deposit ETH collateral to mint equal amounts of both outcome tokens.
237
+ *
238
+ * The caller must be a registered agent. Sends `ethAmount` in wei as
239
+ * msg.value and receives that amount of outcome1Token AND outcome2Token.
240
+ *
241
+ * @param marketId - The market to mint tokens for (bytes32).
242
+ * @param ethAmount - Amount of ETH to deposit as collateral (in wei).
243
+ * @returns Transaction hash of the mint operation.
244
+ */
245
+ async mintOutcomeTokens(marketId, ethAmount) {
246
+ const wallet = this.requireWallet();
247
+ const hash = await wallet.writeContract({
248
+ address: this.config.contracts.predictionMarketHook,
249
+ abi: predictionMarketHookAbi,
250
+ functionName: 'mintOutcomeTokens',
251
+ args: [marketId],
252
+ value: ethAmount,
253
+ });
254
+ return this.waitForTx(hash);
255
+ }
256
+ /**
257
+ * Assert the outcome of a market via UMA Optimistic Oracle V3.
258
+ *
259
+ * The caller must be a registered agent. The asserted outcome must exactly
260
+ * match `outcome1`, `outcome2`, or the literal string "Unresolvable".
261
+ * The caller must have approved the required bond amount of `i_currency`
262
+ * to the PredictionMarketHook contract.
263
+ *
264
+ * @param marketId - The market to assert (bytes32).
265
+ * @param assertedOutcome - The outcome string being asserted.
266
+ * @returns Transaction hash of the assertion.
267
+ */
268
+ async assertMarket(marketId, assertedOutcome) {
269
+ const wallet = this.requireWallet();
270
+ const hash = await wallet.writeContract({
271
+ address: this.config.contracts.predictionMarketHook,
272
+ abi: predictionMarketHookAbi,
273
+ functionName: 'assertMarket',
274
+ args: [marketId, assertedOutcome],
275
+ });
276
+ return this.waitForTx(hash);
277
+ }
278
+ /**
279
+ * Redeem winning outcome tokens for proportional ETH collateral.
280
+ *
281
+ * The market must be resolved. The caller's winning tokens are burned and
282
+ * they receive a proportional share of the total collateral.
283
+ *
284
+ * @param marketId - The resolved market (bytes32).
285
+ * @returns Transaction hash of the settlement.
286
+ */
287
+ async settleOutcomeTokens(marketId) {
288
+ const wallet = this.requireWallet();
289
+ const hash = await wallet.writeContract({
290
+ address: this.config.contracts.predictionMarketHook,
291
+ abi: predictionMarketHookAbi,
292
+ functionName: 'settleOutcomeTokens',
293
+ args: [marketId],
294
+ });
295
+ return this.waitForTx(hash);
296
+ }
297
+ // ═══════════════════════════════════════════════════════════════════════════
298
+ // Prediction Market Methods (Read)
299
+ // ═══════════════════════════════════════════════════════════════════════════
300
+ /**
301
+ * Get full market details for a given marketId.
302
+ *
303
+ * Parses the 11-value tuple returned by PredictionMarketHook.getMarket()
304
+ * into a structured MarketInfo object.
305
+ *
306
+ * @param marketId - The market identifier (bytes32).
307
+ * @returns MarketInfo with all market details.
308
+ */
309
+ async getMarket(marketId) {
310
+ const result = await this.publicClient.readContract({
311
+ address: this.config.contracts.predictionMarketHook,
312
+ abi: predictionMarketHookAbi,
313
+ functionName: 'getMarket',
314
+ args: [marketId],
315
+ });
316
+ // The result is a tuple of 11 values matching the getMarket return signature.
317
+ const [description, outcome1, outcome2, outcome1Token, outcome2Token, reward, requiredBond, resolved, assertedOutcomeId, poolId, totalCollateral,] = result;
318
+ return {
319
+ marketId,
320
+ description,
321
+ outcome1,
322
+ outcome2,
323
+ outcome1Token,
324
+ outcome2Token,
325
+ reward,
326
+ requiredBond,
327
+ resolved,
328
+ assertedOutcomeId,
329
+ poolId,
330
+ totalCollateral,
331
+ };
332
+ }
333
+ /**
334
+ * Get all market IDs.
335
+ *
336
+ * @returns Array of all created market IDs (bytes32[]).
337
+ */
338
+ async getMarketIds() {
339
+ const result = await this.publicClient.readContract({
340
+ address: this.config.contracts.predictionMarketHook,
341
+ abi: predictionMarketHookAbi,
342
+ functionName: 'getMarketIds',
343
+ });
344
+ return result;
345
+ }
346
+ /**
347
+ * Get all markets with full details.
348
+ *
349
+ * Calls getMarketIds() then getMarket() for each.
350
+ * For large numbers of markets, consider using getMarketIds() + getMarket()
351
+ * individually with pagination.
352
+ *
353
+ * @returns Array of MarketInfo for all markets.
354
+ */
355
+ async getAllMarkets() {
356
+ const ids = await this.getMarketIds();
357
+ const markets = await Promise.all(ids.map((id) => this.getMarket(id)));
358
+ return markets;
359
+ }
360
+ /**
361
+ * Get the total number of created markets.
362
+ *
363
+ * @returns The market count as a bigint.
364
+ */
365
+ async getMarketCount() {
366
+ const result = await this.publicClient.readContract({
367
+ address: this.config.contracts.predictionMarketHook,
368
+ abi: predictionMarketHookAbi,
369
+ functionName: 's_marketCount',
370
+ });
371
+ return result;
372
+ }
373
+ // ═══════════════════════════════════════════════════════════════════════════
374
+ // Outcome Token Methods (Read)
375
+ // ═══════════════════════════════════════════════════════════════════════════
376
+ /**
377
+ * Get the balance of an outcome token for a given owner.
378
+ *
379
+ * @param tokenAddress - The OutcomeToken contract address.
380
+ * @param ownerAddress - The address to check the balance of.
381
+ * @returns The token balance as a bigint.
382
+ */
383
+ async getOutcomeTokenBalance(tokenAddress, ownerAddress) {
384
+ const result = await this.publicClient.readContract({
385
+ address: tokenAddress,
386
+ abi: outcomeTokenAbi,
387
+ functionName: 'balanceOf',
388
+ args: [ownerAddress],
389
+ });
390
+ return result;
391
+ }
392
+ /**
393
+ * Get the total supply of an outcome token.
394
+ *
395
+ * @param tokenAddress - The OutcomeToken contract address.
396
+ * @returns The total supply as a bigint.
397
+ */
398
+ async getOutcomeTokenTotalSupply(tokenAddress) {
399
+ const result = await this.publicClient.readContract({
400
+ address: tokenAddress,
401
+ abi: outcomeTokenAbi,
402
+ functionName: 'totalSupply',
403
+ });
404
+ return result;
405
+ }
406
+ /**
407
+ * Get both outcome token balances for a given agent in a specific market.
408
+ *
409
+ * @param marketId - The market identifier.
410
+ * @param ownerAddress - The address to check balances for.
411
+ * @returns Object with outcome1Balance and outcome2Balance.
412
+ */
413
+ async getPositions(marketId, ownerAddress) {
414
+ const market = await this.getMarket(marketId);
415
+ const [outcome1Balance, outcome2Balance] = await Promise.all([
416
+ this.getOutcomeTokenBalance(market.outcome1Token, ownerAddress),
417
+ this.getOutcomeTokenBalance(market.outcome2Token, ownerAddress),
418
+ ]);
419
+ return { outcome1Balance, outcome2Balance };
420
+ }
421
+ // ═══════════════════════════════════════════════════════════════════════════
422
+ // Protocol Info Methods
423
+ // ═══════════════════════════════════════════════════════════════════════════
424
+ /**
425
+ * Get the bond currency address used by the PredictionMarketHook.
426
+ *
427
+ * @returns The ERC-20 bond currency contract address.
428
+ */
429
+ async getBondCurrency() {
430
+ const result = await this.publicClient.readContract({
431
+ address: this.config.contracts.predictionMarketHook,
432
+ abi: predictionMarketHookAbi,
433
+ functionName: 'i_currency',
434
+ });
435
+ return result;
436
+ }
437
+ /**
438
+ * Get the default liveness window for UMA assertions (in seconds).
439
+ *
440
+ * @returns The liveness window as a bigint (seconds).
441
+ */
442
+ async getDefaultLiveness() {
443
+ const result = await this.publicClient.readContract({
444
+ address: this.config.contracts.predictionMarketHook,
445
+ abi: predictionMarketHookAbi,
446
+ functionName: 'i_defaultLiveness',
447
+ });
448
+ return result;
449
+ }
450
+ /**
451
+ * Get the UMA Optimistic Oracle V3 address used by the hook.
452
+ *
453
+ * @returns The OOV3 contract address.
454
+ */
455
+ async getOracleAddress() {
456
+ const result = await this.publicClient.readContract({
457
+ address: this.config.contracts.predictionMarketHook,
458
+ abi: predictionMarketHookAbi,
459
+ functionName: 'i_oo',
460
+ });
461
+ return result;
462
+ }
463
+ // ═══════════════════════════════════════════════════════════════════════════
464
+ // Event Watching
465
+ // ═══════════════════════════════════════════════════════════════════════════
466
+ /**
467
+ * Watch for all prediction market events in real time.
468
+ *
469
+ * Subscribes to: MarketInitialized, TokensMinted, MarketAsserted,
470
+ * MarketResolved, AssertionFailed, AssertionDisputed, TokensSettled.
471
+ *
472
+ * @param callback - Function called for each new event.
473
+ * @returns An unwatch function. Call it to stop watching.
474
+ */
475
+ watchMarketEvents(callback) {
476
+ const hookAddress = this.config.contracts.predictionMarketHook;
477
+ const unwatchers = [];
478
+ // Helper to create a watcher for a specific event
479
+ const watchEvent = (eventName) => {
480
+ const unwatch = this.publicClient.watchContractEvent({
481
+ address: hookAddress,
482
+ abi: predictionMarketHookAbi,
483
+ eventName,
484
+ onLogs: (logs) => {
485
+ for (const log of logs) {
486
+ const typedLog = log;
487
+ const marketId = typedLog.args?.['marketId'] ??
488
+ '0x0000000000000000000000000000000000000000000000000000000000000000';
489
+ callback({
490
+ type: eventName,
491
+ marketId,
492
+ blockNumber: log.blockNumber ?? 0n,
493
+ transactionHash: log.transactionHash ?? '0x',
494
+ args: (typedLog.args ?? {}),
495
+ });
496
+ }
497
+ },
498
+ });
499
+ unwatchers.push(unwatch);
500
+ };
501
+ watchEvent('MarketInitialized');
502
+ watchEvent('TokensMinted');
503
+ watchEvent('MarketAsserted');
504
+ watchEvent('MarketResolved');
505
+ watchEvent('AssertionFailed');
506
+ watchEvent('AssertionDisputed');
507
+ watchEvent('TokensSettled');
508
+ // Return a single unwatch function that stops all watchers
509
+ return () => {
510
+ for (const unwatch of unwatchers) {
511
+ unwatch();
512
+ }
513
+ };
514
+ }
515
+ /**
516
+ * Watch for AgentRegistered events from the AgentRegistry.
517
+ *
518
+ * @param callback - Function called with (agent address, name) for each registration.
519
+ * @returns An unwatch function. Call it to stop watching.
520
+ */
521
+ watchAgentRegistrations(callback) {
522
+ return this.publicClient.watchContractEvent({
523
+ address: this.config.contracts.agentRegistry,
524
+ abi: agentRegistryAbi,
525
+ eventName: 'AgentRegistered',
526
+ onLogs: (logs) => {
527
+ for (const log of logs) {
528
+ const typedLog = log;
529
+ const agent = typedLog.args?.['agent'] ?? '0x';
530
+ const name = typedLog.args?.['name'] ?? '';
531
+ callback(agent, name);
532
+ }
533
+ },
534
+ });
535
+ }
536
+ // ═══════════════════════════════════════════════════════════════════════════
537
+ // Utility Methods
538
+ // ═══════════════════════════════════════════════════════════════════════════
539
+ /**
540
+ * Get the address of the account associated with this client.
541
+ *
542
+ * @returns The account address, or undefined if read-only.
543
+ */
544
+ getAddress() {
545
+ return this.account?.address;
546
+ }
547
+ /**
548
+ * Get the ETH balance of the connected account.
549
+ *
550
+ * @returns The balance in wei.
551
+ */
552
+ async getBalance() {
553
+ const address = this.getAddress();
554
+ if (!address) {
555
+ throw new Error('ClawlogicClient: No account available (read-only client).');
556
+ }
557
+ return this.publicClient.getBalance({ address });
558
+ }
559
+ /**
560
+ * Get the ETH balance of any address.
561
+ *
562
+ * @param address - The address to check.
563
+ * @returns The balance in wei.
564
+ */
565
+ async getBalanceOf(address) {
566
+ return this.publicClient.getBalance({ address });
567
+ }
568
+ }
569
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,IAAI,EACJ,WAAW,GASZ,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAQpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAE5D,gFAAgF;AAChF,0EAA0E;AAC1E,gFAAgF;AAEhF,MAAM,eAAe,GAAU;IAC7B,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,kBAAkB;IACxB,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,wCAAwC,CAAC,EAAE;KAC9D;IACD,cAAc,EAAE;QACd,OAAO,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,GAAG,EAAE,6BAA6B,EAAE;KAClE;IACD,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,gFAAgF;AAChF,kDAAkD;AAClD,gFAAgF;AAEhF,SAAS,UAAU,CAAC,MAAuB;IACzC,IAAI,MAAM,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;QAC9B,OAAO;YACL,GAAG,eAAe;YAClB,OAAO,EAAE;gBACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;aACnC;SACF,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,OAAO;QAClB,IAAI,EAAE,SAAS,MAAM,CAAC,OAAO,EAAE;QAC/B,cAAc,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;QAC9D,OAAO,EAAE;YACP,OAAO,EAAE,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE;SACnC;KACF,CAAC;AACJ,CAAC;AAED,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,eAAe;IAC1B,+DAA+D;IACtD,MAAM,CAAkB;IAEjC,8CAA8C;IACrC,YAAY,CAAiC;IAEtD,wEAAwE;IAC/D,YAAY,CAAsD;IAE3E,yEAAyE;IAChE,OAAO,CAAsB;IAEtC,2DAA2D;IAC1C,YAAY,CAG3B;IAEF,kEAAkE;IACjD,QAAQ,CAGvB;IAEF;;;;;;OAMG;IACH,YAAY,MAAuB,EAAE,UAA0B;QAC7D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAEjC,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;YACrC,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SAC/B,CAAC,CAAC;QAEH,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,kBAAkB,CAAC;gBACrC,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,KAAK;gBACL,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;aAC/B,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;YAC9B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,aAAa;YACvC,GAAG,EAAE,gBAAgB;YACrB,MAAM,EAAE,IAAI,CAAC,YAAY;SAC1B,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC;YAC1B,OAAO,EAAE,MAAM,CAAC,SAAS,CAAC,oBAAoB;YAC9C,GAAG,EAAE,uBAAuB;YAC5B,MAAM,EAAE,IAAI,CAAC,YAAY;SAC1B,CAAC,CAAC;IACL,CAAC;IAED,4EAA4E;IAC5E,kBAAkB;IAClB,4EAA4E;IAE5E;;;OAGG;IACK,aAAa;QACnB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CACb,4CAA4C;gBAC1C,4DAA4D,CAC/D,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,SAAS,CAAC,IAAmB;QACzC,MAAM,IAAI,CAAC,YAAY,CAAC,yBAAyB,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,8EAA8E;IAC9E,yBAAyB;IACzB,8EAA8E;IAE9E;;;;;;OAMG;IACH,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,cAA6B,IAAI;QAEjC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,eAAe;YAC7B,IAAI,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC;SAC1B,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,OAAO,CAAC,OAAsB;QAClC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,SAAS;YACvB,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;QACH,OAAO,MAAiB,CAAC;IAC3B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAsB;QACnC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,UAAU;YACxB,IAAI,EAAE,CAAC,OAAO,CAAC;SAChB,CAAC,CAAC;QAEH,4EAA4E;QAC5E,MAAM,KAAK,GAAG,MAKb,CAAC;QAEF,OAAO;YACL,OAAO;YACP,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,MAAM,EAAE,KAAK,CAAC,MAAM;SACrB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;QACH,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB;QACrB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,YAAY,EAAE,mBAAmB;SAClC,CAAC,CAAC;QACH,OAAO,MAAyB,CAAC;IACnC,CAAC;IAED,8EAA8E;IAC9E,oCAAoC;IACpC,8EAA8E;IAE9E;;;;;;;;;;;;;OAaG;IACH,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,QAAgB,EAChB,WAAmB,EACnB,MAAc,EACd,YAAoB;QAEpB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,kBAAkB;YAChC,IAAI,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,YAAY,CAAC;SAC9D,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,iBAAiB,CACrB,QAAuB,EACvB,SAAiB;QAEjB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,mBAAmB;YACjC,IAAI,EAAE,CAAC,QAAQ,CAAC;YAChB,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,YAAY,CAChB,QAAuB,EACvB,eAAuB;QAEvB,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,cAAc;YAC5B,IAAI,EAAE,CAAC,QAAQ,EAAE,eAAe,CAAC;SAClC,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,mBAAmB,CAAC,QAAuB;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEpC,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC;YACtC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,qBAAqB;YACnC,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,8EAA8E;IAC9E,mCAAmC;IACnC,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,KAAK,CAAC,SAAS,CAAC,QAAuB;QACrC,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,QAAQ,CAAC;SACjB,CAAC,CAAC;QAEH,8EAA8E;QAC9E,MAAM,CACJ,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,aAAa,EACb,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,iBAAiB,EACjB,MAAM,EACN,eAAe,EAChB,GAAG,MAYH,CAAC;QAEF,OAAO;YACL,QAAQ;YACR,WAAW;YACX,QAAQ;YACR,QAAQ;YACR,aAAa;YACb,aAAa;YACb,MAAM;YACN,YAAY;YACZ,QAAQ;YACR,iBAAiB;YACjB,MAAM;YACN,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,YAAY;QAChB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,cAAc;SAC7B,CAAC,CAAC;QACH,OAAO,MAAyB,CAAC;IACnC,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,aAAa;QACjB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,cAAc;QAClB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,eAAe;SAC9B,CAAC,CAAC;QACH,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED,8EAA8E;IAC9E,+BAA+B;IAC/B,8EAA8E;IAE9E;;;;;;OAMG;IACH,KAAK,CAAC,sBAAsB,CAC1B,YAA2B,EAC3B,YAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,eAAe;YACpB,YAAY,EAAE,WAAW;YACzB,IAAI,EAAE,CAAC,YAAY,CAAC;SACrB,CAAC,CAAC;QACH,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,0BAA0B,CAAC,YAA2B;QAC1D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,YAAY;YACrB,GAAG,EAAE,eAAe;YACpB,YAAY,EAAE,aAAa;SAC5B,CAAC,CAAC;QACH,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,YAAY,CAChB,QAAuB,EACvB,YAA2B;QAE3B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QAE9C,MAAM,CAAC,eAAe,EAAE,eAAe,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;YAC3D,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;YAC/D,IAAI,CAAC,sBAAsB,CAAC,MAAM,CAAC,aAAa,EAAE,YAAY,CAAC;SAChE,CAAC,CAAC;QAEH,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,CAAC;IAC9C,CAAC;IAED,8EAA8E;IAC9E,wBAAwB;IACxB,8EAA8E;IAE9E;;;;OAIG;IACH,KAAK,CAAC,eAAe;QACnB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,YAAY;SAC3B,CAAC,CAAC;QACH,OAAO,MAAuB,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB;QACtB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,mBAAmB;SAClC,CAAC,CAAC;QACH,OAAO,MAAgB,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,gBAAgB;QACpB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC;YAClD,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB;YACnD,GAAG,EAAE,uBAAuB;YAC5B,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QACH,OAAO,MAAuB,CAAC;IACjC,CAAC;IAED,8EAA8E;IAC9E,iBAAiB;IACjB,8EAA8E;IAE9E;;;;;;;;OAQG;IACH,iBAAiB,CAAC,QAA6B;QAC7C,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,oBAAoB,CAAC;QAC/D,MAAM,UAAU,GAAmC,EAAE,CAAC;QAEtD,kDAAkD;QAClD,MAAM,UAAU,GAAG,CACjB,SAA8B,EAC9B,EAAE;YACF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;gBACnD,OAAO,EAAE,WAAW;gBACpB,GAAG,EAAE,uBAAuB;gBAC5B,SAAS;gBACT,MAAM,EAAE,CAAC,IAAW,EAAE,EAAE;oBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;wBACvB,MAAM,QAAQ,GAAG,GAA+C,CAAC;wBACjE,MAAM,QAAQ,GACX,QAAQ,CAAC,IAAI,EAAE,CAAC,UAAU,CAAmB;4BAC9C,oEAAoE,CAAC;wBAEvE,QAAQ,CAAC;4BACP,IAAI,EAAE,SAAS;4BACf,QAAQ;4BACR,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,EAAE;4BAClC,eAAe,EAAE,GAAG,CAAC,eAAe,IAAK,IAAsB;4BAC/D,IAAI,EAAE,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAA4B;yBACvD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;aACF,CAAC,CAAC;YACH,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC,CAAC;QAEF,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAChC,UAAU,CAAC,cAAc,CAAC,CAAC;QAC3B,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC7B,UAAU,CAAC,gBAAgB,CAAC,CAAC;QAC7B,UAAU,CAAC,iBAAiB,CAAC,CAAC;QAC9B,UAAU,CAAC,mBAAmB,CAAC,CAAC;QAChC,UAAU,CAAC,eAAe,CAAC,CAAC;QAE5B,2DAA2D;QAC3D,OAAO,GAAG,EAAE;YACV,KAAK,MAAM,OAAO,IAAI,UAAU,EAAE,CAAC;gBACjC,OAAO,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,uBAAuB,CACrB,QAAsD;QAEtD,OAAO,IAAI,CAAC,YAAY,CAAC,kBAAkB,CAAC;YAC1C,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa;YAC5C,GAAG,EAAE,gBAAgB;YACrB,SAAS,EAAE,iBAAiB;YAC5B,MAAM,EAAE,CAAC,IAAW,EAAE,EAAE;gBACtB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;oBACvB,MAAM,QAAQ,GAAG,GAA+C,CAAC;oBACjE,MAAM,KAAK,GAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,OAAO,CAAmB,IAAI,IAAI,CAAC;oBAClE,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,EAAE,CAAC,MAAM,CAAY,IAAI,EAAE,CAAC;oBACvD,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,CAAC;YACH,CAAC;SACF,CAAC,CAAC;IACL,CAAC;IAED,8EAA8E;IAC9E,kBAAkB;IAClB,8EAA8E;IAE9E;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;IAC/B,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CAAC,2DAA2D,CAAC,CAAC;QAC/E,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,YAAY,CAAC,OAAsB;QACvC,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,84 @@
1
+ import type { ClawlogicConfig, DeploymentInfo } from './types.js';
2
+ /**
3
+ * Arbitrum Sepolia chain ID.
4
+ */
5
+ export declare const ARBITRUM_SEPOLIA_CHAIN_ID = 421614;
6
+ /**
7
+ * Default RPC URL for Arbitrum Sepolia.
8
+ */
9
+ export declare const ARBITRUM_SEPOLIA_RPC_URL = "https://sepolia-rollup.arbitrum.io/rpc";
10
+ /**
11
+ * Default configuration for Arbitrum Sepolia testnet.
12
+ *
13
+ * Contract addresses are placeholders and will be updated after deployment.
14
+ * Use `loadConfig()` to load real addresses from a deployments JSON file.
15
+ */
16
+ export declare const ARBITRUM_SEPOLIA_CONFIG: ClawlogicConfig;
17
+ /**
18
+ * Circle Arc testnet chain ID.
19
+ */
20
+ export declare const ARC_TESTNET_CHAIN_ID = 5042002;
21
+ /**
22
+ * Default RPC URL for Circle Arc testnet.
23
+ */
24
+ export declare const ARC_TESTNET_RPC_URL = "https://rpc.testnet.arc.network";
25
+ /**
26
+ * Block explorer URL for Circle Arc testnet.
27
+ */
28
+ export declare const ARC_TESTNET_EXPLORER_URL = "https://testnet.arcscan.app";
29
+ /**
30
+ * Default configuration for Circle Arc testnet.
31
+ *
32
+ * Arc is Circle's EVM-compatible L1 where USDC is the native gas token.
33
+ * On Arc, `msg.value` sends native USDC (18 decimals), so the existing
34
+ * `mintOutcomeTokens()` payable function works directly -- collateral is
35
+ * USDC instead of ETH.
36
+ *
37
+ * Important: Uniswap V4 and UMA OOV3 are NOT natively available on Arc.
38
+ * The deployment uses mock contracts for both. V4 pool swaps are not
39
+ * functional; only the prediction market lifecycle operates.
40
+ *
41
+ * Contract addresses are placeholders and will be updated after deployment.
42
+ * Use `loadConfigFromDeployment()` to load real addresses.
43
+ */
44
+ export declare const ARC_TESTNET_CONFIG: ClawlogicConfig;
45
+ /**
46
+ * Load a ClawlogicConfig from a deployments JSON file.
47
+ *
48
+ * The deployments JSON must conform to the DeploymentInfo interface:
49
+ * ```json
50
+ * {
51
+ * "chainId": 421614,
52
+ * "deployer": "0x...",
53
+ * "deployedAt": "2026-02-XX",
54
+ * "blockNumber": 0,
55
+ * "contracts": {
56
+ * "AgentRegistry": "0x...",
57
+ * "PredictionMarketHook": "0x...",
58
+ * "PoolManager": "0x..."
59
+ * }
60
+ * }
61
+ * ```
62
+ *
63
+ * @param deployment - The parsed deployment info object.
64
+ * @param rpcUrl - Optional RPC URL override. Defaults based on chain ID:
65
+ * - Arc testnet (5042002) -> Arc testnet RPC
66
+ * - All others -> Arbitrum Sepolia public RPC
67
+ * @returns A ClawlogicConfig ready for use with the ClawlogicClient.
68
+ */
69
+ export declare function loadConfigFromDeployment(deployment: DeploymentInfo, rpcUrl?: string): ClawlogicConfig;
70
+ /**
71
+ * Create a ClawlogicConfig from explicit contract addresses.
72
+ *
73
+ * @param addresses - Object with contract addresses.
74
+ * @param chainId - Chain ID (default: Arbitrum Sepolia 421614).
75
+ * @param rpcUrl - RPC URL (default: Arbitrum Sepolia public RPC).
76
+ * @returns A ClawlogicConfig ready for use with the ClawlogicClient.
77
+ */
78
+ export declare function createConfig(addresses: {
79
+ agentRegistry: `0x${string}`;
80
+ predictionMarketHook: `0x${string}`;
81
+ poolManager: `0x${string}`;
82
+ optimisticOracleV3?: `0x${string}`;
83
+ }, chainId?: number, rpcUrl?: string): ClawlogicConfig;
84
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAMlE;;GAEG;AACH,eAAO,MAAM,yBAAyB,SAAS,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,wBAAwB,2CAA2C,CAAC;AAEjF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,EAAE,eASrC,CAAC;AAMF;;GAEG;AACH,eAAO,MAAM,oBAAoB,UAAU,CAAC;AAE5C;;GAEG;AACH,eAAO,MAAM,mBAAmB,oCAAoC,CAAC;AAErE;;GAEG;AACH,eAAO,MAAM,wBAAwB,gCAAgC,CAAC;AAEtE;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,eAShC,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,cAAc,EAC1B,MAAM,CAAC,EAAE,MAAM,GACd,eAAe,CAwBjB;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAC1B,SAAS,EAAE;IACT,aAAa,EAAE,KAAK,MAAM,EAAE,CAAC;IAC7B,oBAAoB,EAAE,KAAK,MAAM,EAAE,CAAC;IACpC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;IAC3B,kBAAkB,CAAC,EAAE,KAAK,MAAM,EAAE,CAAC;CACpC,EACD,OAAO,SAA4B,EACnC,MAAM,SAA2B,GAChC,eAAe,CAYjB"}