import { Temporal } from 'temporal-polyfill'
import type { Instance } from './renderer'
export type DistributiveOmit<T, K extends keyof any> = T extends any
  ? Omit<T, K>
  : never
export declare function assertNoChildren(element: Instance): void
export declare function getTextChild(element: Instance): string
export declare function getTextProperty(value: unknown, assert: true): string
export declare function getTextProperty(
  value: unknown,
  assert?: false
): string | undefined
export declare function dateToSlackTimestamp(
  input: number | string | Temporal.Instant | Date
): number
export declare function dateToSlackTimestamp(input: unknown): number | undefined
export declare function plainDateToString(
  input: string | Temporal.PlainDate | Date
): string
export declare function plainDateToString(input: unknown): string | undefined
export declare function jsxToImageObject(jsx: Instance):
  | {
      alt_text: string
      title:
        | {
            type: 'plain_text'
            text: string
          }
        | undefined
      slack_file: {
        id: string
        url?: undefined
      }
      image_url?: undefined
      type: 'image'
    }
  | {
      alt_text: string
      title:
        | {
            type: 'plain_text'
            text: string
          }
        | undefined
      slack_file: {
        url: string
        id?: undefined
      }
      image_url?: undefined
      type: 'image'
    }
  | {
      alt_text: string
      title:
        | {
            type: 'plain_text'
            text: string
          }
        | undefined
      image_url: string
      slack_file?: undefined
      type: 'image'
    }
