import { NamespacedRow } from '../../types.js';
export declare const CALLBACK_INPUT: unique symbol;
export declare const CALLBACK_SELECTED: unique symbol;
export declare const INCLUDES_PUBLIC_KEY: unique symbol;
export declare const INCLUDES_ROUTING: unique symbol;
export type RouteMetadata = {
    correlationKey: unknown;
    parentContext: unknown;
};
export type RoutedScalarMetadata = {
    value: unknown;
    correlationKey: unknown;
    parentContext: unknown;
    publicKey: unknown;
};
export declare function attachRouteMetadata<T extends object>(value: T, correlationKey: unknown, parentContext: unknown): T;
export declare function getRouteMetadata(value: unknown): RouteMetadata | undefined;
export declare function getNamespacedRouteMetadata(row: unknown, source: string): RouteMetadata | undefined;
export declare function stripRouteMetadata<T extends object>(value: T): T;
export declare function attachRouteMetadataToResult(value: unknown, correlationKey: unknown, parentContext: unknown, publicKey: unknown): unknown;
export declare function getRoutedScalarMetadata(value: unknown): RoutedScalarMetadata | undefined;
/** Give FROM and JOIN rows the same route and callback namespace. */
export declare function wrapInputRow(alias: string, row: unknown, callbackValue?: unknown): NamespacedRow;
/** A namespace keeps authored values beside its callback source overrides.
 * A one-element tuple denotes a flat union view: absent fields must disappear,
 * whereas named overrides replace only their own source aliases.
 */
export declare function getCallbackInput<T extends object>(row: T): T;
/** Copy public containers while removing private route state at every depth. */
export declare function stripInternalRouteMetadata(value: unknown): unknown;
/** Remove every compiler-owned key before invoking user code. */
export declare function stripInternalCallbackMetadata(value: unknown): unknown;
/** Copy only paths changed by a leaf transform or an omitted private key. */
export declare function transformPublicContainers(value: unknown, transformLeaf: (value: unknown) => unknown, omittedKeys: ReadonlySet<PropertyKey>): unknown;
export declare function isPublicContainer(value: unknown): value is object;
