/**
 * Plugin type definitions
 */
/**
 * Supported plugin source types
 */
export type PluginSourceType = 'spigot' | 'modrinth' | 'github' | 'jenkins' | 'bukkit' | 'web' | 'manual' | 'ninsys' | 'hangar' | 'geysermc';
/**
 * How a source was assigned to a plugin
 * @since v2.2.0
 */
export type AssignmentMethod = 'registry' | 'website-hint' | 'manual' | 'none';
/**
 * The primary plugin representation used throughout the application.
 * Configured in plugins.json
 */
export interface Plugin {
    name: string;
    type: PluginSourceType;
    id?: string;
    jType?: string;
    version?: string;
    resourceId?: string;
    projectSlug?: string;
    repoSlug?: string;
    job?: string;
    mcVersion?: string;
    filenamePattern?: string;
    sourceUrl?: string;
    disableOnTest?: boolean;
    buildFromSource?: boolean;
    enabled?: boolean;
    sourceAssignment?: AssignmentMethod;
    sourceAssignedAt?: number;
    registryId?: string;
}
/**
 * Load phase from plugin.yml
 */
export type LoadPhase = 'STARTUP' | 'POSTWORLD';
/**
 * Represents a plugin extracted from a JAR file's plugin.yml
 */
export interface ScannedPlugin {
    name: string;
    version: string;
    main: string;
    description?: string;
    author?: string;
    authors?: string[];
    website?: string;
    apiVersion?: string;
    depend?: string[];
    softDepend?: string[];
    loadBefore?: string[];
    prefix?: string;
    load?: LoadPhase;
    jarPath: string;
    jarFilename: string;
    fileSize?: number;
    modifiedTime?: number;
    valid: boolean;
    error?: string;
    disabled?: boolean;
}
/**
 * Information about a plugin from a remote source (API response)
 */
export interface PluginInfo {
    name: string;
    version: string;
    description?: string;
    author?: string;
    downloadUrl: string;
    minecraftVersion?: string;
    minecraftVersions?: string[];
    dependencies?: string[];
    tags?: string[];
    categories?: string[];
    sha256?: string;
    sha512?: string;
    sha1?: string;
    md5?: string;
    releaseDate?: string;
    changelog?: string;
    changelogUrl?: string;
    license?: string;
    website?: string;
    fileSize?: number;
    downloadCount?: number;
    sourceType?: PluginSourceType;
    sourceId?: string;
    iconUrl?: string;
    rating?: number;
    ratingCount?: number;
    category?: string;
    stars?: number;
    prerelease?: boolean;
}
/**
 * Result of checking a plugin for updates
 */
export interface PluginUpdateInfo {
    pluginName: string;
    currentVersion: string;
    latestVersion: string;
    hasUpdate: boolean;
    latestInfo: PluginInfo;
    error?: string;
}
/**
 * Plugins configuration file structure
 */
export interface PluginsConfig {
    plugins: Plugin[];
}
//# sourceMappingURL=plugin.d.ts.map