import { ComponentSpec } from '@memberjunction/interactive-component-types';
export interface RegistryComponentMetadata {
    name: string;
    namespace: string;
    version: string;
    description: string;
    title?: string;
    type?: string;
    status?: string;
    properties?: ComponentSpec['properties'];
    events?: ComponentSpec['events'];
    libraries?: ComponentSpec['libraries'];
    dependencies?: ComponentSpec['dependencies'];
    sourceRegistryID?: string | null;
    isLocal: boolean;
    lastFetched?: Date;
    cacheDuration?: number;
}
export interface RegistryComponentResponse {
    metadata: RegistryComponentMetadata;
    spec: ComponentSpec;
}
export interface RegistryProvider {
    name: string;
    fetchComponent(name: string, namespace: string, version?: string): Promise<RegistryComponentResponse>;
    componentExists?(name: string, namespace: string, version?: string): Promise<boolean>;
    getComponentVersions?(name: string, namespace: string): Promise<string[]>;
}
export interface RegistrySearchFilters {
    type?: string;
    status?: string;
    namespace?: string;
    query?: string;
    limit?: number;
    offset?: number;
}
export interface ComponentDependencyInfo {
    name: string;
    namespace: string;
    version?: string;
    isRequired: boolean;
    location: 'embedded' | 'registry';
    sourceRegistryID?: string | null;
}
export interface DependencyTree {
    componentId: string;
    name?: string;
    namespace?: string;
    version?: string;
    dependencies?: DependencyTree[];
    circular?: boolean;
    totalCount?: number;
}
//# sourceMappingURL=registry-provider.d.ts.map