/// <reference types="multer" />
import { Sequelize as SequelizeInstance } from 'sequelize-typescript';
export declare const MIN_WHITELIST_SIZE = 50;
interface PlanInput {
    whitelist: string[];
    liveStocks: Array<{
        id: number;
        symbol: string;
    }>;
    enUsoSymbols: string[];
}
interface PreviewResult {
    preview_token: string;
    generated_at: string;
    counts: {
        total_actual: number;
        a_borrar: number;
        a_insertar: number;
        conservadas_por_indice: number;
        conservadas_solo_por_uso: number;
        whitelist_size: number;
        en_uso_size: number;
    };
    a_insertar: string[];
    en_uso_fuera_de_indice: string[];
    a_borrar_count: number;
    a_borrar_sample: string[];
}
export declare class AdminSystemStocksCurateService {
    private readonly sequelize;
    constructor(sequelize: SequelizeInstance);
    preview(file: Express.Multer.File): Promise<PreviewResult>;
    apply(file: Express.Multer.File, confirm: boolean, previewToken: string): Promise<{
        ok: boolean;
        borradas: number;
        insertadas: number;
        conservadas: number;
        conservadas_por_indice: number;
        conservadas_solo_por_uso: number;
        en_uso_fuera_de_indice: string[];
        backup_path: string;
        applied_at: Date;
    }>;
    private readFileBuffer;
    private parseCsv;
    private splitCsvLine;
    private computePlan;
    computePlanFromSets(input: PlanInput): {
        totalActual: number;
        toDeleteIds: number[];
        toDeleteSymbols: string[];
        toInsert: string[];
        enUsoFueraDeIndice: string[];
        conservadasPorIndice: number;
        conservadasSoloPorUso: number;
        enUsoSize: number;
    };
    private buildPreviewResult;
    private computeToken;
    private writeBackup;
    private timestamp;
    private deleteRows;
    private insertRows;
}
export {};
