@underscore-finance/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 (84) hide show
  1. package/LICENSE +41 -0
  2. package/README.md +131 -0
  3. package/dist/contracts/AddyRegistry.d.ts +471 -0
  4. package/dist/contracts/AddyRegistry.d.ts.map +1 -0
  5. package/dist/contracts/AddyRegistry.js +592 -0
  6. package/dist/contracts/AgentFactory.d.ts +966 -0
  7. package/dist/contracts/AgentFactory.d.ts.map +1 -0
  8. package/dist/contracts/AgentFactory.js +1227 -0
  9. package/dist/contracts/AgentTemplate.d.ts +2629 -0
  10. package/dist/contracts/AgentTemplate.d.ts.map +1 -0
  11. package/dist/contracts/AgentTemplate.js +3370 -0
  12. package/dist/contracts/ChainlinkFeeds.d.ts +567 -0
  13. package/dist/contracts/ChainlinkFeeds.d.ts.map +1 -0
  14. package/dist/contracts/ChainlinkFeeds.js +735 -0
  15. package/dist/contracts/LegoAaveV3.d.ts +894 -0
  16. package/dist/contracts/LegoAaveV3.d.ts.map +1 -0
  17. package/dist/contracts/LegoAaveV3.js +1165 -0
  18. package/dist/contracts/LegoAeroClassic.d.ts +1065 -0
  19. package/dist/contracts/LegoAeroClassic.d.ts.map +1 -0
  20. package/dist/contracts/LegoAeroClassic.js +1381 -0
  21. package/dist/contracts/LegoAeroSlipstream.d.ts +1161 -0
  22. package/dist/contracts/LegoAeroSlipstream.d.ts.map +1 -0
  23. package/dist/contracts/LegoAeroSlipstream.js +1506 -0
  24. package/dist/contracts/LegoCompoundV3.d.ts +921 -0
  25. package/dist/contracts/LegoCompoundV3.d.ts.map +1 -0
  26. package/dist/contracts/LegoCompoundV3.js +1200 -0
  27. package/dist/contracts/LegoCurve.d.ts +1050 -0
  28. package/dist/contracts/LegoCurve.d.ts.map +1 -0
  29. package/dist/contracts/LegoCurve.js +1354 -0
  30. package/dist/contracts/LegoEuler.d.ts +935 -0
  31. package/dist/contracts/LegoEuler.d.ts.map +1 -0
  32. package/dist/contracts/LegoEuler.js +1218 -0
  33. package/dist/contracts/LegoFluid.d.ts +875 -0
  34. package/dist/contracts/LegoFluid.d.ts.map +1 -0
  35. package/dist/contracts/LegoFluid.js +1141 -0
  36. package/dist/contracts/LegoHelper.d.ts +1555 -0
  37. package/dist/contracts/LegoHelper.d.ts.map +1 -0
  38. package/dist/contracts/LegoHelper.js +1945 -0
  39. package/dist/contracts/LegoMoonwell.d.ts +903 -0
  40. package/dist/contracts/LegoMoonwell.d.ts.map +1 -0
  41. package/dist/contracts/LegoMoonwell.js +1177 -0
  42. package/dist/contracts/LegoMorpho.d.ts +935 -0
  43. package/dist/contracts/LegoMorpho.d.ts.map +1 -0
  44. package/dist/contracts/LegoMorpho.js +1218 -0
  45. package/dist/contracts/LegoRegistry.d.ts +589 -0
  46. package/dist/contracts/LegoRegistry.d.ts.map +1 -0
  47. package/dist/contracts/LegoRegistry.js +746 -0
  48. package/dist/contracts/LegoSky.d.ts +784 -0
  49. package/dist/contracts/LegoSky.d.ts.map +1 -0
  50. package/dist/contracts/LegoSky.js +1015 -0
  51. package/dist/contracts/LegoUniswapV2.d.ts +1065 -0
  52. package/dist/contracts/LegoUniswapV2.d.ts.map +1 -0
  53. package/dist/contracts/LegoUniswapV2.js +1381 -0
  54. package/dist/contracts/LegoUniswapV3.d.ts +1199 -0
  55. package/dist/contracts/LegoUniswapV3.d.ts.map +1 -0
  56. package/dist/contracts/LegoUniswapV3.js +1553 -0
  57. package/dist/contracts/OracleRegistry.d.ts +811 -0
  58. package/dist/contracts/OracleRegistry.d.ts.map +1 -0
  59. package/dist/contracts/OracleRegistry.js +1049 -0
  60. package/dist/contracts/PriceSheets.d.ts +1053 -0
  61. package/dist/contracts/PriceSheets.d.ts.map +1 -0
  62. package/dist/contracts/PriceSheets.js +1296 -0
  63. package/dist/contracts/PythFeeds.d.ts +501 -0
  64. package/dist/contracts/PythFeeds.d.ts.map +1 -0
  65. package/dist/contracts/PythFeeds.js +648 -0
  66. package/dist/contracts/StorkFeeds.d.ts +501 -0
  67. package/dist/contracts/StorkFeeds.d.ts.map +1 -0
  68. package/dist/contracts/StorkFeeds.js +648 -0
  69. package/dist/contracts/WalletConfig.d.ts +1398 -0
  70. package/dist/contracts/WalletConfig.d.ts.map +1 -0
  71. package/dist/contracts/WalletConfig.js +1674 -0
  72. package/dist/contracts/WalletFunds.d.ts +1978 -0
  73. package/dist/contracts/WalletFunds.d.ts.map +1 -0
  74. package/dist/contracts/WalletFunds.js +2579 -0
  75. package/dist/contracts/index.d.ts +25 -0
  76. package/dist/contracts/index.d.ts.map +1 -0
  77. package/dist/contracts/index.js +28 -0
  78. package/dist/contracts/sdk.d.ts +53 -0
  79. package/dist/contracts/sdk.d.ts.map +1 -0
  80. package/dist/contracts/sdk.js +56 -0
  81. package/dist/index.d.ts +15 -0
  82. package/dist/index.d.ts.map +1 -0
  83. package/dist/index.js +16 -0
  84. package/package.json +31 -0
package/LICENSE ADDED
@@ -0,0 +1,41 @@
1
+ Business Source License 1.1
2
+
3
+ License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved.
4
+ "Business Source License" is a trademark of MariaDB Corporation Ab.
5
+
6
+ -----------------------------------------------------------------------------
7
+
8
+ Parameters
9
+
10
+ Licensor: Hightop Financial, Inc.
11
+
12
+ Licensed Work: Underscore Protocol
13
+ The Licensed Work is (c) 2025 Hightop Financial, Inc.
14
+
15
+ Additional Use Grant: Any uses listed and defined at
16
+ https://github.com/underscore-finance/underscore/blob/main/LICENSE_GRANTS.md
17
+
18
+ Change Date: The earlier of 2029-03-06 or a date specified at
19
+ https://github.com/underscore-finance/underscore/blob/main/LICENSE_DATE.md
20
+
21
+ Change License: MIT License
22
+
23
+ -----------------------------------------------------------------------------
24
+
25
+ Terms
26
+
27
+ The Licensor hereby grants you the right to copy, modify, create derivative works, redistribute, and make non-production use of the Licensed Work. The Licensor may make an Additional Use Grant, above, permitting limited production use.
28
+
29
+ Effective on the Change Date, or the fourth anniversary of the first publicly available distribution of a specific version of the Licensed Work under this License, whichever comes first, the Licensor hereby grants you rights under the terms of the Change License, and the rights granted in the paragraph above terminate.
30
+
31
+ If your use of the Licensed Work does not comply with the requirements currently in effect as described in this License, you must purchase a commercial license from the Licensor, its affiliated entities, or authorized resellers, or you must refrain from using the Licensed Work.
32
+
33
+ All copies of the original and modified Licensed Work, and derivative works of the Licensed Work, are subject to this License. This License applies separately for each version of the Licensed Work and the Change Date may vary for each version of the Licensed Work released by Licensor.
34
+
35
+ You must conspicuously display this License on each original or modified copy of the Licensed Work. If you receive the Licensed Work in original or modified form from a third party, the terms and conditions set forth in this License apply to your use of that work.
36
+
37
+ Any use of the Licensed Work in violation of this License will automatically terminate your rights under this License for the current and all other versions of the Licensed Work.
38
+
39
+ This License does not grant you any right in any trademark or logo of Licensor or its affiliates (provided that you may use a trademark or logo of Licensor as expressly required by this License).
40
+
41
+ TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON AN "AS IS" BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND TITLE.
package/README.md ADDED
@@ -0,0 +1,131 @@
1
+ # Underscore Smart Contracts SDK
2
+
3
+ A TypeScript SDK for interacting with Underscore's AI-driven smart contracts on Base network. Underscore enables trustless AI agents to operate on your behalf in DeFi—securely, transparently, and within boundaries you define.
4
+
5
+ ## Key Features
6
+
7
+ - **Non-Custodial**: Retain full control of your assets; only you can transfer or withdraw funds
8
+ - **Granular Control**: Define precise boundaries for AI agent operations
9
+ - **Rule-Based Autonomy**: Smart contracts strictly enforce your parameters
10
+ - **Minimal Trust**: Built on open-source, immutable code
11
+ - **Extensible**: Add new DeFi protocol integrations without migrating funds
12
+ - **Auditability**: Fully transparent, verifiable code
13
+
14
+ ## Installation
15
+
16
+ ```bash
17
+ npm install @underscore-finance/sdk viem
18
+ # or
19
+ yarn add @underscore-finance/sdk viem
20
+ ```
21
+
22
+ ## Quick Start
23
+
24
+ ```typescript
25
+ import Underscore from '@underscore-finance/sdk'
26
+ import { createWalletClient, custom } from 'viem'
27
+ import { base } from 'viem/chains'
28
+
29
+ // Initialize SDK = Read mode only
30
+ const underscore = new Underscore()
31
+
32
+ // For AI agent operations, initialize with a wallet client
33
+ const underscore = new Underscore({
34
+ walletClient: createWalletClient({
35
+ chain: base,
36
+ transport: custom(window.ethereum),
37
+ }),
38
+ })
39
+
40
+ // Create an AI Wallet
41
+ const createWallet = async (owner: string, aiAgent: string) => {
42
+ return await underscore.contracts.AgentFactory.createWalletClient(
43
+ owner, // Your wallet address
44
+ aiAgent, // AI agent's address
45
+ )
46
+ }
47
+
48
+ // Configure AI permissions
49
+ const configureAgent = async (agent: string, allowedAssets: string[]) => {
50
+ for (const asset of allowedAssets) {
51
+ await underscore.contracts.WalletConfig('0xWalletAddress').addAssetForAgent(agent, asset)
52
+ }
53
+ }
54
+ ```
55
+
56
+ ## Core Components
57
+
58
+ ### AI Agent System
59
+
60
+ - `AgentFactory` - Deploy and manage AI wallets
61
+ - `AgentTemplate` - Access to AI agent templates
62
+ - `WalletConfig` - Set AI agent permissions and rules
63
+ - `WalletFunds` - Manage wallet assets
64
+ - `LegoHelper` - Set of helper functions to interact with legos
65
+ - `OracleRegistry` - Registry for price feeds
66
+
67
+ ### Protocol Integrations ("Legos")
68
+
69
+ Modular DeFi integrations your AI can interact with:
70
+
71
+ - `LegoAaveV3` - Aave V3 lending/borrowing
72
+ - `LegoCompoundV3` - Compound V3 operations
73
+ - `LegoUniswapV3` - Uniswap V3 swaps
74
+ - `LegoCurve` - Curve pool interactions
75
+ - And many more protocol integrations
76
+
77
+ ### Price Feed Systems
78
+
79
+ Price oracles your AI can reference:
80
+
81
+ - `ChainlinkFeeds` - Chainlink oracle data
82
+ - `PythFeeds` - Pyth Network feeds
83
+ - `StorkFeeds` - Stork protocol data
84
+
85
+ ## Use Cases
86
+
87
+ 1. **Autonomous Yield Farming**
88
+
89
+ - AI monitors lending rates across protocols
90
+ - Automatically shifts funds to optimal yields
91
+ - Operates within your risk parameters
92
+
93
+ 2. **Smart Portfolio Rebalancing**
94
+
95
+ - AI maintains your desired asset ratios
96
+ - Executes trades based on market conditions
97
+ - Respects your defined boundaries
98
+
99
+ 3. **Risk Management**
100
+ - AI monitors on-chain risk indicators
101
+ - Automatically adjusts positions
102
+ - Follows your pre-set safety rules
103
+
104
+ ## Configuration
105
+
106
+ ```typescript
107
+ interface UnderscoreConfig {
108
+ rpcUrl?: string // Custom RPC URL for Base network
109
+ publicClient?: PublicClient // Custom viem public client
110
+ walletClient?: WalletClient // Required for transactions
111
+ }
112
+ ```
113
+
114
+ ## Best Practices
115
+
116
+ 1. Always initialize with a wallet client for AI agent operations
117
+ 2. Use custom RPC URLs in production
118
+ 3. Implement comprehensive error handling
119
+ 4. Set clear boundaries for AI agent actions
120
+
121
+ ## Support
122
+
123
+ - GitHub Issues: Technical support and bug reports
124
+ - Discord Community: [Join our Discord](https://discord.gg/Y6PWmndNaC)
125
+ - Developer Support: [Contact our team](https://underscore.fi)
126
+
127
+ ## License
128
+
129
+ Business Source License 1.1 - This SDK is provided under a commercial license. All rights reserved. Unauthorized copying, modification, distribution, or use of this software is strictly prohibited without a valid license agreement.
130
+
131
+ Built by the team at [Hightop](http://hightop.com) + [Ripe](http://ripe.finance)
@@ -0,0 +1,471 @@
1
+ import { PublicClient, WalletClient } from 'viem';
2
+ type ExtractArgs<T> = T extends (...args: infer P) => any ? P : never;
3
+ type Address = `0x${string}`;
4
+ export declare const abi: readonly [{
5
+ readonly anonymous: false;
6
+ readonly inputs: readonly [{
7
+ readonly indexed: true;
8
+ readonly name: "addr";
9
+ readonly type: "address";
10
+ }, {
11
+ readonly indexed: false;
12
+ readonly name: "addyId";
13
+ readonly type: "uint256";
14
+ }, {
15
+ readonly indexed: false;
16
+ readonly name: "description";
17
+ readonly type: "string";
18
+ }];
19
+ readonly name: "NewAddyRegistered";
20
+ readonly type: "event";
21
+ }, {
22
+ readonly anonymous: false;
23
+ readonly inputs: readonly [{
24
+ readonly indexed: true;
25
+ readonly name: "newAddr";
26
+ readonly type: "address";
27
+ }, {
28
+ readonly indexed: true;
29
+ readonly name: "prevAddy";
30
+ readonly type: "address";
31
+ }, {
32
+ readonly indexed: false;
33
+ readonly name: "addyId";
34
+ readonly type: "uint256";
35
+ }, {
36
+ readonly indexed: false;
37
+ readonly name: "version";
38
+ readonly type: "uint256";
39
+ }, {
40
+ readonly indexed: false;
41
+ readonly name: "description";
42
+ readonly type: "string";
43
+ }];
44
+ readonly name: "AddyIdUpdated";
45
+ readonly type: "event";
46
+ }, {
47
+ readonly anonymous: false;
48
+ readonly inputs: readonly [{
49
+ readonly indexed: true;
50
+ readonly name: "prevAddy";
51
+ readonly type: "address";
52
+ }, {
53
+ readonly indexed: false;
54
+ readonly name: "addyId";
55
+ readonly type: "uint256";
56
+ }, {
57
+ readonly indexed: false;
58
+ readonly name: "version";
59
+ readonly type: "uint256";
60
+ }, {
61
+ readonly indexed: false;
62
+ readonly name: "description";
63
+ readonly type: "string";
64
+ }];
65
+ readonly name: "AddyIdDisabled";
66
+ readonly type: "event";
67
+ }, {
68
+ readonly anonymous: false;
69
+ readonly inputs: readonly [{
70
+ readonly indexed: true;
71
+ readonly name: "governor";
72
+ readonly type: "address";
73
+ }];
74
+ readonly name: "AddyRegistryGovernorSet";
75
+ readonly type: "event";
76
+ }, {
77
+ readonly anonymous: false;
78
+ readonly inputs: readonly [{
79
+ readonly indexed: false;
80
+ readonly name: "isActivated";
81
+ readonly type: "bool";
82
+ }];
83
+ readonly name: "AddyRegistryActivated";
84
+ readonly type: "event";
85
+ }, {
86
+ readonly inputs: readonly [{
87
+ readonly name: "_addy";
88
+ readonly type: "address";
89
+ }];
90
+ readonly name: "isValidNewAddy";
91
+ readonly outputs: readonly [{
92
+ readonly name: "";
93
+ readonly type: "bool";
94
+ }];
95
+ readonly stateMutability: "view";
96
+ readonly type: "function";
97
+ }, {
98
+ readonly inputs: readonly [{
99
+ readonly name: "_addy";
100
+ readonly type: "address";
101
+ }, {
102
+ readonly name: "_description";
103
+ readonly type: "string";
104
+ }];
105
+ readonly name: "registerNewAddy";
106
+ readonly outputs: readonly [{
107
+ readonly name: "";
108
+ readonly type: "uint256";
109
+ }];
110
+ readonly stateMutability: "nonpayable";
111
+ readonly type: "function";
112
+ }, {
113
+ readonly inputs: readonly [{
114
+ readonly name: "_addyId";
115
+ readonly type: "uint256";
116
+ }, {
117
+ readonly name: "_newAddy";
118
+ readonly type: "address";
119
+ }];
120
+ readonly name: "isValidAddyUpdate";
121
+ readonly outputs: readonly [{
122
+ readonly name: "";
123
+ readonly type: "bool";
124
+ }];
125
+ readonly stateMutability: "view";
126
+ readonly type: "function";
127
+ }, {
128
+ readonly inputs: readonly [{
129
+ readonly name: "_addyId";
130
+ readonly type: "uint256";
131
+ }, {
132
+ readonly name: "_newAddy";
133
+ readonly type: "address";
134
+ }];
135
+ readonly name: "updateAddy";
136
+ readonly outputs: readonly [{
137
+ readonly name: "";
138
+ readonly type: "bool";
139
+ }];
140
+ readonly stateMutability: "nonpayable";
141
+ readonly type: "function";
142
+ }, {
143
+ readonly inputs: readonly [{
144
+ readonly name: "_addyId";
145
+ readonly type: "uint256";
146
+ }];
147
+ readonly name: "isValidAddyDisable";
148
+ readonly outputs: readonly [{
149
+ readonly name: "";
150
+ readonly type: "bool";
151
+ }];
152
+ readonly stateMutability: "view";
153
+ readonly type: "function";
154
+ }, {
155
+ readonly inputs: readonly [{
156
+ readonly name: "_addyId";
157
+ readonly type: "uint256";
158
+ }];
159
+ readonly name: "disableAddy";
160
+ readonly outputs: readonly [{
161
+ readonly name: "";
162
+ readonly type: "bool";
163
+ }];
164
+ readonly stateMutability: "nonpayable";
165
+ readonly type: "function";
166
+ }, {
167
+ readonly inputs: readonly [{
168
+ readonly name: "_addy";
169
+ readonly type: "address";
170
+ }];
171
+ readonly name: "isValidAddy";
172
+ readonly outputs: readonly [{
173
+ readonly name: "";
174
+ readonly type: "bool";
175
+ }];
176
+ readonly stateMutability: "view";
177
+ readonly type: "function";
178
+ }, {
179
+ readonly inputs: readonly [{
180
+ readonly name: "_addyId";
181
+ readonly type: "uint256";
182
+ }];
183
+ readonly name: "isValidAddyId";
184
+ readonly outputs: readonly [{
185
+ readonly name: "";
186
+ readonly type: "bool";
187
+ }];
188
+ readonly stateMutability: "view";
189
+ readonly type: "function";
190
+ }, {
191
+ readonly inputs: readonly [{
192
+ readonly name: "_addy";
193
+ readonly type: "address";
194
+ }];
195
+ readonly name: "getAddyId";
196
+ readonly outputs: readonly [{
197
+ readonly name: "";
198
+ readonly type: "uint256";
199
+ }];
200
+ readonly stateMutability: "view";
201
+ readonly type: "function";
202
+ }, {
203
+ readonly inputs: readonly [{
204
+ readonly name: "_addyId";
205
+ readonly type: "uint256";
206
+ }];
207
+ readonly name: "getAddy";
208
+ readonly outputs: readonly [{
209
+ readonly name: "";
210
+ readonly type: "address";
211
+ }];
212
+ readonly stateMutability: "view";
213
+ readonly type: "function";
214
+ }, {
215
+ readonly inputs: readonly [{
216
+ readonly name: "_addyId";
217
+ readonly type: "uint256";
218
+ }];
219
+ readonly name: "getAddyInfo";
220
+ readonly outputs: readonly [{
221
+ readonly components: readonly [{
222
+ readonly name: "addr";
223
+ readonly type: "address";
224
+ }, {
225
+ readonly name: "version";
226
+ readonly type: "uint256";
227
+ }, {
228
+ readonly name: "lastModified";
229
+ readonly type: "uint256";
230
+ }, {
231
+ readonly name: "description";
232
+ readonly type: "string";
233
+ }];
234
+ readonly name: "";
235
+ readonly type: "tuple";
236
+ }];
237
+ readonly stateMutability: "view";
238
+ readonly type: "function";
239
+ }, {
240
+ readonly inputs: readonly [{
241
+ readonly name: "_addyId";
242
+ readonly type: "uint256";
243
+ }];
244
+ readonly name: "getAddyDescription";
245
+ readonly outputs: readonly [{
246
+ readonly name: "";
247
+ readonly type: "string";
248
+ }];
249
+ readonly stateMutability: "view";
250
+ readonly type: "function";
251
+ }, {
252
+ readonly inputs: readonly [];
253
+ readonly name: "getNumAddys";
254
+ readonly outputs: readonly [{
255
+ readonly name: "";
256
+ readonly type: "uint256";
257
+ }];
258
+ readonly stateMutability: "view";
259
+ readonly type: "function";
260
+ }, {
261
+ readonly inputs: readonly [];
262
+ readonly name: "getLastAddy";
263
+ readonly outputs: readonly [{
264
+ readonly name: "";
265
+ readonly type: "address";
266
+ }];
267
+ readonly stateMutability: "view";
268
+ readonly type: "function";
269
+ }, {
270
+ readonly inputs: readonly [];
271
+ readonly name: "getLastAddyId";
272
+ readonly outputs: readonly [{
273
+ readonly name: "";
274
+ readonly type: "uint256";
275
+ }];
276
+ readonly stateMutability: "view";
277
+ readonly type: "function";
278
+ }, {
279
+ readonly inputs: readonly [{
280
+ readonly name: "_newGovernor";
281
+ readonly type: "address";
282
+ }];
283
+ readonly name: "isValidGovernor";
284
+ readonly outputs: readonly [{
285
+ readonly name: "";
286
+ readonly type: "bool";
287
+ }];
288
+ readonly stateMutability: "view";
289
+ readonly type: "function";
290
+ }, {
291
+ readonly inputs: readonly [{
292
+ readonly name: "_newGovernor";
293
+ readonly type: "address";
294
+ }];
295
+ readonly name: "setGovernor";
296
+ readonly outputs: readonly [{
297
+ readonly name: "";
298
+ readonly type: "bool";
299
+ }];
300
+ readonly stateMutability: "nonpayable";
301
+ readonly type: "function";
302
+ }, {
303
+ readonly inputs: readonly [{
304
+ readonly name: "arg0";
305
+ readonly type: "uint256";
306
+ }];
307
+ readonly name: "addyInfo";
308
+ readonly outputs: readonly [{
309
+ readonly components: readonly [{
310
+ readonly name: "addr";
311
+ readonly type: "address";
312
+ }, {
313
+ readonly name: "version";
314
+ readonly type: "uint256";
315
+ }, {
316
+ readonly name: "lastModified";
317
+ readonly type: "uint256";
318
+ }, {
319
+ readonly name: "description";
320
+ readonly type: "string";
321
+ }];
322
+ readonly name: "";
323
+ readonly type: "tuple";
324
+ }];
325
+ readonly stateMutability: "view";
326
+ readonly type: "function";
327
+ }, {
328
+ readonly inputs: readonly [{
329
+ readonly name: "arg0";
330
+ readonly type: "address";
331
+ }];
332
+ readonly name: "addyToId";
333
+ readonly outputs: readonly [{
334
+ readonly name: "";
335
+ readonly type: "uint256";
336
+ }];
337
+ readonly stateMutability: "view";
338
+ readonly type: "function";
339
+ }, {
340
+ readonly inputs: readonly [];
341
+ readonly name: "numAddys";
342
+ readonly outputs: readonly [{
343
+ readonly name: "";
344
+ readonly type: "uint256";
345
+ }];
346
+ readonly stateMutability: "view";
347
+ readonly type: "function";
348
+ }, {
349
+ readonly inputs: readonly [];
350
+ readonly name: "governor";
351
+ readonly outputs: readonly [{
352
+ readonly name: "";
353
+ readonly type: "address";
354
+ }];
355
+ readonly stateMutability: "view";
356
+ readonly type: "function";
357
+ }, {
358
+ readonly inputs: readonly [{
359
+ readonly name: "_governor";
360
+ readonly type: "address";
361
+ }];
362
+ readonly outputs: readonly [];
363
+ readonly stateMutability: "nonpayable";
364
+ readonly type: "constructor";
365
+ }];
366
+ export declare const deployAddress: Address | undefined;
367
+ export type Contract = {
368
+ calls: {
369
+ isValidNewAddy: (addy: `0x${string}`) => Promise<boolean>;
370
+ isValidAddyUpdate: (addyId: bigint, newAddy: `0x${string}`) => Promise<boolean>;
371
+ isValidAddyDisable: (addyId: bigint) => Promise<boolean>;
372
+ isValidAddy: (addy: `0x${string}`) => Promise<boolean>;
373
+ isValidAddyId: (addyId: bigint) => Promise<boolean>;
374
+ getAddyId: (addy: `0x${string}`) => Promise<bigint>;
375
+ getAddy: (addyId: bigint) => Promise<`0x${string}`>;
376
+ getAddyInfo: (addyId: bigint) => Promise<{
377
+ addr: `0x${string}`;
378
+ version: bigint;
379
+ lastModified: bigint;
380
+ description: string;
381
+ }>;
382
+ getAddyDescription: (addyId: bigint) => Promise<string>;
383
+ getNumAddys: () => Promise<bigint>;
384
+ getLastAddy: () => Promise<`0x${string}`>;
385
+ getLastAddyId: () => Promise<bigint>;
386
+ isValidGovernor: (newGovernor: `0x${string}`) => Promise<boolean>;
387
+ addyInfo: (arg0: bigint) => Promise<{
388
+ addr: `0x${string}`;
389
+ version: bigint;
390
+ lastModified: bigint;
391
+ description: string;
392
+ }>;
393
+ addyToId: (arg0: `0x${string}`) => Promise<bigint>;
394
+ numAddys: () => Promise<bigint>;
395
+ governor: () => Promise<`0x${string}`>;
396
+ };
397
+ mutations: {
398
+ registerNewAddy: (addy: `0x${string}`, description: string) => Promise<bigint>;
399
+ updateAddy: (addyId: bigint, newAddy: `0x${string}`) => Promise<boolean>;
400
+ disableAddy: (addyId: bigint) => Promise<boolean>;
401
+ setGovernor: (newGovernor: `0x${string}`) => Promise<boolean>;
402
+ };
403
+ events: {
404
+ NewAddyRegistered: (addr: `0x${string}`, addyId: bigint, description: string) => Promise<void>;
405
+ AddyIdUpdated: (newAddr: `0x${string}`, prevAddy: `0x${string}`, addyId: bigint, version: bigint, description: string) => Promise<void>;
406
+ AddyIdDisabled: (prevAddy: `0x${string}`, addyId: bigint, version: bigint, description: string) => Promise<void>;
407
+ AddyRegistryGovernorSet: (governor: `0x${string}`) => Promise<void>;
408
+ AddyRegistryActivated: (isActivated: boolean) => Promise<void>;
409
+ };
410
+ };
411
+ export type Calls = keyof Contract['calls'];
412
+ export type Request<M extends Calls> = {
413
+ contractName: 'AddyRegistry';
414
+ method: M;
415
+ args: ExtractArgs<Contract['calls'][M]>;
416
+ address: Address | undefined;
417
+ deployAddress: Address | undefined;
418
+ defaultValue: Awaited<ReturnType<Contract['calls'][M]>> | undefined;
419
+ getAbi: () => typeof abi;
420
+ with: (options: {
421
+ contractAddress?: Address;
422
+ defaultValue?: Awaited<ReturnType<Contract['calls'][M]>>;
423
+ }) => Request<M>;
424
+ defaultTo: (defaultValue: Awaited<ReturnType<Contract['calls'][M]>>) => Request<M>;
425
+ at: (address: Address) => Request<M>;
426
+ };
427
+ export type CallReturn<M extends Calls> = NonNullable<Request<M>['defaultValue']>;
428
+ declare function getRequest<M extends Calls>(method: M, args: ExtractArgs<Contract['calls'][M]>, contractAddressOrOptions?: Address | {
429
+ contractAddress?: Address;
430
+ defaultValue?: Awaited<ReturnType<Contract['calls'][M]>>;
431
+ }): Request<M>;
432
+ type CallType = {
433
+ [K in Calls]: (...args: ExtractArgs<Contract['calls'][K]>) => ReturnType<typeof getRequest<K>>;
434
+ };
435
+ export declare const call: CallType;
436
+ export type Mutations = keyof Contract['mutations'];
437
+ export declare const mutation: {
438
+ [K in Mutations]: {
439
+ contractName: 'AddyRegistry';
440
+ deployAddress: Address | undefined;
441
+ getAbi: () => typeof abi;
442
+ functionName: K;
443
+ argsType: ExtractArgs<Contract['mutations'][K]> | undefined;
444
+ };
445
+ };
446
+ export type SDK = {
447
+ isValidNewAddy: (...args: ExtractArgs<Contract['calls']['isValidNewAddy']>) => Promise<CallReturn<'isValidNewAddy'>>;
448
+ isValidAddyUpdate: (...args: ExtractArgs<Contract['calls']['isValidAddyUpdate']>) => Promise<CallReturn<'isValidAddyUpdate'>>;
449
+ isValidAddyDisable: (...args: ExtractArgs<Contract['calls']['isValidAddyDisable']>) => Promise<CallReturn<'isValidAddyDisable'>>;
450
+ isValidAddy: (...args: ExtractArgs<Contract['calls']['isValidAddy']>) => Promise<CallReturn<'isValidAddy'>>;
451
+ isValidAddyId: (...args: ExtractArgs<Contract['calls']['isValidAddyId']>) => Promise<CallReturn<'isValidAddyId'>>;
452
+ getAddyId: (...args: ExtractArgs<Contract['calls']['getAddyId']>) => Promise<CallReturn<'getAddyId'>>;
453
+ getAddy: (...args: ExtractArgs<Contract['calls']['getAddy']>) => Promise<CallReturn<'getAddy'>>;
454
+ getAddyInfo: (...args: ExtractArgs<Contract['calls']['getAddyInfo']>) => Promise<CallReturn<'getAddyInfo'>>;
455
+ getAddyDescription: (...args: ExtractArgs<Contract['calls']['getAddyDescription']>) => Promise<CallReturn<'getAddyDescription'>>;
456
+ getNumAddys: (...args: ExtractArgs<Contract['calls']['getNumAddys']>) => Promise<CallReturn<'getNumAddys'>>;
457
+ getLastAddy: (...args: ExtractArgs<Contract['calls']['getLastAddy']>) => Promise<CallReturn<'getLastAddy'>>;
458
+ getLastAddyId: (...args: ExtractArgs<Contract['calls']['getLastAddyId']>) => Promise<CallReturn<'getLastAddyId'>>;
459
+ isValidGovernor: (...args: ExtractArgs<Contract['calls']['isValidGovernor']>) => Promise<CallReturn<'isValidGovernor'>>;
460
+ addyInfo: (...args: ExtractArgs<Contract['calls']['addyInfo']>) => Promise<CallReturn<'addyInfo'>>;
461
+ addyToId: (...args: ExtractArgs<Contract['calls']['addyToId']>) => Promise<CallReturn<'addyToId'>>;
462
+ numAddys: (...args: ExtractArgs<Contract['calls']['numAddys']>) => Promise<CallReturn<'numAddys'>>;
463
+ governor: (...args: ExtractArgs<Contract['calls']['governor']>) => Promise<CallReturn<'governor'>>;
464
+ registerNewAddy: (...args: ExtractArgs<Contract['mutations']['registerNewAddy']>) => Promise<Address>;
465
+ updateAddy: (...args: ExtractArgs<Contract['mutations']['updateAddy']>) => Promise<Address>;
466
+ disableAddy: (...args: ExtractArgs<Contract['mutations']['disableAddy']>) => Promise<Address>;
467
+ setGovernor: (...args: ExtractArgs<Contract['mutations']['setGovernor']>) => Promise<Address>;
468
+ };
469
+ export declare function toSdk(publicClient?: PublicClient, walletClient?: WalletClient): SDK;
470
+ export {};
471
+ //# sourceMappingURL=AddyRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AddyRegistry.d.ts","sourceRoot":"","sources":["../../src/contracts/AddyRegistry.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,MAAM,CAAA;AAEjD,KAAK,WAAW,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAA;AACrE,KAAK,OAAO,GAAG,KAAK,MAAM,EAAE,CAAA;AAG5B,eAAO,MAAM,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAifN,CAAA;AAEV,eAAO,MAAM,aAAa,EAAE,OAAO,GAAG,SAAqB,CAAA;AAE3D,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE;QACL,cAAc,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACzD,iBAAiB,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QAC/E,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACxD,WAAW,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACtD,aAAa,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACnD,SAAS,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAA;QACnD,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QAC7H,kBAAkB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QACvD,WAAW,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QAClC,WAAW,EAAE,MAAM,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAA;QACzC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QACpC,eAAe,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACjE,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;YAAE,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;YAAC,OAAO,EAAE,MAAM,CAAC;YAAC,YAAY,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAA;SAAE,CAAC,CAAA;QACxH,QAAQ,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAClD,QAAQ,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;QAC/B,QAAQ,EAAE,MAAM,OAAO,CAAC,KAAK,MAAM,EAAE,CAAC,CAAA;KACvC,CAAA;IACD,SAAS,EAAE;QACT,eAAe,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;QAC9E,UAAU,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACxE,WAAW,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;QACjD,WAAW,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;KAC9D,CAAA;IACD,MAAM,EAAE;QACN,iBAAiB,EAAE,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAC9F,aAAa,EAAE,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,EAAE,QAAQ,EAAE,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACvI,cAAc,EAAE,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QAChH,uBAAuB,EAAE,CAAC,QAAQ,EAAE,KAAK,MAAM,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACnE,qBAAqB,EAAE,CAAC,WAAW,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAC/D,CAAA;CACF,CAAA;AAED,MAAM,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,CAAA;AAC3C,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,KAAK,IAAI;IACrC,YAAY,EAAE,cAAc,CAAA;IAC5B,MAAM,EAAE,CAAC,CAAA;IACT,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACvC,OAAO,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;IAClC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;IACnE,MAAM,EAAE,MAAM,OAAO,GAAG,CAAA;IACxB,IAAI,EAAE,CAAC,OAAO,EAAE;QACd,eAAe,CAAC,EAAE,OAAO,CAAA;QACzB,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;KACzD,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAChB,SAAS,EAAE,CAAC,YAAY,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;IAClF,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,CAAA;CACrC,CAAA;AACD,MAAM,MAAM,UAAU,CAAC,CAAC,SAAS,KAAK,IAAI,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAA;AAEjF,iBAAS,UAAU,CAAC,CAAC,SAAS,KAAK,EACjC,MAAM,EAAE,CAAC,EACT,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,EACvC,wBAAwB,CAAC,EACvB,OAAO,GACP;IACA,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;CACvD,GACA,OAAO,CAAC,CAAC,CAAC,CAgCd;AAED,KAAK,QAAQ,GAAG;KACb,CAAC,IAAI,KAAK,GAAG,CACZ,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,KACvC,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;CACtC,CAAA;AAED,eAAO,MAAM,IAAI,EAAE,QAkBlB,CAAA;AAGD,MAAM,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,WAAW,CAAC,CAAA;AAWnD,eAAO,MAAM,QAAQ,EAAG;KACrB,CAAC,IAAI,SAAS,GAAG;QAChB,YAAY,EAAE,cAAc,CAAA;QAC5B,aAAa,EAAE,OAAO,GAAG,SAAS,CAAA;QAClC,MAAM,EAAE,MAAM,OAAO,GAAG,CAAA;QACxB,YAAY,EAAE,CAAC,CAAA;QACf,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAA;KAC5D;CAMF,CAAA;AAKD,MAAM,MAAM,GAAG,GAAG;IAChB,cAAc,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAC,CAAA;IACpH,iBAAiB,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,mBAAmB,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,mBAAmB,CAAC,CAAC,CAAA;IAC7H,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAChI,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3G,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAA;IACjH,SAAS,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAA;IACrG,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAA;IAC/F,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3G,kBAAkB,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,oBAAoB,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,oBAAoB,CAAC,CAAC,CAAA;IAChI,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3G,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAA;IAC3G,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,CAAA;IACjH,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,CAAA;IACvH,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAClG,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAClG,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAClG,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,KAAK,OAAO,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAA;IAClG,eAAe,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,iBAAiB,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IACrG,UAAU,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC3F,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;IAC7F,WAAW,EAAE,CAAC,GAAG,IAAI,EAAE,WAAW,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CAC9F,CAAA;AAED,wBAAgB,KAAK,CAAC,YAAY,CAAC,EAAE,YAAY,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,GAAG,CA2BnF"}