import { MessageAttachment, WebClient } from '@slack/web-api';
import { Attachment } from '../attachment/attachment.entity';
import { SendExceptionNotificationEmailWorkflow } from '../email/workflows/send-exception-notification-email/send-exception-notification-email.workflow';
import { Ticket } from '../ticket/ticket.entity';
import { SlackMessageChangedWorkflow } from './workflows/slack-message-changed/slack-message-changed.workflow';
import { SlackMessageReceivedWorkflow } from './workflows/slack-message-received/slack-message-received.workflow';
export declare class SlackService {
    private slackMessageReceivedWorkflow;
    private slackMessageChangedWorkflow;
    private sendExceptionNotificationEmailWorkflow;
    private readonly logger;
    private readonly NOTIFIABLE_ERROR_TYPES;
    readonly botApi: WebClient;
    private workingChannelId;
    constructor(slackMessageReceivedWorkflow: SlackMessageReceivedWorkflow, slackMessageChangedWorkflow: SlackMessageChangedWorkflow, sendExceptionNotificationEmailWorkflow: SendExceptionNotificationEmailWorkflow);
    private findWorkingChannel;
    private addEventListeners;
    private handleMessage;
    private onMessagePosted;
    private onMessageChanged;
    postMessage(text: string, threadTs?: string, attachments?: MessageAttachment[]): Promise<any>;
    addAttachmentAsRemoteFile(attachment: Attachment): Promise<any>;
    getSlackUserById(id: string): Promise<import("@slack/web-api").WebAPICallResult>;
    private handleNotifiablePromise;
    notifyInSlackAboutError(ticket: Ticket, errorMessage: string): Promise<void>;
}
