import { DeviceShareInfo } from '../../domain/models/device-share-info';
export interface PlanColdShareData {
    devicePin?: string;
    planId: string;
    shareId: string;
    shareData: DeviceShareInfo;
}
export type ColdScanFilters = {
    planId?: string;
    shareId?: string;
    isMergeAuthority?: boolean;
};
export type DeviceInfo = {
    appId: string;
    appPassword: string;
    name?: string;
    serialId?: string;
    version?: string;
    pin?: string;
    freeSlots?: number;
    totalSlots: number;
};
export type IOResponse = {
    operationType: string;
    io?: {
        progress: number;
        total: number;
    };
    loginAttempts?: {
        total: number;
        countdown: number;
        progress: number;
    };
};
export type OperationProgressCallback = (params: IOResponse) => any;
export interface ColdStorageService {
    getDeviceInfo(context?: {
        id: string;
    }): Promise<Omit<DeviceInfo, 'appPassword'> | undefined>;
    insert(id: string): Promise<void>;
    connect(context: {
        id?: string;
        pin: string;
    }): Promise<void>;
    touch(context: {
        id?: string;
        pin: string;
    }, onIOCallback?: OperationProgressCallback): Promise<void>;
    disconnect(): Promise<void>;
    getDeviceId(): Promise<string | undefined>;
    getDevicePassword(): Promise<string | undefined>;
    distributeShare(data: PlanColdShareData, onIOCallback?: OperationProgressCallback): Promise<void>;
    collectShare(validatorPin: string, filters: ColdScanFilters, onIOCallback?: OperationProgressCallback): Promise<any>;
    collectAllSharesPlansIds(validatorPin: string, onIOCallback?: OperationProgressCallback): Promise<string[]>;
    collectAllPlanShares(validatorPin: string, onIOCallback?: OperationProgressCallback): Promise<DeviceShareInfo[]>;
}
