import type { MessageRouting } from "@/components/Providers/store"; import { type VisibleBlockItem } from "@/components/TemplateEditor/store"; import type { TextMenuConfig } from "@/components/ui/TextMenu/config"; import type { TiptapDoc } from "@/lib/utils"; import type { ChannelType } from "@/store"; import type { ElementalNode } from "@/types/elemental.types"; import type { Node } from "@tiptap/pm/model"; import type { AnyExtension, Editor } from "@tiptap/react"; import React, { type HTMLAttributes } from "react"; import type { TemplateEditorProps } from "../../TemplateEditor"; type UniqueIdentifier = string | number; export declare const defaultSlackContent: ElementalNode[]; export declare const SlackEditorContent: ({ value }: { value?: TiptapDoc; }) => null; export interface SlackRenderProps { content: TiptapDoc; extensions: AnyExtension[]; editable: boolean; autofocus: boolean; onUpdate: ({ editor }: { editor: Editor; }) => void; items: { Sidebar: VisibleBlockItem[]; Editor: UniqueIdentifier[]; }; selectedNode: Node | null; slackEditor: Editor | null; textMenuConfig: TextMenuConfig; } export interface SlackProps extends Pick, Omit, "value" | "onChange"> { readOnly?: boolean; headerRenderer?: ({ hidePublish, channels, routing, }: { hidePublish?: boolean; channels?: ChannelType[]; routing?: MessageRouting; }) => React.ReactNode; render?: (props: SlackRenderProps) => React.ReactNode; } /** * Get text menu configuration for a Slack node based on selection state * This function applies Slack-specific constraints while respecting text selection */ export declare const getTextMenuConfigForSlackNode: (nodeName: string, hasTextSelection?: boolean) => TextMenuConfig; export declare const Slack: React.MemoExoticComponent>>; export {};