import { Root } from '../renderer'
import type React from 'react'
import type Slack from '@slack/bolt'
import type { DistributiveOmit } from '../helpers'
export declare class MessageRoot extends Root {
  client: Slack.webApi.WebClient
  args: DistributiveOmit<
    Slack.webApi.ChatPostMessageArguments,
    'blocks' | 'text'
  >
  private resolve?
  private reject?
  ts?: Promise<string>
  existingTS?: string
  constructor(
    client: Slack.webApi.WebClient,
    args: DistributiveOmit<
      Slack.webApi.ChatPostMessageArguments,
      'blocks' | 'text'
    >,
    resolve?: ((ts: string) => void) | undefined,
    reject?: ((error: unknown) => void) | undefined
  )
  publish(): Promise<void>
  handle: MessageHandle
}
export declare class MessageHandle {
  private root
  constructor(root: MessageRoot)
  get ts(): string
  get channel(): string
  get rendering(): boolean
  stop(behavior?: 'keep' | 'delete' | React.ReactNode): Promise<void>
}
export declare function message(
  app: Slack.App,
  argsOrID:
    | string
    | DistributiveOmit<
        Slack.webApi.ChatPostMessageArguments,
        'blocks' | 'text'
      >,
  element: React.ReactNode
): Promise<MessageHandle>
