import { LIcon } from 'itlab-icons';
import { Ref } from 'vue';
export interface OverviewConfig<T> {
    routeName: string;
    sortField: keyof T;
    sortDirection?: 1 | -1;
    itemsPerPage?: number;
    sortFields?: Partial<Record<keyof T, string | [string, LIcon]>>;
    extraFilter?: Record<keyof T | string, any> | Ref<Record<keyof T | string, any>>;
    useQuery?: boolean;
    useParam?: boolean;
    endpoint: string;
    onFetched?: VoidFunction;
}
/**
 *
 * @remarks Diese Methode kann nur gleichzeitig mit dem {@link https://router.vuejs.org/ | Vue Router} verwendet werden
 *
 * @param cfg - OverviewConfig
 */
export declare function useOverview<T>(cfg: OverviewConfig<T>): {
    key: symbol;
    empty: boolean;
    loading: boolean;
    page: number;
    pages?: number | undefined;
    controller?: {
        readonly signal: {
            readonly aborted: boolean;
            onabort: ((this: AbortSignal, ev: Event) => any) | null;
            readonly reason: any;
            throwIfAborted: {
                (): void;
                (): void;
            };
            addEventListener: {
                <K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | AddEventListenerOptions): void;
                (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
            };
            removeEventListener: {
                <K extends keyof AbortSignalEventMap>(type: K, listener: (this: AbortSignal, ev: AbortSignalEventMap[K]) => any, options?: boolean | EventListenerOptions): void;
                (type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
            };
            dispatchEvent: (event: Event) => boolean;
        };
        abort: {
            (reason?: any): void;
            (reason?: any): void;
        };
    } | undefined;
    sort: {
        sortField: import("vue").UnwrapRef<keyof T>;
        sortDirection: -1 | 1;
        skip?: number | undefined;
        limit?: number | undefined;
    };
    items: T[] | undefined;
    total: number;
    sortFields: import("vue").UnwrapRef<Partial<Record<keyof T, string | [string, LIcon]>>>;
    fetch: VoidFunction;
};
export type AnyOverview = ReturnType<typeof useOverview<any>>;
