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