import { AllowedComponentProps } from 'vue';
import type { Api } from 'datatables.net';
import { ComponentCustomProps } from 'vue';
import { ComponentOptionsMixin } from 'vue';
import type { Config } from 'datatables.net';
import type { ConfigColumns } from 'datatables.net';
import { DefineComponent } from 'vue';
import { ExtractPropTypes } from 'vue';
import { Plugin as Plugin_2 } from 'vue';
import { PropType } from 'vue';
import { Ref } from 'vue';
import { VNodeProps } from 'vue';

declare type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;

declare type __VLS_TypePropsToRuntimeProps<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: PropType<__VLS_NonUndefinedable<T[K]>>;
    } : {
        type: PropType<T[K]>;
        required: true;
    };
};

declare type __VLS_WithTemplateSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};

export declare const DataTable: __VLS_WithTemplateSlots<DefineComponent<__VLS_TypePropsToRuntimeProps<{
/**
* Load data for the table's content from an Ajax source
*/
ajax?: Config['ajax'];
/**
* Set column specific initialisation properties.
*/
columns?: ConfigColumns[] | undefined;
/**
* Data to use as the display data for the table.
*/
data?: any;
/**
* DataTables options
*/
options?: Config | undefined;
}>, {
/**
* DataTable instance
*/
dt: Ref<Api<any> | undefined>;
}, unknown, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, string[], string, VNodeProps & AllowedComponentProps & ComponentCustomProps, Readonly<ExtractPropTypes<__VLS_TypePropsToRuntimeProps<{
/**
* Load data for the table's content from an Ajax source
*/
ajax?: Config['ajax'];
/**
* Set column specific initialisation properties.
*/
columns?: ConfigColumns[] | undefined;
/**
* Data to use as the display data for the table.
*/
data?: any;
/**
* DataTables options
*/
options?: Config | undefined;
}>>> & {
[x: `on${Capitalize<string>}`]: ((...args: any[]) => any) | undefined;
}, {}>, {
    default: (_: {}) => any;
}>;

declare const _default: InstallableComponent;
export default _default;

export declare type InstallableComponent = typeof DataTable & {
    install: Exclude<Plugin_2['install'], undefined>;
};

export { }
