@skynetxbt/venice-ai-plugin
Version:
Venice AI Plugin for Skynet Framework - Staking Contract Integration
73 lines (72 loc) • 2.44 kB
TypeScript
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 {};