import type { Component, ComputedRef } from 'vue'; export interface CrudListResult> { list: TItem[]; total: number; } export interface CrudListParams { page: number; pageSize: number; keyword?: string; [key: string]: unknown; } export interface CrudApi, TForm = Record> { list: (params: CrudListParams) => Promise>; create?: (data: TForm) => Promise; update?: (id: string | number, data: TForm) => Promise; delete?: (id: string | number) => Promise; } export interface CrudColumn { key: string; label: string; type?: 'text' | 'select' | 'date' | 'number'; options?: Array<{ label: string; value: string | number; }>; formatter?: (value: unknown, row: Record) => string; } export interface CrudSearchField { key: string; component?: 'input' | 'select'; } export interface CrudFormField { key: string; component?: 'input' | 'select' | 'textarea'; required?: boolean; options?: Array<{ label: string; value: string | number; }>; } export interface CrudHooks> { beforeFetch?: (params: CrudListParams) => CrudListParams; afterFetch?: (result: CrudListResult) => CrudListResult; onError?: (error: unknown) => void; } export interface CrudActionConfig { create?: boolean | { label?: string; }; edit?: boolean | { label?: string; }; delete?: boolean | { label?: string; confirm?: string; }; } export interface CrudState, TForm = Record> { page: number; pageSize: number; total: number; keyword: string; filters: Record; rows: TItem[]; selectedRow?: TItem; formMode: 'create' | 'edit'; formOpen: boolean; formModel: Partial; } export interface CrudFormConfig { fields?: CrudFormField[]; } export interface CrudQueryTableProps> { rows: TItem[]; columns: CrudColumn[]; loading: boolean; page: number; pageSize: number; total: number; keyword: string; searchFields: CrudSearchField[]; actions: CrudActionConfig; onPageChange: (page: number) => void; onPageSizeChange: (pageSize: number) => void; onKeywordChange: (keyword: string) => void; onCreateClick: () => void; onEditClick: (row: TItem) => void; onDeleteClick: (row: TItem) => void; } export interface CrudQueryFormProps> { open: boolean; mode: 'create' | 'edit'; model: Partial; fields: CrudFormField[]; loading: boolean; onClose: () => void; onSubmit: (payload: Partial) => Promise; } export interface CrudUiRegistry { table: Component; form: Component; tableType?: string; formType?: string; } export interface UseCrudOptions, TForm = Record> { api: string | CrudApi; columns?: CrudColumn[]; search?: CrudSearchField[] | string[]; form?: CrudFormConfig; actions?: CrudActionConfig; pagination?: boolean | { pageSize?: number; }; hooks?: CrudHooks; tableProps?: Record; formProps?: Record; queryOptions?: Record; } export interface UseCrudReturn, TForm = Record> { tableProps: ComputedRef & Record>; formProps: ComputedRef & Record>; data: ComputedRef; loading: ComputedRef; openCreate: () => void; openEdit: (row: TItem) => void; refresh: () => Promise; } export interface CrudSchema extends Omit { type: 'crud'; } //# sourceMappingURL=types.d.ts.map