@agoric/portfolio-api 0.1.1-dev-159ee8a.0.159ee8a → 0.1.1-dev-6deecfc.0.6deecfc

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.
@@ -0,0 +1,399 @@
1
+
2
+
3
+ const isPrimitive = (value ) => Object(value) !== value;
4
+
5
+ const deepFreeze = (value ) => {
6
+ if (isPrimitive(value)) return value;
7
+ const obj = value ;
8
+ Object.freeze(obj);
9
+ for (const key of Reflect.ownKeys(obj)) {
10
+ deepFreeze(obj[key]);
11
+ }
12
+ return value;
13
+ };
14
+
15
+ // Initial production network in NetworkSpec format
16
+ export const PROD_NETWORK = deepFreeze({
17
+ // Enable debug diagnostics to aid troubleshooting in tests
18
+ debug: true,
19
+ environment: 'prod',
20
+ chains: [
21
+ { name: 'agoric', control: 'local' },
22
+ { name: 'noble', control: 'ibc' },
23
+ { name: 'Arbitrum', control: 'axelar' },
24
+ { name: 'Avalanche', control: 'axelar' },
25
+ { name: 'Base', control: 'axelar' },
26
+ { name: 'Ethereum', control: 'axelar' },
27
+ { name: 'Optimism', control: 'axelar' },
28
+ ],
29
+ pools: [
30
+ { pool: 'Aave_Arbitrum', chain: 'Arbitrum', protocol: 'Aave' },
31
+ { pool: 'Aave_Avalanche', chain: 'Avalanche', protocol: 'Aave' },
32
+ { pool: 'Aave_Base', chain: 'Base', protocol: 'Aave' },
33
+ { pool: 'Aave_Ethereum', chain: 'Ethereum', protocol: 'Aave' },
34
+ { pool: 'Aave_Optimism', chain: 'Optimism', protocol: 'Aave' },
35
+ { pool: 'Beefy_re7_Avalanche', chain: 'Avalanche', protocol: 'Beefy' },
36
+ {
37
+ pool: 'Beefy_morphoGauntletUsdc_Ethereum',
38
+ chain: 'Ethereum',
39
+ protocol: 'Beefy',
40
+ },
41
+ {
42
+ pool: 'Beefy_morphoSmokehouseUsdc_Ethereum',
43
+ chain: 'Ethereum',
44
+ protocol: 'Beefy',
45
+ },
46
+ { pool: 'Beefy_morphoSeamlessUsdc_Base', chain: 'Base', protocol: 'Beefy' },
47
+ {
48
+ pool: 'Beefy_compoundUsdc_Optimism',
49
+ chain: 'Optimism',
50
+ protocol: 'Beefy',
51
+ },
52
+ {
53
+ pool: 'Beefy_compoundUsdc_Arbitrum',
54
+ chain: 'Arbitrum',
55
+ protocol: 'Beefy',
56
+ },
57
+ {
58
+ pool: 'ERC4626_morphoClearstarHighYieldUsdc_Ethereum',
59
+ chain: 'Ethereum',
60
+ protocol: 'ERC4626',
61
+ blockDepositReason: 'AT_CAPACITY',
62
+ blockWithdrawReason: 'LOW_LIQUIDITY',
63
+ },
64
+ {
65
+ pool: 'ERC4626_morphoSeamlessUsdcVault_Base',
66
+ chain: 'Base',
67
+ protocol: 'ERC4626',
68
+ blockDepositReason: 'AT_CAPACITY',
69
+ },
70
+ { pool: 'Compound_Arbitrum', chain: 'Arbitrum', protocol: 'Compound' },
71
+ { pool: 'Compound_Base', chain: 'Base', protocol: 'Compound' },
72
+ { pool: 'Compound_Ethereum', chain: 'Ethereum', protocol: 'Compound' },
73
+ { pool: 'Compound_Optimism', chain: 'Optimism', protocol: 'Compound' },
74
+ { pool: 'USDN', chain: 'noble', protocol: 'USDN' },
75
+ { pool: 'USDNVault', chain: 'noble', protocol: 'USDN' },
76
+ ],
77
+ localPlaces: [
78
+ { id: '<Deposit>', chain: 'agoric' },
79
+ { id: '<Cash>', chain: 'agoric' },
80
+ { id: '+agoric', chain: 'agoric' },
81
+ ],
82
+ links: [
83
+ // USDN costs a fee to get into
84
+ {
85
+ src: '@noble',
86
+ dest: 'USDN',
87
+ transfer: 'local',
88
+ variableFeeBps: 10,
89
+ timeSec: 0,
90
+ feeMode: 'toUSDN',
91
+ },
92
+ {
93
+ src: '@noble',
94
+ dest: 'USDNVault',
95
+ transfer: 'local',
96
+ variableFeeBps: 10,
97
+ timeSec: 0,
98
+ feeMode: 'toUSDN',
99
+ },
100
+
101
+ // CCTP slow (inbound auto-forward compressed: EVM -> @agoric)
102
+ // Latency kept at 1080s (assuming IBC forward overlaps); adjust if sequential.
103
+ {
104
+ src: '@Arbitrum',
105
+ dest: '@agoric',
106
+ transfer: 'cctpToNoble',
107
+ variableFeeBps: 0,
108
+ timeSec: 1080,
109
+ feeMode: 'evmToNoble',
110
+ },
111
+ {
112
+ src: '@Avalanche',
113
+ dest: '@agoric',
114
+ transfer: 'cctpToNoble',
115
+ variableFeeBps: 0,
116
+ timeSec: 30, // Avalanche has instant finality (~7 seconds observed)
117
+ feeMode: 'evmToNoble',
118
+ },
119
+ {
120
+ src: '@Ethereum',
121
+ dest: '@agoric',
122
+ transfer: 'cctpToNoble',
123
+ variableFeeBps: 0,
124
+ timeSec: 1080,
125
+ feeMode: 'evmToNoble',
126
+ },
127
+ {
128
+ src: '@Optimism',
129
+ dest: '@agoric',
130
+ transfer: 'cctpToNoble',
131
+ variableFeeBps: 0,
132
+ timeSec: 1080,
133
+ feeMode: 'evmToNoble',
134
+ },
135
+ {
136
+ src: '@Base',
137
+ dest: '@agoric',
138
+ transfer: 'cctpToNoble',
139
+ variableFeeBps: 0,
140
+ timeSec: 1080,
141
+ feeMode: 'evmToNoble',
142
+ },
143
+ // CCTP return (fast on return path); 1 USDC minimum
144
+ {
145
+ src: '@noble',
146
+ dest: '@Arbitrum',
147
+ transfer: 'cctpFromNoble',
148
+ variableFeeBps: 0,
149
+ timeSec: 20,
150
+ min: 1_000_000n,
151
+ feeMode: 'makeEvmAccount',
152
+ },
153
+ {
154
+ src: '@noble',
155
+ dest: '@Avalanche',
156
+ transfer: 'cctpFromNoble',
157
+ variableFeeBps: 0,
158
+ timeSec: 20,
159
+ min: 1_000_000n,
160
+ feeMode: 'makeEvmAccount',
161
+ },
162
+ {
163
+ src: '@noble',
164
+ dest: '@Ethereum',
165
+ transfer: 'cctpFromNoble',
166
+ variableFeeBps: 0,
167
+ timeSec: 20,
168
+ min: 1_000_000n,
169
+ feeMode: 'makeEvmAccount',
170
+ },
171
+ {
172
+ src: '@noble',
173
+ dest: '@Optimism',
174
+ transfer: 'cctpFromNoble',
175
+ variableFeeBps: 0,
176
+ timeSec: 20,
177
+ min: 1_000_000n,
178
+ feeMode: 'makeEvmAccount',
179
+ },
180
+ {
181
+ src: '@noble',
182
+ dest: '@Base',
183
+ transfer: 'cctpFromNoble',
184
+ variableFeeBps: 0,
185
+ timeSec: 20,
186
+ min: 1_000_000n,
187
+ feeMode: 'makeEvmAccount',
188
+ },
189
+ // IBC connectivity (explicit both directions required for USDN and other noble-origin flows)
190
+ {
191
+ src: '@agoric',
192
+ dest: '@noble',
193
+ transfer: 'ibc',
194
+ variableFeeBps: 0,
195
+ timeSec: 10,
196
+ },
197
+ {
198
+ src: '@noble',
199
+ dest: '@agoric',
200
+ transfer: 'ibc',
201
+ variableFeeBps: 0,
202
+ timeSec: 10,
203
+ },
204
+
205
+ // CCTPv2 direct EVM-to-EVM routes (full mesh connectivity)
206
+ // Estimated time: ~13-60 seconds depending on finality threshold
207
+ // Note: CCTPv2 contracts must be deployed on both source and destination chains
208
+
209
+ // Arbitrum ↔ other EVM chains
210
+ {
211
+ src: '@Arbitrum',
212
+ dest: '@Ethereum',
213
+ transfer: 'cctpV2',
214
+ variableFeeBps: 0,
215
+ timeSec: 60,
216
+ min: 100_000n,
217
+ feeMode: 'evmToEvm',
218
+ },
219
+ {
220
+ src: '@Ethereum',
221
+ dest: '@Arbitrum',
222
+ transfer: 'cctpV2',
223
+ variableFeeBps: 0,
224
+ timeSec: 60,
225
+ min: 100_000n,
226
+ feeMode: 'evmToEvm',
227
+ },
228
+ {
229
+ src: '@Arbitrum',
230
+ dest: '@Base',
231
+ transfer: 'cctpV2',
232
+ variableFeeBps: 0,
233
+ timeSec: 60,
234
+ min: 100_000n,
235
+ feeMode: 'evmToEvm',
236
+ },
237
+ {
238
+ src: '@Base',
239
+ dest: '@Arbitrum',
240
+ transfer: 'cctpV2',
241
+ variableFeeBps: 0,
242
+ timeSec: 60,
243
+ min: 100_000n,
244
+ feeMode: 'evmToEvm',
245
+ },
246
+ {
247
+ src: '@Arbitrum',
248
+ dest: '@Avalanche',
249
+ transfer: 'cctpV2',
250
+ variableFeeBps: 0,
251
+ timeSec: 30, // Avalanche has instant finality
252
+ min: 100_000n,
253
+ feeMode: 'evmToEvm',
254
+ },
255
+ {
256
+ src: '@Avalanche',
257
+ dest: '@Arbitrum',
258
+ transfer: 'cctpV2',
259
+ variableFeeBps: 0,
260
+ timeSec: 60,
261
+ min: 100_000n,
262
+ feeMode: 'evmToEvm',
263
+ },
264
+ {
265
+ src: '@Arbitrum',
266
+ dest: '@Optimism',
267
+ transfer: 'cctpV2',
268
+ variableFeeBps: 0,
269
+ timeSec: 60,
270
+ min: 100_000n,
271
+ feeMode: 'evmToEvm',
272
+ },
273
+ {
274
+ src: '@Optimism',
275
+ dest: '@Arbitrum',
276
+ transfer: 'cctpV2',
277
+ variableFeeBps: 0,
278
+ timeSec: 60,
279
+ min: 100_000n,
280
+ feeMode: 'evmToEvm',
281
+ },
282
+
283
+ // Base ↔ other EVM chains (excluding Arbitrum, already defined)
284
+ {
285
+ src: '@Base',
286
+ dest: '@Ethereum',
287
+ transfer: 'cctpV2',
288
+ variableFeeBps: 0,
289
+ timeSec: 60,
290
+ min: 100_000n,
291
+ feeMode: 'evmToEvm',
292
+ },
293
+ {
294
+ src: '@Ethereum',
295
+ dest: '@Base',
296
+ transfer: 'cctpV2',
297
+ variableFeeBps: 0,
298
+ timeSec: 60,
299
+ min: 100_000n,
300
+ feeMode: 'evmToEvm',
301
+ },
302
+ {
303
+ src: '@Base',
304
+ dest: '@Avalanche',
305
+ transfer: 'cctpV2',
306
+ variableFeeBps: 0,
307
+ timeSec: 30, // Avalanche has instant finality
308
+ min: 100_000n,
309
+ feeMode: 'evmToEvm',
310
+ },
311
+ {
312
+ src: '@Avalanche',
313
+ dest: '@Base',
314
+ transfer: 'cctpV2',
315
+ variableFeeBps: 0,
316
+ timeSec: 60,
317
+ min: 100_000n,
318
+ feeMode: 'evmToEvm',
319
+ },
320
+ {
321
+ src: '@Base',
322
+ dest: '@Optimism',
323
+ transfer: 'cctpV2',
324
+ variableFeeBps: 0,
325
+ timeSec: 60,
326
+ min: 100_000n,
327
+ feeMode: 'evmToEvm',
328
+ },
329
+ {
330
+ src: '@Optimism',
331
+ dest: '@Base',
332
+ transfer: 'cctpV2',
333
+ variableFeeBps: 0,
334
+ timeSec: 60,
335
+ min: 100_000n,
336
+ feeMode: 'evmToEvm',
337
+ },
338
+
339
+ // Ethereum ↔ other EVM chains (excluding Arbitrum, Base already defined)
340
+ {
341
+ src: '@Ethereum',
342
+ dest: '@Avalanche',
343
+ transfer: 'cctpV2',
344
+ variableFeeBps: 0,
345
+ timeSec: 30, // Avalanche has instant finality
346
+ min: 100_000n,
347
+ feeMode: 'evmToEvm',
348
+ },
349
+ {
350
+ src: '@Avalanche',
351
+ dest: '@Ethereum',
352
+ transfer: 'cctpV2',
353
+ variableFeeBps: 0,
354
+ timeSec: 60,
355
+ min: 100_000n,
356
+ feeMode: 'evmToEvm',
357
+ },
358
+ {
359
+ src: '@Ethereum',
360
+ dest: '@Optimism',
361
+ transfer: 'cctpV2',
362
+ variableFeeBps: 0,
363
+ timeSec: 60,
364
+ min: 100_000n,
365
+ feeMode: 'evmToEvm',
366
+ },
367
+ {
368
+ src: '@Optimism',
369
+ dest: '@Ethereum',
370
+ transfer: 'cctpV2',
371
+ variableFeeBps: 0,
372
+ timeSec: 60,
373
+ min: 100_000n,
374
+ feeMode: 'evmToEvm',
375
+ },
376
+
377
+ // Avalanche ↔ Optimism (remaining pair)
378
+ {
379
+ src: '@Avalanche',
380
+ dest: '@Optimism',
381
+ transfer: 'cctpV2',
382
+ variableFeeBps: 0,
383
+ timeSec: 60,
384
+ min: 100_000n,
385
+ feeMode: 'evmToEvm',
386
+ },
387
+ {
388
+ src: '@Optimism',
389
+ dest: '@Avalanche',
390
+ transfer: 'cctpV2',
391
+ variableFeeBps: 0,
392
+ timeSec: 30, // Avalanche has instant finality
393
+ min: 100_000n,
394
+ feeMode: 'evmToEvm',
395
+ },
396
+ ],
397
+ });
398
+
399
+ export default PROD_NETWORK;
@@ -0,0 +1,289 @@
1
+ import type { AxelarChain, SupportedChain, YieldProtocol } from './constants.js';
2
+ import type { InstrumentId } from './instruments.js';
3
+ import type { AssetPlaceRef } from './types.js';
4
+ export type PoolPlaceInfo = {
5
+ protocol: 'USDN';
6
+ vault: null | 1;
7
+ chainName: 'noble';
8
+ } | {
9
+ protocol: YieldProtocol;
10
+ chainName: AxelarChain;
11
+ };
12
+ export declare const BeefyPoolPlaces: {
13
+ readonly Beefy_re7_Avalanche: {
14
+ readonly protocol: "Beefy";
15
+ readonly chainName: "Avalanche";
16
+ };
17
+ readonly Beefy_morphoGauntletUsdc_Ethereum: {
18
+ readonly protocol: "Beefy";
19
+ readonly chainName: "Ethereum";
20
+ };
21
+ readonly Beefy_morphoSmokehouseUsdc_Ethereum: {
22
+ readonly protocol: "Beefy";
23
+ readonly chainName: "Ethereum";
24
+ };
25
+ readonly Beefy_morphoSeamlessUsdc_Base: {
26
+ readonly protocol: "Beefy";
27
+ readonly chainName: "Base";
28
+ };
29
+ readonly Beefy_compoundUsdc_Optimism: {
30
+ readonly protocol: "Beefy";
31
+ readonly chainName: "Optimism";
32
+ };
33
+ readonly Beefy_compoundUsdc_Arbitrum: {
34
+ readonly protocol: "Beefy";
35
+ readonly chainName: "Arbitrum";
36
+ };
37
+ };
38
+ export type BeefyInstrumentId = keyof typeof BeefyPoolPlaces;
39
+ export declare const ERC4626PoolPlaces: {
40
+ readonly ERC4626_vaultU2_Ethereum: {
41
+ readonly protocol: "ERC4626";
42
+ readonly chainName: "Ethereum";
43
+ };
44
+ readonly ERC4626_morphoClearstarHighYieldUsdc_Ethereum: {
45
+ readonly protocol: "ERC4626";
46
+ readonly chainName: "Ethereum";
47
+ };
48
+ readonly ERC4626_morphoClearstarUsdcCore_Ethereum: {
49
+ readonly protocol: "ERC4626";
50
+ readonly chainName: "Ethereum";
51
+ };
52
+ readonly ERC4626_morphoGauntletUsdcRwa_Ethereum: {
53
+ readonly protocol: "ERC4626";
54
+ readonly chainName: "Ethereum";
55
+ };
56
+ readonly ERC4626_morphoSteakhouseHighYieldInstant_Ethereum: {
57
+ readonly protocol: "ERC4626";
58
+ readonly chainName: "Ethereum";
59
+ };
60
+ readonly ERC4626_morphoClearstarInstitutionalUsdc_Ethereum: {
61
+ readonly protocol: "ERC4626";
62
+ readonly chainName: "Ethereum";
63
+ };
64
+ readonly ERC4626_morphoClearstarUsdcReactor_Ethereum: {
65
+ readonly protocol: "ERC4626";
66
+ readonly chainName: "Ethereum";
67
+ };
68
+ readonly ERC4626_morphoAlphaUsdcCore_Ethereum: {
69
+ readonly protocol: "ERC4626";
70
+ readonly chainName: "Ethereum";
71
+ };
72
+ readonly ERC4626_morphoResolvUsdc_Ethereum: {
73
+ readonly protocol: "ERC4626";
74
+ readonly chainName: "Ethereum";
75
+ };
76
+ readonly ERC4626_morphoGauntletUsdcFrontier_Ethereum: {
77
+ readonly protocol: "ERC4626";
78
+ readonly chainName: "Ethereum";
79
+ };
80
+ readonly ERC4626_morphoHyperithmUsdcMidcurve_Ethereum: {
81
+ readonly protocol: "ERC4626";
82
+ readonly chainName: "Ethereum";
83
+ };
84
+ readonly ERC4626_morphoHyperithmUsdcDegen_Ethereum: {
85
+ readonly protocol: "ERC4626";
86
+ readonly chainName: "Ethereum";
87
+ };
88
+ readonly ERC4626_morphoGauntletUsdcCore_Ethereum: {
89
+ readonly protocol: "ERC4626";
90
+ readonly chainName: "Ethereum";
91
+ };
92
+ readonly ERC4626_morphoSteakhousePrimeUsdc_Base: {
93
+ readonly protocol: "ERC4626";
94
+ readonly chainName: "Base";
95
+ };
96
+ readonly ERC4626_morphoSteakhouseUsdc_Base: {
97
+ readonly protocol: "ERC4626";
98
+ readonly chainName: "Base";
99
+ };
100
+ readonly ERC4626_morphoGauntletUsdcPrime_Base: {
101
+ readonly protocol: "ERC4626";
102
+ readonly chainName: "Base";
103
+ };
104
+ readonly ERC4626_morphoSeamlessUsdcVault_Base: {
105
+ readonly protocol: "ERC4626";
106
+ readonly chainName: "Base";
107
+ };
108
+ readonly ERC4626_morphoSteakhouseHighYieldUsdc_Arbitrum: {
109
+ readonly protocol: "ERC4626";
110
+ readonly chainName: "Arbitrum";
111
+ };
112
+ readonly ERC4626_morphoGauntletUsdcCore_Arbitrum: {
113
+ readonly protocol: "ERC4626";
114
+ readonly chainName: "Arbitrum";
115
+ };
116
+ readonly ERC4626_morphoHyperithmUsdc_Arbitrum: {
117
+ readonly protocol: "ERC4626";
118
+ readonly chainName: "Arbitrum";
119
+ };
120
+ readonly ERC4626_morphoGauntletUsdcPrime_Optimism: {
121
+ readonly protocol: "ERC4626";
122
+ readonly chainName: "Optimism";
123
+ };
124
+ };
125
+ export type ERC4626InstrumentId = keyof typeof ERC4626PoolPlaces;
126
+ export declare const PoolPlaces: {
127
+ readonly ERC4626_vaultU2_Ethereum: {
128
+ readonly protocol: "ERC4626";
129
+ readonly chainName: "Ethereum";
130
+ };
131
+ readonly ERC4626_morphoClearstarHighYieldUsdc_Ethereum: {
132
+ readonly protocol: "ERC4626";
133
+ readonly chainName: "Ethereum";
134
+ };
135
+ readonly ERC4626_morphoClearstarUsdcCore_Ethereum: {
136
+ readonly protocol: "ERC4626";
137
+ readonly chainName: "Ethereum";
138
+ };
139
+ readonly ERC4626_morphoGauntletUsdcRwa_Ethereum: {
140
+ readonly protocol: "ERC4626";
141
+ readonly chainName: "Ethereum";
142
+ };
143
+ readonly ERC4626_morphoSteakhouseHighYieldInstant_Ethereum: {
144
+ readonly protocol: "ERC4626";
145
+ readonly chainName: "Ethereum";
146
+ };
147
+ readonly ERC4626_morphoClearstarInstitutionalUsdc_Ethereum: {
148
+ readonly protocol: "ERC4626";
149
+ readonly chainName: "Ethereum";
150
+ };
151
+ readonly ERC4626_morphoClearstarUsdcReactor_Ethereum: {
152
+ readonly protocol: "ERC4626";
153
+ readonly chainName: "Ethereum";
154
+ };
155
+ readonly ERC4626_morphoAlphaUsdcCore_Ethereum: {
156
+ readonly protocol: "ERC4626";
157
+ readonly chainName: "Ethereum";
158
+ };
159
+ readonly ERC4626_morphoResolvUsdc_Ethereum: {
160
+ readonly protocol: "ERC4626";
161
+ readonly chainName: "Ethereum";
162
+ };
163
+ readonly ERC4626_morphoGauntletUsdcFrontier_Ethereum: {
164
+ readonly protocol: "ERC4626";
165
+ readonly chainName: "Ethereum";
166
+ };
167
+ readonly ERC4626_morphoHyperithmUsdcMidcurve_Ethereum: {
168
+ readonly protocol: "ERC4626";
169
+ readonly chainName: "Ethereum";
170
+ };
171
+ readonly ERC4626_morphoHyperithmUsdcDegen_Ethereum: {
172
+ readonly protocol: "ERC4626";
173
+ readonly chainName: "Ethereum";
174
+ };
175
+ readonly ERC4626_morphoGauntletUsdcCore_Ethereum: {
176
+ readonly protocol: "ERC4626";
177
+ readonly chainName: "Ethereum";
178
+ };
179
+ readonly ERC4626_morphoSteakhousePrimeUsdc_Base: {
180
+ readonly protocol: "ERC4626";
181
+ readonly chainName: "Base";
182
+ };
183
+ readonly ERC4626_morphoSteakhouseUsdc_Base: {
184
+ readonly protocol: "ERC4626";
185
+ readonly chainName: "Base";
186
+ };
187
+ readonly ERC4626_morphoGauntletUsdcPrime_Base: {
188
+ readonly protocol: "ERC4626";
189
+ readonly chainName: "Base";
190
+ };
191
+ readonly ERC4626_morphoSeamlessUsdcVault_Base: {
192
+ readonly protocol: "ERC4626";
193
+ readonly chainName: "Base";
194
+ };
195
+ readonly ERC4626_morphoSteakhouseHighYieldUsdc_Arbitrum: {
196
+ readonly protocol: "ERC4626";
197
+ readonly chainName: "Arbitrum";
198
+ };
199
+ readonly ERC4626_morphoGauntletUsdcCore_Arbitrum: {
200
+ readonly protocol: "ERC4626";
201
+ readonly chainName: "Arbitrum";
202
+ };
203
+ readonly ERC4626_morphoHyperithmUsdc_Arbitrum: {
204
+ readonly protocol: "ERC4626";
205
+ readonly chainName: "Arbitrum";
206
+ };
207
+ readonly ERC4626_morphoGauntletUsdcPrime_Optimism: {
208
+ readonly protocol: "ERC4626";
209
+ readonly chainName: "Optimism";
210
+ };
211
+ readonly Beefy_re7_Avalanche: {
212
+ readonly protocol: "Beefy";
213
+ readonly chainName: "Avalanche";
214
+ };
215
+ readonly Beefy_morphoGauntletUsdc_Ethereum: {
216
+ readonly protocol: "Beefy";
217
+ readonly chainName: "Ethereum";
218
+ };
219
+ readonly Beefy_morphoSmokehouseUsdc_Ethereum: {
220
+ readonly protocol: "Beefy";
221
+ readonly chainName: "Ethereum";
222
+ };
223
+ readonly Beefy_morphoSeamlessUsdc_Base: {
224
+ readonly protocol: "Beefy";
225
+ readonly chainName: "Base";
226
+ };
227
+ readonly Beefy_compoundUsdc_Optimism: {
228
+ readonly protocol: "Beefy";
229
+ readonly chainName: "Optimism";
230
+ };
231
+ readonly Beefy_compoundUsdc_Arbitrum: {
232
+ readonly protocol: "Beefy";
233
+ readonly chainName: "Arbitrum";
234
+ };
235
+ readonly USDN: {
236
+ readonly protocol: "USDN";
237
+ readonly vault: null;
238
+ readonly chainName: "noble";
239
+ };
240
+ readonly USDNVault: {
241
+ readonly protocol: "USDN";
242
+ readonly vault: 1;
243
+ readonly chainName: "noble";
244
+ };
245
+ readonly Aave_Avalanche: {
246
+ readonly protocol: "Aave";
247
+ readonly chainName: "Avalanche";
248
+ };
249
+ readonly Aave_Ethereum: {
250
+ readonly protocol: "Aave";
251
+ readonly chainName: "Ethereum";
252
+ };
253
+ readonly Aave_Optimism: {
254
+ readonly protocol: "Aave";
255
+ readonly chainName: "Optimism";
256
+ };
257
+ readonly Aave_Arbitrum: {
258
+ readonly protocol: "Aave";
259
+ readonly chainName: "Arbitrum";
260
+ };
261
+ readonly Aave_Base: {
262
+ readonly protocol: "Aave";
263
+ readonly chainName: "Base";
264
+ };
265
+ readonly Compound_Ethereum: {
266
+ readonly protocol: "Compound";
267
+ readonly chainName: "Ethereum";
268
+ };
269
+ readonly Compound_Optimism: {
270
+ readonly protocol: "Compound";
271
+ readonly chainName: "Optimism";
272
+ };
273
+ readonly Compound_Arbitrum: {
274
+ readonly protocol: "Compound";
275
+ readonly chainName: "Arbitrum";
276
+ };
277
+ readonly Compound_Base: {
278
+ readonly protocol: "Compound";
279
+ readonly chainName: "Base";
280
+ };
281
+ };
282
+ export type PoolKey = InstrumentId;
283
+ /**
284
+ * Without regard to supported chains, is the input plausibly an InstrumentId
285
+ * (i.e., does it start with an ASCII letter)?
286
+ */
287
+ export declare const isInstrumentId: (ref: string) => ref is InstrumentId;
288
+ export declare const chainOf: (id: AssetPlaceRef) => SupportedChain;
289
+ //# sourceMappingURL=places.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"places.d.ts","sourceRoot":"","sources":["places.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,WAAW,EACX,cAAc,EACd,aAAa,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAchD,MAAM,MAAM,aAAa,GACrB;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,GACzD;IAAE,QAAQ,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,WAAW,CAAA;CAAE,CAAC;AAGxD,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAyBqC,CAAC;AAGlE,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,eAAe,CAAC;AAE7D,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqFmC,CAAC;AAGlE,MAAM,MAAM,mBAAmB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAEjE,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAciC,CAAC;AAGzD,MAAM,MAAM,OAAO,GAAG,YAAY,CAAC;AAEnC;;;GAGG;AACH,eAAO,MAAM,cAAc,GAAI,KAAK,MAAM,KAAG,GAAG,IAAI,YAC5B,CAAC;AAIzB,eAAO,MAAM,OAAO,GAAI,IAAI,aAAa,KAAG,cAa3C,CAAC"}