import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiOrgsMemberships } from "../../../structures/IApiOrgsMemberships";
import { org_minus_membership } from "../../../structures/org_minus_membership";
import { body } from "../../../structures/body";
/**
 * Get organization membership for a user.
 * In order to get a user's membership with an organization, the authenticated user must be an organization member. The `state` parameter in the response can be used to identify the user's membership status.
 *
 * @tag orgs
 * @path orgs/:org/memberships/:username
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOrgAndUsername(connection: IConnection<getByOrgAndUsername.Headers>, org: string, username: string): Promise<getByOrgAndUsername.Output>;
export declare namespace getByOrgAndUsername {
    type Headers = IApiOrgsMemberships.GetHeader;
    type Output = org_minus_membership;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/orgs/:org/memberships/:username";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, username: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => org_minus_membership;
    const simulate: (connection: IConnection<getByOrgAndUsername.Headers>, org: string, username: string) => Output;
}
/**
 * Set organization membership for a user.
 * Only authenticated organization owners can add a member to the organization or update the member's role.
 *
 * *   If the authenticated user is _adding_ a member to the organization, the invited user will receive an email inviting them to the organization. The user's [membership status](https://docs.github.com/rest/orgs/members#get-organization-membership-for-a-user) will be `pending` until they accept the invitation.
 *
 * *   Authenticated users can _update_ a user's membership by passing the `role` parameter. If the authenticated user changes a member's role to `admin`, the affected user will receive an email notifying them that they've been made an organization owner. If the authenticated user changes an owner's role to `member`, no email will be sent.
 *
 * **Rate limits**
 *
 * To prevent abuse, organization owners are limited to creating 50 organization invitations for an organization within a 24 hour period. If the organization is more than one month old or on a paid plan, the limit is 500 invitations per 24 hour period.
 *
 * @tag orgs
 * @path orgs/:org/memberships/:username
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOrgAndUsername(connection: IConnection<putByOrgAndUsername.Headers>, org: string, username: string, body: putByOrgAndUsername.Input): Promise<putByOrgAndUsername.Output>;
export declare namespace putByOrgAndUsername {
    type Headers = IApiOrgsMemberships.PutHeader;
    type Input = body;
    type Output = org_minus_membership;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/orgs/:org/memberships/:username";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, username: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => org_minus_membership;
    const simulate: (connection: IConnection<putByOrgAndUsername.Headers>, org: string, username: string, body: putByOrgAndUsername.Input) => Output;
}
/**
 * Remove organization membership for a user.
 * In order to remove a user's membership with an organization, the authenticated user must be an organization owner.
 *
 * If the specified user is an active member of the organization, this will remove them from the organization. If the specified user has been invited to the organization, this will cancel their invitation. The specified user will receive an email notification in both cases.
 *
 * @tag orgs
 * @path orgs/:org/memberships/:username
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOrgAndUsername(connection: IConnection<eraseByOrgAndUsername.Headers>, org: string, username: string): Promise<void>;
export declare namespace eraseByOrgAndUsername {
    type Headers = IApiOrgsMemberships.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/orgs/:org/memberships/:username";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (org: string, username: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOrgAndUsername.Headers>, org: string, username: string) => void;
}
