import { IConnection } from "@nestia/fetcher";
import typia from "typia";
import { IApiReposInteractionLimits } from "../../../structures/IApiReposInteractionLimits";
import { response } from "../../../structures/response";
import { interaction_minus_limit } from "../../../structures/interaction_minus_limit";
import { interaction_minus_limit_minus_response } from "../../../structures/interaction_minus_limit_minus_response";
/**
 * Get interaction restrictions for a repository.
 * Shows which type of GitHub user can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
 *
 * @tag interactions
 * @path repos/:owner/:repo/interaction-limits
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepo(connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string): Promise<getByOwnerAndRepo.Output>;
export declare namespace getByOwnerAndRepo {
    type Headers = IApiReposInteractionLimits.GetHeader;
    type Output = response;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/interaction-limits";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => response;
    const simulate: (connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string) => Output;
}
/**
 * Set interaction restrictions for a repository.
 * Temporarily restricts interactions to a certain type of GitHub user within the given repository. You must have owner or admin access to set these restrictions. If an interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
 *
 * @tag interactions
 * @path repos/:owner/:repo/interaction-limits
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOwnerAndRepo(connection: IConnection<putByOwnerAndRepo.Headers>, owner: string, repo: string, body: putByOwnerAndRepo.Input): Promise<putByOwnerAndRepo.Output>;
export declare namespace putByOwnerAndRepo {
    type Headers = IApiReposInteractionLimits.PutHeader;
    type Input = interaction_minus_limit;
    type Output = interaction_minus_limit_minus_response;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/repos/:owner/:repo/interaction-limits";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => interaction_minus_limit_minus_response;
    const simulate: (connection: IConnection<putByOwnerAndRepo.Headers>, owner: string, repo: string, body: putByOwnerAndRepo.Input) => Output;
}
/**
 * Remove interaction restrictions for a repository.
 * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions. If the interaction limit is set for the user or organization that owns this repository, you will receive a `409 Conflict` response and will not be able to use this endpoint to change the interaction limit for a single repository.
 *
 * @tag interactions
 * @path repos/:owner/:repo/interaction-limits
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepo(connection: IConnection<eraseByOwnerAndRepo.Headers>, owner: string, repo: string): Promise<void>;
export declare namespace eraseByOwnerAndRepo {
    type Headers = IApiReposInteractionLimits.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/interaction-limits";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOwnerAndRepo.Headers>, owner: string, repo: string) => void;
}
