/**
 * User Plugin Registry Type Definitions
 *
 * Types for user-configured plugin entries that tell the system how to find updates.
 * This is separate from the curated registry (registry-types.ts) which is bundled.
 *
 * Data Model (Plan 01):
 * - Registry: How to find updates (source IDs, patterns)
 * - Scan Cache: What's actually installed (from JAR scan)
 * - Preferences: User flags (enable/disable, skip migrate, pinned)
 *
 * @since v1.50.0
 */
import type { PluginSourceType } from './plugin.js';
/**
 * Plugin category for organization
 */
export type UserPluginCategory = 'admin' | 'economy' | 'permissions' | 'world' | 'gameplay' | 'chat' | 'protection' | 'utility' | 'library' | 'performance' | 'cosmetic' | 'minigames' | 'social' | 'uncategorized';
/**
 * A user-configured plugin entry that tells the system how to find updates.
 * Stored in ~/.pluginator/plugins-registry.json
 */
export interface UserPluginEntry {
    /** Plugin name (used as key, case-insensitive) */
    name: string;
    /** Source type for update checking */
    type: PluginSourceType;
    /** Generic resource identifier (fallback for various sources) */
    id?: string;
    /** Jenkins type (for URL construction) */
    jType?: string;
    /** Spigot/Spiget resource ID */
    resourceId?: string;
    /** Modrinth/Hangar project slug */
    projectSlug?: string;
    /** GitHub owner/repo format */
    repoSlug?: string;
    /** Jenkins job name */
    job?: string;
    /** Web manifest URL */
    manifestUrl?: string;
    /** Regex pattern to match JAR filenames */
    filenamePattern?: string;
    /** Alternative names this plugin might be known as */
    aliases?: string[];
    /** Target Minecraft version */
    mcVersion?: string;
    /** Plugin description */
    description?: string;
    /** Plugin website */
    website?: string;
    /** Category for organization */
    category?: UserPluginCategory;
    /** Build from source if no release available (GitHub) */
    buildFromSource?: boolean;
    /** Release channel preference */
    releaseChannel?: 'release' | 'beta' | 'alpha';
    /** How the source was assigned (auto vs manual) @since v2.2.0 */
    sourceAssignment?: import('./plugin.js').AssignmentMethod;
    /** When the source was last auto-assigned (Unix timestamp) @since v2.2.0 */
    sourceAssignedAt?: number;
    /** Registry plugin ID if matched from curated registry @since v2.2.0 */
    registryId?: string;
}
/**
 * User plugin registry file structure
 * Stored at ~/.pluginator/plugins-registry.json
 */
export interface UserPluginRegistry {
    /** Schema version for migrations */
    version: 1;
    /** Last modified timestamp (ISO 8601) */
    lastModified: string;
    /** User-configured plugin entries */
    plugins: UserPluginEntry[];
}
/**
 * Default empty user registry
 */
export declare const DEFAULT_USER_REGISTRY: UserPluginRegistry;
//# sourceMappingURL=user-registry.d.ts.map