import { CnInputTextAreaProps } from '@cainiaofe/cn-ui';
import type { SubmitType, SemanticType, AllowRecord, BaseNode } from './sender-common-types';
import { EventType } from './event-type';
import { FormilySchema } from './formily-schema';
import { NodeRender } from './node-render';
import { SlotConfigType } from './slot-config-type';
import { SenderComponents } from './sender-components';
import { CustomPopupProps } from './custom-popup-props';
import { SkillType } from './skill-type';
export interface CnSenderProps extends Pick<CnInputTextAreaProps, 'placeholder' | 'onKeyUp' | 'onFocus' | 'onBlur'> {
    prefixCls?: string;
    defaultValue?: string;
    value?: string;
    loading?: boolean;
    readOnly?: boolean;
    submitType?: SubmitType;
    disabled?: boolean;
    slotConfig?: readonly SlotConfigType[];
    schema?: FormilySchema;
    onSubmit?: (value: string, slotConfig?: SlotConfigType[], skill?: SkillType, formValue?: Record<string, any>) => void;
    onChange?: (value: string, event?: EventType, slotConfig?: SlotConfigType[], skill?: SkillType) => void;
    onCancel?: VoidFunction;
    onKeyDown?: (event: React.KeyboardEvent) => false | undefined;
    onPaste?: React.ClipboardEventHandler<HTMLElement>;
    onPasteFile?: (files: FileList) => void;
    /**
     * 与 CnFilterPro 对齐：`input` 仅用于 Sender 输入区；其余 key 注册到字段弹层 Formily `x-component`。
     */
    components?: SenderComponents;
    classNames?: Partial<Record<SemanticType, string>>;
    styles?: Partial<Record<SemanticType, React.CSSProperties>>;
    rootClassName?: string;
    style?: React.CSSProperties;
    className?: string;
    allowRecord?: AllowRecord;
    onRecordMessage?: (params: {
        text: string;
        method: 'add' | 'update' | 'setInputText';
    }) => void;
    prefix?: BaseNode | NodeRender;
    footer?: BaseNode | NodeRender;
    suffix?: BaseNode | NodeRender;
    header?: BaseNode | NodeRender;
    autoSize?: boolean | {
        minRows?: number;
        maxRows?: number;
    };
    skill?: SkillType;
    onSearch?: VoidFunction;
    popupTriggerKey?: string;
    /**
     * 自定义弹窗配置
     */
    customPopupProps?: CustomPopupProps;
    /**
     * 发送按钮配置
     */
    sendButtonProps?: {
        /**
         * 自定义图标，如果提供则替换默认图标
         */
        icon?: React.ReactNode;
        /**
         * 其他按钮属性
         */
        [key: string]: any;
    };
    /**
     * 是否允许内容为空时提交
     * @default false
     */
    canEmptySubmit?: boolean;
}
