import type { CSSProperties } from 'react';
import React from 'react';
import type { ActionObject, ListenerAction } from 'jamis-core';
import Sortable from 'sortablejs';
import type { FormRenderer } from '../form/Form';
import type { ComboCondition, ComboProps, ComboSubControl } from '../types';
interface ComboState {
    /** 重复的索引项, 在要校验整个项的场景下有空 */
    duplicateIndex: number;
}
export default class ComboControl extends React.Component<ComboProps, ComboState> {
    static defaultProps: Partial<ComboProps>;
    static propsList: (keyof ComboProps)[];
    subForms: Array<FormRenderer>;
    subFormDefaultValues: Array<{
        index: number;
        values: any;
        setted: boolean;
    }>;
    keys: Array<string>;
    dragTip?: HTMLElement;
    sortable?: Sortable;
    defaultValue?: any;
    toDispose: Array<Function>;
    id: string;
    constructor(props: ComboProps);
    componentDidUpdate(prevProps: ComboProps): void;
    componentWillUnmount(): void;
    doAction(action: ListenerAction, args: any): void;
    addItemValue: (itemValue: any) => void;
    getValueAsArray: (props?: Readonly<ComboProps>) => any[];
    addItemWith: (condition: ComboCondition) => void;
    addItem: () => Promise<void>;
    deleteItem: (key: number) => Promise<void>;
    handleChange: (values: any, diff: any, { index }: {
        index: number;
    }) => void;
    handleRadioChange: (ctx: any, { index, name, trueValue, falseValue }: any) => false | undefined;
    handleSingleFormChange: (values: Record<string, any>) => void;
    handleSubFormValid: (valid: boolean, { index }: any) => void;
    handleFormInit: (values: any, { index }: any) => void;
    handleSingleFormInit(values: any): void;
    handleAction(e: React.UIEvent<any> | undefined, action: ActionObject): any;
    validate(): Promise<string | void>;
    flush: () => Promise<void>;
    dragTipRef(ref: any): void;
    initDragging(): void;
    destroyDragging(): void;
    refsMap: {
        [propName: number]: any;
    };
    makeFormRef: any;
    formRef(ref: any, index?: number): void;
    memoizedFormatValue: any;
    formatValue(value: any, index?: number): any;
    pickCondition(value: any): ComboCondition | null;
    handleComboTypeChange(index: number, selection: any): void;
    handleTabSelect: (key: number) => Promise<void>;
    setNull(e: React.MouseEvent): void;
    renderPlaceholder(): JSX.Element;
    renderTabsMode(): JSX.Element;
    renderDelBtn(value: any, index: number): JSX.Element | null;
    renderAddBtn(): JSX.Element | null;
    renderMultiValue: ({ index, style }: {
        index: number;
        style?: CSSProperties;
    }) => JSX.Element | null;
    renderMultipe(): JSX.Element;
    renderSingle(): JSX.Element;
    renderItems(finnalControls: ComboSubControl[], data: object, index?: number): JSX.Element;
    renderStatic(displayValue?: string): JSX.Element;
    render(): JSX.Element | null;
}
export declare class ComboControlRenderer extends ComboControl {
    setData(value: any, replace?: boolean, index?: number | string, condition?: any): Promise<void>;
}
export declare class KVControlRenderer extends ComboControl {
}
export declare class KVSControlRenderer extends ComboControl {
}
export {};
