import { Category, PaperMetadata } from '../types/papers.js';
import { RateLimiter } from '../core/rate-limiter.js';
export declare abstract class BaseDriver {
    protected rateLimiter: RateLimiter;
    protected source: string;
    constructor(rateLimiter: RateLimiter, source: string);
    /**
     * List available categories/concepts for this source
     */
    abstract listCategories(): Promise<Category[]>;
    /**
     * Fetch latest papers for a given category
     */
    abstract fetchLatest(category: string, count: number): Promise<PaperMetadata[]>;
    /**
     * Fetch content for a specific paper by ID
     */
    abstract fetchContent(id: string): Promise<PaperMetadata>;
    /**
     * Check rate limit before making requests
     */
    protected checkRateLimit(): boolean;
    /**
     * Get retry after time if rate limited
     */
    protected getRetryAfter(): number;
}
