import { CommerceEngine } from '../../../../app/commerce-engine/commerce-engine.js';
import { stateKey } from '../../../../app/state-key.js';
import { Parameters } from '../../../../features/commerce/parameters/parameters-actions.js';
import { Serializer } from '../../../../features/commerce/parameters/parameters-serializer.js';
import { UrlManager, UrlManagerInitialState, type UrlManagerProps as BaseUrlManagerProps, UrlManagerState } from '../../../url-manager/headless-url-manager.js';
import { ParameterManager, ParameterManagerProps } from '../parameter-manager/headless-core-parameter-manager.js';
export type { UrlManager, UrlManagerInitialState, UrlManagerState, BaseUrlManagerProps, };
export interface UrlManagerProps extends BaseUrlManagerProps {
    /**
     * Whether the controller's state should exclude the default parameters returned by the Commerce API, and only include
     * the parameters that were set explicitly set through dispatched actions.
     *
     * Defaults to `false`.
     */
    excludeDefaultParameters?: boolean;
}
interface CoreUrlManagerProps<T extends Parameters> extends UrlManagerProps {
    requestIdSelector: (state: CommerceEngine[typeof stateKey]) => string;
    parameterManagerBuilder: (engine: CommerceEngine, props: ParameterManagerProps<T>) => ParameterManager<T>;
    serializer: Serializer<T>;
}
/**
 * @internal
 * Creates a `UrlManager` sub-controller instance.
 *
 * @param engine - The headless commerce engine.
 * @param props - The configurable `UrlManager` properties.
 * @returns A `UrlManager` sub-controller instance.
 */
export declare function buildCoreUrlManager<T extends Parameters>(engine: CommerceEngine, props: CoreUrlManagerProps<T>): UrlManager;
