import { type ShallowRef, type Ref, type ComputedRef, type MaybeRef } from 'vue'; export interface UseUpsertExposeOptions { success?: () => any; } export interface UseUpsertExpose, Data = any> { edit: (row: Row, ...args: any[]) => any; add: (...args: any[]) => any; setData: (data: Data) => UseUpsertExpose; setOptions: (options: UseUpsertExposeOptions) => any; } export type UpsertType = 'edit' | 'add'; export interface UseUpsertOptions { title?: string; stuffTitle?: string; model: Model; onAdd?: (...args: any[]) => void; onEdit?: (row: Row, ...args: any[]) => void; onShow?: () => void; onShown?: () => void; onShownAdd?: (...args: any[]) => void; onShownEdit?: (row: Row, ...args: any[]) => void; detailsFetch?: (row: Row) => any; beforeFill?: (row: Row) => any; addFetch?: (...args: any[]) => any; editFetch?: (row: Row, ...args: any[]) => any; success?: (res: any) => any; addSuccessText?: string; editSuccessText?: string; } export interface UseUpsertReturn, Row extends Record = Model, Data = any> extends UseUpsertExpose { dialogProps: { modelvalue: boolean; 'onUpdate:modelValue': (value: boolean) => void; title: string; }; formProps: { model: Model; ref: string; submit: () => Promise; }; formRef: any; data: Ref; expose: UseUpsertExpose; row: ShallowRef; type: Readonly>; isEdit: ComputedRef; isAdd: ComputedRef; } export declare function useUpsert, Row extends Record = Model, Data = any>(options: MaybeRef>): UseUpsertReturn; export interface UseExternalUpsertOptions { success?: () => any; } export interface UseExternalUpsertReturn, Data> { add: (...args: any[]) => void; edit: (...args: any[]) => void; setData: (data: Data) => void; expose: Readonly | null>>; ref: (_expose: any) => void; } export declare function useOuterUpsert, Data>(options?: UseExternalUpsertOptions): UseExternalUpsertReturn;