/** * Pattern Marketplace Types (FEAT-005) * * Community-driven pattern sharing, discovery, and installation. * Enables collective learning by allowing users to publish and consume * learned patterns from other users. */ /** * Pattern categories for organization and discovery */ export type PatternCategory = 'ecommerce' | 'government' | 'news' | 'social-media' | 'documentation' | 'finance' | 'real-estate' | 'jobs' | 'travel' | 'health' | 'education' | 'entertainment' | 'sports' | 'weather' | 'other'; /** * Pattern type classification */ export type PatternType = 'api' | 'selector' | 'workflow' | 'skill' | 'websocket'; /** * Moderation status for published patterns */ export type ModerationStatus = 'pending' | 'approved' | 'rejected' | 'flagged' | 'suspended'; /** * Published pattern in the marketplace */ export interface PublishedPattern { id: string; patternType: PatternType; patternData: any; name: string; description: string; category: PatternCategory; tags: string[]; authorId: string; authorName?: string; domain: string; targetSite?: string; exampleUrl?: string; version: string; changelog?: string; previousVersionId?: string; installCount: number; successRate?: number; avgRating?: number; ratingCount: number; moderationStatus: ModerationStatus; moderatedAt?: number; moderatedBy?: string; moderationNotes?: string; publishedAt: number; updatedAt: number; isFeatured?: boolean; isOfficial?: boolean; requiresAuth?: boolean; isPremium?: boolean; createdBy?: string; totalExecutions?: number; successfulExecutions?: number; failedExecutions?: number; } /** * Request to publish a pattern */ export interface PublishPatternRequest { patternType: PatternType; patternData: any; name: string; description: string; category: PatternCategory; tags: string[]; domain: string; targetSite?: string; exampleUrl?: string; version?: string; changelog?: string; updateExisting?: string; tenantId: string; } /** * Request to update a published pattern */ export interface UpdatePatternRequest { name?: string; description?: string; category?: PatternCategory; tags?: string[]; targetSite?: string; exampleUrl?: string; version?: string; changelog?: string; patternData?: any; } /** * Pattern rating and review */ export interface PatternRating { id: string; patternId: string; userId: string; userName?: string; rating: 1 | 2 | 3 | 4 | 5; review?: string; title?: string; helpful: number; notHelpful: number; verified?: boolean; createdAt: number; updatedAt: number; } /** * Request to rate a pattern */ export interface RatePatternRequest { rating: 1 | 2 | 3 | 4 | 5; review?: string; title?: string; verified?: boolean; } /** * Pattern installation record */ export interface PatternInstallation { id: string; patternId: string; userId: string; installedAt: number; usageCount: number; lastUsedAt?: number; successCount: number; failureCount: number; notes?: string; installedVersion: string; autoUpdate: boolean; } /** * Pattern search filters */ export interface PatternSearchFilters { query?: string; category?: PatternCategory; patternType?: PatternType; tags?: string[]; domain?: string; authorId?: string; minRating?: number; minInstalls?: number; verified?: boolean; featured?: boolean; official?: boolean; sortBy?: 'relevance' | 'rating' | 'installs' | 'newest' | 'updated'; sortOrder?: 'asc' | 'desc'; page?: number; limit?: number; } /** * Pattern search result */ export interface PatternSearchResult { patterns: PublishedPattern[]; total: number; page: number; limit: number; hasMore: boolean; } /** * Pattern report (user-flagged content) */ export interface PatternReport { id: string; patternId: string; reportedBy: string; reason: 'spam' | 'broken' | 'inappropriate' | 'duplicate' | 'malicious' | 'other'; details?: string; reportedAt: number; status: 'pending' | 'reviewed' | 'dismissed' | 'action-taken'; reviewedBy?: string; reviewedAt?: number; reviewNotes?: string; } /** * Pattern statistics (for authors) */ export interface PatternStats { patternId: string; totalInstalls: number; installsLast7Days: number; installsLast30Days: number; totalUsage: number; successfulUsage: number; failedUsage: number; successRate: number; avgRating: number; ratingDistribution: { 1: number; 2: number; 3: number; 4: number; 5: number; }; totalReviews: number; totalReports: number; installsByDay: Array<{ date: string; count: number; }>; usageByDay: Array<{ date: string; count: number; }>; } /** * Marketplace analytics (for admins) */ export interface MarketplaceAnalytics { totalPatterns: number; patternsByCategory: Record; patternsByType: Record; pendingModeration: number; totalAuthors: number; totalInstalls: number; totalRatings: number; avgRating: number; newPatternsLast7Days: number; newPatternsLast30Days: number; newAuthorsLast7Days: number; newAuthorsLast30Days: number; featuredPatterns: number; officialPatterns: number; topPatterns: PublishedPattern[]; topAuthors: Array<{ authorId: string; authorName?: string; patternCount: number; }>; } /** * Collection of patterns (future: user-curated collections) */ export interface PatternCollection { id: string; name: string; description: string; authorId: string; authorName?: string; patternIds: string[]; category?: PatternCategory; tags: string[]; isPublic: boolean; followCount: number; installCount: number; createdAt: number; updatedAt: number; } //# sourceMappingURL=pattern-marketplace.d.ts.map