import {Options as LocatePathOptions} from 'locate-path'; declare const stop: unique symbol; declare namespace findUp { interface Options extends LocatePathOptions {} type StopSymbol = typeof stop; type Match = string | StopSymbol | undefined; } declare const findUp: { /** Find a file or directory by walking up parent directories. @param name - Name of the file or directory to find. Can be multiple. @returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found. @example ``` // / // └── Users // └── sindresorhus // ├── unicorn.png // └── foo // └── bar // ├── baz // └── example.js // example.js import findUp = require('find-up'); (async () => { console.log(await findUp('unicorn.png')); //=> '/Users/sindresorhus/unicorn.png' console.log(await findUp(['rainbow.png', 'unicorn.png'])); //=> '/Users/sindresorhus/unicorn.png' })(); ``` */ (name: string | string[], options?: findUp.Options): Promise; /** Find a file or directory by walking up parent directories. @param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search. @returns The first path found or `undefined` if none could be found. @example ``` import path = require('path'); import findUp = require('find-up'); (async () => { console.log(await findUp(async directory => { const hasUnicorns = await findUp.exists(path.join(directory, 'unicorn.png')); return hasUnicorns && directory; }, {type: 'directory'})); //=> '/Users/sindresorhus' })(); ``` */ (matcher: (directory: string) => (findUp.Match | Promise), options?: findUp.Options): Promise; sync: { /** Synchronously find a file or directory by walking up parent directories. @param name - Name of the file or directory to find. Can be multiple. @returns The first path found (by respecting the order of `name`s) or `undefined` if none could be found. */ (name: string | string[], options?: findUp.Options): string | undefined; /** Synchronously find a file or directory by walking up parent directories. @param matcher - Called for each directory in the search. Return a path or `findUp.stop` to stop the search. @returns The first path found or `undefined` if none could be found. @example ``` import path = require('path'); import findUp = require('find-up'); console.log(findUp.sync(directory => { const hasUnicorns = findUp.sync.exists(path.join(directory, 'unicorn.png')); return hasUnicorns && directory; }, {type: 'directory'})); //=> '/Users/sindresorhus' ``` */ (matcher: (directory: string) => findUp.Match, options?: findUp.Options): string | undefined; /** Synchronously check if a path exists. @param path - Path to the file or directory. @returns Whether the path exists. @example ``` import findUp = require('find-up'); console.log(findUp.sync.exists('/Users/sindresorhus/unicorn.png')); //=> true ``` */ exists(path: string): boolean; } /** Check if a path exists. @param path - Path to a file or directory. @returns Whether the path exists. @example ``` import findUp = require('find-up'); (async () => { console.log(await findUp.exists('/Users/sindresorhus/unicorn.png')); //=> true })(); ``` */ exists(path: string): Promise; /** Return this in a `matcher` function to stop the search and force `findUp` to immediately return `undefined`. */ readonly stop: findUp.StopSymbol; }; export = findUp;