import { DataAsset } from '../../../../../core/modules/data-assets';
import ProtectionPlanAccessPolicy, { ProtectionPlanAccessPolicyPrimitiveProps } from "./protection-plan-access-policy";
import { SharedPlanShare } from "./shared-plan-share";
import { SharedPlanModerator, SharedPlanModeratorPrimitiveProps } from "./shared-plan-moderator";
import { SharedPlanAuthenticationMethod, SharedPlanAuthenticationMethodPrimitiveProps } from "./shared-plan-authentication-method";
export type SharedProtectionPlanStatus = 'DRAFT' | 'PROTECTED';
export interface SharedPlanStorageLayer {
    id: "INHERITI_HSM" | "INHERITI_VAULT" | "INHERITI_CHAIN" | "GOOGLE_DRIVE" | "DROPBOX";
}
export interface SharedProtectionPlanProps {
    id: string;
    tenantId?: string;
    type: 'BACKUP' | 'BUSINESS_CONTINUITY';
    name: string;
    description?: string;
    moderators?: SharedPlanModerator[];
    authenticationMethods?: SharedPlanAuthenticationMethod[];
    accessPolicy: ProtectionPlanAccessPolicy;
    mergeThreshold: number;
    shares: SharedPlanShare[];
    assets?: DataAsset[];
    status: SharedProtectionPlanStatus;
    storageLayers?: SharedPlanStorageLayer[];
    createdAt: Date;
    updatedAt: Date;
    accessType: "DIRECT" | "MODERATED";
    privacyMode: "PUBLIC" | "PRIVATE";
    assetsMetadata: any;
    categoryIds?: string[];
    code?: string;
}
export interface SharedPlanSharePrimitiveProps {
    id: string;
    storageLayerId?: string;
    addresses: string[];
    data?: string;
    key?: string;
    createdAt?: Date | string;
    distributedAt?: Date | string;
}
export interface SharedProtectionPlanPrimitiveProps extends Omit<SharedProtectionPlanProps, 'moderators' | 'authenticationMethods' | 'accessPolicy' | 'shares' | 'status' | 'createdAt' | 'updatedAt' | 'code'> {
    moderators?: SharedPlanModeratorPrimitiveProps[];
    authenticationMethods?: SharedPlanAuthenticationMethodPrimitiveProps[];
    accessPolicy: ProtectionPlanAccessPolicyPrimitiveProps;
    shares: SharedPlanSharePrimitiveProps[];
    status: string;
    createdAt: Date | string;
    updatedAt: Date | string;
    code?: string;
}
export default class SharedProtectionPlan {
    private readonly props;
    constructor(props: SharedProtectionPlanProps);
    get id(): string;
    get tenantId(): string | undefined;
    get type(): 'BACKUP' | 'BUSINESS_CONTINUITY';
    get name(): string;
    get description(): string | undefined;
    get privacyMode(): 'PUBLIC' | 'PRIVATE';
    get accessType(): 'DIRECT' | 'MODERATED';
    get accessPolicy(): ProtectionPlanAccessPolicy;
    get mergeThreshold(): number;
    get moderators(): SharedPlanModerator[] | undefined;
    get authenticationMethods(): SharedPlanAuthenticationMethod[] | undefined;
    get totalShares(): number;
    get assets(): DataAsset[] | undefined;
    get status(): SharedProtectionPlanStatus;
    get storageLayers(): SharedPlanStorageLayer[] | undefined;
    get assetsMetadata(): any;
    get categoryIds(): string[];
    get createdAt(): Date;
    get code(): string | undefined;
    get requiresAuthentication(): boolean;
    get isModerated(): boolean;
    static create(props: Omit<SharedProtectionPlanProps, "shares" | "status">): SharedProtectionPlan;
    withAssetsMetadata(assetsMetadata: any): SharedProtectionPlan;
    toPrimitives(): SharedProtectionPlanPrimitiveProps;
    static fromPrimitives(raw: SharedProtectionPlanPrimitiveProps): SharedProtectionPlan;
}
