import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiReposEnvironmentsDeploymentProtectionRules } from "../../../../structures/IApiReposEnvironmentsDeploymentProtectionRules";
import { response } from "../../../../structures/response";
import { body } from "../../../../structures/body";
import { deployment_minus_protection_minus_rule } from "../../../../structures/deployment_minus_protection_minus_rule";
export * as apps from "./apps";
/**
 * Get all deployment protection rules for an environment.
 * Gets all custom deployment protection rules that are enabled for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
 *
 * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
 *
 * 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/deployment_protection_rules
 * @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 = IApiReposEnvironmentsDeploymentProtectionRules.GetHeader;
    type Output = response;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/environments/:environment_name/deployment_protection_rules";
        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>) => response;
    const simulate: (connection: IConnection<getByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string) => Output;
}
/**
 * Create a custom deployment protection rule on an environment.
 * Enable a custom deployment protection rule for an environment.
 *
 * The authenticated user must have admin or owner permissions to the repository to use this endpoint.
 *
 * For more information about the app that is providing this custom deployment rule, see the [documentation for the `GET /apps/{app_slug}` endpoint](https://docs.github.com/rest/apps/apps#get-an-app).
 *
 * 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/deployment_protection_rules
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function postByOwnerAndRepoAndEnvironment_name(connection: IConnection<postByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string, body: postByOwnerAndRepoAndEnvironment_name.Input): Promise<postByOwnerAndRepoAndEnvironment_name.Output>;
export declare namespace postByOwnerAndRepoAndEnvironment_name {
    type Headers = IApiReposEnvironmentsDeploymentProtectionRules.PostHeader;
    type Input = body;
    type Output = deployment_minus_protection_minus_rule;
    const METADATA: {
        readonly method: "POST";
        readonly path: "/repos/:owner/:repo/environments/:environment_name/deployment_protection_rules";
        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>) => deployment_minus_protection_minus_rule;
    const simulate: (connection: IConnection<postByOwnerAndRepoAndEnvironment_name.Headers>, owner: string, repo: string, environment_name: string, body: postByOwnerAndRepoAndEnvironment_name.Input) => Output;
}
/**
 * Get a custom deployment protection rule.
 * Gets an enabled custom deployment protection rule for an environment. Anyone with read access to the repository can use this endpoint. For more information about environments, see "[Using environments for deployment](https://docs.github.com/actions/deployment/targeting-different-environments/using-environments-for-deployment)."
 *
 * For more information about the app that is providing this custom deployment rule, see [`GET /apps/{app_slug}`](https://docs.github.com/rest/apps/apps#get-an-app).
 *
 * 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/deployment_protection_rules/:protection_rule_id
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id(connection: IConnection<getByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id.Headers>, owner: string, repo: string, environment_name: string, protection_rule_id: string): Promise<getByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id.Output>;
export declare namespace getByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id {
    type Headers = IApiReposEnvironmentsDeploymentProtectionRules.GetHeader;
    type Output = deployment_minus_protection_minus_rule;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/environments/:environment_name/deployment_protection_rules/:protection_rule_id";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, environment_name: string, protection_rule_id: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => deployment_minus_protection_minus_rule;
    const simulate: (connection: IConnection<getByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id.Headers>, owner: string, repo: string, environment_name: string, protection_rule_id: string) => Output;
}
/**
 * Disable a custom protection rule for an environment.
 * Disables a custom deployment protection rule for an environment.
 *
 * The authenticated user must have admin or owner permissions to the repository to use this endpoint.
 *
 * 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/deployment_protection_rules/:protection_rule_id
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id(connection: IConnection<eraseByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id.Headers>, owner: string, repo: string, environment_name: string, protection_rule_id: string): Promise<void>;
export declare namespace eraseByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id {
    type Headers = IApiReposEnvironmentsDeploymentProtectionRules.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/environments/:environment_name/deployment_protection_rules/:protection_rule_id";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, environment_name: string, protection_rule_id: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOwnerAndRepoAndEnvironment_nameAndProtection_rule_id.Headers>, owner: string, repo: string, environment_name: string, protection_rule_id: string) => void;
}
