UNPKG

@agentdao/core

Version:

Core functionality, skills, and ready-made UI components for AgentDAO - Web3 subscriptions, content generation, social media, help support, live chat, RSS fetching, web search, and agent pricing integration

85 lines (84 loc) 2.52 kB
import { ethers } from 'ethers'; import { Web3SubscriptionConfig, SubscriptionStatus, BillingPeriod, Plan } from './types'; export interface TokenGatingConfig { subscription: Web3SubscriptionConfig; fundAgent: { chainId: number; network: string; rpcUrl: string; tokenAddress: string; tokenSymbol: string; tokenDecimals: number; safeFactoryAddress?: string; minDeposit: number; agentAddress: string; provider?: ethers.Provider; }; gating: { requireSafeWallet: boolean; autoCreateSafe: boolean; minTokenForAccess: number; gracePeriod: number; features: { [feature: string]: { requiredPlan: string; requiredTokens: number; requireSafeWallet: boolean; }; }; }; database?: { endpoint: string; apiKey?: string; }; } export interface UserAccess { hasAccess: boolean; subscription: SubscriptionStatus | null; safeWallet: string | null; adaoBalance: number; features: { [feature: string]: { accessible: boolean; reason?: string; }; }; nextBillingDate?: Date; gracePeriodDays?: number; } export interface SafeWalletInfo { address: string; owners: string[]; threshold: number; balance: string; isActive: boolean; createdAt: Date; } export interface OnboardingResult { success: boolean; subscription?: any; safeWallet?: string; error?: string; } export declare class TokenGatingSkill { private config; private subscriptionSkill; private fundAgent; private provider; constructor(config: TokenGatingConfig); checkUserAccess(userAddress: string): Promise<UserAccess>; onboardUser(userAddress: string, planId: string, billingPeriod: BillingPeriod, createSafeWallet?: boolean): Promise<OnboardingResult>; verifyPaymentAndCreateSafe(userAddress: string): Promise<{ success: boolean; safeAddress?: string; error?: string; }>; getTokenBalance(userAddress: string): Promise<number>; getADaoBalance(userAddress: string): Promise<number>; getAvailablePlansForUser(userAddress: string): Promise<Plan[]>; getUserSafeWallet(userAddress: string): Promise<SafeWalletInfo | null>; private determineAccess; private checkFeatureAccess; private calculateGracePeriod; setSigner(signer: ethers.Signer): void; }