import { IConnection } from "@nestia/fetcher";
import typia, { tags } from "typia";
import { IApiReposRulesets } from "../../../structures/IApiReposRulesets";
import { repository_minus_ruleset } from "../../../structures/repository_minus_ruleset";
import { body } from "../../../structures/body";
export * as rule_suites from "./rule_suites";
/**
 * Get all repository rulesets.
 * Get all the rulesets for a repository.
 *
 * @tag repos
 * @path repos/:owner/:repo/rulesets
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepo(connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string, query: getByOwnerAndRepo.Query): Promise<getByOwnerAndRepo.Output>;
export declare namespace getByOwnerAndRepo {
    type Headers = IApiReposRulesets.GetHeader;
    type Query = IApiReposRulesets.GetQuery;
    type Output = repository_minus_ruleset[];
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/rulesets";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, query: getByOwnerAndRepo.Query) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => repository_minus_ruleset[];
    const simulate: (connection: IConnection<getByOwnerAndRepo.Headers>, owner: string, repo: string, query: getByOwnerAndRepo.Query) => Output;
}
/**
 * Create a repository ruleset.
 * Create a ruleset for a repository.
 *
 * @param body Request body
 * @tag repos
 * @path repos/:owner/:repo/rulesets
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function postByOwnerAndRepo(connection: IConnection<postByOwnerAndRepo.Headers>, owner: string, repo: string, body: postByOwnerAndRepo.Input): Promise<postByOwnerAndRepo.Output>;
export declare namespace postByOwnerAndRepo {
    type Headers = IApiReposRulesets.PostHeader;
    type Input = body;
    type Output = repository_minus_ruleset;
    const METADATA: {
        readonly method: "POST";
        readonly path: "/repos/:owner/:repo/rulesets";
        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>) => repository_minus_ruleset;
    const simulate: (connection: IConnection<postByOwnerAndRepo.Headers>, owner: string, repo: string, body: postByOwnerAndRepo.Input) => Output;
}
/**
 * Get a repository ruleset.
 * Get a ruleset for a repository.
 *
 * **Note:** To prevent leaking sensitive information, the `bypass_actors` property is only returned if the user
 * making the API request has write access to the ruleset.
 *
 * @param ruleset_id The ID of the ruleset.
 * @tag repos
 * @path repos/:owner/:repo/rulesets/:ruleset_id
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function getByOwnerAndRepoAndRuleset_id(connection: IConnection<getByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">, query: getByOwnerAndRepoAndRuleset_id.Query): Promise<getByOwnerAndRepoAndRuleset_id.Output>;
export declare namespace getByOwnerAndRepoAndRuleset_id {
    type Headers = IApiReposRulesets.GetHeader;
    type Query = IApiReposRulesets.GetQuery;
    type Output = repository_minus_ruleset;
    const METADATA: {
        readonly method: "GET";
        readonly path: "/repos/:owner/:repo/rulesets/:ruleset_id";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, ruleset_id: number & tags.Type<"int32">, query: getByOwnerAndRepoAndRuleset_id.Query) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => repository_minus_ruleset;
    const simulate: (connection: IConnection<getByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">, query: getByOwnerAndRepoAndRuleset_id.Query) => Output;
}
/**
 * Update a repository ruleset.
 * Update a ruleset for a repository.
 *
 * @param ruleset_id The ID of the ruleset.
 * @param body Request body
 * @tag repos
 * @path repos/:owner/:repo/rulesets/:ruleset_id
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function putByOwnerAndRepoAndRuleset_id(connection: IConnection<putByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">, body: putByOwnerAndRepoAndRuleset_id.Input): Promise<putByOwnerAndRepoAndRuleset_id.Output>;
export declare namespace putByOwnerAndRepoAndRuleset_id {
    type Headers = IApiReposRulesets.PutHeader;
    type Input = body;
    type Output = repository_minus_ruleset;
    const METADATA: {
        readonly method: "PUT";
        readonly path: "/repos/:owner/:repo/rulesets/:ruleset_id";
        readonly request: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, ruleset_id: number & tags.Type<"int32">) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => repository_minus_ruleset;
    const simulate: (connection: IConnection<putByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">, body: putByOwnerAndRepoAndRuleset_id.Input) => Output;
}
/**
 * Delete a repository ruleset.
 * Delete a ruleset for a repository.
 *
 * @param ruleset_id The ID of the ruleset.
 * @tag repos
 * @path repos/:owner/:repo/rulesets/:ruleset_id
 * @nestia Generated by Nestia - https://github.com/samchon/nestia
 */
export declare function eraseByOwnerAndRepoAndRuleset_id(connection: IConnection<eraseByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">): Promise<void>;
export declare namespace eraseByOwnerAndRepoAndRuleset_id {
    type Headers = IApiReposRulesets.DeleteHeader;
    const METADATA: {
        readonly method: "DELETE";
        readonly path: "/repos/:owner/:repo/rulesets/:ruleset_id";
        readonly request: null;
        readonly response: {
            readonly type: "application/json";
            readonly encrypted: false;
        };
    };
    const path: (owner: string, repo: string, ruleset_id: number & tags.Type<"int32">) => string;
    const random: (g?: Partial<typia.IRandomGenerator>) => void;
    const simulate: (connection: IConnection<eraseByOwnerAndRepoAndRuleset_id.Headers>, owner: string, repo: string, ruleset_id: number & tags.Type<"int32">) => void;
}
