import type { FormDialogCallback } from '../types/formDialog.js';
import { type GraphqlModelConfigProps } from './graphqlModelOperation.js';
import type { HeaderProps, InitialDataProps } from './graphqlModel.js';
export interface ApiModelProps {
    api?: boolean;
}
export type ApiModelComposableProps = GraphqlModelConfigProps & Partial<HeaderProps> & Partial<InitialDataProps>;
/**
 * Strip a `By<Qualifier>` suffix from a model name (mirrors GraphQL's
 * `computedModelName` rule). Used for mutation/search endpoint resolution.
 * Reads keep the full modelName so qualifiers like `ByGroupKey` survive.
 */
export declare function stripModelByQualifier(modelName: string): string;
/**
 * Build a REST API endpoint URL for a model.
 * @param modelName - The model name (e.g., 'Patient')
 * @param action - Optional action (e.g., 'create', 'pageable')
 * @returns The endpoint path (e.g., '/model/patient/create')
 */
export declare function buildApiEndpoint(modelName: string, action?: string): string;
export declare function useApiModel<T extends ApiModelComposableProps>(props: T): {
    items: import("vue").Ref<Record<string, any>[], Record<string, any>[]>;
    itemsLength: import("vue").Ref<number, number>;
    search: import("vue").Ref<string | undefined, string | undefined>;
    setSearch: (keyword: string) => void;
    currentOptions: import("vue").Ref<any, any>;
    fields: import("vue").ComputedRef<(string | object)[]>;
    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>;
    createItem: (item: Record<string, any>, callback?: FormDialogCallback, importing?: boolean) => Promise<any>;
    importItems: (importItemsList: Record<string, any>[], callback?: FormDialogCallback) => void;
    updateItem: (item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>;
    deleteItem: (item: Record<string, any>, callback?: FormDialogCallback) => Promise<any>;
    loadItems: (options: any) => Promise<void>;
    reload: () => Promise<void>;
    isLoading: import("vue").Ref<boolean, boolean>;
};
