import { Reactive } from 'vue';
export type FilterId = string | symbol;
export type FilterInstance<TData extends Record<string, any>> = {
    data: TData;
    readonly default: TData;
    readonly activeAttrs: (keyof TData)[];
    readonly isActive: boolean;
    reset(): void;
};
export declare function createFilter<TData extends Record<string, any>>(initialize: () => TData, onChange?: (value: TData, oldValue: TData) => void): Reactive<FilterInstance<TData>>;
export declare function defineFilter<TData extends Record<string, any>>(filterId: FilterId, initialize: () => TData, onChange?: (value: TData, oldValue: TData) => void): () => Reactive<FilterInstance<TData>>;
