/* eslint-disable */ declare namespace unchanged { export type PathItem = number | string; export type ParsedPath = PathItem[]; export type Path = PathItem | ParsedPath; export interface Unchangeable { [key: string]: any; [index: number]: any; } export type Fn = (...args: any[]) => any; export type WithHandler = (value: any, ...extraArgs: any[]) => any; export type Add = (path: Path, value: any, object: Unchangeable) => Unchangeable; export type AddWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Assign = ( path: Path, objectToAssign: Unchangeable, object: Unchangeable, ) => Unchangeable; export type AssignWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Call = ( path: Path, parameters: any[], object: Unchangeable | Fn, context?: any, ) => any; export type CallWith = ( fn: WithHandler, path: Path, parameters: any[], object: Unchangeable | Fn, context?: any, ...extraArgs: any[] ) => any; export type Get = (path: Path, object: Unchangeable) => any; export type GetOr = (fallbackValue: any, path: Path, object: Unchangeable) => any; export type GetWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => any; export type GetWithOr = ( fn: WithHandler, fallbackValue: any, path: Path, object: Unchangeable, ...extraArgs: any[] ) => any; export type Has = (path: Path, object: Unchangeable) => boolean; export type HasWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Is = (path: Path, value: any, object: Unchangeable) => boolean; export type IsWith = ( fn: WithHandler, path: Path, value: any, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Merge = ( path: Path, objectToMerge: Unchangeable, object: Unchangeable, ) => Unchangeable; export type MergeWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Not = (path: Path, value: any, object: Unchangeable) => boolean; export type NotWith = ( fn: WithHandler, path: Path, value: any, object: Unchangeable, ...extraArgs: any[] ) => boolean; export type Remove = (path: Path, object: Unchangeable) => Unchangeable; export type RemoveWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; export type Set = (path: Path, value: any, object: Unchangeable) => Unchangeable; export type SetWith = ( fn: WithHandler, path: Path, object: Unchangeable, ...extraArgs: any[] ) => Unchangeable; } declare module 'unchanged' { type Curried = import('curriable').Curried; export const add: Curried; export const addWith: Curried; export const assign: Curried; export const assignWith: Curried; export const call: Curried; export const callWith: Curried; export const get: Curried; export const getOr: Curried; export const getWith: Curried; export const getWithOr: Curried; export const has: Curried; export const hasWith: Curried; export const is: Curried; export const isWith: Curried; export const merge: Curried; export const mergeWith: Curried; export const not: Curried; export const notWith: Curried; export const remove: Curried; export const removeWith: Curried; export const set: Curried; export const setWith: Curried; }