export declare type PathWrapper = { [P in keyof T]: PathWrapper; }; export interface IPath { [0]: keyof T; [1]?: keyof T[IPath[0]]; } export declare type Path = IPath; export declare type KeysOf = keyof T[K]; export declare function path(p: Path): void; export interface IShip { pilot: {}; } export interface IState { ships: { serenity: IShip; }; }