/**
 * Recursively removes properties with undefined values and empty objects from an object.
 *
 * @param obj - The object to process
 * @returns A new object with undefined properties and empty objects removed
 *
 * @example
 * ```typescript
 * const input = {
 *   a: 1,
 *   b: undefined,
 *   c: { d: 2, e: undefined },
 *   f: [1, undefined, 3],
 *   g: {}
 * };
 *
 * const result = omitUndefinedAndEmpty(input);
 * // Result: { a: 1, c: { d: 2 }, f: [1, 3] }
 * ```
 */
export declare function omitUndefinedAndEmpty<T>(obj: T): T;
