/**
 * Community Insights & Reviews Types
 *
 * @since v1.66.5
 */
/**
 * Review source platforms
 */
export type ReviewSource = 'spigot' | 'modrinth' | 'hangar' | 'curseforge' | 'github' | 'discord';
/**
 * Single review from a user
 */
export interface PluginReview {
    id: string;
    pluginId: string;
    source: ReviewSource;
    author: string;
    rating: number;
    title?: string;
    content: string;
    createdAt: string;
    updatedAt?: string;
    helpfulCount: number;
    verified: boolean;
    serverType?: string;
    mcVersion?: string;
}
/**
 * Aggregated review statistics
 */
export interface AggregatedRating {
    pluginId: string;
    overall: number;
    count: number;
    distribution: {
        1: number;
        2: number;
        3: number;
        4: number;
        5: number;
    };
    bySource: Record<ReviewSource, {
        rating: number;
        count: number;
    }>;
    sentiment: 'positive' | 'mixed' | 'negative';
    lastUpdated: string;
}
/**
 * Server story - how a server uses a plugin
 */
export interface ServerStory {
    id: string;
    pluginId: string;
    serverName?: string;
    serverType: 'survival' | 'creative' | 'minigames' | 'rpg' | 'economy' | 'pvp' | 'other';
    playerCount: 'small' | 'medium' | 'large' | 'massive';
    useCase: string;
    tips: string[];
    configHighlights?: string[];
    pairsWellWith: string[];
    createdAt: string;
    helpfulCount: number;
}
/**
 * Community compatibility report
 */
export interface CompatibilityReport {
    pluginA: string;
    pluginB: string;
    status: 'compatible' | 'partial' | 'incompatible' | 'unknown';
    confidence: number;
    reportCount: number;
    issues?: string[];
    workarounds?: string[];
    lastReported: string;
}
/**
 * GitHub issue summary
 */
export interface GitHubIssueSummary {
    pluginId: string;
    repoUrl: string;
    openIssues: number;
    closedIssues: number;
    openBugs: number;
    avgResolutionDays: number;
    recentActivity: 'active' | 'moderate' | 'stale' | 'abandoned';
    lastIssueDate?: string;
    commonIssues: Array<{
        title: string;
        count: number;
        status: 'open' | 'closed';
    }>;
}
/**
 * Discord community info
 */
export interface DiscordCommunity {
    pluginId: string;
    serverUrl: string;
    memberCount?: number;
    isOfficial: boolean;
    channels: Array<{
        name: string;
        type: 'support' | 'general' | 'announcements' | 'showcase';
    }>;
    lastActivityDate?: string;
}
/**
 * Community question/answer
 */
export interface CommunityQuestion {
    id: string;
    pluginId: string;
    question: string;
    askedBy: string;
    askedAt: string;
    answers: Array<{
        id: string;
        content: string;
        author: string;
        createdAt: string;
        upvotes: number;
        isAccepted: boolean;
    }>;
    tags: string[];
    viewCount: number;
}
/**
 * Full community insights for a plugin
 */
export interface CommunityInsights {
    pluginId: string;
    rating: AggregatedRating;
    reviews: PluginReview[];
    stories: ServerStory[];
    compatibility: CompatibilityReport[];
    github?: GitHubIssueSummary;
    discord?: DiscordCommunity;
    questions: CommunityQuestion[];
    lastUpdated: string;
}
/**
 * Community service configuration
 */
export interface CommunityServiceConfig {
    cacheTimeMs: number;
    maxReviewsPerPlugin: number;
    maxStoriesPerPlugin: number;
    maxQuestionsPerPlugin: number;
}
/**
 * Default configuration
 */
export declare const DEFAULT_COMMUNITY_CONFIG: CommunityServiceConfig;
/**
 * Review sorting options
 */
export type ReviewSortBy = 'recent' | 'helpful' | 'rating_high' | 'rating_low';
/**
 * Review filter options
 */
export interface ReviewFilters {
    source?: ReviewSource;
    minRating?: number;
    maxRating?: number;
    verified?: boolean;
    serverType?: string;
    mcVersion?: string;
}
/**
 * Sentiment thresholds
 */
export declare const SENTIMENT_THRESHOLDS: {
    readonly positive: 3.8;
    readonly mixed: 2.5;
};
/**
 * Source weight for aggregation
 */
export declare const SOURCE_WEIGHTS: Record<ReviewSource, number>;
/**
 * Activity thresholds for GitHub issues (in days)
 */
export declare const ACTIVITY_THRESHOLDS: {
    readonly active: 7;
    readonly moderate: 30;
    readonly stale: 90;
};
//# sourceMappingURL=community-types.d.ts.map