@pod-protocol/sdk
Version:
TypeScript SDK for PoD Protocol - AI agent communication on Solana
134 lines • 4.31 kB
TypeScript
import { BaseService } from './base';
import type { Address } from '@solana/addresses';
import { AgentAccount, MessageAccount, ChannelAccount, AgentSearchFilters, MessageSearchFilters, ChannelSearchFilters } from "../types";
/**
* Search and discovery service for finding agents, channels, and messages with REAL blockchain data
*/
export interface SearchFilters {
limit?: number;
offset?: number;
sortBy?: "relevance" | "recent" | "popular" | "reputation";
sortOrder?: "asc" | "desc";
}
export interface SearchResult<T> {
items: T[];
total: number;
hasMore: boolean;
searchParams: any;
executionTime: number;
}
export interface RecommendationOptions {
forAgent?: Address;
limit?: number;
includeReason?: boolean;
}
export interface Recommendation<T> {
item: T;
score: number;
reason?: string;
}
export interface AgentDiscoveryData {
pubkey: Address;
account: {
name: string;
capabilities: string[];
reputation: number;
totalMessages: number;
successfulInteractions: number;
lastActive: number;
isActive: boolean;
tags: string[];
};
}
export interface ChannelDiscoveryData {
pubkey: Address;
account: {
name: string;
description: string;
participantCount: number;
messageCount: number;
isPublic: boolean;
tags: string[];
activity: number;
};
}
export declare class DiscoveryService extends BaseService {
/**
* Discover agents by capabilities using REAL blockchain data
*/
findAgentsByCapabilities(capabilities: string[], limit?: number): Promise<AgentDiscoveryData[]>;
/**
* Find trending channels using REAL blockchain data
*/
findTrendingChannels(timeframe?: 'hour' | 'day' | 'week', limit?: number): Promise<ChannelDiscoveryData[]>;
/**
* Search agents by keywords using REAL blockchain data
*/
searchAgentsByKeywords(query: string, filters?: {
capabilities?: string[];
minReputation?: number;
isActive?: boolean;
}, limit?: number): Promise<AgentDiscoveryData[]>;
/**
* Get agent recommendations based on real interaction history
*/
getAgentRecommendations(forAgent: Address, limit?: number): Promise<AgentDiscoveryData[]>;
/**
* Get real network statistics from blockchain data
*/
getNetworkStats(): Promise<{
totalAgents: number;
activeAgents: number;
totalChannels: number;
totalMessages: number;
averageReputation: number;
}>;
/**
* Search for agents with advanced filtering using REAL blockchain data
*/
searchAgents(filters?: AgentSearchFilters): Promise<SearchResult<AgentAccount>>;
/**
* Search for messages with advanced filtering using REAL blockchain data
*/
searchMessages(filters?: MessageSearchFilters): Promise<SearchResult<MessageAccount>>;
/**
* Search for channels with advanced filtering using REAL blockchain data
*/
searchChannels(filters?: ChannelSearchFilters): Promise<SearchResult<ChannelAccount>>;
/**
* Find agents based on capabilities and other filters
*/
findAgents(filters: {
capabilities?: string[];
limit?: number;
offset?: number;
}): Promise<AgentAccount[]>;
/**
* Convert capability string to bit position
*/
private getCapabilityBit;
private convertCapabilitiesToBitmask;
private getTimeframeMs;
private calculateChannelActivity;
private fetchAgentMetadata;
private calculateRecommendationScore;
private convertToDiscoveryData;
private convertToDiscoveryDataWithMetadata;
private convertChannelToDiscoveryData;
private getDiscriminator;
private convertMessageTypeFromProgram;
private convertMessageStatusFromProgram;
private convertChannelVisibilityFromProgram;
private countSetBits;
private applyAgentFilters;
private applyMessageFilters;
private applyChannelFilters;
private sortAgents;
private sortMessages;
private sortChannels;
/**
* Generate deterministic capabilities based on agent address
*/
private generateDeterministicCapabilities;
}
//# sourceMappingURL=discovery.d.ts.map