// Many thanks to @serkanyersen on GitHub for these definitions // Unfortunately, the related issues have been lost during a cleanup export interface DeepProxyHandler { getPrototypeOf? (this: TrapThisArgument, target: T): object | null; setPrototypeOf? (this: TrapThisArgument, target: T, v: any): boolean; isExtensible? (this: TrapThisArgument, target: T): boolean; preventExtensions? (this: TrapThisArgument, target: T): boolean; getOwnPropertyDescriptor? (this: TrapThisArgument, target: T, p: PropertyKey): PropertyDescriptor | undefined; has? (this: TrapThisArgument, target: T, p: PropertyKey): boolean; get? (this: TrapThisArgument, target: T, p: PropertyKey, receiver: any): any; set? (this: TrapThisArgument, target: T, p: PropertyKey, value: any, receiver: any): boolean; deleteProperty? (this: TrapThisArgument, target: T, p: PropertyKey): boolean; defineProperty? (this: TrapThisArgument, target: T, p: PropertyKey, attributes: PropertyDescriptor): boolean; enumerate? (this: TrapThisArgument, target: T): PropertyKey[]; ownKeys? (this: TrapThisArgument, target: T): PropertyKey[]; apply? (this: TrapThisArgument, target: T, thisArg: any, argArray?: any): any; construct? (this: TrapThisArgument, target: T, argArray: any, newTarget?: any): object; } export interface TrapThisArgument { nest(value?: any): object; path: string[]; rootTarget: T; } export interface DeepProxyOptions { path?: string[]; userData?: { [key: string]: any }; } export interface DeepProxyConstructor { //revocable(target: T, handler: DeepProxyHandler): { proxy: T; revoke: () => void; }; new (target: T, handler: DeepProxyHandler, options?: DeepProxyOptions): T; } export declare const DeepProxy: DeepProxyConstructor; export default DeepProxy;