import { DataAsset, DataAssetManager } from '../../../../../core/modules/data-assets';
import { SharedPlanShare } from '../../domain/models/shared-plan-share';
import { SharedConfigurationProcessRepository } from '../../domain/repositories/shared-configuration-process-repository';
import { SharedProtectionPlanRepository } from '../../domain/repositories/shared-protection-plan-repository';
import { SharedPlanErrorReporter } from '../../domain/services/shared-plan-error-reporter';
import { SharedPlanEventHandlers, SharedPlanEventListener } from '../../domain/services/shared-plan-event-listener';
import { DistributeSharesUseCase } from './distribute-shares-use-case';
import { GenerateSharesUseCase } from './generate-shares-use-case';
export interface ReconfigureContext {
    mergeProcessId: string;
}
export interface ConfigureSharedProtectionPlanInput {
    planId: string;
    assets: DataAsset[];
    totalShares: number;
    withCustodian?: boolean;
    masterKey?: string;
    reconfigureContext?: ReconfigureContext;
}
export interface ConfigureSharedProtectionPlanCallbacks {
    onSharesGenerated?: (shares: SharedPlanShare[]) => void;
    onSharesDistributed?: () => void;
    onCompleted?: () => void;
    onError?: (error: Error) => void;
    /** Signal that the backend pushed a process update via socket. */
    onProcessUpdated?: () => void;
}
export interface ConfigureSharedProtectionPlanDeps {
    planRepository: SharedProtectionPlanRepository;
    configRepository: SharedConfigurationProcessRepository;
    generateShares: GenerateSharesUseCase;
    distributeShares: DistributeSharesUseCase;
    eventListener: SharedPlanEventListener;
    assetManager: DataAssetManager;
    errorReporter: SharedPlanErrorReporter;
}
export declare class ConfigureSharedProtectionPlanUseCase {
    private readonly deps;
    private activeSubscription;
    constructor(deps: ConfigureSharedProtectionPlanDeps);
    subscribe(planId: string, handlers: SharedPlanEventHandlers): void;
    unsubscribe(planId: string): void;
    execute(input: ConfigureSharedProtectionPlanInput, callbacks?: ConfigureSharedProtectionPlanCallbacks): Promise<void>;
    private reportStepError;
}
