import type { Path, PathLike } from '../types'; import { ModelData } from './collections'; declare module './Model' { interface Model { /** * Returns a ChildModel scoped to the root path. */ at(): ChildModel; /** * Returns a ChildModel scoped to a relative subpath under this model's path. * * @typeParam S - type of data at subpath * @param subpath */ at(subpath: PathLike): ChildModel; /** * Check if subpath is a PathLike * * @param subpath * @returns boolean */ isPath(subpath: PathLike): boolean; leaf(path: string): string; /** * Get the parent {levels} up from current model or root model * @param levels - number of levels to traverse the tree * @returns parent or root model */ parent(levels?: number): Model; /** * Get full path to given subpath * * @param subpath - PathLike subpath */ path(subpath?: PathLike): string; /** * Returns a ChildModel scoped to the root path. * * @returns ChildModel */ scope(): ChildModel; /** * Returns a ChildModel scoped to an absolute path. * * @typeParam S - Type of data at subpath * @param subpath - Path of GhildModel to scope to * @returns ChildModel */ scope(subpath: Path): ChildModel; /** @private */ _splitPath(subpath: PathLike): string[]; } }