import { ActiveMergeProcess } from '../../../protection-plan/domain/models/merging-process/active-merge-process';
import MergingProcess from '../../../protection-plan/domain/models/merging-process/merging-process';
export type MergeProcessFilterCriteria = {
    expired?: boolean;
    old?: boolean;
    planId?: string;
};
export default interface MergingProcessRepository {
    find(id: string): Promise<MergingProcess | undefined>;
    findByPlanId(id: string): Promise<MergingProcess | undefined>;
    update(plan: MergingProcess): Promise<any>;
    remove(id: string): Promise<any>;
    removeByCriteria(criteria: MergeProcessFilterCriteria): Promise<string[]>;
    clean(): Promise<any>;
    validateTrigger(data: {
        id: string;
        verificationId?: string;
        triggerId: string;
        code?: string;
    }): Promise<boolean>;
    requestMobileShareRelease(data: {
        processId: string;
        shareholdersIds: string[];
    }): Promise<any>;
    startMergeProcess(data: {
        id: string;
        planId: string;
        selectedBeneficiariesIds: string[];
    }): Promise<any>;
    checkCanCollectShares(id: string): Promise<boolean>;
    getActiveProcess(planId: string): Promise<ActiveMergeProcess | undefined>;
    sendMergeRequest(planId: string): Promise<any>;
    closePlan(mergeProcessId: string): Promise<any>;
    sendPlanDataReleased(processId: string, revealOptions: {
        timeoutMinutes: number;
    }): Promise<any>;
    sendPlanSharesMerged(processId: string): Promise<any>;
    sendPlanShareStatusEvent(event: {
        name: string;
        planId: string;
        type: string;
        shareId?: string;
        processId: string;
    }): Promise<any>;
    createProcess(process: MergingProcess): Promise<any>;
    authorizeMergeAuthority(credentials: {
        id: string;
        source: string;
        password: string;
        legacyPlanIds?: string[];
    }): Promise<void>;
    findPlanLegacyId(id: string): Promise<string | undefined>;
    retryActiveTrigger(processId: string): Promise<void>;
    findMergeAuthorityContext(): Promise<{
        userId?: string;
        deviceId?: string;
    } | undefined>;
}
