import { DateTime } from 'luxon'; import { DockerHubAPIRepo, DockerHubRepo, DockerManifestList, Tag } from '../types/DockerHubRepo'; /** * The OCI distribution spec requires a unique token for each repo manifest queried. */ export declare const fetchDockerHubToken: (repo: DockerHubRepo) => Promise; /** * Pure function that massages the Docker Hub API response into the * format we want to return. e.g., only extracting certain fields; * converting snake_case to camelCase, etc. */ export declare const extractRepositoryDetails: (repos: DockerHubAPIRepo[], lastUpdatedSince?: DateTime | undefined) => DockerHubRepo[]; /** * Query a single repository given a repo name and username. * * @param user The DockerHub username or org name to query for. * @param name The DockerHub repo name -- restrict to this single repo. */ export declare const queryRepo: ({ name, user, }: { name: string; user: string; }) => Promise; /** * Top-level function for querying repositories. * * @TODO Rename to just `queryRepos`. * * @param user The DockerHub username or org name to query for. * @param numRepos The number of repos to query (max 100). * @param lastUpdatedSince Filter by the DateTime at which a repo was last updated. */ export declare const queryTopRepos: ({ lastUpdatedSince, numRepos, user, }: { lastUpdatedSince?: DateTime | undefined; numRepos?: number | undefined; user: string; }) => Promise; /** * Query image tags. */ export declare const queryTags: (repo: DockerHubRepo) => Promise; /** * Queries the Docker Hub API to retrieve a "fat manifest", an object of * `Content-Type` `application/vnd.docker.distribution.manifest.list.v2+json/`. * Read up on the Manifest v2, Schema 2 Spec in more detail: * @see https://github.com/docker/distribution/blob/master/docs/spec/manifest-v2-2.md * Or the shiny new OCI distribution spec which builds on it: * @see https://github.com/opencontainers/distribution-spec/blob/f67bc11ba3a083a9c62f8fa53ad14c5bcf2116af/spec.md */ export declare const fetchManifestList: (repo: DockerHubRepo) => Promise;