export type ApprovalMethod = 'SK_MOBILE_AUTH_FLOW' | 'OTP_EMAIL' | 'CLICK_LINK' | 'ITSME' | 'SAFEKEY_2FA';
export type ApprovalFlowStatus = 'IDLE' | 'PENDING' | 'APPROVED' | 'DENIED' | 'CANCELED';
export type ApprovalParticipantStatus = 'IDLE' | 'PENDING' | 'APPROVED' | 'DENIED' | 'CANCELED';
export type ApprovalParticipantRole = 'AUTHENTICATOR' | 'MODERATOR';
export type ApprovalProcessStatus = 'PENDING' | 'APPROVED' | 'DENIED';
export interface ApprovalFlowSnapshot {
    type: ApprovalMethod;
    status: ApprovalFlowStatus;
    startedAt?: Date;
    expiresAt?: Date;
}
export interface ApprovalParticipantSnapshot {
    userId: string;
    role: ApprovalParticipantRole;
    status: ApprovalParticipantStatus;
    flows: ApprovalFlowSnapshot[];
}
export interface ApprovalProcessSnapshot {
    status: ApprovalProcessStatus;
    requiredApprovals: number;
    participants: ApprovalParticipantSnapshot[];
}
export type SharedPlanMergeStep = 'PENDING' | 'PENDING_APPROVALS' | 'PENDING_AUTH' | 'PENDING_MODERATION' | 'ACCESS_GRANTED' | 'READY_TO_REVEAL' | 'REVEALED' | '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;
}
export declare class SharedPlanMergeProcess {
    private readonly props;
    constructor(props: SharedPlanMergeProcessProps);
    get id(): string;
    get planId(): string;
    get step(): SharedPlanMergeStep;
    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 pendingStorageLayers(): string[];
    static create(props: Omit<SharedPlanMergeProcessProps, 'step' | 'collectedStorageLayerIds'>): SharedPlanMergeProcess;
    withStep(step: SharedPlanMergeStep): SharedPlanMergeProcess;
    withApprovalProcess(approvalProcess: ApprovalProcessSnapshot): SharedPlanMergeProcess;
    withCollectedStorageLayerIds(collectedStorageLayerIds: string[]): SharedPlanMergeProcess;
    withRevealWindow(revealStartedAt: Date, revealEndsAt: Date, timeoutMinutesForClose?: number): SharedPlanMergeProcess;
    toPrimitives(): SharedPlanMergeProcessProps;
    static fromPrimitives(raw: any): SharedPlanMergeProcess;
}
