import { Dict } from '../types/Dict';
export declare function forEachObjVK<A>(obj: Dict<A>, callback: (value: A, key: string) => void): void;
export declare function forEachObjKV<A>(obj: Dict<A>, callback: (key: string, value: A) => void): void;
export declare function mapObjVK<A, B>(obj: Dict<A>, callback: (value: A, key: string) => B): Dict<B>;
export declare function mapObjKV<A, B>(obj: Dict<A>, callback: (key: string, value: A) => B): Dict<B>;
export declare function mapObjKey<V>(obj: Dict<V>, callback: (value: V, key: string) => string): Dict<V>;
export declare function mapObjKeyVK<V>(obj: Dict<V>, callback: (value: V, key: string) => string): Dict<V>;
export declare function mapObjKeyKV<V>(obj: Dict<V>, callback: (key: string, value: V) => string): Dict<V>;
export declare function someObj<A>(obj: Dict<A>, callback: (value: A, key: string) => boolean): boolean;
export declare function findObj<A>(obj: Dict<A>, callback: (value: A, key: string) => boolean): A | undefined;
export declare function reduceObj<V, A>(obj: Dict<V>, callback: (acc: A, value: V, key: string) => A, acc: A): A;
export declare function findKeyObjIndexed<A>(obj: Dict<A>, callback: (value: A, key: string) => boolean): string | undefined;
export declare function filterObj<T>(obj: T, callback: <K extends keyof T>(value: T[K], key: K) => boolean): Partial<T>;
export declare function isEmptyObject(obj: object): boolean;
export declare function isNotEmptyObject(obj: object): boolean;
export declare function extractFromObj<A>(obj: Dict<A>, keys: string[]): Dict<A>;
export declare const getObjSingleKey: (obj: Dict<any>) => string;
export declare function clone<T>(a: T): T;
export declare function invertObj(obj: Dict<string>): Dict<string>;
export declare function clearObj(obj: Dict<any>): void;
export declare function _keyCount(obj: Dict<any>): number;
export declare function set<T>(obj: object, k: string, v: any): void;
export declare function get<T extends object, K extends keyof T>(obj: T, k: K): T[K];
export declare function deepSet(obj: object, path: string[], value: any): void;
export declare function deepDelete(obj: object, path: string[]): void;
export declare function deepDestroy(obj: object, path: string[]): void;
export declare function deepDeepMerge(obj: object, path: string[], value: any): void;
export declare function deepGetOrDefault(obj: object, path: string[], d: any): any;
export declare function ensureObj(obj: object, key: string | number): any;
export declare function ensure(obj: object, key: string | number, generate: () => any): any;
export declare function inplaceOmit(obj: object, key: string | number): any;
export declare function omit(obj: Dict<any>, key: string): Dict<any>;
export declare function addKey(obj: object, key: string, value: any): any;
export declare function pushKey(obj: object, key: string, value: any): any;
export declare function unshiftKey(obj: object, key: string, value: any): any;
export declare function incKey(obj: object, key: string): any;
export declare function decKey(obj: object, key: string): any;
export declare function deepIncFrom(obj: object, path: string[], from: number): any;
export declare function deepDecFrom(obj: object, path: string[], from: number): any;
export declare function incKeyFrom(obj: object, key: string, from: number): any;
export declare function decKeyFrom(obj: object, key: string, from: number): any;
export declare function makeTagObj<T>(keys: string[], value: T): Dict<T>;
export declare function entries<T>(obj: Dict<T>): [string, T][];
export declare function values<T>(obj: Dict<T>): T[];
export declare function fromEntries<T>(entries: [string, T][]): Dict<T>;
export declare function revertObj(obj: Dict<string>): Dict<string>;
export declare function hasKey(obj: Dict<any>, key: string): boolean;
