import type { AnyObject } from '@augment-vir/core';
import { SelectFrom, SelectionSet } from './selection-set.js';
/**
 * Determine if the given input should be preserved in the selection output, meaning it won't be
 * recursed into.
 *
 * @ignore
 */
export declare function shouldPreserveInSelectionSet(input: unknown): boolean;
/**
 * Performs a SQL-like nested selection on an object, extracting the selected values.
 *
 * @category Selection
 * @category Package : @augment-vir/common
 * @example
 *
 * ```ts
 * import {selectFrom} from '@augment-vir/common';
 *
 * selectFrom(
 *     [
 *         {
 *             child: {
 *                 grandChild: 'hi',
 *                 grandChild2: 3,
 *                 grandChild3: /something/,
 *             },
 *         },
 *         {
 *             child: {
 *                 grandChild: 'hi',
 *                 grandChild2: 4,
 *                 grandChild3: /something/,
 *             },
 *         },
 *     ],
 *     {
 *         child: {
 *             grandChild2: true,
 *         },
 *     },
 * );
 * // output is `[{child: {grandChild2: 3}}, {child: {grandChild2: 4}}]`
 * ```
 *
 * @package [`@augment-vir/common`](https://www.npmjs.com/package/@augment-vir/common)
 */
export declare function selectFrom<Full extends AnyObject, const Selection extends SelectionSet<NoInfer<Full>>>(originalObject: Readonly<Full>, selectionSet: Readonly<Selection>): SelectFrom<Full, Selection>;
