import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiReposBranchesProtectionRestrictionsUsers } from "../../../../../../structures/IApiReposBranchesProtectionRestrictionsUsers";
import { simple_minus_user } from "../../../../../../structures/simple_minus_user";
import { body } from "../../../../../../structures/body";
/**
 * Get users with access to the protected branch.
 * 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.
 *
 * Lists the people who have push access to this branch.
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection/restrictions/users
 * @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 = IApiReposBranchesProtectionRestrictionsUsers.GetHeader;
    type Output = simple_minus_user[];
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users";
        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>) => simple_minus_user[];
    const simulate: (connection: IConnection<getByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string) => Output;
}
/**
 * Add user access restrictions.
 * 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.
 *
 * Grants the specified people push access for this branch.
 *
 * | Type    | Description                                                                                                                   |
 * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
 * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection/restrictions/users
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function postByOwnerAndRepoAndBranch(connection: IConnection<postByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: postByOwnerAndRepoAndBranch.Input): Promise<postByOwnerAndRepoAndBranch.Output>;
export declare namespace postByOwnerAndRepoAndBranch {
    type Headers = IApiReposBranchesProtectionRestrictionsUsers.PostHeader;
    type Input = body;
    type Output = simple_minus_user[];
    const METADATA: {
        readonly method: "POST";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users";
        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>) => simple_minus_user[];
    const simulate: (connection: IConnection<postByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: postByOwnerAndRepoAndBranch.Input) => Output;
}
/**
 * Set user access restrictions.
 * 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.
 *
 * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
 *
 * | Type    | Description                                                                                                                   |
 * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
 * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection/restrictions/users
 * @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 = IApiReposBranchesProtectionRestrictionsUsers.PutHeader;
    type Input = body;
    type Output = simple_minus_user[];
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users";
        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>) => simple_minus_user[];
    const simulate: (connection: IConnection<putByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: putByOwnerAndRepoAndBranch.Input) => Output;
}
/**
 * Remove user access restrictions.
 * 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.
 *
 * Removes the ability of a user to push to this branch.
 *
 * | Type    | Description                                                                                                                                   |
 * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
 * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
 *
 * @tag repos
 * @path repos/:owner/:repo/branches/:branch/protection/restrictions/users
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepoAndBranch(connection: IConnection<eraseByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: eraseByOwnerAndRepoAndBranch.Input): Promise<eraseByOwnerAndRepoAndBranch.Output>;
export declare namespace eraseByOwnerAndRepoAndBranch {
    type Headers = IApiReposBranchesProtectionRestrictionsUsers.DeleteHeader;
    type Input = body;
    type Output = simple_minus_user[];
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/branches/:branch/protection/restrictions/users";
        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>) => simple_minus_user[];
    const simulate: (connection: IConnection<eraseByOwnerAndRepoAndBranch.Headers>, owner: string, repo: string, branch: string, body: eraseByOwnerAndRepoAndBranch.Input) => Output;
}
