import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiReposBranchesProtection } from "../../../../structures/IApiReposBranchesProtection";
import { branch_minus_protection } from "../../../../structures/branch_minus_protection";
import { body } from "../../../../structures/body";
import { protected_minus_branch } from "../../../../structures/protected_minus_branch";
export * as enforce_admins from "./enforce_admins";
export * as required_pull_request_reviews from "./required_pull_request_reviews";
export * as required_signatures from "./required_signatures";
export * as required_status_checks from "./required_status_checks";
export * as restrictions from "./restrictions";
/**
 * Get branch protection.
 * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepoAndBranch(connection: IConnection<getByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string): Promise<getByOwnerAndRepoAndBranch.Output>;
export declare namespace getByOwnerAndRepoAndBranch {
    type Headers = IApiReposBranchesProtection.GetHeader;
    type Output = branch_minus_protection;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, branch: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => branch_minus_protection;
    const simulate: (connection: IConnection<getByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string) => Output;
}
/**
 * Update branch protection.
 * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
 *
 * Protecting a branch requires admin or owner permissions to the repository.
 *
 * > [!NOTE]
 * > Passing new arrays of `users` and `teams` replaces their previous values.
 *
 * > [!NOTE]
 * > The list of users, apps, and teams in total is limited to 100 items.
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOwnerAndRepoAndBranch(connection: IConnection<putByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: putByOwnerAndRepoAndBranch.Input): Promise<putByOwnerAndRepoAndBranch.Output>;
export declare namespace putByOwnerAndRepoAndBranch {
    type Headers = IApiReposBranchesProtection.PutHeader;
    type Input = body;
    type Output = protected_minus_branch;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, branch: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => protected_minus_branch;
    const simulate: (connection: IConnection<putByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: putByOwnerAndRepoAndBranch.Input) => Output;
}
/**
 * Delete branch protection.
 * Protected branches are available in public repositories with GitHub Free and GitHub Free for organizations, and in public and private repositories with GitHub Pro, GitHub Team, GitHub Enterprise Cloud, and GitHub Enterprise Server. For more information, see [GitHub's products](https://docs.github.com/github/getting-started-with-github/githubs-products) in the GitHub Help documentation.
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepoAndBranch(connection: IConnection<eraseByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string): Promise<void>;
export declare namespace eraseByOwnerAndRepoAndBranch {
    type Headers = IApiReposBranchesProtection.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, branch: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string) => void;
}
