import type { SortingState, ColumnSort, VisibilityState, ColumnSizingState } from "@tanstack/react-table";
import { z } from "zod";
import type { IconName } from "@calcom/ui/components/icon";
export type { SortingState } from "@tanstack/react-table";
export declare enum ColumnFilterType {
    SINGLE_SELECT = "ss",
    MULTI_SELECT = "ms",
    TEXT = "t",
    NUMBER = "n",
    DATE_RANGE = "dr"
}
export declare const textFilterOperators: readonly ["equals", "notEquals", "contains", "notContains", "startsWith", "endsWith", "isEmpty", "isNotEmpty"];
export type TextFilterOperator = (typeof textFilterOperators)[number];
export declare const ZTextFilterOperator: z.ZodEnum<["equals", "notEquals", "contains", "notContains", "startsWith", "endsWith", "isEmpty", "isNotEmpty"]>;
export type SingleSelectFilterValue = {
    type: ColumnFilterType.SINGLE_SELECT;
    data: string | number;
};
export declare const ZSingleSelectFilterValue: z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.SINGLE_SELECT>;
    data: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
}, "strip", z.ZodTypeAny, {
    data: string | number;
    type: ColumnFilterType.SINGLE_SELECT;
}, {
    data: string | number;
    type: ColumnFilterType.SINGLE_SELECT;
}>;
export type MultiSelectFilterValue = {
    type: ColumnFilterType.MULTI_SELECT;
    data: Array<string | number>;
};
export declare const ZMultiSelectFilterValue: z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.MULTI_SELECT>;
    data: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
}, "strip", z.ZodTypeAny, {
    data: (string | number)[];
    type: ColumnFilterType.MULTI_SELECT;
}, {
    data: (string | number)[];
    type: ColumnFilterType.MULTI_SELECT;
}>;
export type TextFilterValue = {
    type: ColumnFilterType.TEXT;
    data: {
        operator: TextFilterOperator;
        operand: string;
    };
};
export declare const ZTextFilterValue: z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.TEXT;
}, {
    data: {
        operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
        operand: string;
    };
    type: ColumnFilterType.TEXT;
}>;
declare const numberFilterOperators: readonly ["eq", "neq", "gt", "gte", "lt", "lte"];
export type NumberFilterOperator = (typeof numberFilterOperators)[number];
export declare const ZNumberFilterOperator: z.ZodEnum<["eq", "neq", "gt", "gte", "lt", "lte"]>;
export type NumberFilterValue = {
    type: ColumnFilterType.NUMBER;
    data: {
        operator: NumberFilterOperator;
        operand: number;
    };
};
export declare const ZNumberFilterValue: z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.NUMBER;
}, {
    data: {
        operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
        operand: number;
    };
    type: ColumnFilterType.NUMBER;
}>;
export type DateRangeFilterValue = {
    type: ColumnFilterType.DATE_RANGE;
    data: {
        startDate: string | null;
        endDate: string | null;
        preset: string;
    };
};
export declare const ZDateRangeFilterValue: z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.DATE_RANGE>;
    data: z.ZodObject<{
        startDate: z.ZodNullable<z.ZodString>;
        endDate: z.ZodNullable<z.ZodString>;
        preset: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    }, {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    }>;
}, "strip", z.ZodTypeAny, {
    data: {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    };
    type: ColumnFilterType.DATE_RANGE;
}, {
    data: {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    };
    type: ColumnFilterType.DATE_RANGE;
}>;
export declare const ZFilterValue: z.ZodUnion<[z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.SINGLE_SELECT>;
    data: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
}, "strip", z.ZodTypeAny, {
    data: string | number;
    type: ColumnFilterType.SINGLE_SELECT;
}, {
    data: string | number;
    type: ColumnFilterType.SINGLE_SELECT;
}>, z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.MULTI_SELECT>;
    data: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
}, "strip", z.ZodTypeAny, {
    data: (string | number)[];
    type: ColumnFilterType.MULTI_SELECT;
}, {
    data: (string | number)[];
    type: ColumnFilterType.MULTI_SELECT;
}>, z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.TEXT;
}, {
    data: {
        operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
        operand: string;
    };
    type: ColumnFilterType.TEXT;
}>, z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.NUMBER;
}, {
    data: {
        operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
        operand: number;
    };
    type: ColumnFilterType.NUMBER;
}>, z.ZodObject<{
    type: z.ZodLiteral<ColumnFilterType.DATE_RANGE>;
    data: z.ZodObject<{
        startDate: z.ZodNullable<z.ZodString>;
        endDate: z.ZodNullable<z.ZodString>;
        preset: z.ZodString;
    }, "strip", z.ZodTypeAny, {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    }, {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    }>;
}, "strip", z.ZodTypeAny, {
    data: {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    };
    type: ColumnFilterType.DATE_RANGE;
}, {
    data: {
        preset: string;
        startDate: string | null;
        endDate: string | null;
    };
    type: ColumnFilterType.DATE_RANGE;
}>]>;
export type DateRangeFilterOptions = {
    range?: "past" | "custom";
    endOfDay?: boolean;
};
export type TextFilterOptions = {
    allowedOperators?: TextFilterOperator[];
    placeholder?: string;
};
export type ColumnFilterMeta = {
    type: ColumnFilterType.DATE_RANGE;
    icon?: IconName;
    dateRangeOptions?: DateRangeFilterOptions;
} | {
    type: ColumnFilterType.TEXT;
    icon?: IconName;
    textOptions?: TextFilterOptions;
} | {
    type?: Exclude<ColumnFilterType, ColumnFilterType.DATE_RANGE | ColumnFilterType.TEXT>;
    icon?: IconName;
};
export type FilterableColumn = {
    id: string;
    title: string;
    icon?: IconName;
} & ({
    type: ColumnFilterType.SINGLE_SELECT;
    options: FacetedValue[];
} | {
    type: ColumnFilterType.MULTI_SELECT;
    options: FacetedValue[];
} | {
    type: ColumnFilterType.TEXT;
    textOptions?: TextFilterOptions;
} | {
    type: ColumnFilterType.NUMBER;
} | {
    type: ColumnFilterType.DATE_RANGE;
    dateRangeOptions?: DateRangeFilterOptions;
});
export type ColumnFilter = {
    id: string;
    value: FilterValue;
};
export declare const ZColumnFilter: z.ZodObject<{
    id: z.ZodString;
    value: z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.SINGLE_SELECT>;
        data: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
    }, "strip", z.ZodTypeAny, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.MULTI_SELECT>;
        data: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
    }, "strip", z.ZodTypeAny, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.TEXT;
    }, {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.NUMBER;
    }, {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.DATE_RANGE>;
        data: z.ZodObject<{
            startDate: z.ZodNullable<z.ZodString>;
            endDate: z.ZodNullable<z.ZodString>;
            preset: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }>;
    }, "strip", z.ZodTypeAny, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }>]>;
}, "strip", z.ZodTypeAny, {
    id: string;
    value: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    };
}, {
    id: string;
    value: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    };
}>;
export type FilterValueSchema<T extends ColumnFilterType> = T extends ColumnFilterType.SINGLE_SELECT ? typeof ZSingleSelectFilterValue : T extends ColumnFilterType.MULTI_SELECT ? typeof ZMultiSelectFilterValue : T extends ColumnFilterType.TEXT ? typeof ZTextFilterValue : T extends ColumnFilterType.NUMBER ? typeof ZNumberFilterValue : T extends ColumnFilterType.DATE_RANGE ? typeof ZDateRangeFilterValue : never;
export type FilterValue<T extends ColumnFilterType = ColumnFilterType> = T extends ColumnFilterType.SINGLE_SELECT ? SingleSelectFilterValue : T extends ColumnFilterType.MULTI_SELECT ? MultiSelectFilterValue : T extends ColumnFilterType.TEXT ? TextFilterValue : T extends ColumnFilterType.NUMBER ? NumberFilterValue : T extends ColumnFilterType.DATE_RANGE ? DateRangeFilterValue : never;
export type TypedColumnFilter<T extends ColumnFilterType> = {
    id: string;
    value: FilterValue<T>;
};
export type Sorting = ColumnSort;
export declare const ZSorting: z.ZodObject<{
    id: z.ZodString;
    desc: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    id: string;
    desc: boolean;
}, {
    id: string;
    desc: boolean;
}>;
export declare const ZSortingState: z.ZodArray<z.ZodObject<{
    id: z.ZodString;
    desc: z.ZodBoolean;
}, "strip", z.ZodTypeAny, {
    id: string;
    desc: boolean;
}, {
    id: string;
    desc: boolean;
}>, "many">;
export declare const ZColumnSizing: z.ZodRecord<z.ZodString, z.ZodNumber>;
export declare const ZColumnVisibility: z.ZodRecord<z.ZodString, z.ZodBoolean>;
export type FacetedValue = {
    label: string;
    value: string | number;
    section?: string;
};
export type ActiveFilter = {
    f: string;
    v?: FilterValue;
};
export type ActiveFilters = ActiveFilter[];
export declare const ZActiveFilter: z.ZodObject<{
    f: z.ZodString;
    v: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.SINGLE_SELECT>;
        data: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
    }, "strip", z.ZodTypeAny, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.MULTI_SELECT>;
        data: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
    }, "strip", z.ZodTypeAny, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.TEXT;
    }, {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.NUMBER;
    }, {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.DATE_RANGE>;
        data: z.ZodObject<{
            startDate: z.ZodNullable<z.ZodString>;
            endDate: z.ZodNullable<z.ZodString>;
            preset: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }>;
    }, "strip", z.ZodTypeAny, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }>]>>;
}, "strip", z.ZodTypeAny, {
    f: string;
    v?: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    } | undefined;
}, {
    f: string;
    v?: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    } | undefined;
}>;
export declare const ZActiveFilters: z.ZodArray<z.ZodObject<{
    f: z.ZodString;
    v: z.ZodOptional<z.ZodUnion<[z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.SINGLE_SELECT>;
        data: z.ZodUnion<[z.ZodString, z.ZodNumber]>;
    }, "strip", z.ZodTypeAny, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }, {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.MULTI_SELECT>;
        data: z.ZodArray<z.ZodUnion<[z.ZodString, z.ZodNumber]>, "many">;
    }, "strip", z.ZodTypeAny, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }, {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.TEXT;
    }, {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.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: ColumnFilterType.NUMBER;
    }, {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    }>, z.ZodObject<{
        type: z.ZodLiteral<ColumnFilterType.DATE_RANGE>;
        data: z.ZodObject<{
            startDate: z.ZodNullable<z.ZodString>;
            endDate: z.ZodNullable<z.ZodString>;
            preset: z.ZodString;
        }, "strip", z.ZodTypeAny, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }, {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        }>;
    }, "strip", z.ZodTypeAny, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }, {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    }>]>>;
}, "strip", z.ZodTypeAny, {
    f: string;
    v?: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    } | undefined;
}, {
    f: string;
    v?: {
        data: string | number;
        type: ColumnFilterType.SINGLE_SELECT;
    } | {
        data: (string | number)[];
        type: ColumnFilterType.MULTI_SELECT;
    } | {
        data: {
            operator: "endsWith" | "startsWith" | "equals" | "contains" | "notEquals" | "notContains" | "isEmpty" | "isNotEmpty";
            operand: string;
        };
        type: ColumnFilterType.TEXT;
    } | {
        data: {
            operator: "lt" | "lte" | "gt" | "gte" | "eq" | "neq";
            operand: number;
        };
        type: ColumnFilterType.NUMBER;
    } | {
        data: {
            preset: string;
            startDate: string | null;
            endDate: string | null;
        };
        type: ColumnFilterType.DATE_RANGE;
    } | undefined;
}>, "many">;
export type FilterSegmentOutput = {
    id: number;
    name: string;
    tableIdentifier: string;
    scope: "USER" | "TEAM";
    activeFilters: ActiveFilters;
    sorting: SortingState;
    columnVisibility: Record<string, boolean>;
    columnSizing: Record<string, number>;
    perPage: number;
    searchTerm: string | null;
    createdAt: Date;
    updatedAt: Date;
    userId: number;
    teamId: number | null;
    team: {
        id: number;
        name: string;
    } | null;
};
export type FilterSegmentsListResponse = {
    segments: FilterSegmentOutput[];
    preferredSegmentId: number | null;
};
export type SegmentStorage = {
    [tableIdentifier: string]: {
        segmentId: number;
    };
};
export declare const ZSegmentStorage: z.ZodRecord<z.ZodString, z.ZodObject<{
    segmentId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    segmentId: number;
}, {
    segmentId: number;
}>>;
export type UseSegments = (props: UseSegmentsProps) => UseSegmentsReturn;
export type UseSegmentsProps = {
    tableIdentifier: string;
    activeFilters: ActiveFilters;
    sorting: SortingState;
    columnVisibility: VisibilityState;
    columnSizing: ColumnSizingState;
    pageSize: number;
    searchTerm: string;
    defaultPageSize: number;
    segmentId: number;
    setSegmentId: (segmentId: number | null) => void;
    setActiveFilters: (activeFilters: ActiveFilters) => void;
    setSorting: (sorting: SortingState) => void;
    setColumnVisibility: (columnVisibility: VisibilityState) => void;
    setColumnSizing: (columnSizing: ColumnSizingState) => void;
    setPageSize: (pageSize: number) => void;
    setPageIndex: (pageIndex: number) => void;
    setSearchTerm: (searchTerm: string | null) => void;
    segments?: FilterSegmentOutput[];
    preferredSegmentId?: number | null;
};
export type UseSegmentsReturn = {
    segments: FilterSegmentOutput[];
    selectedSegment: FilterSegmentOutput | undefined;
    canSaveSegment: boolean;
    setAndPersistSegmentId: (segmentId: number | null) => void;
    isSegmentEnabled: boolean;
};
//# sourceMappingURL=types.d.ts.map