@liberfi.io/ui-channels 0.1.9 → 0.1.21
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.
- package/dist/client/index.d.mts +3 -1
- package/dist/client/index.d.ts +3 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +1 -1
- package/dist/client/index.mjs.map +1 -1
- package/dist/index.d.mts +967 -4
- package/dist/index.d.ts +967 -4
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +4 -2
- package/dist/index.mjs.map +1 -1
- package/package.json +7 -7
package/dist/index.d.mts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import { z } from '@liberfi.io/ui';
|
|
3
3
|
import * as _liberfi_io_types from '@liberfi.io/types';
|
|
4
|
-
import { Channel, ChannelSource, API, IChannelsClient, Chain, ChannelEvent, Token } from '@liberfi.io/types';
|
|
4
|
+
import { Channel, ChannelSource, API, IChannelsClient, Chain, XEligibilityInfo, ChannelEvent, Token as Token$1 } from '@liberfi.io/types';
|
|
5
5
|
import * as _tanstack_react_query from '@tanstack/react-query';
|
|
6
6
|
import { UseQueryOptions, UseInfiniteQueryOptions, InfiniteData, useInfiniteQuery, UseMutationOptions } from '@tanstack/react-query';
|
|
7
7
|
import * as react from 'react';
|
|
@@ -14,7 +14,7 @@ declare global {
|
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
|
-
declare const _default: "0.1.
|
|
17
|
+
declare const _default: "0.1.21";
|
|
18
18
|
|
|
19
19
|
declare const baseFormSchema: z.ZodObject<{
|
|
20
20
|
name: z.ZodString;
|
|
@@ -126,6 +126,437 @@ type SocialsFormUIProps = {
|
|
|
126
126
|
};
|
|
127
127
|
declare function SocialsFormUI({ channel }: SocialsFormUIProps): react_jsx_runtime.JSX.Element;
|
|
128
128
|
|
|
129
|
+
type EligibilityCheckItem = {
|
|
130
|
+
label: string;
|
|
131
|
+
value: string;
|
|
132
|
+
status: "pending" | "checking" | "passed" | "failed";
|
|
133
|
+
};
|
|
134
|
+
type CheckEligibilityUIProps = {
|
|
135
|
+
/** X account connection status */
|
|
136
|
+
isConnected: boolean;
|
|
137
|
+
/** Whether currently connecting to X */
|
|
138
|
+
isConnecting: boolean;
|
|
139
|
+
/** X account username (e.g., @trader_joe) */
|
|
140
|
+
xUsername?: string;
|
|
141
|
+
/** Eligibility check items */
|
|
142
|
+
checkItems: Array<EligibilityCheckItem>;
|
|
143
|
+
/** Whether all checks passed */
|
|
144
|
+
allChecksPassed: boolean;
|
|
145
|
+
/** Connect to X handler */
|
|
146
|
+
onConnect: () => void | Promise<void>;
|
|
147
|
+
/** Continue to next step handler */
|
|
148
|
+
onContinue: () => void | Promise<void>;
|
|
149
|
+
/** Cancel handler */
|
|
150
|
+
onCancel: () => void | Promise<void>;
|
|
151
|
+
/** Whether the form is submitting */
|
|
152
|
+
isSubmitting?: boolean;
|
|
153
|
+
/** Custom class name */
|
|
154
|
+
className?: string;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Check Eligibility UI Component
|
|
158
|
+
* Full screen page to verify X account eligibility
|
|
159
|
+
*/
|
|
160
|
+
declare function CheckEligibilityUI({ isConnected, isConnecting, xUsername, checkItems, allChecksPassed, onConnect, onContinue, onCancel, isSubmitting, className, }: CheckEligibilityUIProps): react_jsx_runtime.JSX.Element;
|
|
161
|
+
|
|
162
|
+
type XAccountInfo = {
|
|
163
|
+
username: string;
|
|
164
|
+
displayName: string;
|
|
165
|
+
avatar: string;
|
|
166
|
+
bio: string;
|
|
167
|
+
followersCount: number;
|
|
168
|
+
accountAge: number;
|
|
169
|
+
behaviorScore: "clean" | "suspicious";
|
|
170
|
+
};
|
|
171
|
+
type EligibilityCheckStatus = "pending" | "checking" | "passed" | "failed";
|
|
172
|
+
type UseCheckEligibilityScriptParams = {
|
|
173
|
+
/** Minimum followers required */
|
|
174
|
+
minFollowers?: number;
|
|
175
|
+
/** Minimum account age in days */
|
|
176
|
+
minAccountAge?: number;
|
|
177
|
+
/** Optional return URL for OAuth callback */
|
|
178
|
+
returnUrl?: string;
|
|
179
|
+
};
|
|
180
|
+
type UseCheckEligibilityScriptResult = {
|
|
181
|
+
/** Whether connected to X */
|
|
182
|
+
isConnected: boolean;
|
|
183
|
+
/** Whether currently connecting */
|
|
184
|
+
isConnecting: boolean;
|
|
185
|
+
/** X account information */
|
|
186
|
+
accountInfo: XAccountInfo | null;
|
|
187
|
+
/** Check items with status */
|
|
188
|
+
checkItems: Array<{
|
|
189
|
+
label: string;
|
|
190
|
+
value: string;
|
|
191
|
+
status: EligibilityCheckStatus;
|
|
192
|
+
}>;
|
|
193
|
+
/** Whether all checks passed */
|
|
194
|
+
allChecksPassed: boolean;
|
|
195
|
+
/** Authorization URL */
|
|
196
|
+
authorizeUrl: string | null;
|
|
197
|
+
/** Connect to X account */
|
|
198
|
+
connect: () => Promise<void>;
|
|
199
|
+
/** Disconnect X account */
|
|
200
|
+
disconnect: () => Promise<void>;
|
|
201
|
+
/** Verify eligibility */
|
|
202
|
+
verify: () => Promise<boolean>;
|
|
203
|
+
};
|
|
204
|
+
/**
|
|
205
|
+
* Check Eligibility Script Hook
|
|
206
|
+
* Handles X account connection and eligibility verification
|
|
207
|
+
*/
|
|
208
|
+
declare function useCheckEligibilityScript({ minFollowers, minAccountAge, returnUrl, }?: UseCheckEligibilityScriptParams): UseCheckEligibilityScriptResult;
|
|
209
|
+
|
|
210
|
+
type CheckEligibilityWidgetProps = {
|
|
211
|
+
/** Callback when eligibility check passed and continue */
|
|
212
|
+
onContinue?: () => void | Promise<void>;
|
|
213
|
+
/** Callback when cancelled */
|
|
214
|
+
onCancel?: () => void | Promise<void>;
|
|
215
|
+
/** Minimum followers required */
|
|
216
|
+
minFollowers?: number;
|
|
217
|
+
/** Minimum account age in days */
|
|
218
|
+
minAccountAge?: number;
|
|
219
|
+
/** Optional return URL for OAuth callback */
|
|
220
|
+
returnUrl?: string;
|
|
221
|
+
/** Custom class name */
|
|
222
|
+
className?: string;
|
|
223
|
+
};
|
|
224
|
+
/**
|
|
225
|
+
* Check Eligibility Widget
|
|
226
|
+
* Combines UI and Script for X account eligibility verification
|
|
227
|
+
*/
|
|
228
|
+
declare function CheckEligibilityWidget({ onContinue, onCancel, minFollowers, minAccountAge, returnUrl, className, }: CheckEligibilityWidgetProps): react_jsx_runtime.JSX.Element;
|
|
229
|
+
|
|
230
|
+
type PresetAvatar = {
|
|
231
|
+
id: string;
|
|
232
|
+
url: string;
|
|
233
|
+
};
|
|
234
|
+
type UseChannelBasicInfoScriptParams = {
|
|
235
|
+
/** Initial channel name */
|
|
236
|
+
initialName?: string;
|
|
237
|
+
/** Initial description */
|
|
238
|
+
initialDescription?: string;
|
|
239
|
+
/** Initial avatar URL */
|
|
240
|
+
initialAvatar?: string;
|
|
241
|
+
};
|
|
242
|
+
type UseChannelBasicInfoScriptResult = {
|
|
243
|
+
/** Available preset avatars */
|
|
244
|
+
presetAvatars: PresetAvatar[];
|
|
245
|
+
/** Selected avatar URL */
|
|
246
|
+
selectedAvatar?: string;
|
|
247
|
+
/** Whether selected avatar is custom */
|
|
248
|
+
isCustomAvatar: boolean;
|
|
249
|
+
/** Channel name */
|
|
250
|
+
channelName: string;
|
|
251
|
+
/** Channel name suggestions */
|
|
252
|
+
nameSuggestions: string[];
|
|
253
|
+
/** Description */
|
|
254
|
+
description: string;
|
|
255
|
+
/** Description suggestions */
|
|
256
|
+
descriptionSuggestions: string[];
|
|
257
|
+
/** Whether uploading custom avatar */
|
|
258
|
+
isUploadingAvatar: boolean;
|
|
259
|
+
/** Whether refreshing avatars */
|
|
260
|
+
isRefreshingAvatars: boolean;
|
|
261
|
+
/** Whether refreshing name suggestions */
|
|
262
|
+
isRefreshingNameSuggestions: boolean;
|
|
263
|
+
/** Whether refreshing description suggestions */
|
|
264
|
+
isRefreshingDescriptionSuggestions: boolean;
|
|
265
|
+
/** Select preset or custom avatar */
|
|
266
|
+
selectAvatar: (avatarUrl: string, isCustom: boolean) => void;
|
|
267
|
+
/** Upload custom avatar */
|
|
268
|
+
uploadCustomAvatar: (file: File) => Promise<void>;
|
|
269
|
+
/** Refresh preset avatars (shuffle) */
|
|
270
|
+
refreshPresetAvatars: () => void;
|
|
271
|
+
/** Refresh name suggestions (shuffle) */
|
|
272
|
+
refreshNameSuggestions: () => void;
|
|
273
|
+
/** Refresh description suggestions (shuffle) */
|
|
274
|
+
refreshDescriptionSuggestions: () => void;
|
|
275
|
+
/** Update channel name */
|
|
276
|
+
setChannelName: (name: string) => void;
|
|
277
|
+
/** Apply name suggestion */
|
|
278
|
+
applyNameSuggestion: (suggestion: string) => void;
|
|
279
|
+
/** Update description */
|
|
280
|
+
setDescription: (desc: string) => void;
|
|
281
|
+
/** Apply description suggestion */
|
|
282
|
+
applyDescriptionSuggestion: (suggestion: string) => void;
|
|
283
|
+
/** Validate form */
|
|
284
|
+
validate: () => {
|
|
285
|
+
isValid: boolean;
|
|
286
|
+
errors: string[];
|
|
287
|
+
};
|
|
288
|
+
};
|
|
289
|
+
declare function useChannelBasicInfoScript({ initialName, initialDescription, initialAvatar, }?: UseChannelBasicInfoScriptParams): UseChannelBasicInfoScriptResult;
|
|
290
|
+
|
|
291
|
+
type ChannelBasicInfoUIProps = {
|
|
292
|
+
/** Available preset avatars */
|
|
293
|
+
presetAvatars: PresetAvatar[];
|
|
294
|
+
/** Selected avatar URL (preset or custom) */
|
|
295
|
+
selectedAvatar?: string;
|
|
296
|
+
/** Whether a custom avatar is selected */
|
|
297
|
+
isCustomAvatar?: boolean;
|
|
298
|
+
/** Channel name value */
|
|
299
|
+
channelName: string;
|
|
300
|
+
/** Channel name suggestions */
|
|
301
|
+
nameSuggestions: string[];
|
|
302
|
+
/** Channel description value */
|
|
303
|
+
description: string;
|
|
304
|
+
/** Description character limit */
|
|
305
|
+
descriptionMaxLength?: number;
|
|
306
|
+
/** Description suggestions */
|
|
307
|
+
descriptionSuggestions: string[];
|
|
308
|
+
/** Avatar selection handler */
|
|
309
|
+
onAvatarSelect: (avatarUrl: string, isCustom: boolean) => void;
|
|
310
|
+
/** Custom avatar upload handler */
|
|
311
|
+
onCustomAvatarUpload: (file: File) => Promise<void>;
|
|
312
|
+
/** Whether uploading custom avatar */
|
|
313
|
+
isUploadingAvatar?: boolean;
|
|
314
|
+
/** Whether refreshing avatars */
|
|
315
|
+
isRefreshingAvatars?: boolean;
|
|
316
|
+
/** Refresh avatars handler */
|
|
317
|
+
onRefreshAvatars?: () => void;
|
|
318
|
+
/** Whether refreshing name suggestions */
|
|
319
|
+
isRefreshingNameSuggestions?: boolean;
|
|
320
|
+
/** Refresh name suggestions handler */
|
|
321
|
+
onRefreshNameSuggestions?: () => void;
|
|
322
|
+
/** Whether refreshing description suggestions */
|
|
323
|
+
isRefreshingDescriptionSuggestions?: boolean;
|
|
324
|
+
/** Refresh description suggestions handler */
|
|
325
|
+
onRefreshDescriptionSuggestions?: () => void;
|
|
326
|
+
/** Channel name change handler */
|
|
327
|
+
onChannelNameChange: (value: string) => void;
|
|
328
|
+
/** Name suggestion click handler */
|
|
329
|
+
onNameSuggestionClick: (suggestion: string) => void;
|
|
330
|
+
/** Description change handler */
|
|
331
|
+
onDescriptionChange: (value: string) => void;
|
|
332
|
+
/** Description suggestion click handler */
|
|
333
|
+
onDescriptionSuggestionClick: (suggestion: string) => void;
|
|
334
|
+
/** Back button handler */
|
|
335
|
+
onBack: () => void | Promise<void>;
|
|
336
|
+
/** Continue to next step handler */
|
|
337
|
+
onContinue: () => void | Promise<void>;
|
|
338
|
+
/** Whether the form is submitting */
|
|
339
|
+
isSubmitting?: boolean;
|
|
340
|
+
/** Whether continue button is disabled */
|
|
341
|
+
isContinueDisabled?: boolean;
|
|
342
|
+
/** Custom class name */
|
|
343
|
+
className?: string;
|
|
344
|
+
};
|
|
345
|
+
/**
|
|
346
|
+
* Channel Basic Info UI Component
|
|
347
|
+
* Full screen page for setting up channel avatar, name, and description
|
|
348
|
+
*/
|
|
349
|
+
declare function ChannelBasicInfoUI({ presetAvatars, selectedAvatar, isCustomAvatar, channelName, nameSuggestions, description, descriptionMaxLength, descriptionSuggestions, onAvatarSelect, onCustomAvatarUpload, isUploadingAvatar, isRefreshingAvatars, onRefreshAvatars, isRefreshingNameSuggestions, onRefreshNameSuggestions, isRefreshingDescriptionSuggestions, onRefreshDescriptionSuggestions, onChannelNameChange, onNameSuggestionClick, onDescriptionChange, onDescriptionSuggestionClick, onBack, onContinue, isSubmitting, isContinueDisabled, className, }: ChannelBasicInfoUIProps): react_jsx_runtime.JSX.Element;
|
|
350
|
+
|
|
351
|
+
type ChannelBasicInfoWidgetProps = {
|
|
352
|
+
/** Initial channel name */
|
|
353
|
+
initialName?: string;
|
|
354
|
+
/** Initial description */
|
|
355
|
+
initialDescription?: string;
|
|
356
|
+
/** Initial avatar URL */
|
|
357
|
+
initialAvatar?: string;
|
|
358
|
+
/** Callback when back button clicked */
|
|
359
|
+
onBack?: () => void | Promise<void>;
|
|
360
|
+
/** Callback when continue to next step */
|
|
361
|
+
onContinue?: (data: {
|
|
362
|
+
avatar: string;
|
|
363
|
+
isCustomAvatar: boolean;
|
|
364
|
+
name: string;
|
|
365
|
+
description: string;
|
|
366
|
+
}) => void | Promise<void>;
|
|
367
|
+
/** Custom class name */
|
|
368
|
+
className?: string;
|
|
369
|
+
};
|
|
370
|
+
/**
|
|
371
|
+
* Channel Basic Info Widget
|
|
372
|
+
* Combines UI and Script for channel basic information setup
|
|
373
|
+
*/
|
|
374
|
+
declare function ChannelBasicInfoWidget({ initialName, initialDescription, initialAvatar, onBack, onContinue, className, }: ChannelBasicInfoWidgetProps): react_jsx_runtime.JSX.Element;
|
|
375
|
+
|
|
376
|
+
type MonitoredWallet = {
|
|
377
|
+
address: string;
|
|
378
|
+
alias?: string;
|
|
379
|
+
balance?: string;
|
|
380
|
+
importedAt: string;
|
|
381
|
+
lastActiveAt?: string;
|
|
382
|
+
sevenDayBuys?: number;
|
|
383
|
+
sevenDaySells?: number;
|
|
384
|
+
};
|
|
385
|
+
type UseWalletImportScriptParams = {
|
|
386
|
+
/** Maximum wallets allowed */
|
|
387
|
+
maxWallets?: number;
|
|
388
|
+
/** Initial monitored wallets */
|
|
389
|
+
initialWallets?: MonitoredWallet[];
|
|
390
|
+
};
|
|
391
|
+
type UseWalletImportScriptResult = {
|
|
392
|
+
/** Wallet input value */
|
|
393
|
+
walletInput: string;
|
|
394
|
+
/** List of monitored wallets */
|
|
395
|
+
monitoredWallets: MonitoredWallet[];
|
|
396
|
+
/** Number of monitored wallets */
|
|
397
|
+
monitoredCount: number;
|
|
398
|
+
/** Whether currently importing */
|
|
399
|
+
isImporting: boolean;
|
|
400
|
+
/** Update wallet input */
|
|
401
|
+
setWalletInput: (value: string) => void;
|
|
402
|
+
/** Add wallets from input */
|
|
403
|
+
addWallets: () => Promise<{
|
|
404
|
+
success: boolean;
|
|
405
|
+
errors?: string[];
|
|
406
|
+
}>;
|
|
407
|
+
/** Add whale wallets */
|
|
408
|
+
addWhaleWallets: () => Promise<void>;
|
|
409
|
+
/** Add smart wallets */
|
|
410
|
+
addSmartWallets: () => Promise<void>;
|
|
411
|
+
/** Remove a wallet */
|
|
412
|
+
removeWallet: (address: string) => Promise<void>;
|
|
413
|
+
/** Validate wallet addresses */
|
|
414
|
+
validate: () => {
|
|
415
|
+
isValid: boolean;
|
|
416
|
+
errors: string[];
|
|
417
|
+
};
|
|
418
|
+
};
|
|
419
|
+
/**
|
|
420
|
+
* Wallet Import Script Hook
|
|
421
|
+
* Handles wallet import and monitoring logic
|
|
422
|
+
*
|
|
423
|
+
* NOTE: This is a placeholder implementation.
|
|
424
|
+
* In production, replace with actual API calls for:
|
|
425
|
+
* - Adding wallets
|
|
426
|
+
* - Fetching wallet balances
|
|
427
|
+
* - Fetching whale/smart wallet lists
|
|
428
|
+
*/
|
|
429
|
+
declare function useWalletImportScript({ maxWallets, initialWallets, }?: UseWalletImportScriptParams): UseWalletImportScriptResult;
|
|
430
|
+
|
|
431
|
+
type WalletImportUIProps = {
|
|
432
|
+
/** Wallet addresses input value */
|
|
433
|
+
walletInput: string;
|
|
434
|
+
/** Number of wallets currently being monitored */
|
|
435
|
+
monitoredCount: number;
|
|
436
|
+
/** Maximum wallets allowed */
|
|
437
|
+
maxWallets?: number;
|
|
438
|
+
/** List of monitored wallets */
|
|
439
|
+
monitoredWallets: MonitoredWallet[];
|
|
440
|
+
/** Whether currently importing wallets */
|
|
441
|
+
isImporting?: boolean;
|
|
442
|
+
/** Wallet input change handler */
|
|
443
|
+
onWalletInputChange: (value: string) => void;
|
|
444
|
+
/** Add wallets handler */
|
|
445
|
+
onAddWallets: () => void | Promise<void>;
|
|
446
|
+
/** Quick action: Add Whale Top 100 MEV Wallets */
|
|
447
|
+
onAddWhaleWallets: () => void | Promise<void>;
|
|
448
|
+
/** Quick action: Add Smart Top 50 SOL Wallets */
|
|
449
|
+
onAddSmartWallets: () => void | Promise<void>;
|
|
450
|
+
/** Remove wallet handler */
|
|
451
|
+
onRemoveWallet: (address: string) => void | Promise<void>;
|
|
452
|
+
/** Back button handler */
|
|
453
|
+
onBack: () => void | Promise<void>;
|
|
454
|
+
/** Publish channel handler */
|
|
455
|
+
onPublish: () => void | Promise<void>;
|
|
456
|
+
/** Whether the form is submitting */
|
|
457
|
+
isSubmitting?: boolean;
|
|
458
|
+
/** Whether publish button is disabled */
|
|
459
|
+
isPublishDisabled?: boolean;
|
|
460
|
+
/** Custom class name */
|
|
461
|
+
className?: string;
|
|
462
|
+
};
|
|
463
|
+
/**
|
|
464
|
+
* Wallet Import UI Component
|
|
465
|
+
* Full screen page for importing and managing monitored wallets
|
|
466
|
+
*/
|
|
467
|
+
declare function WalletImportUI({ walletInput, monitoredCount, maxWallets, monitoredWallets, isImporting, onWalletInputChange, onAddWallets, onAddWhaleWallets, onAddSmartWallets, onRemoveWallet, onBack, onPublish, isSubmitting, isPublishDisabled, className, }: WalletImportUIProps): react_jsx_runtime.JSX.Element;
|
|
468
|
+
|
|
469
|
+
type WalletImportWidgetProps = {
|
|
470
|
+
/** Maximum wallets allowed */
|
|
471
|
+
maxWallets?: number;
|
|
472
|
+
/** Initial monitored wallets */
|
|
473
|
+
initialWallets?: MonitoredWallet[];
|
|
474
|
+
/** Callback when back button clicked */
|
|
475
|
+
onBack?: () => void | Promise<void>;
|
|
476
|
+
/** Callback when publish channel */
|
|
477
|
+
onPublish?: (wallets: MonitoredWallet[]) => void | Promise<void>;
|
|
478
|
+
/** Custom class name */
|
|
479
|
+
className?: string;
|
|
480
|
+
};
|
|
481
|
+
/**
|
|
482
|
+
* Wallet Import Widget
|
|
483
|
+
* Combines UI and Script for wallet import and monitoring
|
|
484
|
+
*/
|
|
485
|
+
declare function WalletImportWidget({ maxWallets, initialWallets, onBack, onPublish, className, }: WalletImportWidgetProps): react_jsx_runtime.JSX.Element;
|
|
486
|
+
|
|
487
|
+
type BotConnectionStatus = "connected" | "not_connected";
|
|
488
|
+
type UseSocialBotsScriptParams = {
|
|
489
|
+
/** Initial Telegram bot status */
|
|
490
|
+
initialTelegramStatus?: BotConnectionStatus;
|
|
491
|
+
/** Initial Discord webhook status */
|
|
492
|
+
initialDiscordStatus?: BotConnectionStatus;
|
|
493
|
+
};
|
|
494
|
+
type UseSocialBotsScriptResult = {
|
|
495
|
+
/** Telegram bot connection status */
|
|
496
|
+
telegramStatus: BotConnectionStatus;
|
|
497
|
+
/** Discord webhook connection status */
|
|
498
|
+
discordStatus: BotConnectionStatus;
|
|
499
|
+
/** Create Telegram bot */
|
|
500
|
+
createTelegramBot: () => Promise<void>;
|
|
501
|
+
/** Add Discord webhook */
|
|
502
|
+
addDiscordWebhook: () => Promise<void>;
|
|
503
|
+
/** Validate configuration */
|
|
504
|
+
validate: () => {
|
|
505
|
+
isValid: boolean;
|
|
506
|
+
errors: string[];
|
|
507
|
+
};
|
|
508
|
+
};
|
|
509
|
+
/**
|
|
510
|
+
* Social Bots Script Hook
|
|
511
|
+
* Handles bot connection state and configuration logic
|
|
512
|
+
*
|
|
513
|
+
* NOTE: This is a placeholder implementation.
|
|
514
|
+
* In production, replace with actual bot integration APIs.
|
|
515
|
+
*/
|
|
516
|
+
declare function useSocialBotsScript({ initialTelegramStatus, initialDiscordStatus, }?: UseSocialBotsScriptParams): UseSocialBotsScriptResult;
|
|
517
|
+
|
|
518
|
+
type SocialBotsUIProps = {
|
|
519
|
+
/** Telegram bot connection status */
|
|
520
|
+
telegramStatus: BotConnectionStatus;
|
|
521
|
+
/** Discord webhook connection status */
|
|
522
|
+
discordStatus: BotConnectionStatus;
|
|
523
|
+
/** Create Telegram bot handler */
|
|
524
|
+
onCreateTelegramBot: () => void | Promise<void>;
|
|
525
|
+
/** Add Discord webhook handler */
|
|
526
|
+
onAddDiscordWebhook: () => void | Promise<void>;
|
|
527
|
+
/** Back button handler */
|
|
528
|
+
onBack: () => void | Promise<void>;
|
|
529
|
+
/** Continue to next step handler */
|
|
530
|
+
onContinue: () => void | Promise<void>;
|
|
531
|
+
/** Whether the form is submitting */
|
|
532
|
+
isSubmitting?: boolean;
|
|
533
|
+
/** Custom class name */
|
|
534
|
+
className?: string;
|
|
535
|
+
};
|
|
536
|
+
/**
|
|
537
|
+
* Social Bots UI Component
|
|
538
|
+
* Configuration page for connecting Telegram and Discord bots
|
|
539
|
+
*/
|
|
540
|
+
declare function SocialBotsUI({ telegramStatus, discordStatus, onCreateTelegramBot, onAddDiscordWebhook, onBack, onContinue, isSubmitting, className, }: SocialBotsUIProps): react_jsx_runtime.JSX.Element;
|
|
541
|
+
|
|
542
|
+
type SocialBotsWidgetProps = {
|
|
543
|
+
/** Initial Telegram bot status */
|
|
544
|
+
initialTelegramStatus?: "connected" | "not_connected";
|
|
545
|
+
/** Initial Discord webhook status */
|
|
546
|
+
initialDiscordStatus?: "connected" | "not_connected";
|
|
547
|
+
/** Callback when back button clicked */
|
|
548
|
+
onBack?: () => void | Promise<void>;
|
|
549
|
+
/** Callback when continue to next step */
|
|
550
|
+
onContinue?: () => void | Promise<void>;
|
|
551
|
+
/** Custom class name */
|
|
552
|
+
className?: string;
|
|
553
|
+
};
|
|
554
|
+
/**
|
|
555
|
+
* Social Bots Widget
|
|
556
|
+
* Combines UI and Script for social bots configuration
|
|
557
|
+
*/
|
|
558
|
+
declare function SocialBotsWidget({ initialTelegramStatus, initialDiscordStatus, onBack, onContinue, className, }: SocialBotsWidgetProps): react_jsx_runtime.JSX.Element;
|
|
559
|
+
|
|
129
560
|
type ChannelsUIProps = {
|
|
130
561
|
channels: Array<Channel>;
|
|
131
562
|
onSelect?: (channel: Channel) => void;
|
|
@@ -219,6 +650,510 @@ declare function ChannelDetailWidget({ id, customHeaderActions, customFooterActi
|
|
|
219
650
|
|
|
220
651
|
declare const useChannelDetail: (id: string) => _tanstack_react_query.UseQueryResult<_liberfi_io_types.Channel, Error>;
|
|
221
652
|
|
|
653
|
+
type ChannelDetailStats = {
|
|
654
|
+
signalCount: number;
|
|
655
|
+
subscribers: number;
|
|
656
|
+
someMetric: number;
|
|
657
|
+
activeTime: string;
|
|
658
|
+
};
|
|
659
|
+
type KeyMetric = {
|
|
660
|
+
label: string;
|
|
661
|
+
value: string;
|
|
662
|
+
subValue: string;
|
|
663
|
+
trend: "up" | "down" | "neutral";
|
|
664
|
+
percentage?: string;
|
|
665
|
+
};
|
|
666
|
+
type ChannelDetailData = {
|
|
667
|
+
id: string;
|
|
668
|
+
name: string;
|
|
669
|
+
avatar: string;
|
|
670
|
+
stats: ChannelDetailStats;
|
|
671
|
+
links: {
|
|
672
|
+
twitter?: string;
|
|
673
|
+
axiom?: string;
|
|
674
|
+
};
|
|
675
|
+
creator: {
|
|
676
|
+
name: string;
|
|
677
|
+
time: string;
|
|
678
|
+
};
|
|
679
|
+
metrics: {
|
|
680
|
+
pnl: KeyMetric;
|
|
681
|
+
winRate: KeyMetric;
|
|
682
|
+
txs: KeyMetric;
|
|
683
|
+
};
|
|
684
|
+
};
|
|
685
|
+
type UseChannelDetailNewScriptParams = {
|
|
686
|
+
/** Channel ID */
|
|
687
|
+
channelId: string;
|
|
688
|
+
};
|
|
689
|
+
|
|
690
|
+
type ChannelDetailNewUIProps = {
|
|
691
|
+
/** Channel detail data */
|
|
692
|
+
channelData: ChannelDetailData;
|
|
693
|
+
/** Subscribe handler */
|
|
694
|
+
onSubscribe: () => void | Promise<void>;
|
|
695
|
+
/** Share handler */
|
|
696
|
+
onShare: () => void;
|
|
697
|
+
/** Listen handler */
|
|
698
|
+
onListen: () => void;
|
|
699
|
+
/** Back button handler */
|
|
700
|
+
onBack?: () => void;
|
|
701
|
+
/** Whether subscribing */
|
|
702
|
+
isSubscribing?: boolean;
|
|
703
|
+
/** Custom class name */
|
|
704
|
+
className?: string;
|
|
705
|
+
};
|
|
706
|
+
/**
|
|
707
|
+
* Channel Detail New UI Component
|
|
708
|
+
* Full screen channel detail page with traders table
|
|
709
|
+
*/
|
|
710
|
+
declare function ChannelDetailNewUI({ channelData, onSubscribe, onShare, onListen, onBack, isSubscribing, className, }: ChannelDetailNewUIProps): react_jsx_runtime.JSX.Element;
|
|
711
|
+
|
|
712
|
+
type ChannelDetailNewWidgetProps = UseChannelDetailNewScriptParams & {
|
|
713
|
+
/** Back button handler */
|
|
714
|
+
onBack?: () => void;
|
|
715
|
+
/** Custom class name */
|
|
716
|
+
className?: string;
|
|
717
|
+
};
|
|
718
|
+
/**
|
|
719
|
+
* Channel Detail New Widget
|
|
720
|
+
* Combines UI and business logic for channel detail page
|
|
721
|
+
*/
|
|
722
|
+
declare function ChannelDetailNewWidget({ channelId, onBack, className, }: ChannelDetailNewWidgetProps): react_jsx_runtime.JSX.Element;
|
|
723
|
+
|
|
724
|
+
type TimeFilter = "4H" | "1D" | "1W" | "1M";
|
|
725
|
+
type SortField = "listeners" | "txns" | "volume" | "pnl";
|
|
726
|
+
type SortDirection = "asc" | "desc";
|
|
727
|
+
type Trader = {
|
|
728
|
+
id: string;
|
|
729
|
+
name: string;
|
|
730
|
+
listeners: number;
|
|
731
|
+
isListening: boolean;
|
|
732
|
+
buyCount: number;
|
|
733
|
+
sellCount: number;
|
|
734
|
+
volume: number;
|
|
735
|
+
buyVolume: number;
|
|
736
|
+
sellVolume: number;
|
|
737
|
+
pnlAmount: number;
|
|
738
|
+
pnlPercentage: number;
|
|
739
|
+
};
|
|
740
|
+
type UseTradersTableScriptParams = {
|
|
741
|
+
/** Initial traders data */
|
|
742
|
+
initialTraders?: Trader[];
|
|
743
|
+
/** Initial time filter */
|
|
744
|
+
initialTimeFilter?: TimeFilter;
|
|
745
|
+
};
|
|
746
|
+
|
|
747
|
+
type TradersTableUIProps = {
|
|
748
|
+
/** List of traders */
|
|
749
|
+
traders: Trader[];
|
|
750
|
+
/** Current time filter */
|
|
751
|
+
timeFilter: TimeFilter;
|
|
752
|
+
/** Time filter change handler */
|
|
753
|
+
onTimeFilterChange: (filter: TimeFilter) => void;
|
|
754
|
+
/** Current sort field */
|
|
755
|
+
sortField: SortField | null;
|
|
756
|
+
/** Current sort direction */
|
|
757
|
+
sortDirection: SortDirection;
|
|
758
|
+
/** Sort handler */
|
|
759
|
+
onSort: (field: SortField) => void;
|
|
760
|
+
/** Toggle listen handler */
|
|
761
|
+
onToggleListen: (traderId: string) => void;
|
|
762
|
+
/** Custom class name */
|
|
763
|
+
className?: string;
|
|
764
|
+
};
|
|
765
|
+
/**
|
|
766
|
+
* Traders Table UI Component
|
|
767
|
+
* Displays traders list with sorting and filtering
|
|
768
|
+
*/
|
|
769
|
+
declare function TradersTableUI({ traders, timeFilter, onTimeFilterChange, sortField, sortDirection, onSort, onToggleListen, className, }: TradersTableUIProps): react_jsx_runtime.JSX.Element;
|
|
770
|
+
|
|
771
|
+
type TradersTableWidgetProps = UseTradersTableScriptParams & {
|
|
772
|
+
/** Custom class name */
|
|
773
|
+
className?: string;
|
|
774
|
+
};
|
|
775
|
+
/**
|
|
776
|
+
* Traders Table Widget
|
|
777
|
+
* Combines UI and business logic for traders table
|
|
778
|
+
*/
|
|
779
|
+
declare function TradersTableWidget({ initialTraders, initialTimeFilter, className, }: TradersTableWidgetProps): react_jsx_runtime.JSX.Element;
|
|
780
|
+
|
|
781
|
+
type TradeEvent = {
|
|
782
|
+
id: string;
|
|
783
|
+
walletAddress: string;
|
|
784
|
+
walletAlias?: string;
|
|
785
|
+
type: "buy" | "sell";
|
|
786
|
+
amount: number;
|
|
787
|
+
tokenSymbol: string;
|
|
788
|
+
tokenAddress: string;
|
|
789
|
+
price: number;
|
|
790
|
+
cost: number;
|
|
791
|
+
costSymbol: string;
|
|
792
|
+
timestamp: string;
|
|
793
|
+
marketCap: string;
|
|
794
|
+
profitLoss?: number;
|
|
795
|
+
};
|
|
796
|
+
type UseActivityFeedScriptParams = {
|
|
797
|
+
/** Initial trade events */
|
|
798
|
+
initialEvents?: TradeEvent[];
|
|
799
|
+
};
|
|
800
|
+
|
|
801
|
+
type ActivityFeedUIProps = {
|
|
802
|
+
/** Trade events */
|
|
803
|
+
events: TradeEvent[];
|
|
804
|
+
/** Date filter */
|
|
805
|
+
dateFilter: string | null;
|
|
806
|
+
/** Address filter */
|
|
807
|
+
addressFilter: string | null;
|
|
808
|
+
/** Event filter */
|
|
809
|
+
eventFilter: "all" | "buy" | "sell";
|
|
810
|
+
/** Token search query */
|
|
811
|
+
tokenSearch: string;
|
|
812
|
+
/** Set date filter */
|
|
813
|
+
onDateFilterChange: (filter: string | null) => void;
|
|
814
|
+
/** Set address filter */
|
|
815
|
+
onAddressFilterChange: (filter: string | null) => void;
|
|
816
|
+
/** Set event filter */
|
|
817
|
+
onEventFilterChange: (filter: "all" | "buy" | "sell") => void;
|
|
818
|
+
/** Set token search */
|
|
819
|
+
onTokenSearchChange: (query: string) => void;
|
|
820
|
+
/** Custom class name */
|
|
821
|
+
className?: string;
|
|
822
|
+
};
|
|
823
|
+
/**
|
|
824
|
+
* Activity Feed UI Component
|
|
825
|
+
* Displays trade events list with filters
|
|
826
|
+
*/
|
|
827
|
+
declare function ActivityFeedUI({ events, tokenSearch, onTokenSearchChange, className, }: ActivityFeedUIProps): react_jsx_runtime.JSX.Element;
|
|
828
|
+
|
|
829
|
+
type ActivityFeedWidgetProps = UseActivityFeedScriptParams & {
|
|
830
|
+
/** Custom class name */
|
|
831
|
+
className?: string;
|
|
832
|
+
};
|
|
833
|
+
/**
|
|
834
|
+
* Activity Feed Widget
|
|
835
|
+
* Combines UI and business logic for activity feed
|
|
836
|
+
*/
|
|
837
|
+
declare function ActivityFeedWidget({ initialEvents, className, }: ActivityFeedWidgetProps): react_jsx_runtime.JSX.Element;
|
|
838
|
+
|
|
839
|
+
type Token = {
|
|
840
|
+
id: string;
|
|
841
|
+
name: string;
|
|
842
|
+
symbol: string;
|
|
843
|
+
avatar: string;
|
|
844
|
+
createdTime: string;
|
|
845
|
+
timeLabel: string;
|
|
846
|
+
price: number;
|
|
847
|
+
liquidity: number;
|
|
848
|
+
volume: number;
|
|
849
|
+
buyVolume: number;
|
|
850
|
+
sellVolume: number;
|
|
851
|
+
buyCount: number;
|
|
852
|
+
sellCount: number;
|
|
853
|
+
marketCap: string;
|
|
854
|
+
pnlPercentage: number;
|
|
855
|
+
solAmount: number;
|
|
856
|
+
};
|
|
857
|
+
|
|
858
|
+
type TokensListUIProps = {
|
|
859
|
+
/** List of tokens */
|
|
860
|
+
tokens: Token[];
|
|
861
|
+
/** Custom class name */
|
|
862
|
+
className?: string;
|
|
863
|
+
};
|
|
864
|
+
/**
|
|
865
|
+
* Tokens List UI Component
|
|
866
|
+
* Displays tokens list with trading information
|
|
867
|
+
*/
|
|
868
|
+
declare function TokensListUI({ tokens, className }: TokensListUIProps): react_jsx_runtime.JSX.Element;
|
|
869
|
+
|
|
870
|
+
type TokensListWidgetProps = {
|
|
871
|
+
/** Optional custom tokens data */
|
|
872
|
+
tokens?: Token[];
|
|
873
|
+
/** Custom class name */
|
|
874
|
+
className?: string;
|
|
875
|
+
};
|
|
876
|
+
/**
|
|
877
|
+
* Tokens List Widget
|
|
878
|
+
* Combines business logic and UI for tokens list
|
|
879
|
+
*/
|
|
880
|
+
declare function TokensListWidget({ tokens: customTokens, className, }: TokensListWidgetProps): react_jsx_runtime.JSX.Element;
|
|
881
|
+
|
|
882
|
+
type TabType = "tokens" | "traders";
|
|
883
|
+
|
|
884
|
+
type TabContainerUIProps = {
|
|
885
|
+
/** Active tab */
|
|
886
|
+
activeTab: TabType;
|
|
887
|
+
/** Tab switch handler */
|
|
888
|
+
onTabSwitch: (tab: TabType) => void;
|
|
889
|
+
/** Tokens count */
|
|
890
|
+
tokensCount?: number;
|
|
891
|
+
/** Traders count */
|
|
892
|
+
tradersCount?: number;
|
|
893
|
+
/** Custom class name */
|
|
894
|
+
className?: string;
|
|
895
|
+
};
|
|
896
|
+
/**
|
|
897
|
+
* Tab Container UI Component
|
|
898
|
+
* Displays tabs for switching between Tokens and Traders
|
|
899
|
+
*/
|
|
900
|
+
declare function TabContainerUI({ activeTab, onTabSwitch, tokensCount, tradersCount, className, }: TabContainerUIProps): react_jsx_runtime.JSX.Element;
|
|
901
|
+
|
|
902
|
+
type TabContainerWidgetProps = {
|
|
903
|
+
/** Initial active tab */
|
|
904
|
+
initialTab?: TabType;
|
|
905
|
+
/** Tokens count */
|
|
906
|
+
tokensCount?: number;
|
|
907
|
+
/** Traders count */
|
|
908
|
+
tradersCount?: number;
|
|
909
|
+
/** Custom class name */
|
|
910
|
+
className?: string;
|
|
911
|
+
};
|
|
912
|
+
/**
|
|
913
|
+
* Tab Container Widget
|
|
914
|
+
* Combines tab switching logic and UI
|
|
915
|
+
*/
|
|
916
|
+
declare function TabContainerWidget({ initialTab, tokensCount, tradersCount, className, }: TabContainerWidgetProps): react_jsx_runtime.JSX.Element;
|
|
917
|
+
|
|
918
|
+
type ChannelCardData = {
|
|
919
|
+
id: string;
|
|
920
|
+
name: string;
|
|
921
|
+
avatar: string;
|
|
922
|
+
chain: "sol" | "eth" | "bsc" | "all";
|
|
923
|
+
stats: {
|
|
924
|
+
signals: number;
|
|
925
|
+
subscribers: number;
|
|
926
|
+
activeTime: string;
|
|
927
|
+
};
|
|
928
|
+
creator: {
|
|
929
|
+
name: string;
|
|
930
|
+
verified: boolean;
|
|
931
|
+
};
|
|
932
|
+
description: string;
|
|
933
|
+
metrics: {
|
|
934
|
+
pnl: {
|
|
935
|
+
label: string;
|
|
936
|
+
value: string;
|
|
937
|
+
percentage: string;
|
|
938
|
+
isPositive: boolean;
|
|
939
|
+
};
|
|
940
|
+
winRate: {
|
|
941
|
+
label: string;
|
|
942
|
+
value: string;
|
|
943
|
+
wins: number;
|
|
944
|
+
losses: number;
|
|
945
|
+
};
|
|
946
|
+
txs: {
|
|
947
|
+
label: string;
|
|
948
|
+
value: number;
|
|
949
|
+
wins: number;
|
|
950
|
+
losses: number;
|
|
951
|
+
};
|
|
952
|
+
};
|
|
953
|
+
isSubscribed: boolean;
|
|
954
|
+
};
|
|
955
|
+
type FindChannelUIProps = {
|
|
956
|
+
/** List of channels */
|
|
957
|
+
channels: ChannelCardData[];
|
|
958
|
+
/** Selected chain filter */
|
|
959
|
+
selectedChain: string;
|
|
960
|
+
/** Chain filter options */
|
|
961
|
+
chainOptions: {
|
|
962
|
+
value: string;
|
|
963
|
+
label: string;
|
|
964
|
+
}[];
|
|
965
|
+
/** Selected sort option */
|
|
966
|
+
selectedSort: string;
|
|
967
|
+
/** Sort options */
|
|
968
|
+
sortOptions: {
|
|
969
|
+
value: string;
|
|
970
|
+
label: string;
|
|
971
|
+
}[];
|
|
972
|
+
/** Search query */
|
|
973
|
+
searchQuery: string;
|
|
974
|
+
/** Whether user has created channel */
|
|
975
|
+
hasCreatedChannel: boolean;
|
|
976
|
+
/** Chain filter change handler */
|
|
977
|
+
onChainChange: (chain: string) => void;
|
|
978
|
+
/** Sort change handler */
|
|
979
|
+
onSortChange: (sort: string) => void;
|
|
980
|
+
/** Search change handler */
|
|
981
|
+
onSearchChange: (query: string) => void;
|
|
982
|
+
/** Subscribe handler */
|
|
983
|
+
onSubscribe: (channelId: string) => void | Promise<void>;
|
|
984
|
+
/** Channel click handler */
|
|
985
|
+
onChannelClick: (channelId: string) => void;
|
|
986
|
+
/** Create channel handler */
|
|
987
|
+
onCreateChannel?: () => void;
|
|
988
|
+
/** Channel management handler */
|
|
989
|
+
onChannelManagement?: () => void;
|
|
990
|
+
/** Custom class name */
|
|
991
|
+
className?: string;
|
|
992
|
+
};
|
|
993
|
+
/**
|
|
994
|
+
* Find Channel UI Component
|
|
995
|
+
* Displays a list of channels with filtering and search
|
|
996
|
+
*/
|
|
997
|
+
declare function FindChannelUI({ channels, selectedChain, chainOptions, selectedSort, sortOptions, searchQuery, hasCreatedChannel, onChainChange, onSortChange, onSearchChange, onSubscribe, onChannelClick, onCreateChannel, onChannelManagement, className, }: FindChannelUIProps): react_jsx_runtime.JSX.Element;
|
|
998
|
+
|
|
999
|
+
type UseFindChannelScriptParams = {
|
|
1000
|
+
/** Initial channels data */
|
|
1001
|
+
channels?: ChannelCardData[];
|
|
1002
|
+
/** Whether user has created a channel */
|
|
1003
|
+
hasCreatedChannel?: boolean;
|
|
1004
|
+
};
|
|
1005
|
+
/**
|
|
1006
|
+
* Business logic for Find Channel page
|
|
1007
|
+
*/
|
|
1008
|
+
declare function useFindChannelScript({ channels: initialChannels, hasCreatedChannel, }?: UseFindChannelScriptParams): {
|
|
1009
|
+
channels: ChannelCardData[];
|
|
1010
|
+
selectedChain: string;
|
|
1011
|
+
chainOptions: {
|
|
1012
|
+
value: string;
|
|
1013
|
+
label: string;
|
|
1014
|
+
}[];
|
|
1015
|
+
selectedSort: string;
|
|
1016
|
+
sortOptions: {
|
|
1017
|
+
value: string;
|
|
1018
|
+
label: string;
|
|
1019
|
+
}[];
|
|
1020
|
+
searchQuery: string;
|
|
1021
|
+
hasCreatedChannel: boolean;
|
|
1022
|
+
handleChainChange: (chain: string) => void;
|
|
1023
|
+
handleSortChange: (sort: string) => void;
|
|
1024
|
+
handleSearchChange: (query: string) => void;
|
|
1025
|
+
handleSubscribe: (channelId: string) => void;
|
|
1026
|
+
handleChannelClick: (channelId: string) => void;
|
|
1027
|
+
handleCreateChannel: () => void;
|
|
1028
|
+
handleChannelManagement: () => void;
|
|
1029
|
+
};
|
|
1030
|
+
|
|
1031
|
+
type FindChannelWidgetProps = UseFindChannelScriptParams & {
|
|
1032
|
+
/** Channel click handler */
|
|
1033
|
+
onChannelClick?: (channelId: string) => void;
|
|
1034
|
+
/** Create channel handler */
|
|
1035
|
+
onCreateChannel?: () => void;
|
|
1036
|
+
/** Channel management handler */
|
|
1037
|
+
onChannelManagement?: () => void;
|
|
1038
|
+
/** Custom class name */
|
|
1039
|
+
className?: string;
|
|
1040
|
+
};
|
|
1041
|
+
/**
|
|
1042
|
+
* Find Channel Widget
|
|
1043
|
+
* Combines UI and business logic for channel discovery
|
|
1044
|
+
*/
|
|
1045
|
+
declare function FindChannelWidget({ channels, hasCreatedChannel, onChannelClick: externalOnChannelClick, onCreateChannel: externalOnCreateChannel, onChannelManagement: externalOnChannelManagement, className, }: FindChannelWidgetProps): react_jsx_runtime.JSX.Element;
|
|
1046
|
+
|
|
1047
|
+
type SubscribedChannelData = {
|
|
1048
|
+
id: string;
|
|
1049
|
+
name: string;
|
|
1050
|
+
avatar: string;
|
|
1051
|
+
chain: "sol" | "eth" | "bsc" | "all";
|
|
1052
|
+
activeTime: string;
|
|
1053
|
+
pnlPercentage: string;
|
|
1054
|
+
isPositive: boolean;
|
|
1055
|
+
};
|
|
1056
|
+
type MySubscribeUIProps = {
|
|
1057
|
+
/** List of subscribed channels */
|
|
1058
|
+
subscribedChannels: SubscribedChannelData[];
|
|
1059
|
+
/** Selected channel ID */
|
|
1060
|
+
selectedChannelId: string | null;
|
|
1061
|
+
/** Whether sidebar is collapsed */
|
|
1062
|
+
isSidebarCollapsed: boolean;
|
|
1063
|
+
/** Selected chain filter */
|
|
1064
|
+
selectedChain: string;
|
|
1065
|
+
/** Chain filter options */
|
|
1066
|
+
chainOptions: {
|
|
1067
|
+
value: string;
|
|
1068
|
+
label: string;
|
|
1069
|
+
}[];
|
|
1070
|
+
/** Selected sort option */
|
|
1071
|
+
selectedSort: string;
|
|
1072
|
+
/** Sort options */
|
|
1073
|
+
sortOptions: {
|
|
1074
|
+
value: string;
|
|
1075
|
+
label: string;
|
|
1076
|
+
}[];
|
|
1077
|
+
/** Search query */
|
|
1078
|
+
searchQuery: string;
|
|
1079
|
+
/** Whether user has created channel */
|
|
1080
|
+
hasCreatedChannel: boolean;
|
|
1081
|
+
/** Sidebar toggle handler */
|
|
1082
|
+
onSidebarToggle: () => void;
|
|
1083
|
+
/** Channel select handler */
|
|
1084
|
+
onChannelSelect: (channelId: string) => void;
|
|
1085
|
+
/** Chain filter change handler */
|
|
1086
|
+
onChainChange: (chain: string) => void;
|
|
1087
|
+
/** Sort change handler */
|
|
1088
|
+
onSortChange: (sort: string) => void;
|
|
1089
|
+
/** Search change handler */
|
|
1090
|
+
onSearchChange: (query: string) => void;
|
|
1091
|
+
/** Switch to discover tab */
|
|
1092
|
+
onSwitchToDiscover: () => void;
|
|
1093
|
+
/** Create channel handler */
|
|
1094
|
+
onCreateChannel?: () => void;
|
|
1095
|
+
/** Channel management handler */
|
|
1096
|
+
onChannelManagement?: () => void;
|
|
1097
|
+
/** Custom class name */
|
|
1098
|
+
className?: string;
|
|
1099
|
+
};
|
|
1100
|
+
/**
|
|
1101
|
+
* My Subscribe UI Component
|
|
1102
|
+
* Displays subscribed channels with expandable sidebar and channel detail
|
|
1103
|
+
*/
|
|
1104
|
+
declare function MySubscribeUI({ subscribedChannels, selectedChannelId, isSidebarCollapsed, selectedChain, chainOptions, selectedSort, sortOptions, searchQuery, hasCreatedChannel, onSidebarToggle, onChannelSelect, onChainChange, onSortChange, onSearchChange, onSwitchToDiscover, onCreateChannel, onChannelManagement, className, }: MySubscribeUIProps): react_jsx_runtime.JSX.Element;
|
|
1105
|
+
|
|
1106
|
+
type UseMySubscribeScriptParams = {
|
|
1107
|
+
/** Initial subscribed channels data */
|
|
1108
|
+
subscribedChannels?: SubscribedChannelData[];
|
|
1109
|
+
/** Whether user has created a channel */
|
|
1110
|
+
hasCreatedChannel?: boolean;
|
|
1111
|
+
};
|
|
1112
|
+
/**
|
|
1113
|
+
* Business logic for My Subscribe page
|
|
1114
|
+
*/
|
|
1115
|
+
declare function useMySubscribeScript({ subscribedChannels: initialChannels, hasCreatedChannel, }?: UseMySubscribeScriptParams): {
|
|
1116
|
+
subscribedChannels: SubscribedChannelData[];
|
|
1117
|
+
selectedChannelId: string | null;
|
|
1118
|
+
isSidebarCollapsed: boolean;
|
|
1119
|
+
selectedChain: string;
|
|
1120
|
+
chainOptions: {
|
|
1121
|
+
value: string;
|
|
1122
|
+
label: string;
|
|
1123
|
+
}[];
|
|
1124
|
+
selectedSort: string;
|
|
1125
|
+
sortOptions: {
|
|
1126
|
+
value: string;
|
|
1127
|
+
label: string;
|
|
1128
|
+
}[];
|
|
1129
|
+
searchQuery: string;
|
|
1130
|
+
hasCreatedChannel: boolean;
|
|
1131
|
+
handleSidebarToggle: () => void;
|
|
1132
|
+
handleChannelSelect: (channelId: string) => void;
|
|
1133
|
+
handleChainChange: (chain: string) => void;
|
|
1134
|
+
handleSortChange: (sort: string) => void;
|
|
1135
|
+
handleSearchChange: (query: string) => void;
|
|
1136
|
+
handleSwitchToDiscover: () => void;
|
|
1137
|
+
handleCreateChannel: () => void;
|
|
1138
|
+
handleChannelManagement: () => void;
|
|
1139
|
+
};
|
|
1140
|
+
|
|
1141
|
+
type MySubscribeWidgetProps = UseMySubscribeScriptParams & {
|
|
1142
|
+
/** Switch to discover handler */
|
|
1143
|
+
onSwitchToDiscover?: () => void;
|
|
1144
|
+
/** Create channel handler */
|
|
1145
|
+
onCreateChannel?: () => void;
|
|
1146
|
+
/** Channel management handler */
|
|
1147
|
+
onChannelManagement?: () => void;
|
|
1148
|
+
/** Custom class name */
|
|
1149
|
+
className?: string;
|
|
1150
|
+
};
|
|
1151
|
+
/**
|
|
1152
|
+
* My Subscribe Widget
|
|
1153
|
+
* Combines UI and business logic for subscribed channels page
|
|
1154
|
+
*/
|
|
1155
|
+
declare function MySubscribeWidget({ subscribedChannels, hasCreatedChannel, onSwitchToDiscover: externalOnSwitchToDiscover, onCreateChannel: externalOnCreateChannel, onChannelManagement: externalOnChannelManagement, className, }: MySubscribeWidgetProps): react_jsx_runtime.JSX.Element;
|
|
1156
|
+
|
|
222
1157
|
type ChannelHomePageProps = {
|
|
223
1158
|
onCreateChannel?: () => void;
|
|
224
1159
|
onSelectChannel?: (channel: Channel) => void;
|
|
@@ -234,6 +1169,24 @@ type ChannelDetailPageProps = {
|
|
|
234
1169
|
};
|
|
235
1170
|
declare function ChannelsDetailPage({ id, customHeaderActions, customFooterActions, }: ChannelDetailPageProps): react_jsx_runtime.JSX.Element;
|
|
236
1171
|
|
|
1172
|
+
type StepStatus = "completed" | "current" | "pending";
|
|
1173
|
+
type Step = {
|
|
1174
|
+
id: string;
|
|
1175
|
+
label: string;
|
|
1176
|
+
status: StepStatus;
|
|
1177
|
+
};
|
|
1178
|
+
type StepperUIProps = {
|
|
1179
|
+
/** Array of steps */
|
|
1180
|
+
steps: Step[];
|
|
1181
|
+
/** Custom class name */
|
|
1182
|
+
className?: string;
|
|
1183
|
+
};
|
|
1184
|
+
/**
|
|
1185
|
+
* Stepper UI Component
|
|
1186
|
+
* Vertical step indicator showing progress through a multi-step process
|
|
1187
|
+
*/
|
|
1188
|
+
declare function StepperUI({ steps, className }: StepperUIProps): react_jsx_runtime.JSX.Element;
|
|
1189
|
+
|
|
237
1190
|
interface ChannelsContextValue {
|
|
238
1191
|
client: API.IChannelsClient;
|
|
239
1192
|
}
|
|
@@ -309,12 +1262,22 @@ declare function useUpdateChannelSourcesMutation(options?: Omit<UseMutationOptio
|
|
|
309
1262
|
|
|
310
1263
|
declare const useUpload: () => (file: File) => Promise<string>;
|
|
311
1264
|
|
|
1265
|
+
declare function xEligibilityQueryKey(): string[];
|
|
1266
|
+
declare function fetchXEligibility(client: IChannelsClient): Promise<XEligibilityInfo>;
|
|
1267
|
+
declare function useXEligibilityQuery(options?: Omit<UseQueryOptions<XEligibilityInfo, Error, XEligibilityInfo, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<XEligibilityInfo, Error>;
|
|
1268
|
+
|
|
1269
|
+
declare function xAuthorizeUrlQueryKey(returnUrl?: string): string[];
|
|
1270
|
+
declare function fetchXAuthorizeUrl(client: IChannelsClient, returnUrl?: string): Promise<string>;
|
|
1271
|
+
declare function useXAuthorizeUrlQuery(params?: {
|
|
1272
|
+
returnUrl?: string;
|
|
1273
|
+
}, options?: Omit<UseQueryOptions<string, Error, string, string[]>, "queryKey" | "queryFn">): _tanstack_react_query.UseQueryResult<string, Error>;
|
|
1274
|
+
|
|
312
1275
|
declare function parseWalletsText(value: string): Array<Partial<WalletValues>>;
|
|
313
1276
|
|
|
314
1277
|
type ChannelEventRowProps = {
|
|
315
1278
|
event: ChannelEvent;
|
|
316
1279
|
walletAliases?: Record<string, string | undefined>;
|
|
317
|
-
tokens?: Record<string, Token>;
|
|
1280
|
+
tokens?: Record<string, Token$1>;
|
|
318
1281
|
};
|
|
319
1282
|
|
|
320
|
-
export { BaseFormUI, type BaseFormUIProps, type BaseFormValues, ChannelAttributes, type ChannelAttributesProps, ChannelBaseInfo, type ChannelBaseInfoProps, type ChannelDetailPageProps, ChannelDetailUI, type ChannelDetailUIProps, ChannelDetailWidget, type ChannelDetailWidgetProps, ChannelEditButton, type ChannelEditButtonProps, type ChannelEventRowProps, type ChannelHomePageProps, ChannelStats, type ChannelStatsProps, ChannelSubscribeButton, type ChannelSubscribeButtonProps, ChannelsContext, type ChannelsContextValue, ChannelsDetailPage, ChannelsEmptyUI, type ChannelsEmptyUIProps, ChannelsHomePage, ChannelsProvider, type ChannelsProviderProps, ChannelsSkeletonUI, type ChannelsSkeletonUIProps, ChannelsUI, type ChannelsUIProps, CreateChannelWidget, type CreateChannelWidgetProps, MyChannelsWidget, type MyChannelsWidgetProps, SocialsFormUI, type SocialsFormUIProps, SubscribedChannelsWidget, type SubscribedChannelsWidgetProps, TrendingChannelsWidget, type TrendingChannelsWidgetProps, type UpdateChannelFormType, UpdateChannelFormUI, type UpdateChannelFormUIProps, UpdateChannelWidget, type UpdateChannelWidgetProps, type UseChannelEventsQueryParams, type UseChannelsListQueryParams, type UseCreateChannelMutationParams, type UseMyChannelsListQueryParams, type UseSubscribedChannelsListQueryParams, type UseUpdateChannelMutationParams, type UseUpdateChannelSourcesMutationParams, type WalletValues, WalletsFormUI, type WalletsFormUIProps, type WalletsFormValues, WalletsListUI, type WalletsListUIProps, baseFormSchema, channelEventsInfiniteQueryKey, channelEventsQueryKey, channelQueryKey, channelSourcesQueryKey, channelsListQueryKey, createChannel, fetchChannel, fetchChannelEvents, fetchChannelSources, fetchChannelsList, fetchMyChannelsList, fetchSubscribedChannelsList, myChannelsListQueryKey, parseWalletsText, subscribeChannel, subscribedChannelsListQueryKey, unsubscribeChannel, updateChannel, updateChannelSources, useChannelDetail, useChannelEventsInfiniteQuery, useChannelEventsQuery, useChannelQuery, useChannelSourcesQuery, useChannelsClient, useChannelsContext, useChannelsListQuery, useCreateChannelMutation, useMyChannels, useMyChannelsListQuery, useSubscribeChannelMutation, useSubscribedChannels, useSubscribedChannelsListQuery, useTrendingChannels, useUnsubscribeChannelMutation, useUpdateBaseForm, useUpdateChannelMutation, useUpdateChannelSourcesMutation, useUpdateWalletsForm, useUpload, _default as version, walletSchema, walletsFormSchema };
|
|
1283
|
+
export { ActivityFeedUI, type ActivityFeedUIProps, ActivityFeedWidget, type ActivityFeedWidgetProps, BaseFormUI, type BaseFormUIProps, type BaseFormValues, type BotConnectionStatus, ChannelAttributes, type ChannelAttributesProps, ChannelBaseInfo, type ChannelBaseInfoProps, ChannelBasicInfoUI, type ChannelBasicInfoUIProps, ChannelBasicInfoWidget, type ChannelBasicInfoWidgetProps, type ChannelCardData, type ChannelDetailData, ChannelDetailNewUI, type ChannelDetailNewUIProps, ChannelDetailNewWidget, type ChannelDetailNewWidgetProps, type ChannelDetailPageProps, type ChannelDetailStats, ChannelDetailUI, type ChannelDetailUIProps, ChannelDetailWidget, type ChannelDetailWidgetProps, ChannelEditButton, type ChannelEditButtonProps, type ChannelEventRowProps, type ChannelHomePageProps, ChannelStats, type ChannelStatsProps, ChannelSubscribeButton, type ChannelSubscribeButtonProps, ChannelsContext, type ChannelsContextValue, ChannelsDetailPage, ChannelsEmptyUI, type ChannelsEmptyUIProps, ChannelsHomePage, ChannelsProvider, type ChannelsProviderProps, ChannelsSkeletonUI, type ChannelsSkeletonUIProps, ChannelsUI, type ChannelsUIProps, CheckEligibilityUI, type CheckEligibilityUIProps, CheckEligibilityWidget, type CheckEligibilityWidgetProps, CreateChannelWidget, type CreateChannelWidgetProps, type EligibilityCheckItem, type EligibilityCheckStatus, FindChannelUI, type FindChannelUIProps, FindChannelWidget, type FindChannelWidgetProps, type KeyMetric, type MonitoredWallet, MyChannelsWidget, type MyChannelsWidgetProps, MySubscribeUI, type MySubscribeUIProps, MySubscribeWidget, type MySubscribeWidgetProps, type PresetAvatar, SocialBotsUI, type SocialBotsUIProps, SocialBotsWidget, type SocialBotsWidgetProps, SocialsFormUI, type SocialsFormUIProps, type SortDirection, type SortField, type Step, type StepStatus, StepperUI, type StepperUIProps, type SubscribedChannelData, SubscribedChannelsWidget, type SubscribedChannelsWidgetProps, TabContainerUI, type TabContainerUIProps, TabContainerWidget, type TabContainerWidgetProps, type TabType, type TimeFilter, type Token, TokensListUI, type TokensListUIProps, TokensListWidget, type TokensListWidgetProps, type TradeEvent, type Trader, TradersTableUI, type TradersTableUIProps, TradersTableWidget, type TradersTableWidgetProps, TrendingChannelsWidget, type TrendingChannelsWidgetProps, type UpdateChannelFormType, UpdateChannelFormUI, type UpdateChannelFormUIProps, UpdateChannelWidget, type UpdateChannelWidgetProps, type UseChannelBasicInfoScriptParams, type UseChannelBasicInfoScriptResult, type UseChannelEventsQueryParams, type UseChannelsListQueryParams, type UseCheckEligibilityScriptParams, type UseCheckEligibilityScriptResult, type UseCreateChannelMutationParams, type UseFindChannelScriptParams, type UseMyChannelsListQueryParams, type UseMySubscribeScriptParams, type UseSocialBotsScriptParams, type UseSocialBotsScriptResult, type UseSubscribedChannelsListQueryParams, type UseUpdateChannelMutationParams, type UseUpdateChannelSourcesMutationParams, type UseWalletImportScriptParams, type UseWalletImportScriptResult, WalletImportUI, type WalletImportUIProps, WalletImportWidget, type WalletImportWidgetProps, type WalletValues, WalletsFormUI, type WalletsFormUIProps, type WalletsFormValues, WalletsListUI, type WalletsListUIProps, type XAccountInfo, baseFormSchema, channelEventsInfiniteQueryKey, channelEventsQueryKey, channelQueryKey, channelSourcesQueryKey, channelsListQueryKey, createChannel, fetchChannel, fetchChannelEvents, fetchChannelSources, fetchChannelsList, fetchMyChannelsList, fetchSubscribedChannelsList, fetchXAuthorizeUrl, fetchXEligibility, myChannelsListQueryKey, parseWalletsText, subscribeChannel, subscribedChannelsListQueryKey, unsubscribeChannel, updateChannel, updateChannelSources, useChannelBasicInfoScript, useChannelDetail, useChannelEventsInfiniteQuery, useChannelEventsQuery, useChannelQuery, useChannelSourcesQuery, useChannelsClient, useChannelsContext, useChannelsListQuery, useCheckEligibilityScript, useCreateChannelMutation, useFindChannelScript, useMyChannels, useMyChannelsListQuery, useMySubscribeScript, useSocialBotsScript, useSubscribeChannelMutation, useSubscribedChannels, useSubscribedChannelsListQuery, useTrendingChannels, useUnsubscribeChannelMutation, useUpdateBaseForm, useUpdateChannelMutation, useUpdateChannelSourcesMutation, useUpdateWalletsForm, useUpload, useWalletImportScript, useXAuthorizeUrlQuery, useXEligibilityQuery, _default as version, walletSchema, walletsFormSchema, xAuthorizeUrlQueryKey, xEligibilityQueryKey };
|