import { VDataTable } from 'vuetify/components/VDataTable';
import type { GraphqlModelProps } from '../../composables/graphqlModel.js';
import type { FormDialogCallback } from "../../types/formDialog.js";
interface Props extends /* @vue-ignore */ InstanceType<typeof VDataTable['$props']> {
    title: string;
    noDataText?: string;
    dialogWidth?: string | number;
    dialogMaxWidth?: string | number;
    dialogHeight?: string | number;
    dialogMaxHeight?: string | number;
    dialogFullscreen?: boolean;
    initialData?: Record<string, any>;
    toolbarColor?: string;
    importable?: boolean;
    exportable?: boolean;
    insertable?: boolean;
    searchable?: boolean;
    search?: string;
    saveAndStay?: boolean;
    stringFields?: Array<string>;
    onlyOwnerEdit?: boolean;
    onlyOwnerOverridePermission?: string | string[];
    api?: boolean;
    perPageStorageKey?: string;
    perPageStorageEnabled?: boolean;
    autoRefresh?: number | boolean;
    autoRefreshDefault?: number;
    autoRefreshControl?: boolean;
}
/**
 * Public props accepted by ModelTable.
 * Document each prop field with intent, defaults, and side effects for clear generated docs.
 */
type __VLS_Props = Props & GraphqlModelProps;
declare function openDialog(item?: object): void;
declare function openDialogReadonly(item?: object): void;
declare var __VLS_8: {
    items: Record<string, any>[];
    operation: {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    };
}, __VLS_34: {
    reload: () => void;
}, __VLS_44: {
    enabled: import("vue").ComputedRef<boolean>;
    isActive: import("vue").ComputedRef<boolean>;
    isLoading: import("vue").ComputedRef<boolean>;
    intervalSeconds: import("vue").ComputedRef<number>;
    remainingSeconds: import("vue").Ref<number>;
    isUserPaused: import("vue").Ref<boolean>;
    togglePause: () => void;
    reset: () => void;
    reload: () => void | Promise<void>;
}, __VLS_57: {
    items: Record<string, any>[];
    operation: {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    };
}, __VLS_70: {
    items: Record<string, any>[];
    operation: {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    };
}, __VLS_102: never, __VLS_103: {
    operation: {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    };
}, __VLS_135: never, __VLS_136: {
    operation: {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    };
}, __VLS_171: any, __VLS_174: any, __VLS_177: any;
type __VLS_Slots = {} & {
    [K in NonNullable<typeof __VLS_102>]?: (props: typeof __VLS_103) => any;
} & {
    [K in NonNullable<typeof __VLS_135>]?: (props: typeof __VLS_136) => any;
} & {
    header?: (props: typeof __VLS_8) => any;
} & {
    title?: (props: typeof __VLS_34) => any;
} & {
    autoRefreshControl?: (props: typeof __VLS_44) => any;
} & {
    search?: (props: typeof __VLS_57) => any;
} & {
    toolbarItems?: (props: typeof __VLS_70) => any;
} & {
    form?: (props: typeof __VLS_171) => any;
} & {
    formTitle?: (props: typeof __VLS_174) => any;
} & {
    formAction?: (props: typeof __VLS_177) => any;
};
declare const __VLS_base: import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
    noDataText: string;
    dialogFullscreen: boolean;
    toolbarColor: string;
    importable: boolean;
    exportable: boolean;
    insertable: boolean;
    searchable: boolean;
    saveAndStay: boolean;
    modelKey: string;
    modelBy: undefined;
    fields: () => never[];
    stringFields: () => never[];
    onlyOwnerEdit: boolean;
    api: boolean;
    perPageStorageEnabled: boolean;
    autoRefresh: boolean;
    autoRefreshDefault: number;
    autoRefreshControl: boolean;
}>>, {
    reload: (() => Promise<void> | undefined) | (() => Promise<void>);
    operation: import("vue").Ref<{
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    }, {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: import("vue").ComputedRef<boolean>;
        canServerSearch: import("vue").ComputedRef<boolean>;
        canCreate: import("vue").ComputedRef<boolean>;
        canUpdate: import("vue").ComputedRef<boolean>;
        canDelete: import("vue").ComputedRef<boolean>;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    } | {
        openDialog: typeof openDialog;
        openDialogReadonly: typeof openDialogReadonly;
        createItem: ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>);
        importItems: ((importItems: Record<string, any>[], callback?: FormDialogCallback) => void) | ((importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void);
        updateItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<void>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        deleteItem: ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>) | ((item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>);
        reload: (() => Promise<void> | undefined) | (() => Promise<void>);
        setSearch: ((keyword: string) => void) | ((keyword: string) => void);
        canServerPageable: boolean;
        canServerSearch: boolean;
        canCreate: boolean;
        canUpdate: boolean;
        canDelete: boolean;
        canEditRow: (item: Record<string, any>) => boolean;
        onlyOwnerEdit: boolean;
        onlyOwnerOverridePermission: string | string[] | undefined;
        autoRefresh: import("vue").Raw<import("#imports").UseAutoRefreshHandle>;
    }>;
    items: import("vue").Ref<Record<string, any>[], Record<string, any>[]>;
    autoRefresh: import("#imports").UseAutoRefreshHandle;
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
    delete: (...args: any[]) => void;
    create: (...args: any[]) => void;
    update: (...args: any[]) => void;
    "open:dialog": (...args: any[]) => void;
    "close:dialog": (...args: any[]) => void;
}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<__VLS_Props>, {
    noDataText: string;
    dialogFullscreen: boolean;
    toolbarColor: string;
    importable: boolean;
    exportable: boolean;
    insertable: boolean;
    searchable: boolean;
    saveAndStay: boolean;
    modelKey: string;
    modelBy: undefined;
    fields: () => never[];
    stringFields: () => never[];
    onlyOwnerEdit: boolean;
    api: boolean;
    perPageStorageEnabled: boolean;
    autoRefresh: boolean;
    autoRefreshDefault: number;
    autoRefreshControl: boolean;
}>>> & Readonly<{
    onDelete?: ((...args: any[]) => any) | undefined;
    onCreate?: ((...args: any[]) => any) | undefined;
    onUpdate?: ((...args: any[]) => any) | undefined;
    "onOpen:dialog"?: ((...args: any[]) => any) | undefined;
    "onClose:dialog"?: ((...args: any[]) => any) | undefined;
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
declare const _default: typeof __VLS_export;
export default _default;
type __VLS_TypePropsToOption<T> = {
    [K in keyof T]-?: {} extends Pick<T, K> ? {
        type: import('vue').PropType<Required<T>[K]>;
    } : {
        type: import('vue').PropType<T[K]>;
        required: true;
    };
};
type __VLS_WithDefaults<P, D> = {
    [K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
        default: D[K];
    }> : P[K];
};
type __VLS_WithSlots<T, S> = T & {
    new (): {
        $slots: S;
    };
};
type __VLS_PrettifyLocal<T> = (T extends any ? {
    [K in keyof T]: T[K];
} : {
    [K in keyof T as K]: T[K];
}) & {};
