import { RevealStep } from '../../../../application/merging-process/merge-shared-protection-plan-use-case';
import { SharedPlanMergeProcessView } from '../../../../domain/models/shared-plan-merge-process-view';
import { SharedRevealOptions } from '../../../../domain/repositories/shared-merging-process-api-repository';
type MergeStatus = 'idle' | 'initializing' | 'running' | 'ready' | 'revealing' | 'done' | 'expired' | 'error';
export type RevealStepState = 'idle' | 'IN_PROCESS' | 'COMPLETE' | 'FAILED';
export type RevealSteps = Record<RevealStep, RevealStepState>;
export type RevealStepErrors = Partial<Record<RevealStep, string>>;
export interface MergeSharedProtectionPlanHook {
    start: {
        execute: () => Promise<void>;
        loading: boolean;
        error?: string;
        errorDescription?: string;
    };
    reveal: {
        execute: () => Promise<void>;
        loading: boolean;
        error?: string;
        errorDescription?: string;
        timeoutMinutesForClose: number;
        getStepError: (step: RevealStep) => string | undefined;
    };
    retry: {
        execute: () => Promise<void>;
    };
    abort: {
        execute: () => Promise<void>;
    };
    closePlan: {
        execute: () => Promise<void>;
    };
    clearLocalProcessByPlanId: (planId: string) => Promise<void>;
    reset: () => void;
    clearLocalProcess: () => Promise<void>;
    resume: () => Promise<void>;
    process: SharedPlanMergeProcessView;
    revealSteps: RevealSteps;
    status: MergeStatus;
    isRunning: boolean;
    isReadyToReveal: boolean;
    isRevealing: boolean;
    isDone: boolean;
    isExpired: boolean;
    hasError: boolean;
    error?: string;
    errorDescription?: string;
}
export interface SharedRevealConfiguration {
    revealOptions?: SharedRevealOptions;
}
export interface UseMergeSharedProtectionPlanConfig {
    reveal?: SharedRevealConfiguration;
    accessIntent?: 'VIEW' | 'EDIT';
    custodianShare?: {
        onRequired: (processId: string, context: {
            mode: 'distribute';
            planId: string;
            requiresKeyShares?: boolean;
        } | {
            mode: 'awaiting-claim';
            planId: string;
            shareId: string;
            distributedAt: string | null;
        } | {
            mode: 'awaiting-release';
            planId: string;
            shareId: string;
        } | {
            mode: 'collect-from-sk-pro';
            planId: string;
            shareId: string;
        }) => Promise<{
            keyShares: string[];
        } | void>;
    };
    masterKey?: string;
}
export default function useMergeSharedProtectionPlan(planId?: string, config?: UseMergeSharedProtectionPlanConfig): MergeSharedProtectionPlanHook;
export {};
