import type { LinkedType, LinkNames, ObjectTypeDefinition, WhereClause } from "@osdk/api";
import type { FilterDefinitionUnion } from "../FilterListApi.js";
import type { FilterState } from "../FilterListItemApi.js";
import type { LinkedFilter, LinkedPropertyFilterDefinition, LinkedPropertyFilterState } from "../types/LinkedFilterTypes.js";
/**
* Builds a WHERE clause fragment for a single property key from filter state.
*/
export declare function buildPropertyKeyClause(key: string | number | symbol, state: FilterState, propertyType?: string): Record<string, unknown> | undefined;
export interface PropertyTypeInfo {
	type: string;
	multiplicity: boolean;
}
/**
* Builds a `WhereClause<Q>` from direct (non-link-traversing) filter
* definitions and current states. LINKED_PROPERTY filters are excluded —
* use `getActiveLinkedFilters` for those and apply via `narrowObjectSet`.
*/
export declare function buildWhereClause<Q extends ObjectTypeDefinition>(definitions: Array<FilterDefinitionUnion<Q>> | undefined, filterStates: Map<string, FilterState>, propertyTypes?: Map<string, PropertyTypeInfo>, excludeFilterKey?: string): WhereClause<Q>;
/**
* Builds the inner `WhereClause` for a linked-property filter, typed against
* the linked object type. Returns `undefined` when the state doesn't yield a
* predicate (e.g. empty selection).
*/
export declare function buildLinkedInnerWhere<
	Q extends ObjectTypeDefinition,
	L extends LinkNames<Q>
>(definition: LinkedPropertyFilterDefinition<Q, L>, state: LinkedPropertyFilterState): WhereClause<LinkedType<Q, L>> | undefined;
/**
* Returns the active LINKED_PROPERTY filters as `LinkedFilter<Q>` records.
*/
export declare function getActiveLinkedFilters<Q extends ObjectTypeDefinition>(definitions: Array<FilterDefinitionUnion<Q>> | undefined, filterStates: Map<string, FilterState>, excludeFilterKey?: string): Array<LinkedFilter<Q>>;
