import { default as React } from 'react';
import { Control } from 'react-hook-form';

interface IOption {
    id: string | number;
    value: string | number;
    label: string | React.ReactNode;
    disabled?: boolean;
    isGroup?: boolean;
    options?: IOption[];
    searchLabel?: string;
}
interface CustomFetchApiParams {
    search?: string;
    filters?: any;
    limit: number;
    skip: number;
    select?: string;
    order?: string;
}
interface CustomFetchApiResponse {
    data: IOption[];
    pagination?: {
        totalCount: number;
    };
}
interface IDynamicSearchSelectProps {
    name: string;
    placeholder: string;
    label: string;
    size?: 'small' | 'medium';
    options: IOption[];
    formControl: Control<any>;
    defaultValue?: string | string[];
    fieldArrayName: string;
    id?: string;
    required?: boolean;
    is_multiselect?: boolean;
    position?: number;
    formType?: string;
    typeOfField?: string;
    disabled?: boolean;
    onChipRemove?: (value: string) => void;
    enable_footer?: boolean;
    footer_action?: string;
    onFooterClick?: () => void;
    is_loading?: boolean;
    selectedLabel?: string;
    isInternal?: boolean;
    disabledIds?: (string | number)[];
    getSelectedData?: (data: IOption | IOption[] | null, name: string) => void;
    attributes?: string[];
    handleChange?: (value: string | string[]) => void;
    hasParent?: boolean;
    sortOrder?: string;
    apiType?: string;
    handleOptions?: (value: any) => void;
    filterKey?: string;
    customeFilter?: Record<string, any>;
    refresh?: boolean;
    addType?: string;
    showCancelButton?: boolean;
    /** Custom API function to fetch options from parent component */
    customFetchApi?: (params: CustomFetchApiParams) => Promise<CustomFetchApiResponse>;
    isMergeOptions?: boolean;
    showItemTooltip?: boolean;
    modalComponentProps?: any;
}
declare const DynamicSearchSelect: React.FC<IDynamicSearchSelectProps>;
export default DynamicSearchSelect;
