UNPKG

@mustafair/reputation-sdk

Version:

Official SDK for integrating CARV ID authentication and MustaFair reputation systems into decentralized applications

317 lines (314 loc) 8.99 kB
export { PublicClient, WalletClient } from 'viem'; export { Connector } from 'wagmi'; interface ReputationData { tokenId: string; contributionScore: number; tier: 'Bronze' | 'Silver' | 'Gold' | 'Platinum'; tierLevel: number; creationDate: string; carvIdLinked: boolean; carvIdHash: string; isActive: boolean; metadata: any; contractAddress: string; } interface CarvIdData { tokenId: string; metadata: any; contractAddress: string; isValid: boolean; } interface Web2Binding { provider: 'github' | 'google'; username?: string; email?: string; verified: boolean; linkedAt: string; } interface Web2Achievements { totalScore: number; overallTier: 'Bronze' | 'Silver' | 'Gold' | 'Platinum'; providers: any[]; combinedBadges: string[]; metadata: any; achievementHash: string; } interface WalletConnectionConfig { chains?: Array<{ id: number; name: string; rpcUrls: string[]; nativeCurrency: { name: string; symbol: string; decimals: number; }; }>; preferredConnectors?: string[]; autoConnect?: boolean; } interface CarvIdAuthConfig { contractAddress: string; chainId: number; requiredChains?: number[]; signMessageTemplate?: string; } interface AuthenticationResult { success: boolean; user?: { address: string; tokenId: string; signature: string; message: string; metadata?: any; web2Achievements?: any; identityHash: string; }; error?: string; } interface WalletConnection { address: string; isConnected: boolean; chainId: number; connector?: any; } interface FullProfileData { wallet: string; reputation: ReputationData | null; carvId: CarvIdData | null; web2Achievements: Web2Achievements | null; network: string; chainId: number; contracts: { reputationNFT?: string; carvId?: string; }; timestamp: string; } interface CarvIdProfile { wallet: string; hasIdentity: boolean; tokenId: string | null; metadata: any; web2Bindings: Web2Binding[]; web2Achievements: Web2Achievements | null; contractAddress: string; network: string; chainId: number; timestamp: string; } interface LeaderboardEntry { tokenId: string; wallet: string; contributionScore: number; tier: 'Bronze' | 'Silver' | 'Gold' | 'Platinum'; tierLevel: number; creationDate: string; carvIdLinked: boolean; carvIdHash: string; isActive: boolean; metadata: any; } interface LeaderboardData { totalCount: number; page: number; limit: number; totalPages: number; reputations: LeaderboardEntry[]; filters: { tier?: string; sortBy: string; sortOrder: string; }; contractAddress: string; network: string; chainId: number; timestamp: string; } interface PlatformStats { platform: { totalUsers: number; totalReputationNFTs: number; totalCarvIds: number; activeUsers: number; }; reputation: { totalScore: number; averageScore: number; tierDistribution: { Bronze: number; Silver: number; Gold: number; Platinum: number; }; topScore: number; }; web2Integration: { githubConnections: number; googleConnections: number; multiPlatformUsers: number; averageWeb2Score: number; }; network: { name: string; chainId: number; blockNumber: string; }; contracts: { reputationNFT: string; carvId: string; }; lastUpdated: string; } interface APIResponse<T> { success: boolean; data?: T; error?: string; message?: string; code?: string; details?: string; } interface LeaderboardFilters { page?: number; limit?: number; tier?: 'Bronze' | 'Silver' | 'Gold' | 'Platinum'; sortBy?: 'score' | 'creationDate' | 'tier'; sortOrder?: 'asc' | 'desc'; } declare class Fair3ReputationSDK { private baseUrl; private timeout; private walletConnection; private authConfig; static readonly DEFAULT_CONTRACTS: { 97: string; 31337: string; }; static readonly DEFAULT_CHAINS: { id: number; name: string; rpcUrls: string[]; nativeCurrency: { name: string; symbol: string; decimals: number; }; }[]; constructor(baseUrl?: string, timeout?: number, authConfig?: Partial<CarvIdAuthConfig>); initialize(walletConnection?: WalletConnection): Promise<void>; setWalletConnection(connection: WalletConnection): void; getWalletConnection(): WalletConnection | null; isWalletReady(): boolean; authenticateWithCarvId(signMessage: (message: string) => Promise<string>, options?: { fetchMetadata?: boolean; fetchWeb2Achievements?: boolean; }): Promise<AuthenticationResult>; private generateIdentityHash; prepareCarvIdMint(recipient?: string): Promise<{ to: string; data: string; value: string; chainId: number; }>; static getSupportedChains(): { id: number; name: string; rpcUrls: string[]; nativeCurrency: { name: string; symbol: string; decimals: number; }; }[]; static getDefaultContracts(): { 97: string; 31337: string; }; private isValidAddress; private makeRequest; getProfile(address: string): Promise<FullProfileData>; getCarvIdProfile(address: string): Promise<CarvIdProfile>; getReputation(address: string): Promise<ReputationData | null>; getLeaderboard(filters?: LeaderboardFilters): Promise<LeaderboardData>; getStats(): Promise<PlatformStats>; getTopPerformers(tier?: 'Bronze' | 'Silver' | 'Gold' | 'Platinum', limit?: number): Promise<LeaderboardEntry[]>; hasReputation(address: string): Promise<boolean>; hasCarvId(address: string): Promise<boolean>; getTierInfo(address: string): Promise<{ tier: string; score: number; tierLevel: number; } | null>; searchByTier(tier: 'Bronze' | 'Silver' | 'Gold' | 'Platinum', page?: number, limit?: number): Promise<LeaderboardEntry[]>; getDocs(): Promise<any>; static create(baseUrl: string, timeout?: number, authConfig?: Partial<CarvIdAuthConfig>): Fair3ReputationSDK; static validateAddresses(addresses: string[]): { valid: string[]; invalid: string[]; }; static getTierValue(tier: string): number; static formatScore(score: number): string; checkReputationRequirements(address: string, requirements: { minScore?: number; minTier?: 'Bronze' | 'Silver' | 'Gold' | 'Platinum'; requireCarvId?: boolean; }): Promise<{ meets: boolean; reasons: string[]; }>; getBatchProfiles(addresses: string[], options?: { maxConcurrent?: number; includeErrors?: boolean; }): Promise<Array<{ address: string; profile?: FullProfileData; error?: string; }>>; } declare const createSDKHooks: (sdk: Fair3ReputationSDK) => { useProfile: (address?: string) => { data: null; loading: boolean; error: null; refetch: () => Promise<FullProfileData | null>; }; useAuthentication: () => { authenticate: (signMessage: (message: string) => Promise<string>, options?: { fetchMetadata?: boolean; fetchWeb2Achievements?: boolean; }) => Promise<AuthenticationResult>; isReady: boolean; connection: WalletConnection | null; }; }; declare const FAIR3_CONSTANTS: { SUPPORTED_CHAINS: { id: number; name: string; rpcUrls: string[]; nativeCurrency: { name: string; symbol: string; decimals: number; }; }[]; CONTRACT_ADDRESSES: { 97: string; 31337: string; }; TIER_VALUES: { readonly Bronze: 0; readonly Silver: 1; readonly Gold: 2; readonly Platinum: 3; }; API_ENDPOINTS: { readonly REPUTATION: "/api/public/reputation"; readonly CARV_ID: "/api/public/carv-id"; readonly LEADERBOARD: "/api/public/leaderboard"; readonly STATS: "/api/public/stats"; }; }; declare const fair3SDK: Fair3ReputationSDK; export { FAIR3_CONSTANTS, Fair3ReputationSDK, createSDKHooks, Fair3ReputationSDK as default, fair3SDK }; export type { APIResponse, AuthenticationResult, CarvIdAuthConfig, CarvIdData, CarvIdProfile, FullProfileData, LeaderboardData, LeaderboardEntry, LeaderboardFilters, PlatformStats, ReputationData, WalletConnection, WalletConnectionConfig, Web2Achievements, Web2Binding };