import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import { AddRepositoryPermissionRequest, AddRepositoryPermissionResponseBody } from "../models/addrepositorypermissionop.js";
import { ClearRepositoryPermissionsRequest } from "../models/clearrepositorypermissionsop.js";
import { CreateByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsRequest } from "../models/createbyteamslugbyprojectslugbyrepositorynameblobsuploadsop.js";
import { CreateRepositoryRequest, CreateRepositoryResponseBody } from "../models/createrepositoryop.js";
import { DeleteByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest } from "../models/deletebyteamslugbyprojectslugbyrepositorynameblobsbydigestop.js";
import { DeleteByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest } from "../models/deletebyteamslugbyprojectslugbyrepositorynameblobsuploadsbyuuidop.js";
import { DeleteByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest } from "../models/deletebyteamslugbyprojectslugbyrepositorynamemanifestsbyreferenceop.js";
import { DeleteRepositoryImageRequest } from "../models/deleterepositoryimageop.js";
import { DeleteRepositoryRequest } from "../models/deleterepositoryop.js";
import { GetByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest } from "../models/getbyteamslugbyprojectslugbyrepositorynameblobsbydigestop.js";
import { GetByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest } from "../models/getbyteamslugbyprojectslugbyrepositorynameblobsuploadsbyuuidop.js";
import { GetByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest } from "../models/getbyteamslugbyprojectslugbyrepositorynamemanifestsbyreferenceop.js";
import { GetByTeamSlugByProjectSlugByRepositoryNameTagsListRequest, GetByTeamSlugByProjectSlugByRepositoryNameTagsListResponseBody } from "../models/getbyteamslugbyprojectslugbyrepositorynametagslistop.js";
import { GetRepositoryImageRequest, GetRepositoryImageResponseBody } from "../models/getrepositoryimageop.js";
import { GetRepositoryRequest, GetRepositoryResponseBody } from "../models/getrepositoryop.js";
import { GetRepositoryTagRequest, GetRepositoryTagResponseBody } from "../models/getrepositorytagop.js";
import { GetRootResponseBody } from "../models/getrootop.js";
import { HeadByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest } from "../models/headbyteamslugbyprojectslugbyrepositorynameblobsbydigestop.js";
import { HeadByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest } from "../models/headbyteamslugbyprojectslugbyrepositorynamemanifestsbyreferenceop.js";
import { ListRepositoriesRequest } from "../models/listrepositoriesop.js";
import { ListRepositoryImagesRequest } from "../models/listrepositoryimagesop.js";
import { ListRepositoryPermissionsRequest } from "../models/listrepositorypermissionsop.js";
import { ListRepositoryTagsRequest, ListRepositoryTagsResponseBody } from "../models/listrepositorytagsop.js";
import { RemoveRepositoryPermissionRequest } from "../models/removerepositorypermissionop.js";
import { ReplaceByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest } from "../models/replacebyteamslugbyprojectslugbyrepositorynameblobsuploadsbyuuidop.js";
import { ReplaceByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest } from "../models/replacebyteamslugbyprojectslugbyrepositorynamemanifestsbyreferenceop.js";
import { UpdateByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest } from "../models/updatebyteamslugbyprojectslugbyrepositorynameblobsuploadsbyuuidop.js";
import { VcrImageList } from "../models/vcrimagelist.js";
import { VcrRepositoryList } from "../models/vcrrepositorylist.js";
import { VcrRepositoryPermissionList } from "../models/vcrrepositorypermissionlist.js";
export declare class Vcr extends ClientSDK {
    /**
     * Create a repository
     *
     * @remarks
     * Create a container registry repository for a project.
     */
    createRepository(request: CreateRepositoryRequest, options?: RequestOptions): Promise<CreateRepositoryResponseBody>;
    /**
     * List repositories
     *
     * @remarks
     * List container registry repositories for a project.
     */
    listRepositories(request: ListRepositoriesRequest, options?: RequestOptions): Promise<VcrRepositoryList>;
    /**
     * Get a repository
     *
     * @remarks
     * Fetch a container registry repository for a project by ID or name.
     */
    getRepository(request: GetRepositoryRequest, options?: RequestOptions): Promise<GetRepositoryResponseBody>;
    /**
     * Delete a repository
     *
     * @remarks
     * Schedule a repository for deletion. The repository is marked so it disappears from list/get immediately; subscriber-vcr reclaims every image (manifests, blobs, tags and rows) and finally deletes the repository row asynchronously via the VcrRepositoryRemoved event.
     */
    deleteRepository(request: DeleteRepositoryRequest, options?: RequestOptions): Promise<any>;
    /**
     * List repository images
     *
     * @remarks
     * List images for a container registry repository, including their tags.
     */
    listRepositoryImages(request: ListRepositoryImagesRequest, options?: RequestOptions): Promise<VcrImageList>;
    /**
     * Add a repository permission
     *
     * @remarks
     * Grant a team access to a VCR repository. Sharing applies to the whole repository.
     */
    addRepositoryPermission(request: AddRepositoryPermissionRequest, options?: RequestOptions): Promise<AddRepositoryPermissionResponseBody>;
    /**
     * Remove a repository permission
     *
     * @remarks
     * Revoke a team's access to a VCR repository.
     */
    removeRepositoryPermission(request: RemoveRepositoryPermissionRequest, options?: RequestOptions): Promise<any>;
    /**
     * List repository permissions
     *
     * @remarks
     * List the teams a VCR repository is shared with.
     */
    listRepositoryPermissions(request: ListRepositoryPermissionsRequest, options?: RequestOptions): Promise<VcrRepositoryPermissionList>;
    /**
     * Clear all repository permissions
     *
     * @remarks
     * Revoke every team's access to a VCR repository. Clearing an unshared repository is a no-op.
     */
    clearRepositoryPermissions(request: ClearRepositoryPermissionsRequest, options?: RequestOptions): Promise<any>;
    /**
     * List repository tags
     *
     * @remarks
     * List a repository's tags.
     */
    listRepositoryTags(request: ListRepositoryTagsRequest, options?: RequestOptions): Promise<ListRepositoryTagsResponseBody>;
    /**
     * Get a repository tag
     *
     * @remarks
     * Fetch a single tag from a repository, including the backing image's metadata and VHS-readiness status.
     */
    getRepositoryTag(request: GetRepositoryTagRequest, options?: RequestOptions): Promise<GetRepositoryTagResponseBody>;
    /**
     * Get a repository image
     *
     * @remarks
     * Fetch an individual image from a repository, including its tags and Dockerfile history entries with discriminated layer details for UI rendering. The image may be addressed by its internal id (`image_...`) or by its manifest digest (`sha256:...`).
     */
    getRepositoryImage(request: GetRepositoryImageRequest, options?: RequestOptions): Promise<GetRepositoryImageResponseBody>;
    /**
     * Delete a repository image
     *
     * @remarks
     * Schedule an image for deletion. The image is marked so it disappears from list/get immediately; subscriber-vcr reclaims the manifest, blobs, tags and row asynchronously via the VcrManifestRemoved event.
     */
    deleteRepositoryImage(request: DeleteRepositoryImageRequest, options?: RequestOptions): Promise<any>;
    /**
     * Check registry API version support
     *
     * @remarks
     * GET /v2/ Docker Registry v2 version check. Returns a 401 challenge when no credentials are provided, prompting the Docker client to send auth. With valid credentials, returns 200 so the client can proceed.
     */
    getRoot(options?: RequestOptions): Promise<GetRootResponseBody>;
    /**
     * Check if a blob exists
     *
     * @remarks
     * HEAD /v2/:teamSlug/:projectSlug/:repositoryName/blobs/:digest Check whether a blob exists. Used by the Docker client before pushing a layer to avoid re-uploading content that already exists.
     */
    headByTeamSlugByProjectSlugByRepositoryNameBlobsByDigest(request: HeadByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest, options?: RequestOptions): Promise<any>;
    /**
     * Download a blob
     *
     * @remarks
     * GET /v2/:teamSlug/:projectSlug/:repositoryName/blobs/:digest Fetch a blob by digest.
     */
    getByTeamSlugByProjectSlugByRepositoryNameBlobsByDigest(request: GetByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest, options?: RequestOptions): Promise<void>;
    /**
     * Delete a blob
     *
     * @remarks
     * DELETE /v2/:teamSlug/:projectSlug/:repositoryName/blobs/:digest Blob deletion is intentionally not supported. Matches the behaviour of most public registries.
     */
    deleteByTeamSlugByProjectSlugByRepositoryNameBlobsByDigest(request: DeleteByTeamSlugByProjectSlugByRepositoryNameBlobsByDigestRequest, options?: RequestOptions): Promise<void>;
    /**
     * Get blob upload status
     *
     * @remarks
     * GET /v2/:teamSlug/:projectSlug/:repositoryName/blobs/uploads/:uuid Query the status of an in-progress blob upload. Used by clients to resume a partial upload after an interruption.
     */
    getByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuid(request: GetByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest, options?: RequestOptions): Promise<any>;
    /**
     * Cancel a blob upload
     *
     * @remarks
     * DELETE /v2/:teamSlug/:projectSlug/:repositoryName/blobs/uploads/:uuid Cancel an in-flight blob upload. Aborts the underlying S3 multipart upload (if one was started) and discards the session.
     */
    deleteByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuid(request: DeleteByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest, options?: RequestOptions): Promise<any>;
    /**
     * Upload a blob chunk
     *
     * @remarks
     * PATCH /v2/:teamSlug/:projectSlug/:repositoryName/blobs/uploads/:uuid Upload a chunk of blob data. The request body is streamed directly to S3 as a multipart upload part while hashing incrementally. The client may call this multiple times for chunked uploads.
     */
    updateByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuid(request: UpdateByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest, options?: RequestOptions): Promise<any>;
    /**
     * Complete a blob upload
     *
     * @remarks
     * PUT /v2/:teamSlug/:projectSlug/:repositoryName/blobs/uploads/:uuid?digest=<digest> Complete the blob upload. This may include a final chunk of data in the request body (monolithic upload) or just finalize a previous chunked upload.
     */
    replaceByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuid(request: ReplaceByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsByUuidRequest, options?: RequestOptions): Promise<any>;
    /**
     * Start a blob upload
     *
     * @remarks
     * POST /v2/:teamSlug/:projectSlug/:repositoryName/blobs/uploads/[?mount=<digest>&from=<repo>] Initiate a blob upload. Returns a UUID in the Location header that the client uses for subsequent PATCH (chunk) and PUT (complete) requests.
     */
    createByTeamSlugByProjectSlugByRepositoryNameBlobsUploads(request: CreateByTeamSlugByProjectSlugByRepositoryNameBlobsUploadsRequest, options?: RequestOptions): Promise<any>;
    /**
     * Push an image manifest
     *
     * @remarks
     * PUT /v2/:teamSlug/:projectSlug/:repositoryName/manifests/:reference Upload an image manifest. The digest is computed from the body and returned in the Docker-Content-Digest header.
     */
    replaceByTeamSlugByProjectSlugByRepositoryNameManifestsByReference(request: ReplaceByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest, options?: RequestOptions): Promise<any>;
    /**
     * Check if a manifest exists
     *
     * @remarks
     * HEAD /v2/:teamSlug/:projectSlug/:repositoryName/manifests/:reference Check whether a manifest exists. Used by Docker client during push to determine if a manifest (or config blob referenced by digest) is already present.
     */
    headByTeamSlugByProjectSlugByRepositoryNameManifestsByReference(request: HeadByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest, options?: RequestOptions): Promise<any>;
    /**
     * Pull an image manifest
     *
     * @remarks
     * GET /v2/:teamSlug/:projectSlug/:repositoryName/manifests/:reference Fetch a manifest by tag or digest.
     */
    getByTeamSlugByProjectSlugByRepositoryNameManifestsByReference(request: GetByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest, options?: RequestOptions): Promise<void>;
    /**
     * Delete an image manifest
     *
     * @remarks
     * DELETE /v2/:teamSlug/:projectSlug/:repositoryName/manifests/:reference Reference must be a digest.
     */
    deleteByTeamSlugByProjectSlugByRepositoryNameManifestsByReference(request: DeleteByTeamSlugByProjectSlugByRepositoryNameManifestsByReferenceRequest, options?: RequestOptions): Promise<any>;
    /**
     * List image tags
     *
     * @remarks
     * GET /v2/:teamSlug/:projectSlug/:repositoryName/tags/list List the tags in a repository.
     */
    getByTeamSlugByProjectSlugByRepositoryNameTagsList(request: GetByTeamSlugByProjectSlugByRepositoryNameTagsListRequest, options?: RequestOptions): Promise<GetByTeamSlugByProjectSlugByRepositoryNameTagsListResponseBody>;
}
//# sourceMappingURL=vcr.d.ts.map