import type { ObjectTypeDefinition, WhereClause } from "@osdk/api";
import type { FilterListProps } from "../FilterListApi.js";
import type { FilterState } from "../FilterListItemApi.js";
import type { LinkedFilter } from "../types/LinkedFilterTypes.js";
export interface UseFilterListStateResult<Q extends ObjectTypeDefinition> {
	filterStates: Map<string, FilterState>;
	setFilterState: (filterKey: string, state: FilterState) => void;
	clearFilterState: (filterKey: string) => void;
	/** Direct (non-link-traversing) filters combined into a `WhereClause<Q>`. */
	whereClause: WhereClause<Q>;
	/** Active linked-property records; apply via `narrowObjectSet`. */
	linkedFilters: ReadonlyArray<LinkedFilter<Q>>;
	/** Per-filter excluding-self where clauses keyed by `getFilterKey`. */
	perFilterWhereClauses: Map<string, WhereClause<Q>>;
	/** Per-filter excluding-self linked filters keyed by `getFilterKey`. */
	perFilterLinkedFilters: Map<string, ReadonlyArray<LinkedFilter<Q>>>;
	activeFilterCount: number;
	hasChangesFromInitial: boolean;
	reset: () => void;
}
export declare function useFilterListState<Q extends ObjectTypeDefinition>(props: FilterListProps<Q>): UseFilterListStateResult<Q>;
