@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
TypeScript
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;
}