hunk.code_window: import { GetIntegrations } from './get-integrations/get-integrations.usecase';
   import { UpdateIntegration } from './update-integration/update-integration.usecase';
   import { RemoveIntegration } from './remove-integration/remove-integration.usecase';
   import { DeactivateSimilarChannelIntegrations } from './deactivate-integration/deactivate-integration.usecase';
   import { GetActiveIntegrations } from './get-active-integration/get-active-integration.usecase';
   export const USE_CASES = [
     CreateIntegration,
     GetIntegrations,
  
hunk.labels: keep keep keep keep add keep keep keep keep
hunk.after_edit: import { GetDecryptedIntegrations } from './get-decrypted-integrations/get-decrypted-integrations.usecase';
  
hunk.file_path: apps/api/src/app/integrations/usecases/index.ts
hunk.type: add
file: import {
    IsArray,
    IsBoolean,
    IsDefined,
    IsEnum,
    IsMongoId,
    IsOptional,
    IsString,
    ValidateNested,
  } from 'class-validator';
  import {
    BuilderFieldOperator,
    BuilderFieldType,
    BuilderGroupValues,
    ChannelCTATypeEnum,
    IMessageAction,
    DigestUnitEnum,
    IPreferenceChannels,
  } from '@novu/shared';
  import { EnvironmentWithUserCommand } from '../../../shared/commands/project.command';
  import { MessageTemplate } from '../../../shared/dtos/message-template';
  
  export class CreateNotificationTemplateCommand extends EnvironmentWithUserCommand {
    @IsMongoId()
    @IsDefined()
    notificationGroupId: string;
  
    @IsOptional()
    @IsArray()
    tags: string[];
  
    @IsDefined()
    @IsString()
    name: string;
  
    @IsString()
    @IsOptional()
    description: string;
  
    @IsDefined()
    @IsArray()
    @ValidateNested()
    steps: NotificationStepCommand[];
  
    @IsBoolean()
    active: boolean;
  
    @IsBoolean()
    draft: boolean;
  
    @IsBoolean()
    critical: boolean;
  
    @IsOptional()
    preferenceSettings?: IPreferenceChannels;
  }
  
  export class ChannelCTACommand {
    @IsEnum(ChannelCTATypeEnum)
    type: ChannelCTATypeEnum;
  
    @ValidateNested()
    data: {
      url: string;
    };
  
    @IsOptional()
    @IsArray()
    @ValidateNested()
    action?: IMessageAction[];
  }
  
  class NotificationStepCommand {
    @ValidateNested()
    @IsOptional()
    template?: MessageTemplate;
  
    @IsOptional()
    name?: string;
  
    @IsBoolean()
    active?: boolean;
  
    @IsOptional()
    @IsArray()
    @ValidateNested()
    filters?: MessageFilter[];
  
    @IsMongoId()
    @IsOptional()
    _id?: string;
  
    @IsOptional()
    metadata?: {
      amount?: number;
      unit?: DigestUnitEnum;
      digestKey?: string;
    };
  }
  
  export class MessageFilter {
    isNegated: boolean;
  
    @IsString()
    type: BuilderFieldType;
  
    @IsString()
    value: BuilderGroupValues;
  
    @IsArray()
    children: {
      field: string;
      value: string;
      operator: BuilderFieldOperator;
    }[];
  }
  