@reserve-protocol/dtf-cli 0.1.0 → 0.1.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 (97) hide show
  1. package/dist/index.js +27807 -143
  2. package/package.json +3 -3
  3. package/dist/commands/basket.d.ts +0 -3
  4. package/dist/commands/basket.d.ts.map +0 -1
  5. package/dist/commands/basket.js +0 -131
  6. package/dist/commands/basket.js.map +0 -1
  7. package/dist/commands/deploy.d.ts +0 -3
  8. package/dist/commands/deploy.d.ts.map +0 -1
  9. package/dist/commands/deploy.js +0 -495
  10. package/dist/commands/deploy.js.map +0 -1
  11. package/dist/commands/discover.d.ts +0 -3
  12. package/dist/commands/discover.d.ts.map +0 -1
  13. package/dist/commands/discover.js +0 -141
  14. package/dist/commands/discover.js.map +0 -1
  15. package/dist/commands/earn.d.ts +0 -3
  16. package/dist/commands/earn.d.ts.map +0 -1
  17. package/dist/commands/earn.js +0 -42
  18. package/dist/commands/earn.js.map +0 -1
  19. package/dist/commands/fees.d.ts +0 -3
  20. package/dist/commands/fees.d.ts.map +0 -1
  21. package/dist/commands/fees.js +0 -82
  22. package/dist/commands/fees.js.map +0 -1
  23. package/dist/commands/forum.d.ts +0 -3
  24. package/dist/commands/forum.d.ts.map +0 -1
  25. package/dist/commands/forum.js +0 -304
  26. package/dist/commands/forum.js.map +0 -1
  27. package/dist/commands/governance.d.ts +0 -3
  28. package/dist/commands/governance.d.ts.map +0 -1
  29. package/dist/commands/governance.js +0 -97
  30. package/dist/commands/governance.js.map +0 -1
  31. package/dist/commands/info.d.ts +0 -3
  32. package/dist/commands/info.d.ts.map +0 -1
  33. package/dist/commands/info.js +0 -114
  34. package/dist/commands/info.js.map +0 -1
  35. package/dist/commands/prices.d.ts +0 -3
  36. package/dist/commands/prices.d.ts.map +0 -1
  37. package/dist/commands/prices.js +0 -71
  38. package/dist/commands/prices.js.map +0 -1
  39. package/dist/commands/proposals.d.ts +0 -3
  40. package/dist/commands/proposals.d.ts.map +0 -1
  41. package/dist/commands/proposals.js +0 -261
  42. package/dist/commands/proposals.js.map +0 -1
  43. package/dist/commands/quote.d.ts +0 -3
  44. package/dist/commands/quote.d.ts.map +0 -1
  45. package/dist/commands/quote.js +0 -100
  46. package/dist/commands/quote.js.map +0 -1
  47. package/dist/commands/rebalance-history.d.ts +0 -24
  48. package/dist/commands/rebalance-history.d.ts.map +0 -1
  49. package/dist/commands/rebalance-history.js +0 -229
  50. package/dist/commands/rebalance-history.js.map +0 -1
  51. package/dist/commands/rebalance.d.ts +0 -3
  52. package/dist/commands/rebalance.d.ts.map +0 -1
  53. package/dist/commands/rebalance.js +0 -162
  54. package/dist/commands/rebalance.js.map +0 -1
  55. package/dist/commands/revenue.d.ts +0 -3
  56. package/dist/commands/revenue.d.ts.map +0 -1
  57. package/dist/commands/revenue.js +0 -135
  58. package/dist/commands/revenue.js.map +0 -1
  59. package/dist/commands/roles.d.ts +0 -3
  60. package/dist/commands/roles.d.ts.map +0 -1
  61. package/dist/commands/roles.js +0 -53
  62. package/dist/commands/roles.js.map +0 -1
  63. package/dist/commands/rsr-burns.d.ts +0 -3
  64. package/dist/commands/rsr-burns.d.ts.map +0 -1
  65. package/dist/commands/rsr-burns.js +0 -134
  66. package/dist/commands/rsr-burns.js.map +0 -1
  67. package/dist/commands/staking.d.ts +0 -3
  68. package/dist/commands/staking.d.ts.map +0 -1
  69. package/dist/commands/staking.js +0 -102
  70. package/dist/commands/staking.js.map +0 -1
  71. package/dist/index.d.ts +0 -3
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/index.js.map +0 -1
  74. package/dist/lib/cache.d.ts +0 -4
  75. package/dist/lib/cache.d.ts.map +0 -1
  76. package/dist/lib/cache.js +0 -58
  77. package/dist/lib/cache.js.map +0 -1
  78. package/dist/lib/cached-config.d.ts +0 -12
  79. package/dist/lib/cached-config.d.ts.map +0 -1
  80. package/dist/lib/cached-config.js +0 -18
  81. package/dist/lib/cached-config.js.map +0 -1
  82. package/dist/lib/config.d.ts +0 -22
  83. package/dist/lib/config.d.ts.map +0 -1
  84. package/dist/lib/config.js +0 -94
  85. package/dist/lib/config.js.map +0 -1
  86. package/dist/lib/dtf-registry.d.ts +0 -19
  87. package/dist/lib/dtf-registry.d.ts.map +0 -1
  88. package/dist/lib/dtf-registry.js +0 -54
  89. package/dist/lib/dtf-registry.js.map +0 -1
  90. package/dist/lib/output.d.ts +0 -16
  91. package/dist/lib/output.d.ts.map +0 -1
  92. package/dist/lib/output.js +0 -73
  93. package/dist/lib/output.js.map +0 -1
  94. package/dist/lib/token-symbols.d.ts +0 -7
  95. package/dist/lib/token-symbols.d.ts.map +0 -1
  96. package/dist/lib/token-symbols.js +0 -44
  97. package/dist/lib/token-symbols.js.map +0 -1
@@ -1,304 +0,0 @@
1
- import { printHeader, printJson, printTable } from '../lib/output';
2
- const FORUM_BASE = 'https://forum.reserve.org';
3
- // -- Discourse API --
4
- async function fetchJson(url) {
5
- const res = await fetch(url, {
6
- headers: { Accept: 'application/json' },
7
- });
8
- if (!res.ok) {
9
- throw new Error(`Forum API error: ${res.status} ${res.statusText}`);
10
- }
11
- return res.json();
12
- }
13
- function buildCategoryMap(categories) {
14
- const map = {};
15
- for (const cat of categories) {
16
- map[cat.id] = cat.name;
17
- }
18
- return map;
19
- }
20
- function parseTopic(raw, categoryMap) {
21
- return {
22
- id: raw.id,
23
- title: raw.title ?? raw.fancy_title ?? '',
24
- slug: raw.slug ?? '',
25
- categoryId: raw.category_id ?? 0,
26
- categoryName: categoryMap[raw.category_id] ?? 'Unknown',
27
- views: raw.views ?? 0,
28
- replyCount: raw.reply_count ?? 0,
29
- likeCount: raw.like_count ?? 0,
30
- postsCount: raw.posts_count ?? 0,
31
- createdAt: raw.created_at ?? '',
32
- lastPostedAt: raw.last_posted_at ?? raw.bumped_at ?? '',
33
- pinned: raw.pinned ?? false,
34
- closed: raw.closed ?? false,
35
- };
36
- }
37
- function stripHtml(html) {
38
- return html
39
- .replace(/<[^>]+>/g, '')
40
- .replace(/&amp;/g, '&')
41
- .replace(/&lt;/g, '<')
42
- .replace(/&gt;/g, '>')
43
- .replace(/&quot;/g, '"')
44
- .replace(/&#39;/g, "'")
45
- .replace(/\n{3,}/g, '\n\n')
46
- .trim();
47
- }
48
- async function fetchCategoryMap() {
49
- const data = await fetchJson(`${FORUM_BASE}/categories.json`);
50
- const categories = data?.category_list?.categories ?? [];
51
- const map = {};
52
- for (const cat of categories) {
53
- map[cat.id] = cat.name;
54
- // WHY: Discourse subcategories can be inline or need separate fetch.
55
- // subcategory_ids tells us which IDs exist; subcategory_list has the data if present.
56
- if (cat.subcategory_list) {
57
- for (const sub of cat.subcategory_list) {
58
- map[sub.id] = sub.name;
59
- }
60
- }
61
- // Some subcategories are only referenced by ID but not in subcategory_list.
62
- // Map them to parent name as fallback.
63
- if (cat.subcategory_ids) {
64
- for (const subId of cat.subcategory_ids) {
65
- if (!map[subId])
66
- map[subId] = cat.name;
67
- }
68
- }
69
- }
70
- return map;
71
- }
72
- async function fetchTopics(period = 'monthly') {
73
- const [topicsData, categoryMap] = await Promise.all([
74
- fetchJson(`${FORUM_BASE}/top/${period}.json`),
75
- fetchCategoryMap(),
76
- ]);
77
- const rawTopics = topicsData?.topic_list?.topics ?? [];
78
- return rawTopics.map((t) => parseTopic(t, categoryMap));
79
- }
80
- async function fetchLatestTopics() {
81
- const [topicsData, categoryMap] = await Promise.all([
82
- fetchJson(`${FORUM_BASE}/latest.json`),
83
- fetchCategoryMap(),
84
- ]);
85
- const rawTopics = topicsData?.topic_list?.topics ?? [];
86
- return rawTopics.map((t) => parseTopic(t, categoryMap));
87
- }
88
- async function fetchTopicDetail(topicId) {
89
- const [data, categoryMap] = await Promise.all([
90
- fetchJson(`${FORUM_BASE}/t/${topicId}.json`),
91
- fetchCategoryMap(),
92
- ]);
93
- const base = parseTopic(data, categoryMap);
94
- const posts = data?.post_stream?.posts ?? [];
95
- const firstPost = posts[0];
96
- const body = firstPost?.cooked
97
- ? stripHtml(firstPost.cooked)
98
- : '';
99
- const author = firstPost?.username ?? '';
100
- const participants = data?.details?.participants?.map((p) => p.username) ?? [];
101
- return {
102
- ...base,
103
- body,
104
- author,
105
- participants,
106
- url: `${FORUM_BASE}/t/${base.slug}/${base.id}`,
107
- };
108
- }
109
- async function searchForum(query) {
110
- const data = await fetchJson(`${FORUM_BASE}/search.json?q=${encodeURIComponent(query)}`);
111
- // WHY: Posts have empty `name` — topic titles live in the separate `topics` array.
112
- // Build a lookup map to resolve topic_id → title.
113
- const topicTitleMap = {};
114
- for (const t of data?.topics ?? []) {
115
- topicTitleMap[t.id] = t.title ?? t.fancy_title ?? '';
116
- }
117
- const posts = data?.posts ?? [];
118
- return posts.map((p) => ({
119
- topicId: p.topic_id,
120
- title: topicTitleMap[p.topic_id] ?? p.name ?? '',
121
- blurb: p.blurb ?? '',
122
- username: p.username ?? '',
123
- createdAt: p.created_at ?? '',
124
- likeCount: p.like_count ?? 0,
125
- }));
126
- }
127
- // -- Formatting --
128
- function formatDate(isoString) {
129
- if (!isoString)
130
- return '—';
131
- return isoString.slice(0, 10);
132
- }
133
- function truncate(str, max) {
134
- if (str.length <= max)
135
- return str;
136
- return str.slice(0, max - 1) + '…';
137
- }
138
- function topicTag(title) {
139
- const match = title.match(/^\[(RFC|IP|RIP)\]/);
140
- return match ? match[1] : '';
141
- }
142
- // -- Command --
143
- export async function forumCommand(config, rest) {
144
- // Parse subcommand from rest args
145
- const subcommand = rest[0] ?? '';
146
- const subArg = rest.slice(1).join(' ');
147
- // dtf forum search <query>
148
- if (subcommand === 'search') {
149
- if (!subArg) {
150
- throw new Error('Usage: dtf forum search <query>');
151
- }
152
- return searchSubcommand(subArg, config);
153
- }
154
- // dtf forum <number> — topic detail
155
- if (subcommand && /^\d+$/.test(subcommand)) {
156
- return topicSubcommand(Number(subcommand), config);
157
- }
158
- // dtf forum latest
159
- if (subcommand === 'latest') {
160
- return listSubcommand('latest', config);
161
- }
162
- // dtf forum (default) — monthly top topics
163
- return listSubcommand('monthly', config);
164
- }
165
- async function listSubcommand(mode, config) {
166
- const topics = mode === 'latest' ? await fetchLatestTopics() : await fetchTopics('monthly');
167
- // Filter out pinned "Welcome" type topics
168
- const filtered = topics.filter((t) => !t.pinned);
169
- if (config.json) {
170
- printJson({
171
- period: mode,
172
- count: filtered.length,
173
- topics: filtered.map((t) => ({
174
- id: t.id,
175
- title: t.title,
176
- tag: topicTag(t.title),
177
- category: t.categoryName,
178
- views: t.views,
179
- replies: t.replyCount,
180
- likes: t.likeCount,
181
- createdAt: t.createdAt,
182
- lastPostedAt: t.lastPostedAt,
183
- closed: t.closed,
184
- url: `${FORUM_BASE}/t/${t.slug}/${t.id}`,
185
- })),
186
- });
187
- return;
188
- }
189
- const label = mode === 'latest' ? 'Latest' : 'Monthly Top';
190
- printHeader(`Reserve Forum — ${label}`);
191
- console.log();
192
- if (filtered.length === 0) {
193
- console.log(' No topics found.');
194
- return;
195
- }
196
- printTable([
197
- { header: 'Tag', key: 'tag' },
198
- { header: 'Title', key: 'title' },
199
- { header: 'Category', key: 'category' },
200
- { header: 'Views', key: 'views', align: 'right' },
201
- { header: 'Replies', key: 'replies', align: 'right' },
202
- { header: 'Likes', key: 'likes', align: 'right' },
203
- { header: 'Last Activity', key: 'lastActivity' },
204
- ], filtered.map((t) => ({
205
- tag: topicTag(t.title),
206
- title: truncate(t.title.replace(/^\[(RFC|IP|RIP)\]\s*/, ''), 50),
207
- category: truncate(t.categoryName, 20),
208
- views: String(t.views),
209
- replies: String(t.replyCount),
210
- likes: String(t.likeCount),
211
- lastActivity: formatDate(t.lastPostedAt),
212
- })));
213
- console.log(`\n${filtered.length} topics. Use \`dtf forum <id>\` for details.`);
214
- }
215
- async function topicSubcommand(topicId, config) {
216
- const topic = await fetchTopicDetail(topicId);
217
- if (config.json) {
218
- printJson({
219
- id: topic.id,
220
- title: topic.title,
221
- tag: topicTag(topic.title),
222
- category: topic.categoryName,
223
- author: topic.author,
224
- participants: topic.participants,
225
- views: topic.views,
226
- replies: topic.replyCount,
227
- likes: topic.likeCount,
228
- createdAt: topic.createdAt,
229
- lastPostedAt: topic.lastPostedAt,
230
- closed: topic.closed,
231
- url: topic.url,
232
- body: topic.body,
233
- });
234
- return;
235
- }
236
- printHeader(topic.title);
237
- console.log();
238
- console.log(` Category ${topic.categoryName}`);
239
- console.log(` Author ${topic.author}`);
240
- console.log(` Created ${formatDate(topic.createdAt)}`);
241
- console.log(` Last Post ${formatDate(topic.lastPostedAt)}`);
242
- console.log(` Views ${topic.views}`);
243
- console.log(` Replies ${topic.replyCount}`);
244
- console.log(` Likes ${topic.likeCount}`);
245
- if (topic.closed)
246
- console.log(` Status CLOSED`);
247
- console.log(` URL ${topic.url}`);
248
- if (topic.participants.length > 0) {
249
- console.log(` Participants ${topic.participants.join(', ')}`);
250
- }
251
- console.log();
252
- // WHY: Truncate body to avoid flooding terminal. Agent can use --json for full text.
253
- const maxBodyLength = 2000;
254
- const body = topic.body.length > maxBodyLength
255
- ? topic.body.slice(0, maxBodyLength) + '\n\n[... truncated — use --json for full text]'
256
- : topic.body;
257
- console.log(body);
258
- }
259
- async function searchSubcommand(query, config) {
260
- const results = await searchForum(query);
261
- if (config.json) {
262
- printJson({
263
- query,
264
- count: results.length,
265
- results: results.map((r) => ({
266
- topicId: r.topicId,
267
- title: r.title,
268
- blurb: r.blurb,
269
- username: r.username,
270
- createdAt: r.createdAt,
271
- likes: r.likeCount,
272
- url: `${FORUM_BASE}/t/${r.topicId}`,
273
- })),
274
- });
275
- return;
276
- }
277
- printHeader(`Forum Search — "${query}"`);
278
- console.log();
279
- if (results.length === 0) {
280
- console.log(' No results found.');
281
- return;
282
- }
283
- // Deduplicate by topicId, keep first (most relevant) hit per topic
284
- const seen = new Set();
285
- const unique = results.filter((r) => {
286
- if (seen.has(r.topicId))
287
- return false;
288
- seen.add(r.topicId);
289
- return true;
290
- });
291
- printTable([
292
- { header: 'Title', key: 'title' },
293
- { header: 'By', key: 'by' },
294
- { header: 'Date', key: 'date' },
295
- { header: 'Likes', key: 'likes', align: 'right' },
296
- ], unique.slice(0, 15).map((r) => ({
297
- title: truncate(r.title || r.blurb.slice(0, 50), 55),
298
- by: r.username,
299
- date: formatDate(r.createdAt),
300
- likes: String(r.likeCount),
301
- })));
302
- console.log(`\n${unique.length} topics matched. Use \`dtf forum <id>\` for details.`);
303
- }
304
- //# sourceMappingURL=forum.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"forum.js","sourceRoot":"","sources":["../../src/commands/forum.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { CliConfig } from '../lib/config';
2
- export declare function governanceCommand(address: string, config: CliConfig): Promise<void>;
3
- //# sourceMappingURL=governance.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/commands/governance.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAW9C,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,iBAiHzE"}
@@ -1,97 +0,0 @@
1
- import { createDtfClients, fetchDtfConfig, readGovernanceSettings, } from '@reserve-protocol/dtf-sdk';
2
- import { fetchDtfConfigCached } from '../lib/cached-config';
3
- import { printHeader, printJson, printTable, formatAddress, formatDuration, chainLabel, } from '../lib/output';
4
- export async function governanceCommand(address, config) {
5
- const { publicClient } = createDtfClients({
6
- chainId: config.chainId,
7
- rpc: config.rpc,
8
- });
9
- const dtfConfig = await fetchDtfConfigCached(fetchDtfConfig, publicClient, config.chainId, address);
10
- const govs = [];
11
- if (dtfConfig.ownerGovernance) {
12
- govs.push({
13
- label: 'Owner',
14
- governor: dtfConfig.ownerGovernance.address,
15
- timelock: dtfConfig.ownerGovernance.timelockAddress,
16
- });
17
- }
18
- if (dtfConfig.tradingGovernance) {
19
- govs.push({
20
- label: 'Trading',
21
- governor: dtfConfig.tradingGovernance.address,
22
- timelock: dtfConfig.tradingGovernance.timelockAddress,
23
- });
24
- }
25
- if (dtfConfig.stTokenGovernance) {
26
- govs.push({
27
- label: 'Lock',
28
- governor: dtfConfig.stTokenGovernance.address,
29
- timelock: dtfConfig.stTokenGovernance.timelockAddress,
30
- });
31
- }
32
- if (govs.length === 0) {
33
- const msg = 'This DTF has no governance systems.';
34
- if (config.json) {
35
- printJson({ dtf: address, chain: config.chainId, chainLabel: chainLabel(config.chainId), governances: [] });
36
- }
37
- else {
38
- console.log(msg);
39
- }
40
- return;
41
- }
42
- const settings = await Promise.all(govs.map((g) => readGovernanceSettings(publicClient, g.governor, g.timelock)));
43
- if (config.json) {
44
- printJson({
45
- dtf: address,
46
- chain: config.chainId,
47
- chainLabel: chainLabel(config.chainId),
48
- governances: govs.map((g, i) => {
49
- const s = settings[i];
50
- const num = Number(s.quorumNumerator);
51
- const den = Number(s.quorumDenominator);
52
- return {
53
- label: g.label,
54
- governor: g.governor,
55
- timelock: g.timelock,
56
- votingDelay: s.votingDelay.toString(),
57
- votingDelayHuman: formatDuration(Number(s.votingDelay)),
58
- votingPeriod: s.votingPeriod.toString(),
59
- votingPeriodHuman: formatDuration(Number(s.votingPeriod)),
60
- proposalThreshold: s.proposalThreshold.toString(),
61
- proposalThresholdHuman: Number(s.proposalThreshold) / 1e18,
62
- quorumNumerator: s.quorumNumerator.toString(),
63
- quorumDenominator: s.quorumDenominator.toString(),
64
- quorumPercent: den > 0 ? (num / den) * 100 : 0,
65
- timelockMinDelay: s.timelockMinDelay.toString(),
66
- timelockMinDelayHuman: formatDuration(Number(s.timelockMinDelay)),
67
- };
68
- }),
69
- });
70
- return;
71
- }
72
- printHeader(`DTF Governance — ${formatAddress(address)} (Chain ${config.chainId})`);
73
- for (let i = 0; i < govs.length; i++) {
74
- const g = govs[i];
75
- const s = settings[i];
76
- console.log(`\n${g.label} Governance:`);
77
- printTable([
78
- { header: 'Setting', key: 'setting' },
79
- { header: 'Value', key: 'value' },
80
- ], [
81
- { setting: 'Governor', value: g.governor },
82
- { setting: 'Timelock', value: g.timelock },
83
- { setting: 'Voting Delay', value: formatDuration(Number(s.votingDelay)) },
84
- { setting: 'Voting Period', value: formatDuration(Number(s.votingPeriod)) },
85
- { setting: 'Proposal Threshold', value: s.proposalThreshold.toString() },
86
- {
87
- setting: 'Quorum',
88
- value: `${s.quorumNumerator}/${s.quorumDenominator}`,
89
- },
90
- {
91
- setting: 'Timelock Delay',
92
- value: formatDuration(Number(s.timelockMinDelay)),
93
- },
94
- ]);
95
- }
96
- }
97
- //# sourceMappingURL=governance.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../src/commands/governance.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { CliConfig } from '../lib/config';
2
- export declare function infoCommand(address: string, config: CliConfig): Promise<void>;
3
- //# sourceMappingURL=info.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.d.ts","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAsB9C,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,iBAwInE"}
@@ -1,114 +0,0 @@
1
- import { createDtfClients, fetchDtfConfig, } from '@reserve-protocol/dtf-sdk';
2
- import { fetchDtfConfigCached } from '../lib/cached-config';
3
- import { printHeader, printJson, printTable, formatAddress, formatDuration, chainLabel, } from '../lib/output';
4
- function govToJson(gov) {
5
- if (!gov)
6
- return null;
7
- return {
8
- governor: gov.address,
9
- timelock: gov.timelockAddress,
10
- votingDelay: gov.votingDelay,
11
- votingPeriod: gov.votingPeriod,
12
- executionDelay: gov.executionDelay,
13
- };
14
- }
15
- export async function infoCommand(address, config) {
16
- const { publicClient } = createDtfClients({
17
- chainId: config.chainId,
18
- rpc: config.rpc,
19
- });
20
- const dtfConfig = await fetchDtfConfigCached(fetchDtfConfig, publicClient, config.chainId, address);
21
- if (config.json) {
22
- printJson({
23
- dtf: address,
24
- chain: config.chainId,
25
- chainLabel: chainLabel(config.chainId),
26
- ownerGovernance: govToJson(dtfConfig.ownerGovernance),
27
- tradingGovernance: govToJson(dtfConfig.tradingGovernance),
28
- stTokenGovernance: govToJson(dtfConfig.stTokenGovernance),
29
- stToken: dtfConfig.stTokenAddress,
30
- auctionLength: dtfConfig.auctionLength,
31
- mandate: dtfConfig.mandate || undefined,
32
- tvlFee: dtfConfig.tvlFee,
33
- tvlFeePercent: dtfConfig.tvlFee ? (Number(dtfConfig.tvlFee) / 1e18) * 100 : 0,
34
- mintingFee: dtfConfig.mintingFee,
35
- mintingFeePercent: dtfConfig.mintingFee ? (Number(dtfConfig.mintingFee) / 1e18) * 100 : 0,
36
- auctionLaunchers: dtfConfig.auctionLaunchers,
37
- brandManagers: dtfConfig.brandManagers,
38
- tokens: dtfConfig.tokens.map((t) => ({
39
- symbol: t.symbol,
40
- address: t.address,
41
- decimals: t.decimals,
42
- })),
43
- });
44
- return;
45
- }
46
- printHeader(`DTF Info — ${formatAddress(address)} (${chainLabel(config.chainId)})`);
47
- console.log();
48
- const rows = [
49
- { prop: 'DTF Address', value: address },
50
- { prop: 'Auction Length', value: formatDuration(dtfConfig.auctionLength) },
51
- ];
52
- if (dtfConfig.mandate) {
53
- const truncated = dtfConfig.mandate.length > 80
54
- ? dtfConfig.mandate.slice(0, 80) + '...'
55
- : dtfConfig.mandate;
56
- rows.push({ prop: 'Mandate', value: truncated });
57
- }
58
- if (dtfConfig.mintingFee) {
59
- const mintPct = (Number(dtfConfig.mintingFee) / 1e18) * 100;
60
- rows.push({ prop: 'Mint Fee', value: `${mintPct.toFixed(2)}%` });
61
- }
62
- if (dtfConfig.tvlFee) {
63
- const tvlPct = (Number(dtfConfig.tvlFee) / 1e18) * 100;
64
- rows.push({ prop: 'TVL Fee', value: `${tvlPct.toFixed(2)}%` });
65
- }
66
- if (dtfConfig.ownerGovernance) {
67
- rows.push({ prop: 'Owner Governor', value: dtfConfig.ownerGovernance.address }, { prop: 'Owner Timelock', value: dtfConfig.ownerGovernance.timelockAddress });
68
- }
69
- if (dtfConfig.tradingGovernance) {
70
- rows.push({ prop: 'Trading Governor', value: dtfConfig.tradingGovernance.address }, { prop: 'Trading Timelock', value: dtfConfig.tradingGovernance.timelockAddress }, { prop: 'Voting Delay', value: formatDuration(dtfConfig.tradingGovernance.votingDelay) }, { prop: 'Voting Period', value: formatDuration(dtfConfig.tradingGovernance.votingPeriod) }, { prop: 'Execution Delay', value: formatDuration(dtfConfig.tradingGovernance.executionDelay) });
71
- }
72
- if (dtfConfig.stTokenAddress) {
73
- rows.push({ prop: 'stToken', value: dtfConfig.stTokenAddress });
74
- }
75
- if (dtfConfig.stTokenGovernance) {
76
- rows.push({ prop: 'stToken Governor', value: dtfConfig.stTokenGovernance.address });
77
- }
78
- printTable([
79
- { header: 'Property', key: 'prop' },
80
- { header: 'Value', key: 'value' },
81
- ], rows);
82
- console.log();
83
- printTable([
84
- { header: 'Token', key: 'symbol' },
85
- { header: 'Address', key: 'address' },
86
- { header: 'Decimals', key: 'decimals', align: 'right' },
87
- ], dtfConfig.tokens.map((t) => ({
88
- symbol: t.symbol,
89
- address: t.address,
90
- decimals: t.decimals.toString(),
91
- })));
92
- // Roles summary
93
- const roleRows = [];
94
- if (dtfConfig.auctionLaunchers.length > 0) {
95
- roleRows.push({
96
- role: 'Auction Launchers',
97
- count: dtfConfig.auctionLaunchers.length.toString(),
98
- });
99
- }
100
- if (dtfConfig.brandManagers.length > 0) {
101
- roleRows.push({
102
- role: 'Brand Managers',
103
- count: dtfConfig.brandManagers.length.toString(),
104
- });
105
- }
106
- if (roleRows.length > 0) {
107
- console.log();
108
- printTable([
109
- { header: 'Role', key: 'role' },
110
- { header: 'Count', key: 'count', align: 'right' },
111
- ], roleRows);
112
- }
113
- }
114
- //# sourceMappingURL=info.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"info.js","sourceRoot":"","sources":["../../src/commands/info.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { CliConfig } from '../lib/config';
2
- export declare function pricesCommand(address: string, config: CliConfig): Promise<void>;
3
- //# sourceMappingURL=prices.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prices.d.ts","sourceRoot":"","sources":["../../src/commands/prices.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAU9C,wBAAsB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,iBAgFrE"}
@@ -1,71 +0,0 @@
1
- import { createDtfClients, createPriceClient, readBasket, fetchTokenPrices, fetchTokenVolatility, readChainlinkPrice, volatilityToPriceError, proposalVolatilityToPriceError, } from '@reserve-protocol/dtf-sdk';
2
- import { printHeader, printJson, printTable, formatAddress, formatUsd, chainLabel, } from '../lib/output';
3
- export async function pricesCommand(address, config) {
4
- const { publicClient } = createDtfClients({
5
- chainId: config.chainId,
6
- rpc: config.rpc,
7
- });
8
- const priceClient = createPriceClient(config.rpc);
9
- const basket = await readBasket(publicClient, address);
10
- const tokenAddresses = basket.tokens.map((t) => t.address);
11
- const [prices, volatility, btcPrice] = await Promise.all([
12
- fetchTokenPrices(config.chainId, tokenAddresses),
13
- fetchTokenVolatility(config.chainId),
14
- readChainlinkPrice(priceClient),
15
- ]);
16
- if (config.json) {
17
- printJson({
18
- dtf: address,
19
- chain: config.chainId,
20
- chainLabel: chainLabel(config.chainId),
21
- tokens: basket.tokens.map((t) => {
22
- const addr = t.address.toLowerCase();
23
- const vol = volatility[addr] ?? 'high';
24
- return {
25
- symbol: t.symbol,
26
- address: t.address,
27
- price: prices[addr] ?? 0,
28
- volatility: vol,
29
- auctionPriceError: volatilityToPriceError(vol),
30
- proposalPriceError: proposalVolatilityToPriceError(vol),
31
- };
32
- }),
33
- btcUsd: btcPrice
34
- ? {
35
- price: btcPrice.record.priceUsd,
36
- timestamp: btcPrice.record.timestamp,
37
- isStale: btcPrice.isStale,
38
- }
39
- : null,
40
- });
41
- return;
42
- }
43
- printHeader(`DTF Prices — ${formatAddress(address)} (Chain ${config.chainId})`);
44
- console.log();
45
- printTable([
46
- { header: 'Token', key: 'symbol' },
47
- { header: 'Address', key: 'address' },
48
- { header: 'Price (USD)', key: 'price', align: 'right' },
49
- { header: 'Volatility', key: 'volatility' },
50
- { header: 'Auction Error', key: 'auctionErr', align: 'right' },
51
- { header: 'Proposal Error', key: 'proposalErr', align: 'right' },
52
- ], basket.tokens.map((t) => {
53
- const addr = t.address.toLowerCase();
54
- const vol = volatility[addr] ?? 'high';
55
- const price = prices[addr] ?? 0;
56
- return {
57
- symbol: t.symbol,
58
- address: formatAddress(t.address),
59
- price: formatUsd(price),
60
- volatility: vol,
61
- auctionErr: `${(volatilityToPriceError(vol) * 100).toFixed(0)}%`,
62
- proposalErr: `${(proposalVolatilityToPriceError(vol) * 100).toFixed(0)}%`,
63
- };
64
- }));
65
- if (btcPrice) {
66
- console.log();
67
- console.log(`BTC/USD (Chainlink): ${formatUsd(btcPrice.record.priceUsd)}${btcPrice.isStale ? ' [STALE]' : ''}`);
68
- console.log(` Updated: ${new Date(btcPrice.record.timestamp * 1000).toISOString()}`);
69
- }
70
- }
71
- //# sourceMappingURL=prices.js.map