hunk.code_window: import { MantineTheme } from '@mantine/core';
   import { colors } from '../../design-system';
   import { Chat, Check, Digest, InApp, Mail, Sms, Timer } from '../../design-system/icons';
  
hunk.labels: keep keep keep replace keep
hunk.after_edit: import { Chat, Check, CheckCircle, Digest, ErrorIcon, InApp, Mail, Sms, Timer } from '../../design-system/icons';
  
hunk.file_path: apps/web/src/components/activity/helpers.ts
hunk.type: replace
file: import { ISmsOptions, ISmsProvider } from '@novu/stateless';
  import { ChannelTypeEnum } from '@novu/shared';
  import { ICredentials } from '@novu/dal';
  import { ISmsHandler } from '../interfaces';
  
  export abstract class BaseSmsHandler implements ISmsHandler {
    protected provider: ISmsProvider;
  
    protected constructor(private providerId: string, private channelType: string) {}
  
    canHandle(providerId: string, channelType: ChannelTypeEnum) {
      return providerId === this.providerId && channelType === this.channelType;
    }
  
    async send(options: ISmsOptions) {
      if (process.env.NODE_ENV === 'test') {
        throw new Error('Currently 3rd-party packages test are not support on test env');
      }
  
      return await this.provider.sendMessage(options);
    }
  
    abstract buildProvider(credentials: ICredentials);
  }
  