import { type ButtonProps } from 'naive-ui'; import { type AsyncComponentLoader, type VNodeChild } from 'vue'; export interface FilterRequest { method?: 'get' | 'post' | 'put' | 'patch' | 'delete'; data?: Record; } export interface FilterAction { label?: string; labelLang?: string; type: 'modal' | 'drawer' | 'link' | 'confirm' | 'request' | 'delete' | 'callback'; callback?: (id?: string | number, itemData?: object) => void; title?: string; titleLang?: string; content?: string; color?: ButtonProps['type']; icon?: string; url?: string | ((id?: string | number, itemData?: object) => string); path?: string | ((id?: string | number, itemData?: object) => string); invalidate?: string; component?: AsyncComponentLoader; componentProps?: Record | ((data: any) => Record); width?: number; show?: (rowData?: object, rowIndex?: number) => boolean; request?: FilterRequest | ((id?: string | number, itemData?: object) => FilterRequest); } export interface UseFilterProps { actions?: FilterAction[]; } export declare function useFilter({ actions }: UseFilterProps): { actionButton: VNodeChild; actionDropdown: VNodeChild; filterRef: import("vue").Ref; filterHeight: import("vue").Ref; filterMore: import("vue").Ref; filterShow: import("vue").Ref; width: import("vue").Ref; }; export interface TriggerAction { id?: string | number; item: FilterAction; itemData?: object; width?: number | string; } export declare function useAction({ url }: { url?: string; }): { trigger: ({ item, id, itemData }: TriggerAction) => void; }; export interface RenderActionProps { key?: string | number; text?: boolean; actions?: FilterAction[]; rowData?: object; rowIndex?: number; url?: string; } export declare function listRenderAction({ key, text, rowData, rowIndex, actions, url }: RenderActionProps): VNodeChild; export declare function listRenderDropdown({ actions }: RenderActionProps): VNodeChild;