import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiOrgsTeams } from "../../../structures/IApiOrgsTeams";
import { team } from "../../../structures/team";
import { body } from "../../../structures/body";
import { team_minus_full } from "../../../structures/team_minus_full";
export * as discussions from "./discussions";
export * as invitations from "./invitations";
export * as members from "./members";
export * as memberships from "./memberships";
export * as projects from "./projects";
export * as repos from "./repos";
export * as teams from "./teams";
/**
 * List teams.
 * Lists all teams in an organization that are visible to the authenticated user.
 *
 * @tag teams
 * @path orgs/:org/teams
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOrg(connection: IConnection<getByOrg.Headers>, org: string): Promise<getByOrg.Output>;
export declare namespace getByOrg {
    type Headers = IApiOrgsTeams.GetHeader;
    type Output = team[];
    const METADATA: {
        readonly method: "GET";
        readonly path: "/orgs/:org/teams";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => team[];
    const simulate: (connection: IConnection<getByOrg.Headers>, org: string) => Output;
}
/**
 * Create a team.
 * To create a team, the authenticated user must be a member or owner of `{org}`. By default, organization members can create teams. Organization owners can limit team creation to organization owners. For more information, see "[Setting team creation permissions](https://docs.github.com/articles/setting-team-creation-permissions-in-your-organization)."
 *
 * When you create a new team, you automatically become a team maintainer without explicitly adding yourself to the optional array of `maintainers`. For more information, see "[About teams](https://docs.github.com/github/setting-up-and-managing-organizations-and-teams/about-teams)".
 *
 * @tag teams
 * @path orgs/:org/teams
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function postByOrg(connection: IConnection<postByOrg.Headers>, org: string, body: postByOrg.Input): Promise<postByOrg.Output>;
export declare namespace postByOrg {
    type Headers = IApiOrgsTeams.PostHeader;
    type Input = body;
    type Output = team_minus_full;
    const METADATA: {
        readonly method: "POST";
        readonly path: "/orgs/:org/teams";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => team_minus_full;
    const simulate: (connection: IConnection<postByOrg.Headers>, org: string, body: postByOrg.Input) => Output;
}
/**
 * Get a team by name.
 * Gets a team using the team's `slug`. To create the `slug`, GitHub replaces special characters in the `name` string, changes all words to lowercase, and replaces spaces with a `-` separator. For example, `"My TEam Näme"` would become `my-team-name`.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `GET /organizations/{org_id}/team/{team_id}`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug
 * @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 = IApiOrgsTeams.GetHeader;
    type Output = team_minus_full;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/orgs/:org/teams/:team_slug";
        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>) => team_minus_full;
    const simulate: (connection: IConnection<getByOrgAndTeam_slug.Headers>, org: string, team_slug: string) => Output;
}
/**
 * Update a team.
 * To edit a team, the authenticated user must either be an organization owner or a team maintainer.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `PATCH /organizations/{org_id}/team/{team_id}`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function patchByOrgAndTeam_slug(connection: IConnection<patchByOrgAndTeam_slug.Headers>, org: string, team_slug: string, body: patchByOrgAndTeam_slug.Input): Promise<patchByOrgAndTeam_slug.Output>;
export declare namespace patchByOrgAndTeam_slug {
    type Headers = IApiOrgsTeams.PatchHeader;
    type Input = body;
    type Output = team_minus_full;
    const METADATA: {
        readonly method: "PATCH";
        readonly path: "/orgs/:org/teams/:team_slug";
        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) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => team_minus_full;
    const simulate: (connection: IConnection<patchByOrgAndTeam_slug.Headers>, org: string, team_slug: string, body: patchByOrgAndTeam_slug.Input) => Output;
}
/**
 * Delete a team.
 * To delete a team, the authenticated user must be an organization owner or team maintainer.
 *
 * If you are an organization owner, deleting a parent team will delete all of its child teams as well.
 *
 * > [!NOTE]
 * > You can also specify a team by `org_id` and `team_id` using the route `DELETE /organizations/{org_id}/team/{team_id}`.
 *
 * @tag teams
 * @path orgs/:org/teams/:team_slug
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOrgAndTeam_slug(connection: IConnection<eraseByOrgAndTeam_slug.Headers>, org: string, team_slug: string): Promise<void>;
export declare namespace eraseByOrgAndTeam_slug {
    type Headers = IApiOrgsTeams.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/orgs/:org/teams/:team_slug";
        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>) => void;
    const simulate: (connection: IConnection<eraseByOrgAndTeam_slug.Headers>, org: string, team_slug: string) => void;
}
