import '../generated/service-container-extension';
import { ProgressState } from '@iotize/common/progress/api';
import { StepOperations } from '@iotize/common/task-manager';
import { SinglePacketChunk } from '../generated/models';
import { SinglePacketService } from '../generated/service';
import { SinglePacketSplitter } from './single-packet-splitter';
interface OutputData {
    expectedCRC: number;
}
export declare class SinglePacketStoreLoader extends StepOperations<SinglePacketStoreLoader.Event, Record<string, any>> {
    readonly singlePacketService: SinglePacketService;
    static createOperationsFromBytes(data: Uint8Array, singlePacketService: SinglePacketService, options?: SinglePacketStoreLoader.Options): StepOperations.OperationFct<SinglePacketStoreLoader.Event, any>[];
    static createFromBytes(data: Uint8Array, singlePacketService: SinglePacketService, options?: SinglePacketStoreLoader.Options): SinglePacketStoreLoader;
    /**
     * Create single packet loading operations
     * @param packets Single packet chunks to load to the Tap
     * @param expectedCRC expected CRC sent to the Tap when executing the single packet. if you don't plan to execute single packet, you pass a dummy value
     * @param singlePacketService
     * @param options
     */
    static createOperationsFromChunk(packets: SinglePacketChunk[], singlePacketService: SinglePacketService, options?: SinglePacketStoreLoader.Options, output?: OutputData): StepOperations.OperationFct<SinglePacketStoreLoader.Event, any>[];
    static createFromChunks(packets: SinglePacketChunk[], singlePacketService: SinglePacketService, options?: SinglePacketStoreLoader.Options): SinglePacketStoreLoader;
    static computeCRC(data: Uint8Array | SinglePacketChunk[]): number;
    constructor(steps: StepOperations.OperationType<SinglePacketStoreLoader.Event>[], singlePacketService: SinglePacketService);
}
export declare namespace SinglePacketStoreLoader {
    type Options = {
        maxRetry?: number;
        retryDelay?: number;
        /**
         * True to execute single packet after store loading
         */
        execute?: boolean;
    } & Partial<Pick<SinglePacketSplitter.Options, 'pad' | 'chunkSize'>>;
    type Event = {
        step: Step.loadPacketChunk;
        progress: ProgressState;
    } | {
        step: Step.executeSinglePacket;
        expectedCRC: number;
    };
    enum Step {
        loadPacketChunk = "loadPacketChunk",
        executeSinglePacket = "executeSinglePacket"
    }
}
export {};
