import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiReposEnvironments } from "../../../structures/IApiReposEnvironments";
import { response } from "../../../structures/response";
import { environment } from "../../../structures/environment";
import { body } from "../../../structures/body";
export * as deployment_branch_policies from "./deployment_branch_policies";
export * as deployment_protection_rules from "./deployment_protection_rules";
export * as secrets from "./secrets";
export * as variables from "./variables";
/**
 * List environments.
 * Lists the environments for a repository.
 *
 * Anyone with read access to the repository can use this endpoint.
 *
 * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository.
 *
 * @tag repos
 * @path repos/:owner/:repo/environments
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepo(connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string): Promise<getByOwnerAndRepo.Output>;
export declare namespace getByOwnerAndRepo {
    type Headers = IApiReposEnvironments.GetHeader;
    type Output = response;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/environments";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => response;
    const simulate: (connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string) => Output;
}
/**
 * Get an environment.
 * > [!NOTE]
 * > To get information about name patterns that branches must match in order to deploy to this environment, see "[Get a deployment branch policy](/rest/deployments/branch-policies#get-a-deployment-branch-policy)."
 *
 * Anyone with read access to the repository can use this endpoint.
 *
 * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint with a private repository.
 *
 * @tag repos
 * @path repos/:owner/:repo/environments/:environment_name
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepoAndEnvironment_name(connection: IConnection<getByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string): Promise<getByOwnerAndRepoAndEnvironment_name.Output>;
export declare namespace getByOwnerAndRepoAndEnvironment_name {
    type Headers = IApiReposEnvironments.GetHeader;
    type Output = environment;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/environments/:environment_name";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, environment_name: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => environment;
    const simulate: (connection: IConnection<getByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string) => Output;
}
/**
 * Create or update an environment with protection rules, such as required reviewers. For more information about environment protection rules, see "[Environments](/actions/reference/environments#environment-protection-rules)."
 *
 * > [!NOTE]
 * > To create or update name patterns that branches must match in order to deploy to this environment, see "[Deployment branch policies](/rest/deployments/branch-policies)."
 *
 * > [!NOTE]
 * > To create or update secrets for an environment, see "[GitHub Actions secrets](/rest/actions/secrets)."
 *
 * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint.
 *
 * @tag repos
 * @path repos/:owner/:repo/environments/:environment_name
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOwnerAndRepoAndEnvironment_name(connection: IConnection<putByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string, body: putByOwnerAndRepoAndEnvironment_name.Input): Promise<putByOwnerAndRepoAndEnvironment_name.Output>;
export declare namespace putByOwnerAndRepoAndEnvironment_name {
    type Headers = IApiReposEnvironments.PutHeader;
    type Input = body;
    type Output = environment;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/repos/:owner/:repo/environments/:environment_name";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, environment_name: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => environment;
    const simulate: (connection: IConnection<putByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string, body: putByOwnerAndRepoAndEnvironment_name.Input) => Output;
}
/**
 * Delete an environment.
 * OAuth app tokens and personal access tokens (classic) need the `repo` scope to use this endpoint.
 *
 * @tag repos
 * @path repos/:owner/:repo/environments/:environment_name
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepoAndEnvironment_name(connection: IConnection<eraseByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string): Promise<void>;
export declare namespace eraseByOwnerAndRepoAndEnvironment_name {
    type Headers = IApiReposEnvironments.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/environments/:environment_name";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, environment_name: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string) => void;
}
