import { DataAsset } from '../../../../../core/modules/data-assets';
import { AuthMethodType } from './shared-plan-authentication-method';
import { SharedPlanMergeProcess } from './shared-plan-merge-process';
export type SharedMergeStatus = 'NOT_STARTED' | 'PENDING' | 'PENDING_AUTHENTICATION' | 'WAITING_FOR_PERMISSION' | 'COLLECTING_SHARES' | 'REVEALING_DATA' | 'REVEALED' | 'COMPLETED' | 'FAILED';
export interface AuthMethodView {
    id: AuthMethodType;
    checked: boolean;
}
export interface ModeratorView {
    id: string;
    firstName?: string;
    lastName?: string;
    email?: string;
    approved: boolean;
}
export interface StorageLayerView {
    id: string;
    collected: boolean;
}
export interface SharedPlanMergeProcessViewProps {
    processId?: string;
    planId?: string;
    status: SharedMergeStatus;
    authenticationMethods: AuthMethodView[];
    moderators: ModeratorView[];
    storageLayers: StorageLayerView[];
    revealedAssets?: DataAsset[] | null;
}
export declare class SharedPlanMergeProcessView {
    private readonly props;
    constructor(props: SharedPlanMergeProcessViewProps);
    static notStarted(): SharedPlanMergeProcessView;
    static build(process: SharedPlanMergeProcess, revealedAssets?: DataAsset[] | null): SharedPlanMergeProcessView;
    get processId(): string | undefined;
    get planId(): string | undefined;
    get status(): SharedMergeStatus;
    get isStarted(): boolean;
    get isAuthenticating(): boolean;
    get isWaitingForPermission(): boolean;
    get isCollectingShares(): boolean;
    get isRevealing(): boolean;
    get isRevealed(): boolean;
    get isCompleted(): boolean;
    get isFailed(): boolean;
    get isDone(): boolean;
    get authenticationMethods(): AuthMethodView[];
    get authProgress(): {
        completed: number;
        total: number;
    };
    get nextPendingAuthMethod(): AuthMethodView | undefined;
    get moderators(): ModeratorView[];
    get storageLayers(): StorageLayerView[];
    get sharesProgress(): {
        collected: number;
        total: number;
    };
    get permissionProgress(): {
        approved: number;
        total: number;
    };
    get nextPendingModerator(): ModeratorView | undefined;
    get revealedAssets(): DataAsset[] | null | undefined;
    toPrimitives(): SharedPlanMergeProcessViewProps;
}
