import Database from 'better-sqlite3';
export interface ReposignalRepo {
    id: number;
    full_name: string;
    name: string;
    owner: string;
    description: string | null;
    language: string | null;
    topics: string | null;
    current_stars: number;
    current_forks: number;
    signal_score: number;
    signal_level: string;
    phase: string;
    first_seen_at: string;
    last_scanned_at: string | null;
}
export interface ReposignalHnMention {
    title: string;
    url: string;
    score: number;
    comment_count: number;
    repo_id: number | null;
}
export interface ReposignalImportOptions {
    /** Minimum signal level: 'noise' | 'watch' | 'signal' | 'breakout'. Default: 'watch' */
    minSignalLevel?: string;
    /** Maximum repos to import per run. Default: 5000 */
    batchSize?: number;
    /** Import HN mentions too. Default: true */
    includeHnMentions?: boolean;
    /** Record metrics for PredictionEngine. Default: true */
    recordMetrics?: boolean;
}
export interface ReposignalImportResult {
    dbPath: string;
    totalReposInDb: number;
    reposImported: number;
    discoveriesCreated: number;
    journalEntriesCreated: number;
    hnMentionsImported: number;
    metricsRecorded: number;
    skippedDuplicates: number;
    languageBreakdown: Record<string, number>;
    signalBreakdown: Record<string, number>;
    duration_ms: number;
}
export declare class ReposignalImporter {
    private brainDb;
    private log;
    private lastResult;
    constructor(brainDb: Database.Database);
    private ensureStateTable;
    /** Import repos from a reposignal/aisurvival SQLite database. */
    import(dbPath: string, options?: ReposignalImportOptions): ReposignalImportResult;
    /** Import top HN mentions as journal entries. */
    private importHnMentions;
    /** Record aggregated metrics into prediction_metrics table. */
    private recordImportMetrics;
    private parseTopics;
    getLastResult(): ReposignalImportResult | null;
    /** Get import stats from state table. */
    getStats(): {
        totalImported: number;
        byLevel: Record<string, number>;
        lastImport: string | null;
    };
}
