import { RevealOptions } from '../../../../../protection-plan/domain/models/merging-process/merging-process';
import { StartMergeProcessInput } from '../../../../../protection-plan/application/merging-process/start-merge-process-use-case';
import { CollectColdShareStep } from '../../../../../protection-plan/application/merging-process/plan-shares/collection/collect-cold-shares-process-use-case';
export type UsePlanMergeProcessReturn = ReturnType<typeof useMergePersonalProtectionPlan>;
export interface RevealConfiguration {
    revealOptions?: {
        timeoutMinutes: number;
    };
    /** @default true */
    autoReveal?: boolean;
}
export interface UsePlanMergeProcessConfig {
    reveal?: RevealConfiguration;
}
type ColdStep = CollectColdShareStep | 'SUCCESS';
export default function useMergePersonalProtectionPlan(planId?: string, config?: UsePlanMergeProcessConfig): {
    start: {
        execute: (props: Omit<StartMergeProcessInput, "planId">) => Promise<void>;
        loading: boolean;
        error: string | undefined;
    };
    abort: {
        execute: () => Promise<void>;
        loading: boolean;
        error: string | undefined;
    };
    close: {
        execute: () => Promise<void>;
        loading: boolean;
        error: string | undefined;
    };
    coldShareCollection: {
        writeCurrentBeneficiaryShare: {
            execute: (devicePin: string) => Promise<void>;
            progress: number | undefined;
            error: string | undefined;
            connectDeviceTimeout: number | undefined;
            status: ColdStep;
        };
    };
    currentTrigger: {
        validate: {
            execute: ({ code }: {
                code: string;
            }) => Promise<void>;
            error: string | undefined;
            loading: boolean;
        };
        retry: {
            execute: () => Promise<void>;
            error: string | undefined;
            loading: boolean;
        };
    };
    currentStep: {
        retry: {
            execute: () => Promise<void>;
        };
    };
    reveal: {
        trigger: (options?: RevealOptions) => void;
        isAvailableToReveal: boolean;
        options: {
            id: number;
            name: string;
        }[];
    };
    process: any;
    loading: boolean;
    isRevealing: boolean;
    error: string | undefined;
};
export {};
