import MergingProcess from '../../../../../protection-plan/domain/models/merging-process/merging-process';
import PlanShare from '../../../../../protection-plan/domain/models/plan-share';
import { SafekeyDeviceUseCase, IOResponse } from '../../../../../../../safekey/application/safekey-device-use-case';
import { CollectColdShareUseCase } from './collect-cold-share-use-case';
import MergingProcessRepository from '../../../../../protection-plan/domain/repositories/merging-process-repository';
export type CollectColdShareStep = 'CONNECT_DEVICE' | 'CONNECTING_DEVICE' | 'TOUCH_DEVICE_BUTTON' | 'COLLECTING_DATA' | 'SUCCESS';
export interface CollectColdSharesCallbacks {
    /** Called for each beneficiary that needs their cold share collected.
     * Caller must prompt the user for PIN and resolve the returned promise with the PIN string. */
    onConnectDevice: (share: PlanShare) => Promise<string>;
    onStepChange?: (step: CollectColdShareStep) => void;
    onWriteProgress?: (ioResponse: IOResponse) => void;
    onConnectTimeout?: (seconds: number) => void;
    onError?: (error: Error) => void;
}
export declare class CollectColdSharesProcessUseCase {
    private safekey;
    private collectColdShare;
    private mergeRepo;
    constructor(safekey: SafekeyDeviceUseCase, collectColdShare: CollectColdShareUseCase, mergeRepo: MergingProcessRepository);
    execute(process: MergingProcess, callbacks: CollectColdSharesCallbacks): Promise<void>;
    private processShare;
}
