import * as z from "zod/v3";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
/**
 * Filter type. One of [contextAttribute, eventProperty, group]
 */
export declare const FilterType: {
    readonly Group: "group";
    readonly ContextAttribute: "contextAttribute";
    readonly EventProperty: "eventProperty";
};
/**
 * Filter type. One of [contextAttribute, eventProperty, group]
 */
export type FilterType = ClosedEnum<typeof FilterType>;
export type Filter = {
    /**
     * Filter type. One of [contextAttribute, eventProperty, group]
     */
    type: FilterType;
    /**
     * If not a group node, the context attribute name or event property name to filter on
     */
    attribute?: string | undefined;
    op: string;
    /**
     * The context attribute / event property values or group member nodes
     */
    values: Array<any>;
    /**
     * For context attribute filters, the context kind.
     */
    contextKind?: string | undefined;
    /**
     * If set, then take the inverse of the operator. 'in' becomes 'not in'.
     */
    negate: boolean;
};
/** @internal */
export declare const FilterType$inboundSchema: z.ZodNativeEnum<typeof FilterType>;
/** @internal */
export declare const FilterType$outboundSchema: z.ZodNativeEnum<typeof FilterType>;
/** @internal */
export declare const Filter$inboundSchema: z.ZodType<Filter, z.ZodTypeDef, unknown>;
/** @internal */
export type Filter$Outbound = {
    type: string;
    attribute?: string | undefined;
    op: string;
    values: Array<any>;
    contextKind?: string | undefined;
    negate: boolean;
};
/** @internal */
export declare const Filter$outboundSchema: z.ZodType<Filter$Outbound, z.ZodTypeDef, Filter>;
export declare function filterToJSON(filter: Filter): string;
export declare function filterFromJSON(jsonString: string): SafeParseResult<Filter, SDKValidationError>;
//# sourceMappingURL=filter.d.ts.map