import type { FormatType, State, UploadJobType } from '../types.js';
import https from 'https';
/** A session-wide multithreaded uploader to Micrio */
export declare class Uploader {
    agent: https.Agent;
    private state;
    private folder;
    private format;
    private outDir;
    private jobs;
    private oncomplete;
    private uris;
    running: Map<UploadJobType, Promise<any>>;
    errored: Map<UploadJobType, number>;
    constructor(agent: https.Agent, state: State, folder: string, format: FormatType, outDir: string);
    /** This is called for each individual resulting tile of an image operation
     * Or the final function to send the succesful status to Micrio after all tiles
     * of an image have been uploaded.
     */
    add(jobs: UploadJobType[]): void;
    /** Async function to await queue upload completion */
    complete(): Promise<void>;
    /** Get signed R2 upload URLs for the next batch of queued file uploads */
    private getUploadUris;
    /** Get an indivual file/tile uploadUrl */
    private getUploadUri;
    /** This makes sure all upload threads are always filled */
    private nextBatch;
    /** Do the next upload thread */
    private next;
    /** Individual file / tile upload */
    private upload;
}
