hunk.code_window:               environmentId: command.environmentId,
                 userId: command.userId,
                 contentType: message.template.contentType,
                 cta: message.template.cta,
                 subject: message.template.subject,
                 parentChangeId,
               })
  
hunk.labels: keep keep keep add keep keep keep
hunk.after_edit:               feedId: message.template.feedId,
  
hunk.file_path: apps/api/src/app/notification-template/usecases/update-notification-template/update-notification-template.usecase.ts
hunk.type: add
file: import {
    ChannelTypeEnum,
    ISendMessageSuccessResponse,
    ISmsOptions,
    ISmsProvider,
  } from '@novu/stateless';
  
  import Vonage from '@vonage/server-sdk';
  
  export class NexmoSmsProvider implements ISmsProvider {
    id = 'nexmo';
    channelType = ChannelTypeEnum.SMS as ChannelTypeEnum.SMS;
    private vonageClient: Vonage;
  
    constructor(
      private config: {
        apiKey: string;
        apiSecret: string;
        from: string;
      }
    ) {
      this.vonageClient = new Vonage({
        apiKey: config.apiKey,
        apiSecret: config.apiSecret,
      });
    }
  
    async sendMessage(
      options: ISmsOptions
    ): Promise<ISendMessageSuccessResponse> {
      const vonageResponseId: string = await new Promise((resolve, reject) => {
        this.vonageClient.message.sendSms(
          this.config.from,
          options.to,
          options.content,
          {},
          (err, responseData) => {
            if (err) return reject(err);
  
            return resolve(responseData.messages[0]['message-id']);
          }
        );
      });
  
      return {
        id: vonageResponseId,
        date: new Date().toISOString(),
      };
    }
  }
  