import type { PluginDefinition, PluginRef } from '../../plugins/types.js';
import { CatalogClientFactory } from './client-factory.js';
import type { CatalogSource, ResolvedSpec } from './catalog-service.js';
export interface PluginSearchResult {
    id: string;
    name: string;
    version: string;
    createdAt: string;
    updatedAt: string;
    title: string;
    description: string;
    iconUrl: string;
    readmeUrl: string;
    public: boolean;
    visibility: 'public' | 'private' | 'unlisted';
    lifecycleStatus: 'published' | 'deprecated';
}
/**
 * Cloud-fetch logic for plugins (public Botpress Hub only), plus hub search and
 * version listing. Moved verbatim from the old PluginManager; cache orchestration
 * now lives in {@link CatalogService}.
 */
export declare class PluginCatalogSource implements CatalogSource<PluginDefinition, PluginRef> {
    private readonly clientFactory;
    readonly cacheConfig: {
        cacheType: string;
        idField: string;
    };
    constructor(clientFactory: CatalogClientFactory);
    fetchByRef(ref: PluginRef): Promise<ResolvedSpec<PluginDefinition>>;
    /**
     * Search public plugins in the Botpress hub.
     *
     * The public plugin list API does not expose server-side search yet, so this
     * filters the catalog client-side. The catalog is small, and callers cap
     * results to keep CLI output compact.
     */
    search(query: string, limit?: number): Promise<PluginSearchResult[]>;
    /** List known public versions for a plugin name. */
    listVersions(name: string): Promise<string[]>;
    /**
     * Distinguish "plugin doesn't exist" from "this version doesn't exist",
     * mirroring the integration source's not-found error.
     */
    private _buildPluginNotFoundMessage;
    private _findPublicPlugin;
    private _isResourceNotFoundError;
}
//# sourceMappingURL=plugin-source.d.ts.map