//#region src/types.d.ts
interface NPMPackage {
  name: string;
  description?: string;
  version: string;
  bin?: Record<string, string>;
  dependencies?: Record<string, string>;
  scripts?: Record<string, string>;
  keywords?: string[];
  links?: {
    npm?: string;
    repository?: string;
    homepage?: string;
  };
  original?: PackageInfo;
}
interface SearchResponse {
  objects: Array<{
    package: {
      name: string;
      scope: string;
      version: string;
      description: string;
      keywords: string[];
      date: string;
    };
  }>;
  total: number;
  time: string;
}
interface PackageInfo {
  name: string;
  "dist-tags": {
    latest: string;
    [tag: string]: string;
  };
  versions: {
    [version: string]: LatestVersionInfo;
  };
  time?: {
    created: string;
    modified: string;
    [version: string]: string;
  };
  readme?: string;
  _id?: string;
  _rev?: string;
}
interface LatestVersionInfo {
  name: string;
  version: string;
  description?: string;
  bin?: Record<string, string>;
  scripts?: Record<string, string>;
  dependencies?: Record<string, string>;
  devDependencies?: Record<string, string>;
  keywords?: string[];
  repository?: {
    type: string;
    url: string;
  };
  homepage?: string;
  author?: {
    name?: string;
    email?: string;
    url?: string;
  };
  license?: string;
  dist: {
    shasum: string;
    tarball: string;
    integrity?: string;
    fileCount?: number;
    unpackedSize?: number;
    "npm-signature"?: string;
  };
  _id?: string;
  _npmVersion?: string;
  _npmUser?: {
    name: string;
    email: string;
  };
  maintainers?: Array<{
    name?: string;
    email?: string;
    url?: string;
  }>;
}
type Logger = {
  error: (...args: unknown[]) => void;
};
interface NpxFinderOptions {
  timeout?: number;
  retries?: number;
  retryDelay?: number;
  concurrency?: number;
  maxPages?: number;
  includeOriginal?: boolean;
  logger?: Logger;
}
//#endregion
//#region src/index.d.ts
declare function npxFinder(scope: string, options?: NpxFinderOptions): Promise<NPMPackage[]>;
//#endregion
export { type LatestVersionInfo, type Logger, type NPMPackage, type NpxFinderOptions, type PackageInfo, type SearchResponse, npxFinder };