import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiOrgsTeamsRepos } from "../../../../structures/IApiOrgsTeamsRepos";
import { minimal_minus_repository } from "../../../../structures/minimal_minus_repository";
import { team_minus_repository } from "../../../../structures/team_minus_repository";
import { body } from "../../../../structures/body";
/**
 * List team repositories.
 * Lists a team's repositories visible to the authenticated user.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug/repos
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOrgAndTeam_slug(connection: IConnection<getByOrgAndTeam_slug.Headers>, org: string, team_slug: string): Promise<getByOrgAndTeam_slug.Output>;
export declare namespace getByOrgAndTeam_slug {
    type Headers = IApiOrgsTeamsRepos.GetHeader;
    type Output = minimal_minus_repository[];
    const METADATA: {
        readonly method: "GET";
        readonly path: "/orgs/:org/teams/:team_slug/repos";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, team_slug: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => minimal_minus_repository[];
    const simulate: (connection: IConnection<getByOrgAndTeam_slug.Headers>, org: string, team_slug: string) => Output;
}
/**
 * Check team permissions for a repository.
 * Checks whether a team has `admin`, `push`, `maintain`, `triage`, or `pull` permission for a repository. Repositories inherited through a parent team will also be checked.
 *
 * You can also get information about the specified repository, including what permissions the team grants on it, by passing the following custom [media type](https://docs.github.com/rest/using-the-rest-api/getting-started-with-the-rest-api#media-types/) via the `application/vnd.github.v3.repository+json` accept header.
 *
 * If a team doesn't have permission for the repository, you will receive a `404 Not Found` response status.
 *
 * If the repository is private, you must have at least `read` permission for that repository, and your token must have the `repo` or `admin:org` scope. Otherwise, you will receive a `404 Not Found` response status.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug/repos/:owner/:repo
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOrgAndTeam_slugAndOwnerAndRepo(connection: IConnection<getByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string): Promise<getByOrgAndTeam_slugAndOwnerAndRepo.Output>;
export declare namespace getByOrgAndTeam_slugAndOwnerAndRepo {
    type Headers = IApiOrgsTeamsRepos.GetHeader;
    type Output = team_minus_repository;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/orgs/:org/teams/:team_slug/repos/:owner/:repo";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, team_slug: string, owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => team_minus_repository;
    const simulate: (connection: IConnection<getByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string) => Output;
}
/**
 * Add or update team repository permissions.
 * To add a repository to a team or update the team's permission on a repository, the authenticated user must have admin access to the repository, and must be able to see the team. The repository must be owned by the organization, or a direct fork of a repository owned by the organization. You will get a `422 Unprocessable Entity` status if you attempt to add a repository to a team that is not owned by the organization. Note that, if you choose not to pass any parameters, you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP method](https://docs.github.com/rest/guides/getting-started-with-the-rest-api#http-method)."
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `PUT /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
 *
 * For more information about the permission levels, see "[Repository permission levels for an organization](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/repository-permission-levels-for-an-organization#permission-levels-for-repositories-owned-by-an-organization)".
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug/repos/:owner/:repo
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOrgAndTeam_slugAndOwnerAndRepo(connection: IConnection<putByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string, body: putByOrgAndTeam_slugAndOwnerAndRepo.Input): Promise<void>;
export declare namespace putByOrgAndTeam_slugAndOwnerAndRepo {
    type Headers = IApiOrgsTeamsRepos.PutHeader;
    type Input = body;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/orgs/:org/teams/:team_slug/repos/:owner/:repo";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, team_slug: string, owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<putByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string, body: putByOrgAndTeam_slugAndOwnerAndRepo.Input) => void;
}
/**
 * Remove a repository from a team.
 * If the authenticated user is an organization owner or a team maintainer, they can remove any repositories from the team. To remove a repository from a team as an organization member, the authenticated user must have admin access to the repository and must be able to see the team. This does not delete the repository, it just removes it from the team.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}/repos/{owner}/{repo}`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug/repos/:owner/:repo
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOrgAndTeam_slugAndOwnerAndRepo(connection: IConnection<eraseByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string): Promise<void>;
export declare namespace eraseByOrgAndTeam_slugAndOwnerAndRepo {
    type Headers = IApiOrgsTeamsRepos.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/orgs/:org/teams/:team_slug/repos/:owner/:repo";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, team_slug: string, owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOrgAndTeam_slugAndOwnerAndRepo.Headers>, org: string, team_slug: string, owner: string, repo: string) => void;
}
