/**
 * 获取成员值
 * @param target - 目标对象
 * @param propPath - 属性路径
 * @returns 成员值
 */
export declare function getMember(target: any, propPath: PropertyKey[]): any;
/**
 * 设置成员值
 * @remarks
 * 对于数字类型的路径，会使用数组作该属性所属的对象
 * @param target - 目标对象
 * @param propPath - 属性路径
 * @param value
 */
export declare function setMember(target: any, propPath: PropertyKey[], value: any): void;
/**
 * 获得默认值
 */
export type GetDefaultValue = () => any;
/**
 * 获取成员值
 * @param target
 * @param propPath
 * @param defaultValue
 * @returns
 */
export declare function getMemberWithDefault(target: any, propPath: PropertyKey[], defaultValue?: GetDefaultValue | any): any;
/**
 * 获取成员值
 * @param target
 * @param propPath
 * @param defaultValue
 * @returns 如果 defaultValue 返回的是 Promise ，则该函数也返回 Promise，其它
 */
export declare function getMemberWithAsyncDefault(target: any, propPath: PropertyKey[], defaultValue?: GetDefaultValue | any): any;
/**
 * 删除成员
 * @param target - 目标对象
 * @param propPath - 属性路径
 * @returns 是否执行了删除操作
 */
export declare function deleteMember(target: any, propPath: PropertyKey[]): boolean;
/**
 * 移除根级 undefined 属性
 * @param obj
 * @returns
 */
export declare function removeUndefined(obj: any): any;
/**
 * 移除根级 undefined 和 null 属性
 * @param obj
 * @returns
 */
export declare function removeNull(obj: any): any;
/**
 * 移除根级的属性值
 * @param obj
 * @returns
 */
export declare function removePropertyValues(obj: any, values: any[]): any;
/**
 * 移除根级的属性值
 * @param obj
 * @param filter 过滤函数，返回 真值 则移除该属性
 * @returns
 */
export declare function removePropertyValue(obj: any, filter: (value: any, key: PropertyKey) => any): any;
/**
 * 移除根级的空值属性
 * @param obj
 * @param isEmpty 用于判断是否为空值的函数，默认值为 type-tls 包中的 isEmptyValue
 * @returns
 */
export declare function removeEmpty(obj: any, isEmpty?: (value: any) => any): any;
/**
 * 提取根级成员
 * @param obj
 * @param keys
 * @returns 返回一个只包含指定key的新对象
 */
export declare function pickMembers<Obj, Key extends keyof Obj>(obj: Obj, keys: Iterable<Key>): Pick<Obj, Key>;
/**
 * 剔除根级成员，删除根级成员
 * @remarks
 * 会改变原对象
 * @param obj
 * @param keys
 * @returns 返回原来的对象，但删除了指定的成员
 */
export declare function omitMembers<Obj, Key extends PropertyKey>(obj: Obj, keys: Iterable<Key>): Omit<Obj, Key>;
/**
 * 通过属性路径提取成员
 * @param obj
 * @param propPaths
 * @returns 返回一个只包含指定key的新对象
 */
export declare function pickMembersByPath(obj: any, propPaths: Iterable<PropertyKey[]>): any;
/**
 * 通过属性路径剔除成员，删除成员
 * @remarks
 * 会改变原对象
 * @param obj
 * @param propPaths
 * @returns 返回原来的对象，但删除了指定的成员
 */
export declare function omitMembersByPath(obj: any, propPaths: Iterable<PropertyKey[]>): any;
/**
 *  将路径数组转成路径字符串
 * @remarks
 * 会自动将数组尾部的空值给移除，中间的空值转为占位符 placeholder
 * @param path 路径数组
 * @param separator 分隔符，默认是 "/"
 * @param placeholder 占位符，默认是 "-"
 * @returns
 */
export declare function pathString(path: (string | number | null | undefined)[], separator?: string | null, placeholder?: string | null): string;
/**
 * 获取路径的第 index + 1 个部件
 * @param path - 路径字符串
 * @param index - 部件的索引
 * @param separator - 路径的分隔符
 * @returns
 */
export declare function getPathPart(path: string, index: number, separator?: string): string;
/**
 * 替换路径部件
 * @param path - 路径
 * @param index - 被替换的部件的索引
 * @param replace - 替换的内容
 * @param separator - 路径的分隔符
 * @returns
 */
export declare function replacePathPart(path: string, index: number, replace: string, separator?: string): string;
/**
 * 获取所有路径的第 index + 1 个的有效部件，会过滤掉为空的部件
 * @param paths - 路径字符串数组
 * @param index - 部件的索引
 * @param separator - 路径的分隔符
 * @returns
 */
export declare function getValidPathParts(paths: Iterable<string>, index: number, separator?: string): string[];
/**
 * 判断 path 是否是 parentPath 的子路径（或与 parentPath 相同）
 * @param path - 待判断的路径
 * @param parentPath - 父路径
 * @param separator - 路径分隔符，默认 "/"
 * @returns
 */
export declare function isSubPath(path: string, parentPath: string, separator?: string): boolean;
/**
 * 判断两个路径是否存在祖先/子孙关系（互为父子，任意方向）
 * @param pathA - 路径A
 * @param pathB - 路径B
 * @param separator - 路径分隔符，默认 "/"
 * @returns
 */
export declare function isRelatedPath(pathA: string, pathB: string, separator?: string): boolean;
//# sourceMappingURL=prop-path.d.ts.map