import { AxiosRequestConfig } from 'axios';
import { RevitApiResponse, RevitElement, ExtractionOptions } from '../types';
import { ConfigManager } from './config-manager';
/**
 * Handles communication with Revit API
 */
export declare class RevitConnector {
    private client;
    private logger;
    private isConnected;
    constructor();
    /**
     * Setup request/response interceptors for logging and error handling
     */
    private setupInterceptors;
    /**
     * Initialize the connector with configuration
     */
    initialize(configManager: ConfigManager): Promise<void>;
    /**
     * Test connection to Revit API
     */
    testConnection(): Promise<boolean>;
    /**
     * Get Revit project information
     */
    getProjectInfo(): Promise<RevitApiResponse>;
    /**
     * Extract elements from Revit based on options
     */
    extractElements(options: ExtractionOptions): Promise<RevitApiResponse<RevitElement[]>>;
    /**
     * Get elements by category
     */
    getElementsByCategory(category: string): Promise<RevitApiResponse<RevitElement[]>>;
    /**
     * Get element by ID
     */
    getElementById(elementId: string): Promise<RevitApiResponse<RevitElement>>;
    /**
     * Get all available categories
     */
    getCategories(): Promise<RevitApiResponse<any[]>>;
    /**
     * Get parameters for a specific category
     */
    getCategoryParameters(category: string): Promise<RevitApiResponse<string[]>>;
    /**
     * Execute a custom Revit API command
     */
    executeCommand(command: string, parameters?: Record<string, any>): Promise<RevitApiResponse>;
    /**
     * Export data in specified format
     */
    exportData(data: any, format?: 'json' | 'csv' | 'xml'): Promise<RevitApiResponse<string>>;
    /**
     * Import data from file
     */
    importData(filePath: string, format?: 'json' | 'csv' | 'xml'): Promise<RevitApiResponse>;
    /**
     * Get Revit application status
     */
    getStatus(): Promise<RevitApiResponse>;
    /**
     * Handle API errors consistently
     */
    private handleError;
    /**
     * Make a custom API request
     */
    request<T = any>(config: AxiosRequestConfig): Promise<RevitApiResponse<T>>;
    /**
     * Check if connector is connected
     */
    getConnectionStatus(): Promise<{
        connected: boolean;
        error?: string;
    }>;
    /**
     * Set custom headers for API requests
     */
    setHeaders(headers: Record<string, string>): void;
    /**
     * Set authentication token
     */
    setAuthToken(token: string): void;
    /**
     * Clear authentication
     */
    clearAuth(): void;
}
//# sourceMappingURL=revit-connector.d.ts.map