import { ApprovalParticipantSnapshot, ApprovalProcessSnapshot } from './approval-process';
import { SharedPlanDmsTriggerProps } from "./shared-plan-dms-trigger";
export type DmsStatus = 'PENDING' | 'ACTIVATED' | 'RESET';
export interface SharedPlanDmsTriggerAction {
    id: string;
    status: 'WAITING' | 'PENDING' | 'SENT' | 'PROCESSED';
    action: {
        type: 'CODE' | 'LINK';
        attemptCount: number;
        lastAttemptAt?: Date;
        retriesCount: number;
    };
    startedAt?: Date;
    expiresAt?: Date;
}
export type { ApprovalMethod, ApprovalFlowStatus, ApprovalParticipantStatus, ApprovalParticipantRole, ApprovalProcessStatus, ApprovalFlowSnapshot, ApprovalParticipantSnapshot, ApprovalProcessSnapshot, } from './approval-process';
export type SharedPlanMergeStep = 'PENDING_DMS' | 'PENDING' | 'PENDING_APPROVALS' | 'PENDING_AUTH' | 'PENDING_MODERATION' | 'ACCESS_GRANTED' | 'READY_TO_REVEAL' | 'REVEALED' | 'EXPIRED' | 'COMPLETED' | 'FAILED';
export interface CollectedShare {
    id: string;
    storageLayerId: string;
    data: string;
}
export interface SharedPlanMergeProcessProps {
    id: string;
    planId: string;
    step: SharedPlanMergeStep;
    requiredShares: number;
    approvalProcess: ApprovalProcessSnapshot;
    storageLayers: string[];
    collectedStorageLayerIds: string[];
    revealStartedAt?: Date;
    revealEndsAt?: Date;
    timeoutMinutesForClose?: number;
    createdAt: Date;
    dmsStatus?: DmsStatus;
    dmsTriggers?: SharedPlanDmsTriggerProps[];
    dmsTriggerActions?: SharedPlanDmsTriggerAction[];
}
export declare class SharedPlanMergeProcess {
    private readonly props;
    constructor(props: SharedPlanMergeProcessProps);
    get id(): string;
    get planId(): string;
    get step(): SharedPlanMergeStep;
    get dmsStatus(): DmsStatus | undefined;
    get dmsTriggers(): SharedPlanDmsTriggerProps[] | undefined;
    get dmsTriggerActions(): SharedPlanDmsTriggerAction[] | undefined;
    get activeDmsTriggerAction(): SharedPlanDmsTriggerAction | undefined;
    get isPendingDms(): boolean;
    get isDmsActivated(): boolean;
    get isDmsReset(): boolean;
    get requiredShares(): number;
    get approvalProcess(): ApprovalProcessSnapshot;
    get storageLayers(): string[];
    get collectedStorageLayerIds(): string[];
    get revealStartedAt(): Date | undefined;
    get revealEndsAt(): Date | undefined;
    get timeoutMinutesForClose(): number | undefined;
    get collectedCount(): number;
    get hasEnoughShares(): boolean;
    get needsApproval(): boolean;
    get authenticatorParticipant(): ApprovalParticipantSnapshot | undefined;
    get moderatorParticipants(): ApprovalParticipantSnapshot[];
    get isAuthenticationComplete(): boolean;
    get isRevealWindowOpen(): boolean;
    get isExpired(): boolean;
    get pendingStorageLayers(): string[];
    static create(props: Omit<SharedPlanMergeProcessProps, 'step' | 'collectedStorageLayerIds'>): SharedPlanMergeProcess;
    withStep(step: SharedPlanMergeStep): SharedPlanMergeProcess;
    withDmsReset(): SharedPlanMergeProcess;
    withApprovalProcess(approvalProcess: ApprovalProcessSnapshot): SharedPlanMergeProcess;
    withCollectedStorageLayerIds(collectedStorageLayerIds: string[]): SharedPlanMergeProcess;
    withRevealWindow(revealStartedAt: Date, revealEndsAt: Date, timeoutMinutesForClose?: number): SharedPlanMergeProcess;
    toPrimitives(): SharedPlanMergeProcessProps;
    static fromPrimitives(raw: any): SharedPlanMergeProcess;
}
