/** * Type helper to extract nested property type */ type PropType = K extends keyof T ? T[K] : K extends `${number}` ? T extends readonly (infer U)[] ? U : any : any; /** * The stateRef relies on data immutability to determine changes. * The lens pattern is used as a core part of the stateRef because, * it makes it easy to locate and safely change data. */ export declare function lens(sceneList?: (string | number | symbol)[]): Lens; export declare class Lens { private sceneList; constructor(sceneList: (string | number | symbol)[]); chain(prop: K): Lens>; chain(prop: K): Lens>; get(targetObject: Root): Focus; set(value: Focus): (targetObject: Root) => Root; private copyOnWrite; private shallowCopy; } export {};