import { ArtifactData, AuthorData } from '../types/UcmApiTypes.js';
export declare class UcmApiClient {
    private baseUrl;
    private authToken?;
    private authorId?;
    private client;
    constructor(baseUrl: string, authToken?: string | undefined, timeout?: number, authorId?: string | undefined);
    private setupInterceptors;
    private ensureClient;
    getAuthors(): Promise<AuthorData[]>;
    getAuthor(authorId: string): Promise<AuthorData | null>;
    private buildApiPath;
    getArtifact(author?: string, repository?: string, category?: string, subcategory?: string, filename?: string, version?: string): Promise<ArtifactData>;
    getLatestArtifact(author?: string, repository?: string, category?: string, subcategory?: string, filename?: string): Promise<ArtifactData>;
    listArtifacts(author?: string, repository?: string, category?: string, subcategory?: string, offset?: number, limit?: number): Promise<{
        data: any[];
        pagination: {
            offset: number;
            limit: number;
            total: number;
        };
        _links?: any;
    }>;
    searchArtifacts(filters?: {
        repository?: string;
        category?: string;
        technology?: string;
        subcategory?: string;
        offset?: number;
        limit?: number;
    }): Promise<ArtifactData[]>;
    publishArtifact(author: string, repository: string, category: string, subcategory: string, data: any): Promise<ArtifactData>;
    updateArtifact(author: string, repository: string, category: string, subcategory: string, filename: string, version: string, data: any): Promise<ArtifactData>;
    deleteArtifact(author: string, repository: string, category: string, subcategory: string, filename: string, version?: string): Promise<any>;
    getArtifactVersions(author: string, repository: string, category: string, subcategory: string, filename: string): Promise<any>;
    getCategories(): Promise<string[]>;
    healthCheck(): Promise<{
        status: string;
        timestamp: string;
    }>;
    getQuickstart(): Promise<string>;
    getAuthorIndex(author: string, repository?: string): Promise<string>;
    /**
     * Cleanup method to properly dispose of HTTP client resources
     * This helps prevent memory leaks from accumulated AbortSignal listeners
     */
    cleanup(): void;
    /**
     * Check if the client is still available for use
     */
    isAvailable(): boolean;
    createRepository(author: string, data: {
        repositoryName: string;
        displayName?: string;
        description?: string;
        isPublic?: boolean;
    }): Promise<any>;
    getRepository(author: string, repository: string): Promise<any>;
    updateRepository(author: string, repository: string, data: {
        displayName?: string;
        description?: string;
        isPublic?: boolean;
    }): Promise<any>;
    deleteRepository(author: string, repository: string): Promise<any>;
    listRepositories(author: string, offset?: number, limit?: number): Promise<{
        data: any[];
        pagination: {
            offset: number;
            limit: number;
            total: number;
        };
        _links?: any;
    }>;
}
//# sourceMappingURL=UcmApiClient.d.ts.map