export declare type Many<T> = T | ReadonlyArray<T>;
/**
 * Empty function
 */
export declare const noop: any;
/**
 * Proxy to a getter/setter
 * @param target target
 * @param key key
 * @param get get
 * @param set set
 */
export declare function proxy(target: any, key: string, { get, set }?: {
    get?: Function;
    set?: Function;
}): void;
/**
 * Alias to Object.defineProperty
 */
export declare function def(obj: Record<string, any>, key: string, val: any, { enumerable, writable, configurable, }?: {
    enumerable?: boolean;
    writable?: boolean;
    configurable?: boolean;
}): void;
export declare function hasOwn(obj: Record<PropertyKey, any> | any[], key: PropertyKey): boolean;
/**
 * omit keys from object
 */
export declare function omit<T extends object, K extends keyof T>(obj: T, keys: Array<K>): Pick<T, Exclude<keyof T, K>>;
export declare function omit<T extends object, K extends keyof T>(obj: T, ...keys: Array<K>): Pick<T, Exclude<keyof T, K>>;
/**
 * pick keys from object
 */
export declare function pick<T extends object, K extends keyof T>(obj: T, keys: Array<K>): Pick<T, K>;
export declare function pick<T extends object, K extends keyof T>(obj: T, ...keys: Array<K>): Pick<T, K>;
