import { DataAsset } from '../../../../../core/modules/data-assets';
import { AccessPolicySubjectsProps } from "../models/protection-plan-access-policy";
import { AuthMethodType } from "../models/shared-plan-authentication-method";
import { AuthenticationMode } from '../models/authentication-mode';
import { SharedPlanDmsTriggerType, SharedPlanDmsTriggerCountdown, SharedPlanDmsTriggerSettings } from '../models/shared-plan-dms-trigger';
export type ApprovalMode = 'THRESHOLD' | 'UNANIMOUS';
export interface AccessPolicyInput {
    teams: AccessPolicySubjectsProps;
    members: AccessPolicySubjectsProps;
}
export interface SharedPlanModeratorsInput {
    id: string;
}
export interface SharedPlanAuthenticationMethodInput {
    id: AuthMethodType;
}
export interface CreateSharedProtectionPlanInput {
    id?: string;
    tenantId: string;
    type: 'BACKUP' | 'BUSINESS_CONTINUITY';
    name: string;
    description?: string;
    accessPolicy: AccessPolicyInput;
    privacyMode: "PUBLIC" | "PRIVATE";
    moderators?: SharedPlanModeratorsInput[];
    authenticationMethods?: SharedPlanAuthenticationMethodInput[];
    authenticationMode?: AuthenticationMode;
    approvalMode?: ApprovalMode;
    threshold?: number;
    minimumApprovals?: number;
    assets: (DataAsset | Omit<DataAsset, 'id'> & {
        id?: string;
    })[];
    categoryId?: string | null;
    withCustodian?: boolean;
    masterKeyEncrypted?: boolean;
    triggers?: Array<{
        id: SharedPlanDmsTriggerType;
        countdown: SharedPlanDmsTriggerCountdown;
        settings?: SharedPlanDmsTriggerSettings;
    }>;
}
export type { SharedPlanDmsTriggerType, SharedPlanDmsTriggerCountdown, SharedPlanDmsTriggerSettings };
