You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: base_package.rb
    path of file: ./repos/chaskiq/app/services/message_apis
    
    the code of the file until where you have to start completion: module MessageApis
  class BasePackage
    def initialize(config:)
      @config = config
    end

    def trigger(event); end

    def process_event(params, package); end

    def enqueue_process_event(params, package)
      HookMessageReceiverJob.perform_later(
        id: package.id,
        params: params.permit!.to_h
      )
      { status: :ok }
    end

    # triggered when a new chaskiq message is created
    # will triggered just after the ws notification
    def notify_message
    
    def trigger(event); end

    def process_event(params, package); end

    def enqueue_process_event(params, package)
      HookMessageReceiverJob.perform_later(
        id: package.id,
        params: params.permit!.to_h
      )
      { status: :ok }
    end

    # triggered when a new chaskiq message is created
    # will triggered just after the ws notification
    def notify_message(conversation:, part:, channel:)
      # TODO: ? redis cache here for provider / channel id / part
      provider = self.class::PROVIDER

      return if part
                .conversation_part_channel_sources
                .find_by(provider: provider).present?

      # message = part.message.as_json
      response = send_message(conversation, part)

      return if response.nil?

      response_data = JSON.parse(
        response.respond_to?(:body) ? response.body : response
      )

      message_id = get_message_id(response_data)

      return if message_id.blank?

      part.conversation_part_channel_sources.create(
        provider: provider,
        message_source_id: message_id
      )
    end
  end
end