declare type Obj = {
    [key: string]: any;
};
declare type GetIn = <T extends Obj>(obj: T, name: string, def?: any) => any;
declare type SetIn = <T extends Obj>(obj: T, name: string, val: any) => T;
/**
 * Deeply get a value from an object via its path.
 *
 * @param {object} obj The object to query.
 * @param {string} name The path of the property to get.
 * @param {*} def The value returned for `undefined` resolved values.
 * @returns {*} Returns the resolved value.
 *
 * @example
 * const name = getIn(state, 'user[name]', 'Anonymous');
 *
 */
declare const getIn: GetIn;
/**
 * Deeply set a value from in object via it's path.
 * Does not mutate an original object.
 *
 * @param {object} obj The object to query.
 * @param {string} name The path of the property to set.
 * @param {*} val The value to set.
 * @returns {object} Returns a new object.
 *
 * @example
 * const nextState = setIn(state, 'user[name]', 'John');
 */
declare const setIn: SetIn;
export { getIn, setIn };
