UNPKG

@skynetxbt/venice-ai-plugin

Version:

Venice AI Plugin for Skynet Framework - Staking Contract Integration

73 lines (72 loc) 2.44 kB
import { IPlugin } from "@skynetxbt/core"; import { EventEmitter } from "events"; import { StakingOperationResult, StakingViewResult } from "./types"; import { TokenOperationResult } from "./VeniceToken"; interface RateLimit { amount: number; type: "RPM" | "RPD" | "TPM"; } interface ModelRateLimit { apiModelId: string; rateLimits: RateLimit[]; } interface VeniceBalances { VCU: number; USD: number; } interface ApiTier { id: string; isCharged: boolean; } interface RateLimitResponse { data: { apiTier: ApiTier; accessPermitted: boolean; balances: VeniceBalances; rateLimits: ModelRateLimit[]; }; } export interface VenicePluginConfig { rpcUrl?: string; privateKey?: string; stakingContractAddress?: string; veniceTokenAddress?: string; veniceApiKey?: string; veniceBaseUrl?: string; } export declare class VenicePlugin extends EventEmitter implements IPlugin { private config; readonly name: string; readonly description: string; private stakingContract; private veniceToken; private provider; private signer; private apiClient; constructor(config?: VenicePluginConfig); initialize(): Promise<void>; cleanup(): Promise<void>; getVCUsBalance(vvvBalance: string): Promise<string>; getModelInfo(modelId: string): Promise<string>; getTokenBalance(address: string): Promise<TokenOperationResult>; /** * Check allowance for staking contract */ checkAllowance(ownerAddress: string): Promise<TokenOperationResult>; /** * Approve staking contract to spend tokens */ approveStaking(amount: string): Promise<TokenOperationResult>; stake(recipient: string, amount: string): Promise<StakingOperationResult>; initiateUnstake(amount: string): Promise<StakingOperationResult>; finalizeUnstake(): Promise<StakingOperationResult>; claim(): Promise<StakingOperationResult>; getPendingRewards(userAddress: string): Promise<StakingViewResult<string>>; getVenicePercentage(): Promise<StakingViewResult<string>>; getUserStakeInfo(userAddress: string): Promise<StakingViewResult<any>>; getStakingStats(): Promise<StakingViewResult<any>>; getRateLimits(): Promise<RateLimitResponse | null>; getModelRateLimits(modelId: string): Promise<ModelRateLimit | null>; getVeniceBalances(): Promise<VeniceBalances | null>; } export {};