import { z } from "zod";
import type { IconName } from "@calcom/ui";
export declare const ZTextFilterOperator: z.ZodEnum<["equals", "notEquals", "contains", "notContains", "startsWith", "endsWith", "isEmpty", "isNotEmpty"]>;
export type TextFilterOperator = z.infer<typeof ZTextFilterOperator>;
export declare const ZSingleSelectFilterValue: z.ZodObject<{
    type: z.ZodLiteral<"single_select">;
    data: z.ZodString;
}, "strip", z.ZodTypeAny, {
    data: string;
    type: "single_select";
}, {
    data: string;
    type: "single_select";
}>;
export type SingleSelectFilterValue = z.infer<typeof ZSingleSelectFilterValue>;
export declare const ZMultiSelectFilterValue: 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";
}>;
export type MultiSelectFilterValue = z.infer<typeof ZMultiSelectFilterValue>;
export declare const ZTextFilterValue: 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";
}>;
export type TextFilterValue = z.infer<typeof ZTextFilterValue>;
export declare const ZNumberFilterOperator: z.ZodEnum<["eq", "neq", "gt", "gte", "lt", "lte"]>;
export type NumberFilterOperator = z.infer<typeof ZNumberFilterOperator>;
export declare const ZNumberFilterValue: 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";
}>;
export type NumberFilterValue = z.infer<typeof ZNumberFilterValue>;
export declare const ZFilterValue: 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";
}>]>;
export type FilterValue = z.infer<typeof ZFilterValue>;
export type ColumnFilterType = "single_select" | "multi_select" | "text" | "number";
export type ColumnFilterMeta = {
    type?: ColumnFilterType;
    icon?: IconName;
};
export type FilterableColumn = {
    id: string;
    title: string;
} & ({
    type: "single_select";
    icon?: IconName;
    options: Map<string | {
        label: string;
        value: string;
    }, number>;
} | {
    type: "multi_select";
    icon?: IconName;
    options: Map<string | {
        label: string;
        value: string;
    }, number>;
} | {
    type: "text";
    icon?: IconName;
} | {
    type: "number";
    icon?: IconName;
});
export declare const ZColumnFilter: z.ZodObject<{
    id: z.ZodString;
    value: 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, {
    value: {
        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";
    };
    id: string;
}, {
    value: {
        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";
    };
    id: string;
}>;
export type ColumnFilter = z.infer<typeof ZColumnFilter>;
export type TypedColumnFilter<T extends ColumnFilterType> = {
    id: string;
    value: T extends "text" ? TextFilterValue : T extends "number" ? NumberFilterValue : T extends "single_select" ? SingleSelectFilterValue : T extends "multi_select" ? MultiSelectFilterValue : never;
};
export type ExternalFilter = {
    key: string;
    titleKey: string;
    component: () => React.ReactNode;
};
//# sourceMappingURL=types.d.ts.map