//#region src/index.d.ts
interface GraphValue {
  dir: string;
  name: string;
  version: string;
  license: string;
  exports: Record<string, string>;
  scripts: Record<string, string>;
  dependencies: Record<string, string>;
}
type Graph = Record<string, GraphValue>;
/**
 * Filters workspace packages based on provided glob patterns and search patterns.
 *
 * @example
 * import { filter } from 'workspaces-filter';
 *
 * // Filter workspaces matching 'pkg-*' pattern
 * const graph = await filter(['packages/*'], 'pkg-*');
 *
 * // Filter multiple patterns
 * const graph = await filter(['packages/*'], ['pkg-1', 'pkg-2']);
 *
 * // Filter with package dirs
 * const graph = await filter(['packages/*'], ['packages/foo']);
 *
 * // Filter with custom working directory
 * const graph = await filter(['packages/*'], '*', '/path/to/project');
 *
 *
 * @param {string|string[]} wsGlobs - Array of workspace glob patterns to search for package.json files.
 * @param {string|string[]} pattern - String or array of strings to filter workspaces by name or directory.
 * @param {string} [cwd] - Optional current working directory (defaults to `process.cwd()`).
 *
 * @throws {Error} When no workspace globs are provided.
 * @throws {Error} When no pattern is provided.
 *
 * @returns {Promise<Graph>} Resolving to a Graph object containing filtered workspace metadata.
 * @public
 */
declare function filter(wsGlobs: string[], pattern: string | string[], cwd?: string): Promise<Graph>;
interface RunCommandOnOptions {
  cwd: string;
  isShell: boolean;
  packageManager: string;
  onTestCallback: (_err: any, _ok: any) => void | Promise<void>;
}
/**
 * Executes a shell command or a package script in the context of each package in the graph.
 *
 * @example
 * import { filter, runCommandOn } from 'workspaces-filter';
 *
 * const graph = await filter(['packages/*'], ['@scope/*']);
 * console.log(graph);
 *
 * type RunCommandOnOptions = {
 *   cwd?: string;
 *   isShell?: boolean;
 *   packageManager?: string;
 *   onTestCallback?: (_err: any, _ok: any) => void | Promise<void>;
 * };
 *
 * // Run a shell command in each package
 * await runCommandOn(['echo', 'Hello, World!'], graph, { isShell: true } as RunCommandOnOptions);
 *
 * // Run a package script in each package
 * await runCommandOn(['build'], graph);
 *
 * @param {string[]} args - Arguments to pass to the command.
 * @param {Graph} graph - Graph object containing package metadata.
 * @param {RunCommandOnOptions} options - Optional configuration for running the command.
 * @returns {Promise<Graph>} Resolving to the input graph object.
 * @public
 */
declare function runCommandOn(args: string[], graph: Graph, options?: Partial<RunCommandOnOptions>): Promise<Graph>;
//#endregion
export { Graph, GraphValue, RunCommandOnOptions, filter, runCommandOn };