import { z } from 'zod';
import { SerializableValue, Fragment } from './types';
export declare const arrayifyType: <T extends z.ZodType<any, z.ZodTypeDef, any>>(type: T) => z.ZodEffects<z.ZodUnion<[z.ZodArray<T, "many">, T]>, (T | z.ZodArray<T, "many">)["_output"], unknown>;
export declare const rowToJson: (fragment: Fragment, name?: string | undefined) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}>;
interface RowsToArray {
    (fragment: Fragment, name?: string): Fragment;
    (fragment: Fragment, fromFragment: Fragment, name?: string): Fragment;
}
export declare const rowsToArray: RowsToArray;
export declare const arrayStringFilterType: z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>, string | string[], unknown>;
export declare const dateFilterType: z.ZodObject<{
    _lt: z.ZodOptional<z.ZodString>;
    _gt: z.ZodOptional<z.ZodString>;
    _lte: z.ZodOptional<z.ZodString>;
    _gte: z.ZodOptional<z.ZodString>;
    _is_null: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    _lt?: string | undefined;
    _gt?: string | undefined;
    _lte?: string | undefined;
    _gte?: string | undefined;
    _is_null?: boolean | undefined;
}, {
    _lt?: string | undefined;
    _gt?: string | undefined;
    _lte?: string | undefined;
    _gte?: string | undefined;
    _is_null?: boolean | undefined;
}>;
export declare const booleanFilter: (bool: boolean | undefined | null, trueStatement: Fragment, falseStatement?: import("slonik").FragmentSqlToken | null | undefined) => import("slonik").FragmentSqlToken | null;
export declare const genericFilter: (value: any, statement: Fragment) => import("slonik").FragmentSqlToken | null;
export declare const dateFilter: (date: z.infer<typeof dateFilterType> | undefined | null, field: Fragment) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export declare const arrayDynamicFilter: (type?: string) => (filter: string[] | number[] | string | number | undefined | null, field: Fragment, typeOverride?: string | undefined) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export declare const arrayFilter: (filter: string[] | number[] | string | number | undefined | null, field: Fragment, typeOverride?: string | undefined) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export declare const invertFilter: (condition?: import("slonik").FragmentSqlToken | null | undefined) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export declare const comparisonFilterType: z.ZodObject<{
    _gt: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _lt: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _gte: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _lte: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _eq: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _neq: z.ZodOptional<z.ZodUnion<[z.ZodNumber, z.ZodString]>>;
    _in: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodNumber]>, number | number[], unknown>, z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>, string | string[], unknown>]>>;
    _nin: z.ZodOptional<z.ZodUnion<[z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodNumber, "many">, z.ZodNumber]>, number | number[], unknown>, z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>, string | string[], unknown>]>>;
    _is_null: z.ZodOptional<z.ZodBoolean>;
}, "strip", z.ZodTypeAny, {
    _lt?: string | number | undefined;
    _gt?: string | number | undefined;
    _lte?: string | number | undefined;
    _gte?: string | number | undefined;
    _is_null?: boolean | undefined;
    _eq?: string | number | undefined;
    _neq?: string | number | undefined;
    _in?: string | number | string[] | number[] | undefined;
    _nin?: string | number | string[] | number[] | undefined;
}, {
    _lt?: string | number | undefined;
    _gt?: string | number | undefined;
    _lte?: string | number | undefined;
    _gte?: string | number | undefined;
    _is_null?: boolean | undefined;
    _eq?: string | number | undefined;
    _neq?: string | number | undefined;
    _in?: unknown;
    _nin?: unknown;
}>;
export declare const comparisonFilter: (filter: z.infer<typeof comparisonFilterType> | undefined | null, field: Fragment, type?: string) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
/**
 * Use this for string comparisons with LIKE, ILIKE, etc.
*/
export declare const stringFilterType: z.ZodUnion<[z.ZodString, z.ZodObject<{
    _gt: z.ZodOptional<z.ZodString>;
    _lt: z.ZodOptional<z.ZodString>;
    _eq: z.ZodOptional<z.ZodString>;
    _neq: z.ZodOptional<z.ZodString>;
    _in: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>, string | string[], unknown>>;
    _nin: z.ZodOptional<z.ZodEffects<z.ZodUnion<[z.ZodArray<z.ZodString, "many">, z.ZodString]>, string | string[], unknown>>;
    _is_null: z.ZodOptional<z.ZodBoolean>;
    _ilike: z.ZodOptional<z.ZodString>;
    _like: z.ZodOptional<z.ZodString>;
    _nlike: z.ZodOptional<z.ZodString>;
    _nilike: z.ZodOptional<z.ZodString>;
    _regex: z.ZodOptional<z.ZodString>;
    _iregex: z.ZodOptional<z.ZodString>;
    _nregex: z.ZodOptional<z.ZodString>;
    _niregex: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
    _lt?: string | undefined;
    _gt?: string | undefined;
    _is_null?: boolean | undefined;
    _eq?: string | undefined;
    _neq?: string | undefined;
    _in?: string | string[] | undefined;
    _nin?: string | string[] | undefined;
    _ilike?: string | undefined;
    _like?: string | undefined;
    _nlike?: string | undefined;
    _nilike?: string | undefined;
    _regex?: string | undefined;
    _iregex?: string | undefined;
    _nregex?: string | undefined;
    _niregex?: string | undefined;
}, {
    _lt?: string | undefined;
    _gt?: string | undefined;
    _is_null?: boolean | undefined;
    _eq?: string | undefined;
    _neq?: string | undefined;
    _in?: unknown;
    _nin?: unknown;
    _ilike?: string | undefined;
    _like?: string | undefined;
    _nlike?: string | undefined;
    _nilike?: string | undefined;
    _regex?: string | undefined;
    _iregex?: string | undefined;
    _nregex?: string | undefined;
    _niregex?: string | undefined;
}>]>;
export declare const stringFilter: (filter: z.infer<typeof stringFilterType> | undefined | null, field: Fragment) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export declare const jsonbFilter: (field: string, value: any, parentPath?: string[]) => Fragment | null;
export declare const jsonbContainsFilter: (filter: Record<string, SerializableValue> | undefined | null, field: Fragment) => Readonly<{
    type: "SLONIK_TOKEN_FRAGMENT";
    sql: string;
    values: import("slonik").PrimitiveValueExpression[];
}> | null;
export {};
