import { Readable } from 'stream';
import { PartialDataHandler } from './IPartialDataHandler.js';
import { SheetMetaOptions } from './SheetMeta.js';
import '../common/types/common-type.js';

interface PartialDataTransferRunner {
    start(): Promise<void>;
    completed(): Promise<void>;
    init(partialDataHandler: PartialDataHandler, sheetName: string): Promise<void>;
}
declare abstract class PartialDataTransfer {
    private delayMs;
    private isStream;
    private partialDataHandler;
    private jobCount;
    private queueData;
    private isStopConsumeData;
    constructor(opts?: {
        isStream?: boolean;
        delayMs?: number;
        jobCount?: number;
    });
    private init;
    private start;
    /** Run with stream */
    private startStream;
    private consumeData;
    /** Run with one or multiples job */
    private startJobs;
    private createJob;
    protected configSheetMeta(originalSheetName: string): SheetMetaOptions[];
    awake(): Promise<void>;
    completed(): Promise<void>;
    /** Batching data */
    protected fetchBatch(jobIndex: number): Promise<{
        items: any[] | null;
        hasNext: boolean;
    }>;
    /** Run with streaming data */
    protected createStream(): Readable;
}

export { PartialDataTransfer, type PartialDataTransferRunner };
