import type { EntityMetadata, PopulateHintOptions, PopulateOptions } from '../typings.js';
import { LoadStrategy, ReferenceKind } from '../enums.js';
/**
 * @internal
 */
export declare function expandDotPaths<Entity>(
  meta: EntityMetadata<Entity>,
  populate?: readonly (string | PopulateOptions<Entity>)[],
  normalized?: boolean,
): PopulateOptions<Entity>[];
/**
 * Returns the loading strategy based on the provided hint.
 * If `BALANCED` strategy is used, it will return JOINED if the property is a to-one relation.
 * @internal
 */
export declare function getLoadingStrategy(
  strategy: LoadStrategy | `${LoadStrategy}`,
  kind: ReferenceKind,
): LoadStrategy.SELECT_IN | LoadStrategy.JOINED;
/**
 * Applies per-relation overrides from `populateHints` to the normalized populate tree.
 * @internal
 */
export declare function applyPopulateHints<Entity>(
  populate: PopulateOptions<Entity>[],
  hints: Record<string, PopulateHintOptions>,
): void;
