import type { Classnames, Controls, FullField, QueryBuilderContextProps, RuleGroupTypeAny, Translations, TranslationsFull } from "../types/index.mjs";
export type UseMergedContextParams<
	F extends FullField = FullField,
	O extends string = string,
	Finalize extends boolean | undefined = undefined
> = QueryBuilderContextProps<F, O> & {
	initialQuery?: RuleGroupTypeAny
	qbId?: string
	/**
	* When true, props and context are merged with defaults to ensure all properties
	* are defined. Action elements and value selectors are merged with their respective
	* bulk override components. Only needs to be true when run from `QueryBuilder`.
	*/
	finalize?: Finalize
};
export type UseMergedContextReturn<
	F extends FullField = FullField,
	O extends string = string,
	Finalize extends boolean | undefined = undefined
> = QueryBuilderContextProps<F, O> & {
	initialQuery?: RuleGroupTypeAny
	qbId?: string
} & {
	controlElements: Finalize extends true ? Controls<F, O> : Partial<Controls<F, O>>
	controlClassnames: Classnames
	translations: Finalize extends true ? TranslationsFull : Partial<Translations>
} & Required<Pick<QueryBuilderContextProps<F, O>, "debugMode" | "enableDragAndDrop" | "enableMountQueryChange">>;
/**
* Merges inherited context values with props, giving precedence to props.
*
* @group Hooks
*/
export declare const useMergedContext: <
	F extends FullField = FullField,
	O extends string = string,
	Finalize extends boolean | undefined = undefined
>({ finalize,...props }: UseMergedContextParams<F, O, Finalize>) => UseMergedContextReturn<F, O, Finalize>;
