import { ClientSDK, RequestOptions } from "../lib/sdks.js";
import { AddProjectDomainRequest, AddProjectDomainResponseBody } from "../models/addprojectdomainop.js";
import { CreateProjectEnvRequest, CreateProjectEnvResponseBody } from "../models/createprojectenvop.js";
import { CreateProjectRequest, CreateProjectResponseBody } from "../models/createprojectop.js";
import { DeleteProjectRequest } from "../models/deleteprojectop.js";
import { EditProjectEnvRequest, EditProjectEnvResponseBody } from "../models/editprojectenvop.js";
import { FilterProjectEnvsRequest, FilterProjectEnvsResponseBody } from "../models/filterprojectenvsop.js";
import { GetProjectDomainRequest, GetProjectDomainResponseBody } from "../models/getprojectdomainop.js";
import { GetProjectDomainsRequest, GetProjectDomainsResponseBody } from "../models/getprojectdomainsop.js";
import { GetProjectEnvRequest, GetProjectEnvResponseBody } from "../models/getprojectenvop.js";
import { GetProjectsRequest, GetProjectsResponseBody } from "../models/getprojectsop.js";
import { ListPromoteAliasesRequest, ListPromoteAliasesResponseBody } from "../models/listpromotealiasesop.js";
import { RemoveProjectDomainRequest, RemoveProjectDomainResponseBody } from "../models/removeprojectdomainop.js";
import { RemoveProjectEnvRequest, RemoveProjectEnvResponseBody } from "../models/removeprojectenvop.js";
import { RequestPromoteRequest } from "../models/requestpromoteop.js";
import { UpdateProjectDataCacheRequest, UpdateProjectDataCacheResponseBody } from "../models/updateprojectdatacacheop.js";
import { UpdateProjectDomainRequest, UpdateProjectDomainResponseBody } from "../models/updateprojectdomainop.js";
import { UpdateProjectRequest, UpdateProjectResponseBody } from "../models/updateprojectop.js";
import { UpdateProjectProtectionBypassRequest, UpdateProjectProtectionBypassResponseBody } from "../models/updateprojectprotectionbypassop.js";
import { VerifyProjectDomainRequest, VerifyProjectDomainResponseBody } from "../models/verifyprojectdomainop.js";
export declare class Projects extends ClientSDK {
    /**
     * Update the data cache feature
     *
     * @remarks
     * Update the data cache feature on a project.
     */
    updateProjectDataCache(request: UpdateProjectDataCacheRequest, options?: RequestOptions): Promise<UpdateProjectDataCacheResponseBody>;
    /**
     * Retrieve a list of projects
     *
     * @remarks
     * Allows to retrieve the list of projects of the authenticated user or team. The list will be paginated and the provided query parameters allow filtering the returned projects.
     */
    getProjects(request: GetProjectsRequest, options?: RequestOptions): Promise<GetProjectsResponseBody>;
    /**
     * Create a new project
     *
     * @remarks
     * Allows to create a new project with the provided configuration. It only requires the project `name` but more configuration can be provided to override the defaults.
     */
    createProject(request: CreateProjectRequest, options?: RequestOptions): Promise<CreateProjectResponseBody>;
    /**
     * Update an existing project
     *
     * @remarks
     * Update the fields of a project using either its `name` or `id`.
     */
    updateProject(request: UpdateProjectRequest, options?: RequestOptions): Promise<UpdateProjectResponseBody>;
    /**
     * Delete a Project
     *
     * @remarks
     * Delete a specific project by passing either the project `id` or `name` in the URL.
     */
    deleteProject(request: DeleteProjectRequest, options?: RequestOptions): Promise<void>;
    /**
     * Retrieve project domains by project by id or name
     *
     * @remarks
     * Retrieve the domains associated with a given project by passing either the project `id` or `name` in the URL.
     */
    getProjectDomains(request: GetProjectDomainsRequest, options?: RequestOptions): Promise<GetProjectDomainsResponseBody>;
    /**
     * Get a project domain
     *
     * @remarks
     * Get project domain by project id/name and domain name.
     */
    getProjectDomain(request: GetProjectDomainRequest, options?: RequestOptions): Promise<GetProjectDomainResponseBody>;
    /**
     * Update a project domain
     *
     * @remarks
     * Update a project domain's configuration, including the name, git branch and redirect of the domain.
     */
    updateProjectDomain(request: UpdateProjectDomainRequest, options?: RequestOptions): Promise<UpdateProjectDomainResponseBody>;
    /**
     * Remove a domain from a project
     *
     * @remarks
     * Remove a domain from a project by passing the domain name and by specifying the project by either passing the project `id` or `name` in the URL.
     */
    removeProjectDomain(request: RemoveProjectDomainRequest, options?: RequestOptions): Promise<RemoveProjectDomainResponseBody>;
    /**
     * Add a domain to a project
     *
     * @remarks
     * Add a domain to the project by passing its domain name and by specifying the project by either passing the project `id` or `name` in the URL. If the domain is not yet verified to be used on this project, the request will return `verified = false`, and the domain will need to be verified according to the `verification` challenge via `POST /projects/:idOrName/domains/:domain/verify`. If the domain already exists on the project, the request will fail with a `400` status code.
     */
    addProjectDomain(request: AddProjectDomainRequest, options?: RequestOptions): Promise<AddProjectDomainResponseBody>;
    /**
     * Verify project domain
     *
     * @remarks
     * Attempts to verify a project domain with `verified = false` by checking the correctness of the project domain's `verification` challenge.
     */
    verifyProjectDomain(request: VerifyProjectDomainRequest, options?: RequestOptions): Promise<VerifyProjectDomainResponseBody>;
    /**
     * Retrieve the environment variables of a project by id or name
     *
     * @remarks
     * Retrieve the environment variables for a given project by passing either the project `id` or `name` in the URL.
     */
    filterProjectEnvs(request: FilterProjectEnvsRequest, options?: RequestOptions): Promise<FilterProjectEnvsResponseBody>;
    /**
     * Retrieve the decrypted value of an environment variable of a project by id
     *
     * @remarks
     * Retrieve the environment variable for a given project.
     */
    getProjectEnv(request: GetProjectEnvRequest, options?: RequestOptions): Promise<GetProjectEnvResponseBody>;
    /**
     * Create one or more environment variables
     *
     * @remarks
     * Create one or more environment variables for a project by passing its `key`, `value`, `type` and `target` and by specifying the project by either passing the project `id` or `name` in the URL. If you include `upsert=true` as a query parameter, a new environment variable will not be created if it already exists but, the existing variable's value will be updated.
     */
    createProjectEnv(request: CreateProjectEnvRequest, options?: RequestOptions): Promise<CreateProjectEnvResponseBody>;
    /**
     * Remove an environment variable
     *
     * @remarks
     * Delete a specific environment variable for a given project by passing the environment variable identifier and either passing the project `id` or `name` in the URL.
     */
    removeProjectEnv(request: RemoveProjectEnvRequest, options?: RequestOptions): Promise<RemoveProjectEnvResponseBody>;
    /**
     * Edit an environment variable
     *
     * @remarks
     * Edit a specific environment variable for a given project by passing the environment variable identifier and either passing the project `id` or `name` in the URL.
     */
    editProjectEnv(request: EditProjectEnvRequest, options?: RequestOptions): Promise<EditProjectEnvResponseBody>;
    /**
     * Update Protection Bypass for Automation
     *
     * @remarks
     * Update the deployment protection automation bypass for a project
     */
    updateProjectProtectionBypass(request: UpdateProjectProtectionBypassRequest, options?: RequestOptions): Promise<UpdateProjectProtectionBypassResponseBody>;
    /**
     * Points all production domains for a project to the given deploy
     *
     * @remarks
     * Allows users to promote a deployment to production. Note: This does NOT rebuild the deployment. If you need that, then call create-deployments endpoint.
     */
    requestPromote(request: RequestPromoteRequest, options?: RequestOptions): Promise<void>;
    /**
     * Gets a list of aliases with status for the current promote
     *
     * @remarks
     * Get a list of aliases related to the last promote request with their mapping status
     */
    listPromoteAliases(request: ListPromoteAliasesRequest, options?: RequestOptions): Promise<ListPromoteAliasesResponseBody>;
}
//# sourceMappingURL=projects.d.ts.map