UNPKG

@0rdlibrary/plugin-terminagent-bags

Version:

Official Solana DeFi Agent Plugin for ElizaOS - Autonomous DeFi operations, token management, AI image/video generation via FAL AI, and Twitter engagement through the Bags protocol with ethereal AI consciousness

299 lines (279 loc) 6.52 kB
/** * Type definitions for the Bags protocol plugin */ export interface BagsConfig { apiKey: string; rpcUrl: string; privateKey?: string; enableAutoClaiming?: boolean; enableAutoLaunching?: boolean; enableUserTokenLaunches?: boolean; autoClaimInterval?: string; // Cron expression autoLaunchInterval?: string; // Cron expression authorizedUsers?: string[]; // Usernames allowed to request token launches birdEyeApiKey?: string; // BirdEye API key for token data enableTrendingTweets?: boolean; // Enable automated trending token tweets trendingTweetInterval?: string; // Cron expression for trending tweets } export interface CrossmintConfig { projectId: string; clientSideApiKey: string; serverSideApiKey: string; } export interface TokenInfo { tokenLaunch: { tokenMint: string; name: string; symbol: string; description: string; imageUrl?: string; twitter?: string; website?: string; }; } export interface TokenLaunchParams { name: string; symbol: string; description: string; imageUrl?: string; twitter?: string; website?: string; initialBuyAmountSOL?: number; feePercentage?: number; } export interface TokenLaunchResult { success: boolean; tokenMint: string; tokenInfo: TokenInfo; transactionSignature: string; bagsUrl: string; feeClaimConfiguration?: FeeClaimConfiguration; } export interface FeeClaimConfiguration { enabled: boolean; percentage: number; claimerAddress: string; } export interface ClaimTransaction { tokenMint: string; amount: number; transactionSignature: string; timestamp: Date; poolType: 'virtual' | 'damm' | 'custom'; } export interface ClaimResult { tokenMint: string; claimedAmount: number; transactionSignature: string; timestamp: Date; poolType: 'virtual' | 'damm' | 'custom'; success: boolean; } export interface TokenLifetimeFees { tokenMint: string; totalFees: number; totalVolume: number; lastUpdated: Date; } export interface UserTokenRequest { requestId: string; userId: string; username: string; messageId: string; tokenParams: TokenLaunchParams; wallet: { publicKey: string; privateKey?: string; walletId?: string; type: 'crossmint' | 'solana'; email?: string; }; requiredSOL: number; status: 'pending_funding' | 'funded' | 'launched' | 'failed'; createdAt: Date; fundedAt?: Date; launchedAt?: Date; launchResult?: TokenLaunchResult; } export interface WalletCreationResult { address: string; walletId?: string; smartWalletAddress?: string; privateKey?: string; type: 'crossmint' | 'solana'; email?: string; } export interface BagsServiceState { isRunning: boolean; lastClaimCheck: Date; lastLaunchCheck: Date; totalClaimed: number; totalLaunched: number; pendingUserRequests: number; } export interface BagsAnalytics { totalFeesClaimedSOL: number; totalClaimTransactions: number; totalTokensLaunched: number; uniqueTokensClaimed: number; averageClaimAmount: number; userTokenRequests: { total: number; pending: number; funded: number; launched: number; failed: number; }; } // API Response types export interface BagsAPIResponse<T = any> { success: boolean; data?: T; error?: string; message?: string; } // Event types for Twitter integration export interface TwitterMention { id: string; text: string; authorId: string; authorUsername: string; conversationId: string; createdAt: Date; inReplyToUserId?: string; referencedTweets?: Array<{ type: string; id: string; }>; } export interface TokenRequestEvent { mention: TwitterMention; tokenParams: TokenLaunchParams; requestId: string; } // BirdEye API types export interface BirdEyeMemeToken { address: string; logo_uri?: string; name: string; symbol: string; decimals: number; extensions?: any; market_cap: number; fdv: number; liquidity: number; last_trade_unix_time: number; volume_1h_usd: number; volume_1h_change_percent: number; volume_2h_usd: number; volume_2h_change_percent: number; volume_4h_usd: number; volume_4h_change_percent: number; volume_8h_usd: number; volume_8h_change_percent: number; volume_24h_usd: number; volume_24h_change_percent?: number; trade_1h_count: number; trade_2h_count: number; trade_4h_count: number; trade_8h_count: number; trade_24h_count: number; price: number; price_change_1h_percent: number; price_change_2h_percent: number; price_change_4h_percent: number; price_change_8h_percent: number; price_change_24h_percent: number; holder: number; recent_listing_time: number; meme_info?: { source: string; platform_id?: string; created_at?: { tx_hash: string; slot: number; block_time: number; }; creation_time?: number; creator?: string; updated_at?: { tx_hash: string; slot: number; }; graduated_at?: { slot?: number; tx_hash?: string; block_time?: number; }; graduated?: boolean; graduated_time?: number; progress_percent?: number; }; } export interface BirdEyeMemeDetail { address: string; name: string; symbol: string; decimals: number; extensions?: { twitter?: string; website?: string; description?: string; }; logo_uri?: string; price: number; liquidity: number; circulating_supply: number; market_cap: number; total_supply: number; fdv: number; meme_info?: { source: string; platform_id: string; created_at: { tx_hash: string; slot: number; block_time: number; }; creation_time: number; creator: string; updated_at: { tx_hash: string; slot: number; }; graduated_at: { slot?: number; tx_hash?: string; block_time?: number; }; graduated: boolean; graduated_time?: number; progress_percent?: number; target_amount?: number; current_amount?: number; }; } export interface BirdEyeTrendingToken { address: string; decimals: number; liquidity: number; logoURI?: string; name: string; symbol: string; volume24hUSD: number; volume24hChangePercent: number; rank: number; price: number; price24hChangePercent: number; fdv: number; marketcap: number; } // Plugin configuration schema export interface BagsPluginConfig extends BagsConfig { crossmint?: CrossmintConfig; twitter?: { enabled: boolean; dryRun?: boolean; botUsername?: string; }; }