import type { ComputedRef, ExtractPropTypes, PropType } from 'vue';
import type { FormFieldsItem, RecordString } from './../../edit-page-layout';
import type { VxeTableProps } from 'vxe-table';
export { RecordString };
export type TableConfig = VxeTableProps;
export type RequestMethod = 'get' | 'post';
export interface Columns {
    type?: string;
    field: string;
    title?: string;
    align?: string;
    fieldLabelI18nKey?: string;
    width?: number;
}
export interface ExtendFunImport {
    pageData: RecordString;
    userInfo: RecordString;
    row?: RecordString;
    idx?: number;
}
export type HandleBefore = (value?: ExtendFunImport) => Promise<string | boolean | void>;
export type HandleAfter = (value?: ExtendFunImport) => void;
export type ModalParams = Record<number | string, unknown> | ((value?: ExtendFunImport) => Record<number | string, unknown>);
export interface Extend {
    valueKey?: string;
    current?: number;
    modalColumns: Columns[];
    modalUrl: string;
    modalConfigs?: unknown[];
    modalParams?: ModalParams;
    params?: ModalParams;
    requestMethod: RequestMethod;
    handleBefore?: HandleBefore;
    handleAfter?: HandleAfter;
}
export interface Config extends FormFieldsItem {
    extend: Extend;
}
export declare const remoteSelectProps: {
    value: {
        type: StringConstructor;
        default: string;
    };
    config: {
        type: PropType<Config>;
        default: () => {};
    };
    row: {
        type: PropType<Record<string | number, unknown>>;
        default: () => {};
    };
    idx: {
        type: NumberConstructor;
        default: number;
    };
    onChange: {
        type: PropType<((value: RecordString[]) => void) | ((value: RecordString[]) => void)[]>;
        default: unknown;
    };
};
export type RemoteSelectProps = ExtractPropTypes<typeof remoteSelectProps>;
export interface UseRemoteSelectType {
    classes: ComputedRef<{
        [key: string]: string | boolean;
    }>;
}
