export type Key<T> = T extends any[] ? number : keyof T;
type Value<T, K extends Key<T>> = T extends any[] ? T[number] : K extends keyof T ? T[K] : never;
export declare class Path<T, K extends Key<T> = Key<T>> {
    path: string[];
    constructor(key: K, path?: string[]);
    concat<NK extends Key<Value<T, K>>>(key: NK): Path<Value<T, K>, Key<Value<T, K>>>;
    getValueFromPath(object: any): any;
    toString(): string;
}
export {};
