import { ConfigurationProcessOrchestratorUseCase, RunConfigurationCallbacks, StartConfigurationInput } from './configuration-process-orchestrator-use-case';
import { ColdDistributionProcessCallbacks, ColdSharesDistributionProcessUseCase } from './plan-shares/distribution/cold-shares-distribution-process-use-case';
import { GetPersonalProtectionPlanConfigurationProcessUseCase } from './get-plan-configuration-process-use-case';
import { PlanConfigurationProcessView } from '../../../protection-plan/domain/models/plan-configuration-process-view';
export interface ConfigurePersonalProtectionPlanCallbacks {
    onStepStart?: RunConfigurationCallbacks['onStepStart'];
    onStepComplete?: RunConfigurationCallbacks['onStepComplete'];
    onError?: RunConfigurationCallbacks['onError'];
    /** Emitted after each step starts, on cold-share progress, and on completion */
    onViewUpdate?: (view: PlanConfigurationProcessView) => void;
    /** Cold-share device interaction callbacks — only invoked if the plan has cold shares */
    coldShares?: ColdDistributionProcessCallbacks;
}
/**
 * Primary entry point for the full plan configuration flow.
 *
 * Combines the main configuration orchestrator and the cold-shares device
 * orchestrator into a single coherent API, and emits `PlanConfigurationProcessView`
 * snapshots so callers never have to deal with the raw domain model.
 *
 * Vanilla TS usage:
 *   const view = await useCase.getView(planId);  // initial state
 *   await useCase.start({ planId, dataAssets });
 *   await useCase.run(planId, {
 *       onViewUpdate: view => render(view),
 *       coldShares: {
 *           onConnectDevice: async (share, i, total) => promptForPin(share),
 *       },
 *   });
 *
 * React: use `useConfigurePersonalProtectionPlan` — a thin wrapper over this class.
 */
export declare class ConfigurePersonalProtectionPlanUseCase {
    private configOrchestrator;
    private getProcessUseCase;
    private coldProcess?;
    constructor(configOrchestrator: ConfigurationProcessOrchestratorUseCase, getProcessUseCase: GetPersonalProtectionPlanConfigurationProcessUseCase, coldProcess?: ColdSharesDistributionProcessUseCase | undefined);
    /** Returns the current view for an existing (possibly in-progress) process. */
    getView(planId: string): Promise<PlanConfigurationProcessView>;
    start(input: StartConfigurationInput): Promise<void>;
    run(planId: string, callbacks?: ConfigurePersonalProtectionPlanCallbacks): Promise<void>;
}
