import { type Dispatch, type SetStateAction } from "react";
import { z } from "zod";
import { type FilterValue } from "./types";
declare const dataTableFiltersSchema: z.ZodObject<{
    f: z.ZodString;
    v: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<"single_select">;
        data: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        data: string;
        type: "single_select";
    }, {
        data: string;
        type: "single_select";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"multi_select">;
        data: z.ZodArray<z.ZodString, "many">;
    }, "strip", z.ZodTypeAny, {
        data: string[];
        type: "multi_select";
    }, {
        data: string[];
        type: "multi_select";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"text">;
        data: z.ZodObject<{
            operator: z.ZodEnum<["equals", "notEquals", "contains", "notContains", "startsWith", "endsWith", "isEmpty", "isNotEmpty"]>;
            operand: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        }, {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        }>;
    }, "strip", z.ZodTypeAny, {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: "text";
    }, {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: "text";
    }>, z.ZodObject<{
        type: z.ZodLiteral<"number">;
        data: z.ZodObject<{
            operator: z.ZodEnum<["eq", "neq", "gt", "gte", "lt", "lte"]>;
            operand: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        }, {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        }>;
    }, "strip", z.ZodTypeAny, {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: "number";
    }, {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: "number";
    }>]>>;
}, "strip", z.ZodTypeAny, {
    f: string;
    v?: {
        data: string;
        type: "single_select";
    } | {
        data: string[];
        type: "multi_select";
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: "text";
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: "number";
    } | undefined;
}, {
    f: string;
    v?: {
        data: string;
        type: "single_select";
    } | {
        data: string[];
        type: "multi_select";
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: "text";
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: "number";
    } | undefined;
}>;
type ActiveFilter = z.infer<typeof dataTableFiltersSchema>;
export type DataTableContextType = {
    activeFilters: ActiveFilter[];
    setActiveFilters: (filters: ActiveFilter[]) => void;
    clearAll: () => void;
    updateFilter: (columnId: string, value: FilterValue) => void;
    removeFilter: (columnId: string) => void;
    displayedExternalFilters: string[];
    setDisplayedExternalFilters: Dispatch<SetStateAction<string[]>>;
    removeDisplayedExternalFilter: (key: string) => void;
};
export declare const DataTableContext: import("react").Context<DataTableContextType | null>;
export declare function DataTableProvider({ children }: {
    children: React.ReactNode;
}): JSX.Element;
export {};
//# sourceMappingURL=context.d.ts.map