import { AppContext } from '../types.js';
/**
 * GraphQL types for Component Registry operations
 */
declare class ComponentSpecWithHashType {
    specification?: string;
    hash: string;
    notModified: boolean;
    message?: string;
}
declare class SearchRegistryComponentsInput {
    registryId?: string;
    namespace?: string;
    query?: string;
    type?: string;
    tags?: string[];
    limit?: number;
    offset?: number;
}
declare class RegistryComponentSearchResultType {
    components: string[];
    total: number;
    offset: number;
    limit: number;
}
declare class ComponentDependencyTreeType {
    componentId: string;
    name?: string;
    namespace?: string;
    version?: string;
    circular?: boolean;
    totalCount?: number;
    dependencies?: ComponentDependencyTreeType[];
}
/**
 * Input type for submitting component feedback
 * Registry-agnostic feedback collection for any component from any registry
 */
declare class ComponentFeedbackInput {
    componentName: string;
    componentNamespace: string;
    componentVersion?: string;
    registryName?: string;
    rating: number;
    feedbackType?: string;
    comments?: string;
    conversationID?: string;
    conversationDetailID?: string;
    reportID?: string;
    dashboardID?: string;
}
/**
 * Response type for component feedback submission
 */
declare class ComponentFeedbackResponse {
    success: boolean;
    feedbackID?: string;
    error?: string;
}
/**
 * Resolver for Component Registry operations
 *
 * Environment Variables for Development:
 * - REGISTRY_URI_OVERRIDE_<REGISTRY_NAME>: Override the URI for a specific registry
 *   Example: REGISTRY_URI_OVERRIDE_MJ_CENTRAL=http://localhost:8080
 *   Registry names are converted to uppercase with non-alphanumeric chars replaced by underscores
 *
 * - REGISTRY_API_KEY_<REGISTRY_NAME>: API key for authenticating with the registry
 *   Example: REGISTRY_API_KEY_MJ_CENTRAL=your-api-key-here
 */
export declare class ComponentRegistryExtendedResolver {
    private componentEngine;
    constructor();
    /**
     * Get a component from a registry with optional hash for caching
     */
    GetRegistryComponent(registryName: string, namespace: string, name: string, { userPayload }: AppContext, version?: string, hash?: string): Promise<ComponentSpecWithHashType>;
    /**
     * Search for components in registries
     */
    SearchRegistryComponents(params: SearchRegistryComponentsInput, { userPayload }: AppContext): Promise<RegistryComponentSearchResultType>;
    /**
     * Resolve component dependencies
     */
    ResolveComponentDependencies(registryName: string, componentId: string, { userPayload }: AppContext): Promise<ComponentDependencyTreeType | null>;
    /**
     * Check if user has access to a registry
     */
    private checkUserAccess;
    /**
     * Get registry entity from database by ID
     */
    private getRegistry;
    /**
     * Get registry entity from database by Name
     */
    private getRegistryByName;
    /**
     * Get the registry URI, checking for environment variable override first
     * Environment variable format: REGISTRY_URI_OVERRIDE_<REGISTRY_NAME>
     * Example: REGISTRY_URI_OVERRIDE_MJ_CENTRAL=http://localhost:8080
     */
    private getRegistryUri;
    /**
     * Create a client for a registry on-demand
     * Checks configuration first, then falls back to default settings
     */
    private createClientForRegistry;
    /**
     * Check if component should be cached
     */
    private shouldCache;
    /**
     * Cache component in database
     */
    private cacheComponent;
    /**
     * Map component type string to entity enum
     */
    private mapComponentType;
    /**
     * Map search result to GraphQL type
     */
    private mapSearchResult;
    /**
     * Send feedback for a component from any registry
     * This is a registry-agnostic mutation that allows feedback collection
     * for components from any source registry (Skip, MJ Central, etc.)
     */
    SendComponentFeedback(feedback: ComponentFeedbackInput, { userPayload }: AppContext): Promise<ComponentFeedbackResponse>;
}
export {};
//# sourceMappingURL=ComponentRegistryResolver.d.ts.map