/**
 * This file is generated based on https://github.com/octokit/routes/ & "npm run build:ts".
 *
 * DO NOT EDIT MANUALLY.
 */

/**
 * This declaration file requires TypeScript 3.1 or above.
 */

/// <reference lib="esnext.asynciterable" />

import * as http from "http";

declare namespace Octokit {
  type json = any;
  type date = string;

  export interface Static {
    plugin(plugin: Plugin): Static;
    new (options?: Octokit.Options): Octokit;
  }

  export interface Response<T> {
    /** This is the data you would see in https://developer.github.com/v3/ */
    data: T;

    /** Response status number */
    status: number;

    /** Response headers */
    headers: {
      date: string;
      "x-ratelimit-limit": string;
      "x-ratelimit-remaining": string;
      "x-ratelimit-reset": string;
      "x-Octokit-request-id": string;
      "x-Octokit-media-type": string;
      link: string;
      "last-modified": string;
      etag: string;
      status: string;
    };

    [Symbol.iterator](): Iterator<any>;
  }

  export type AnyResponse = Response<any>;

  export interface EmptyParams {}

  export interface Options {
    auth?:
      | string
      | { username: string; password: string; on2fa: () => Promise<string> }
      | { clientId: string; clientSecret: string }
      | { (): string | Promise<string> };
    userAgent?: string;
    previews?: string[];
    baseUrl?: string;
    log?: {
      debug?: (message: string, info?: object) => void;
      info?: (message: string, info?: object) => void;
      warn?: (message: string, info?: object) => void;
      error?: (message: string, info?: object) => void;
    };
    request?: {
      agent?: http.Agent;
      timeout?: number;
    };
    timeout?: number; // Deprecated
    headers?: { [header: string]: any }; // Deprecated
    agent?: http.Agent; // Deprecated
    [option: string]: any;
  }

  export type RequestMethod =
    | "DELETE"
    | "GET"
    | "HEAD"
    | "PATCH"
    | "POST"
    | "PUT";

  export interface EndpointOptions {
    baseUrl?: string;
    method?: RequestMethod;
    url?: string;
    headers?: { [header: string]: any };
    data?: any;
    request?: { [option: string]: any };
    [parameter: string]: any;
  }

  export interface RequestOptions {
    method?: RequestMethod;
    url?: string;
    headers?: RequestHeaders;
    body?: any;
    request?: OctokitRequestOptions;
    /**
     * Media type options, see {@link https://developer.github.com/v3/media/|GitHub Developer Guide}
     */
    mediaType?: {
      /**
       * `json` by default. Can be `raw`, `text`, `html`, `full`, `diff`, `patch`, `sha`, `base64`. Depending on endpoint
       */
      format?: string;

      /**
       * Custom media type names of {@link https://developer.github.com/v3/media/|API Previews} without the `-preview` suffix.
       * Example for single preview: `['squirrel-girl']`.
       * Example for multiple previews: `['squirrel-girl', 'mister-fantastic']`.
       */
      previews?: string[];
    };
  }

  export type RequestHeaders = {
    /**
     * Avoid setting `accept`, use `mediaFormat.{format|previews}` instead.
     */
    accept?: string;
    /**
     * Use `authorization` to send authenticated request, remember `token ` / `bearer ` prefixes. Example: `token 1234567890abcdef1234567890abcdef12345678`
     */
    authorization?: string;
    /**
     * `user-agent` is set do a default and can be overwritten as needed.
     */
    "user-agent"?: string;

    [header: string]: string | number | undefined;
  };

  export type OctokitRequestOptions = {
    /**
     * Node only. Useful for custom proxy, certificate, or dns lookup.
     */
    agent?: http.Agent;
    /**
     * Custom replacement for built-in fetch method. Useful for testing or request hooks.
     */
    fetch?: any;
    /**
     * Use an `AbortController` instance to cancel a request. In node you can only cancel streamed requests.
     */
    signal?: any;
    /**
     * Node only. Request/response timeout in ms, it resets on redirect. 0 to disable (OS limit applies). `options.request.signal` is recommended instead.
     */
    timeout?: number;

    [option: string]: any;
  };

  export interface Log {
    debug: (message: string, additionalInfo?: object) => void;
    info: (message: string, additionalInfo?: object) => void;
    warn: (message: string, additionalInfo?: object) => void;
    error: (message: string, additionalInfo?: object) => void;
  }

  export interface Endpoint {
    (
      Route: string,
      EndpointOptions?: Octokit.EndpointOptions
    ): Octokit.RequestOptions;
    (EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
    /**
     * Current default options
     */
    DEFAULTS: Octokit.EndpointOptions;
    /**
     * Get the defaulted endpoint options, but without parsing them into request options:
     */
    merge(
      Route: string,
      EndpointOptions?: Octokit.EndpointOptions
    ): Octokit.RequestOptions;
    merge(EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
    /**
     * Stateless method to turn endpoint options into request options. Calling endpoint(options) is the same as calling endpoint.parse(endpoint.merge(options)).
     */
    parse(EndpointOptions: Octokit.EndpointOptions): Octokit.RequestOptions;
    /**
     * Merges existing defaults with passed options and returns new endpoint() method with new defaults
     */
    defaults(EndpointOptions: Octokit.EndpointOptions): Octokit.Endpoint;
  }

  export interface Request {
    (Route: string, EndpointOptions?: Octokit.EndpointOptions): Promise<
      Octokit.AnyResponse
    >;
    (EndpointOptions: Octokit.EndpointOptions): Promise<Octokit.AnyResponse>;
    endpoint: Octokit.Endpoint;
  }

  export interface AuthBasic {
    type: "basic";
    username: string;
    password: string;
  }

  export interface AuthOAuthToken {
    type: "oauth";
    token: string;
  }

  export interface AuthOAuthSecret {
    type: "oauth";
    key: string;
    secret: string;
  }

  export interface AuthUserToken {
    type: "token";
    token: string;
  }

  export interface AuthJWT {
    type: "app";
    token: string;
  }

  export type Link = { link: string } | { headers: { link: string } } | string;

  export interface Callback<T> {
    (error: Error | null, result: T): any;
  }

  export type Plugin = (octokit: Octokit, options: Octokit.Options) => void;

  // See https://github.com/octokit/request.js#request
  export type HookOptions = {
    baseUrl: string;
    headers: { [header: string]: string };
    method: string;
    url: string;
    data: any;
    // See https://github.com/bitinn/node-fetch#options
    request: {
      follow?: number;
      timeout?: number;
      compress?: boolean;
      size?: number;
      agent?: string | null;
    };
    [index: string]: any;
  };

  export type HookError = Error & {
    status: number;
    headers: { [header: string]: string };
    documentation_url?: string;
    errors?: [
      {
        resource: string;
        field: string;
        code: string;
      }
    ];
  };

  export interface Paginate {
    (
      Route: string,
      EndpointOptions?: Octokit.EndpointOptions,
      callback?: (response: Octokit.AnyResponse, done: () => void) => any
    ): Promise<any[]>;
    (
      EndpointOptions: Octokit.EndpointOptions,
      callback?: (response: Octokit.AnyResponse, done: () => void) => any
    ): Promise<any[]>;
    iterator: (
      EndpointOptions: Octokit.EndpointOptions
    ) => AsyncIterableIterator<Octokit.AnyResponse>;
  }

  // response types
  type UsersUpdateAuthenticatedResponsePlan = {
    collaborators: number;
    name: string;
    private_repos: number;
    space: number;
  };
  type UsersUpdateAuthenticatedResponse = {
    avatar_url: string;
    bio: string;
    blog: string;
    collaborators: number;
    company: string;
    created_at: string;
    disk_usage: number;
    email: string;
    events_url: string;
    followers: number;
    followers_url: string;
    following: number;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    hireable: boolean;
    html_url: string;
    id: number;
    location: string;
    login: string;
    name: string;
    node_id: string;
    organizations_url: string;
    owned_private_repos: number;
    plan: UsersUpdateAuthenticatedResponsePlan;
    private_gists: number;
    public_gists: number;
    public_repos: number;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    total_private_repos: number;
    two_factor_authentication: boolean;
    type: string;
    updated_at: string;
    url: string;
  };
  type UsersTogglePrimaryEmailVisibilityResponseItem = {
    email: string;
    primary: boolean;
    verified: boolean;
    visibility: string;
  };
  type UsersListPublicKeysForUserResponseItem = { id: number; key: string };
  type UsersListPublicKeysResponseItem = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type UsersListPublicEmailsResponseItem = {
    email: string;
    primary: boolean;
    verified: boolean;
    visibility: string;
  };
  type UsersListGpgKeysForUserResponseItemSubkeysItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<any>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: number;
    public_key: string;
    subkeys: Array<any>;
  };
  type UsersListGpgKeysForUserResponseItemEmailsItem = {
    email: string;
    verified: boolean;
  };
  type UsersListGpgKeysForUserResponseItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<UsersListGpgKeysForUserResponseItemEmailsItem>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: null;
    public_key: string;
    subkeys: Array<UsersListGpgKeysForUserResponseItemSubkeysItem>;
  };
  type UsersListGpgKeysResponseItemSubkeysItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<any>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: number;
    public_key: string;
    subkeys: Array<any>;
  };
  type UsersListGpgKeysResponseItemEmailsItem = {
    email: string;
    verified: boolean;
  };
  type UsersListGpgKeysResponseItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<UsersListGpgKeysResponseItemEmailsItem>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: null;
    public_key: string;
    subkeys: Array<UsersListGpgKeysResponseItemSubkeysItem>;
  };
  type UsersListFollowingForUserResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersListFollowingForAuthenticatedUserResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersListFollowersForUserResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersListFollowersForAuthenticatedUserResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersListEmailsResponseItem = {
    email: string;
    primary: boolean;
    verified: boolean;
    visibility: string;
  };
  type UsersListBlockedResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersListResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type UsersGetPublicKeyResponse = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type UsersGetGpgKeyResponseSubkeysItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<any>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: number;
    public_key: string;
    subkeys: Array<any>;
  };
  type UsersGetGpgKeyResponseEmailsItem = { email: string; verified: boolean };
  type UsersGetGpgKeyResponse = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<UsersGetGpgKeyResponseEmailsItem>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: null;
    public_key: string;
    subkeys: Array<UsersGetGpgKeyResponseSubkeysItem>;
  };
  type UsersGetContextForUserResponseContextsItem = {
    message: string;
    octicon: string;
  };
  type UsersGetContextForUserResponse = {
    contexts: Array<UsersGetContextForUserResponseContextsItem>;
  };
  type UsersGetByUsernameResponsePlan = {
    collaborators: number;
    name: string;
    private_repos: number;
    space: number;
  };
  type UsersGetByUsernameResponse = {
    avatar_url: string;
    bio: string;
    blog: string;
    company: string;
    created_at: string;
    email: string;
    events_url: string;
    followers: number;
    followers_url: string;
    following: number;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    hireable: boolean;
    html_url: string;
    id: number;
    location: string;
    login: string;
    name: string;
    node_id: string;
    organizations_url: string;
    public_gists: number;
    public_repos: number;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    updated_at: string;
    url: string;
    plan?: UsersGetByUsernameResponsePlan;
  };
  type UsersGetAuthenticatedResponsePlan = {
    collaborators: number;
    name: string;
    private_repos: number;
    space: number;
  };
  type UsersGetAuthenticatedResponse = {
    avatar_url: string;
    bio: string;
    blog: string;
    collaborators?: number;
    company: string;
    created_at: string;
    disk_usage?: number;
    email: string;
    events_url: string;
    followers: number;
    followers_url: string;
    following: number;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    hireable: boolean;
    html_url: string;
    id: number;
    location: string;
    login: string;
    name: string;
    node_id: string;
    organizations_url: string;
    owned_private_repos?: number;
    plan?: UsersGetAuthenticatedResponsePlan;
    private_gists?: number;
    public_gists: number;
    public_repos: number;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    total_private_repos?: number;
    two_factor_authentication?: boolean;
    type: string;
    updated_at: string;
    url: string;
  };
  type UsersCreatePublicKeyResponse = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type UsersCreateGpgKeyResponseSubkeysItem = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<any>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: number;
    public_key: string;
    subkeys: Array<any>;
  };
  type UsersCreateGpgKeyResponseEmailsItem = {
    email: string;
    verified: boolean;
  };
  type UsersCreateGpgKeyResponse = {
    can_certify: boolean;
    can_encrypt_comms: boolean;
    can_encrypt_storage: boolean;
    can_sign: boolean;
    created_at: string;
    emails: Array<UsersCreateGpgKeyResponseEmailsItem>;
    expires_at: null;
    id: number;
    key_id: string;
    primary_key_id: null;
    public_key: string;
    subkeys: Array<UsersCreateGpgKeyResponseSubkeysItem>;
  };
  type UsersAddEmailsResponseItem = {
    email: string;
    primary: boolean;
    verified: boolean;
    visibility: string | null;
  };
  type TeamsUpdateDiscussionCommentResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsUpdateDiscussionCommentResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsUpdateDiscussionCommentResponse = {
    author: TeamsUpdateDiscussionCommentResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    created_at: string;
    discussion_url: string;
    html_url: string;
    last_edited_at: string;
    node_id: string;
    number: number;
    reactions: TeamsUpdateDiscussionCommentResponseReactions;
    updated_at: string;
    url: string;
  };
  type TeamsUpdateDiscussionResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsUpdateDiscussionResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsUpdateDiscussionResponse = {
    author: TeamsUpdateDiscussionResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    comments_count: number;
    comments_url: string;
    created_at: string;
    html_url: string;
    last_edited_at: string;
    node_id: string;
    number: number;
    pinned: boolean;
    private: boolean;
    reactions: TeamsUpdateDiscussionResponseReactions;
    team_url: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type TeamsUpdateResponseOrganization = {
    avatar_url: string;
    blog: string;
    company: string;
    created_at: string;
    description: string;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_url: string;
    name: string;
    node_id: string;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    type: string;
    url: string;
  };
  type TeamsUpdateResponse = {
    created_at: string;
    description: string;
    html_url: string;
    id: number;
    members_count: number;
    members_url: string;
    name: string;
    node_id: string;
    organization: TeamsUpdateResponseOrganization;
    parent: null;
    permission: string;
    privacy: string;
    repos_count: number;
    repositories_url: string;
    slug: string;
    updated_at: string;
    url: string;
  };
  type TeamsReviewProjectResponsePermissions = {
    admin: boolean;
    read: boolean;
    write: boolean;
  };
  type TeamsReviewProjectResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsReviewProjectResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: TeamsReviewProjectResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    organization_permission: string;
    owner_url: string;
    permissions: TeamsReviewProjectResponsePermissions;
    private: boolean;
    state: string;
    updated_at: string;
    url: string;
  };
  type TeamsListReposResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type TeamsListReposResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListReposResponseItemLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type TeamsListReposResponseItem = {
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: TeamsListReposResponseItemLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: TeamsListReposResponseItemOwner;
    permissions: TeamsListReposResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type TeamsListProjectsResponseItemPermissions = {
    admin: boolean;
    read: boolean;
    write: boolean;
  };
  type TeamsListProjectsResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListProjectsResponseItem = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: TeamsListProjectsResponseItemCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    organization_permission: string;
    owner_url: string;
    permissions: TeamsListProjectsResponseItemPermissions;
    private: boolean;
    state: string;
    updated_at: string;
    url: string;
  };
  type TeamsListPendingInvitationsResponseItemInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListPendingInvitationsResponseItem = {
    created_at: string;
    email: string;
    id: number;
    invitation_team_url: string;
    inviter: TeamsListPendingInvitationsResponseItemInviter;
    login: string;
    role: string;
    team_count: number;
  };
  type TeamsListMembersResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListForAuthenticatedUserResponseItemOrganization = {
    avatar_url: string;
    blog: string;
    company: string;
    created_at: string;
    description: string;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_url: string;
    name: string;
    node_id: string;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    type: string;
    url: string;
  };
  type TeamsListForAuthenticatedUserResponseItem = {
    created_at: string;
    description: string;
    html_url: string;
    id: number;
    members_count: number;
    members_url: string;
    name: string;
    node_id: string;
    organization: TeamsListForAuthenticatedUserResponseItemOrganization;
    parent: null;
    permission: string;
    privacy: string;
    repos_count: number;
    repositories_url: string;
    slug: string;
    updated_at: string;
    url: string;
  };
  type TeamsListDiscussionsResponseItemReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsListDiscussionsResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListDiscussionsResponseItem = {
    author: TeamsListDiscussionsResponseItemAuthor;
    body: string;
    body_html: string;
    body_version: string;
    comments_count: number;
    comments_url: string;
    created_at: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    pinned: boolean;
    private: boolean;
    reactions: TeamsListDiscussionsResponseItemReactions;
    team_url: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type TeamsListDiscussionCommentsResponseItemReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsListDiscussionCommentsResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsListDiscussionCommentsResponseItem = {
    author: TeamsListDiscussionCommentsResponseItemAuthor;
    body: string;
    body_html: string;
    body_version: string;
    created_at: string;
    discussion_url: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    reactions: TeamsListDiscussionCommentsResponseItemReactions;
    updated_at: string;
    url: string;
  };
  type TeamsListChildResponseItemParent = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type TeamsListChildResponseItem = {
    description: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: TeamsListChildResponseItemParent;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type TeamsListResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type TeamsGetMembershipResponse = {
    role: string;
    state: string;
    url: string;
  };
  type TeamsGetDiscussionCommentResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsGetDiscussionCommentResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsGetDiscussionCommentResponse = {
    author: TeamsGetDiscussionCommentResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    created_at: string;
    discussion_url: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    reactions: TeamsGetDiscussionCommentResponseReactions;
    updated_at: string;
    url: string;
  };
  type TeamsGetDiscussionResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsGetDiscussionResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsGetDiscussionResponse = {
    author: TeamsGetDiscussionResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    comments_count: number;
    comments_url: string;
    created_at: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    pinned: boolean;
    private: boolean;
    reactions: TeamsGetDiscussionResponseReactions;
    team_url: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type TeamsGetByNameResponseOrganization = {
    avatar_url: string;
    blog: string;
    company: string;
    created_at: string;
    description: string;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_url: string;
    name: string;
    node_id: string;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    type: string;
    url: string;
  };
  type TeamsGetByNameResponse = {
    created_at: string;
    description: string;
    html_url: string;
    id: number;
    members_count: number;
    members_url: string;
    name: string;
    node_id: string;
    organization: TeamsGetByNameResponseOrganization;
    parent: null;
    permission: string;
    privacy: string;
    repos_count: number;
    repositories_url: string;
    slug: string;
    updated_at: string;
    url: string;
  };
  type TeamsGetResponseOrganization = {
    avatar_url: string;
    blog: string;
    company: string;
    created_at: string;
    description: string;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_url: string;
    name: string;
    node_id: string;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    type: string;
    url: string;
  };
  type TeamsGetResponse = {
    created_at: string;
    description: string;
    html_url: string;
    id: number;
    members_count: number;
    members_url: string;
    name: string;
    node_id: string;
    organization: TeamsGetResponseOrganization;
    parent: null;
    permission: string;
    privacy: string;
    repos_count: number;
    repositories_url: string;
    slug: string;
    updated_at: string;
    url: string;
  };
  type TeamsCreateDiscussionCommentResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsCreateDiscussionCommentResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsCreateDiscussionCommentResponse = {
    author: TeamsCreateDiscussionCommentResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    created_at: string;
    discussion_url: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    reactions: TeamsCreateDiscussionCommentResponseReactions;
    updated_at: string;
    url: string;
  };
  type TeamsCreateDiscussionResponseReactions = {
    "+1": number;
    "-1": number;
    confused: number;
    heart: number;
    hooray: number;
    laugh: number;
    total_count: number;
    url: string;
  };
  type TeamsCreateDiscussionResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsCreateDiscussionResponse = {
    author: TeamsCreateDiscussionResponseAuthor;
    body: string;
    body_html: string;
    body_version: string;
    comments_count: number;
    comments_url: string;
    created_at: string;
    html_url: string;
    last_edited_at: null;
    node_id: string;
    number: number;
    pinned: boolean;
    private: boolean;
    reactions: TeamsCreateDiscussionResponseReactions;
    team_url: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type TeamsCreateResponseOrganization = {
    avatar_url: string;
    blog: string;
    company: string;
    created_at: string;
    description: string;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_url: string;
    name: string;
    node_id: string;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    type: string;
    url: string;
  };
  type TeamsCreateResponse = {
    created_at: string;
    description: string;
    html_url: string;
    id: number;
    members_count: number;
    members_url: string;
    name: string;
    node_id: string;
    organization: TeamsCreateResponseOrganization;
    parent: null;
    permission: string;
    privacy: string;
    repos_count: number;
    repositories_url: string;
    slug: string;
    updated_at: string;
    url: string;
  };
  type TeamsCheckManagesRepoResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type TeamsCheckManagesRepoResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type TeamsCheckManagesRepoResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: TeamsCheckManagesRepoResponseOwner;
    permissions: TeamsCheckManagesRepoResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type TeamsAddOrUpdateProjectResponse = {
    documentation_url: string;
    message: string;
  };
  type TeamsAddOrUpdateMembershipResponse = {
    role: string;
    state: string;
    url: string;
  };
  type TeamsAddMemberResponseErrorsItem = {
    code: string;
    field: string;
    resource: string;
  };
  type TeamsAddMemberResponse = {
    errors: Array<TeamsAddMemberResponseErrorsItem>;
    message: string;
  };
  type SearchUsersResponseItemsItem = {
    avatar_url: string;
    followers_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    score: number;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchUsersResponse = {
    incomplete_results: boolean;
    items: Array<SearchUsersResponseItemsItem>;
    total_count: number;
  };
  type SearchTopicsResponseItemsItem = {
    created_at: string;
    created_by: string;
    curated: boolean;
    description: string;
    display_name: string;
    featured: boolean;
    name: string;
    released: string;
    score: number;
    short_description: string;
    updated_at: string;
  };
  type SearchTopicsResponse = {
    incomplete_results: boolean;
    items: Array<SearchTopicsResponseItemsItem>;
    total_count: number;
  };
  type SearchReposResponseItemsItemOwner = {
    avatar_url: string;
    gravatar_id: string;
    id: number;
    login: string;
    node_id: string;
    received_events_url: string;
    type: string;
    url: string;
  };
  type SearchReposResponseItemsItem = {
    created_at: string;
    default_branch: string;
    description: string;
    fork: boolean;
    forks_count: number;
    full_name: string;
    homepage: string;
    html_url: string;
    id: number;
    language: string;
    master_branch: string;
    name: string;
    node_id: string;
    open_issues_count: number;
    owner: SearchReposResponseItemsItemOwner;
    private: boolean;
    pushed_at: string;
    score: number;
    size: number;
    stargazers_count: number;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type SearchReposResponse = {
    incomplete_results: boolean;
    items: Array<SearchReposResponseItemsItem>;
    total_count: number;
  };
  type SearchLabelsResponseItemsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    score: number;
    url: string;
  };
  type SearchLabelsResponse = {
    incomplete_results: boolean;
    items: Array<SearchLabelsResponseItemsItem>;
    total_count: number;
  };
  type SearchIssuesAndPullRequestsResponseItemsItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchIssuesAndPullRequestsResponseItemsItemPullRequest = {
    diff_url: null;
    html_url: null;
    patch_url: null;
  };
  type SearchIssuesAndPullRequestsResponseItemsItemLabelsItem = {
    color: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type SearchIssuesAndPullRequestsResponseItemsItem = {
    assignee: null;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<SearchIssuesAndPullRequestsResponseItemsItemLabelsItem>;
    labels_url: string;
    milestone: null;
    node_id: string;
    number: number;
    pull_request: SearchIssuesAndPullRequestsResponseItemsItemPullRequest;
    repository_url: string;
    score: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: SearchIssuesAndPullRequestsResponseItemsItemUser;
  };
  type SearchIssuesAndPullRequestsResponse = {
    incomplete_results: boolean;
    items: Array<SearchIssuesAndPullRequestsResponseItemsItem>;
    total_count: number;
  };
  type SearchIssuesResponseItemsItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchIssuesResponseItemsItemPullRequest = {
    diff_url: null;
    html_url: null;
    patch_url: null;
  };
  type SearchIssuesResponseItemsItemLabelsItem = {
    color: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type SearchIssuesResponseItemsItem = {
    assignee: null;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<SearchIssuesResponseItemsItemLabelsItem>;
    labels_url: string;
    milestone: null;
    node_id: string;
    number: number;
    pull_request: SearchIssuesResponseItemsItemPullRequest;
    repository_url: string;
    score: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: SearchIssuesResponseItemsItemUser;
  };
  type SearchIssuesResponse = {
    incomplete_results: boolean;
    items: Array<SearchIssuesResponseItemsItem>;
    total_count: number;
  };
  type SearchCommitsResponseItemsItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchCommitsResponseItemsItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    hooks_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: SearchCommitsResponseItemsItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type SearchCommitsResponseItemsItemParentsItem = {
    html_url: string;
    sha: string;
    url: string;
  };
  type SearchCommitsResponseItemsItemCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchCommitsResponseItemsItemCommitTree = { sha: string; url: string };
  type SearchCommitsResponseItemsItemCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type SearchCommitsResponseItemsItemCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type SearchCommitsResponseItemsItemCommit = {
    author: SearchCommitsResponseItemsItemCommitAuthor;
    comment_count: number;
    committer: SearchCommitsResponseItemsItemCommitCommitter;
    message: string;
    tree: SearchCommitsResponseItemsItemCommitTree;
    url: string;
  };
  type SearchCommitsResponseItemsItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchCommitsResponseItemsItem = {
    author: SearchCommitsResponseItemsItemAuthor;
    comments_url: string;
    commit: SearchCommitsResponseItemsItemCommit;
    committer: SearchCommitsResponseItemsItemCommitter;
    html_url: string;
    parents: Array<SearchCommitsResponseItemsItemParentsItem>;
    repository: SearchCommitsResponseItemsItemRepository;
    score: number;
    sha: string;
    url: string;
  };
  type SearchCommitsResponse = {
    incomplete_results: boolean;
    items: Array<SearchCommitsResponseItemsItem>;
    total_count: number;
  };
  type SearchCodeResponseItemsItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type SearchCodeResponseItemsItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    hooks_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: SearchCodeResponseItemsItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type SearchCodeResponseItemsItem = {
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    repository: SearchCodeResponseItemsItemRepository;
    score: number;
    sha: string;
    url: string;
  };
  type SearchCodeResponse = {
    incomplete_results: boolean;
    items: Array<SearchCodeResponseItemsItem>;
    total_count: number;
  };
  type ReposUploadReleaseAssetResponseValueUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUploadReleaseAssetResponseValue = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposUploadReleaseAssetResponseValueUploader;
    url: string;
  };
  type ReposUploadReleaseAssetResponse = {
    value: ReposUploadReleaseAssetResponseValue;
  };
  type ReposUpdateReleaseAssetResponseUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateReleaseAssetResponse = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposUpdateReleaseAssetResponseUploader;
    url: string;
  };
  type ReposUpdateReleaseResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateReleaseResponseAssetsItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateReleaseResponseAssetsItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposUpdateReleaseResponseAssetsItemUploader;
    url: string;
  };
  type ReposUpdateReleaseResponse = {
    assets: Array<ReposUpdateReleaseResponseAssetsItem>;
    assets_url: string;
    author: ReposUpdateReleaseResponseAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposUpdateProtectedBranchRequiredStatusChecksResponse = {
    contexts: Array<string>;
    contexts_url: string;
    strict: boolean;
    url: string;
  };
  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions = {
    teams: Array<
      ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem
    >;
    teams_url: string;
    url: string;
    users: Array<
      ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem
    >;
    users_url: string;
  };
  type ReposUpdateProtectedBranchPullRequestReviewEnforcementResponse = {
    dismiss_stale_reviews: boolean;
    dismissal_restrictions: ReposUpdateProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions;
    require_code_owner_reviews: boolean;
    required_approving_review_count: number;
    url: string;
  };
  type ReposUpdateInvitationResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateInvitationResponseRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposUpdateInvitationResponseRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposUpdateInvitationResponseInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateInvitationResponseInvitee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateInvitationResponse = {
    created_at: string;
    html_url: string;
    id: number;
    invitee: ReposUpdateInvitationResponseInvitee;
    inviter: ReposUpdateInvitationResponseInviter;
    permissions: string;
    repository: ReposUpdateInvitationResponseRepository;
    url: string;
  };
  type ReposUpdateHookResponseLastResponse = {
    code: null;
    message: null;
    status: string;
  };
  type ReposUpdateHookResponseConfig = {
    content_type: string;
    insecure_ssl: string;
    url: string;
  };
  type ReposUpdateHookResponse = {
    active: boolean;
    config: ReposUpdateHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    last_response: ReposUpdateHookResponseLastResponse;
    name: string;
    ping_url: string;
    test_url: string;
    type: string;
    updated_at: string;
    url: string;
  };
  type ReposUpdateFileResponseContentLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposUpdateFileResponseContent = {
    _links: ReposUpdateFileResponseContentLinks;
    download_url: string;
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type ReposUpdateFileResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposUpdateFileResponseCommitTree = { sha: string; url: string };
  type ReposUpdateFileResponseCommitParentsItem = {
    html_url: string;
    sha: string;
    url: string;
  };
  type ReposUpdateFileResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposUpdateFileResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposUpdateFileResponseCommit = {
    author: ReposUpdateFileResponseCommitAuthor;
    committer: ReposUpdateFileResponseCommitCommitter;
    html_url: string;
    message: string;
    node_id: string;
    parents: Array<ReposUpdateFileResponseCommitParentsItem>;
    sha: string;
    tree: ReposUpdateFileResponseCommitTree;
    url: string;
    verification: ReposUpdateFileResponseCommitVerification;
  };
  type ReposUpdateFileResponse = {
    commit: ReposUpdateFileResponseCommit;
    content: ReposUpdateFileResponseContent;
  };
  type ReposUpdateCommitCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateCommitCommentResponse = {
    body: string;
    commit_id: string;
    created_at: string;
    html_url: string;
    id: number;
    line: number;
    node_id: string;
    path: string;
    position: number;
    updated_at: string;
    url: string;
    user: ReposUpdateCommitCommentResponseUser;
  };
  type ReposUpdateBranchProtectionResponseRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRestrictionsAppsItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposUpdateBranchProtectionResponseRestrictionsAppsItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRestrictionsAppsItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposUpdateBranchProtectionResponseRestrictionsAppsItemOwner;
    permissions: ReposUpdateBranchProtectionResponseRestrictionsAppsItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposUpdateBranchProtectionResponseRestrictions = {
    apps: Array<ReposUpdateBranchProtectionResponseRestrictionsAppsItem>;
    apps_url: string;
    teams: Array<ReposUpdateBranchProtectionResponseRestrictionsTeamsItem>;
    teams_url: string;
    url: string;
    users: Array<ReposUpdateBranchProtectionResponseRestrictionsUsersItem>;
    users_url: string;
  };
  type ReposUpdateBranchProtectionResponseRequiredStatusChecks = {
    contexts: Array<string>;
    contexts_url: string;
    strict: boolean;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions = {
    teams: Array<
      ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem
    >;
    teams_url: string;
    url: string;
    users: Array<
      ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem
    >;
    users_url: string;
  };
  type ReposUpdateBranchProtectionResponseRequiredPullRequestReviews = {
    dismiss_stale_reviews: boolean;
    dismissal_restrictions: ReposUpdateBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions;
    require_code_owner_reviews: boolean;
    required_approving_review_count: number;
    url: string;
  };
  type ReposUpdateBranchProtectionResponseEnforceAdmins = {
    enabled: boolean;
    url: string;
  };
  type ReposUpdateBranchProtectionResponse = {
    enforce_admins: ReposUpdateBranchProtectionResponseEnforceAdmins;
    required_pull_request_reviews: ReposUpdateBranchProtectionResponseRequiredPullRequestReviews;
    required_status_checks: ReposUpdateBranchProtectionResponseRequiredStatusChecks;
    restrictions: ReposUpdateBranchProtectionResponseRestrictions;
    url: string;
  };
  type ReposUpdateResponseSourcePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposUpdateResponseSourceOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateResponseSource = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposUpdateResponseSourceOwner;
    permissions: ReposUpdateResponseSourcePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposUpdateResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposUpdateResponseParentPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposUpdateResponseParentOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateResponseParent = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposUpdateResponseParentOwner;
    permissions: ReposUpdateResponseParentPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposUpdateResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateResponseOrganization = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposUpdateResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    organization: ReposUpdateResponseOrganization;
    owner: ReposUpdateResponseOwner;
    parent: ReposUpdateResponseParent;
    permissions: ReposUpdateResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    source: ReposUpdateResponseSource;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposTransferResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposTransferResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposTransferResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposTransferResponseOwner;
    permissions: ReposTransferResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesReadme = {
    html_url: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesPullRequestTemplate = {
    html_url: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesLicense = {
    html_url: string;
    key: string;
    name: string;
    spdx_id: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesIssueTemplate = {
    html_url: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesContributing = {
    html_url: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFilesCodeOfConduct = {
    html_url: string;
    key: string;
    name: string;
    url: string;
  };
  type ReposRetrieveCommunityProfileMetricsResponseFiles = {
    code_of_conduct: ReposRetrieveCommunityProfileMetricsResponseFilesCodeOfConduct;
    contributing: ReposRetrieveCommunityProfileMetricsResponseFilesContributing;
    issue_template: ReposRetrieveCommunityProfileMetricsResponseFilesIssueTemplate;
    license: ReposRetrieveCommunityProfileMetricsResponseFilesLicense;
    pull_request_template: ReposRetrieveCommunityProfileMetricsResponseFilesPullRequestTemplate;
    readme: ReposRetrieveCommunityProfileMetricsResponseFilesReadme;
  };
  type ReposRetrieveCommunityProfileMetricsResponse = {
    description: string;
    documentation: boolean;
    files: ReposRetrieveCommunityProfileMetricsResponseFiles;
    health_percentage: number;
    updated_at: string;
  };
  type ReposRequestPageBuildResponse = { status: string; url: string };
  type ReposReplaceTopicsResponse = { names: Array<string> };
  type ReposReplaceProtectedBranchUserRestrictionsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposReplaceProtectedBranchTeamRestrictionsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposReplaceProtectedBranchAppRestrictionsResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposReplaceProtectedBranchAppRestrictionsResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposReplaceProtectedBranchAppRestrictionsResponseItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposReplaceProtectedBranchAppRestrictionsResponseItemOwner;
    permissions: ReposReplaceProtectedBranchAppRestrictionsResponseItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposRemoveProtectedBranchUserRestrictionsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposRemoveProtectedBranchTeamRestrictionsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposRemoveProtectedBranchAppRestrictionsResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposRemoveProtectedBranchAppRestrictionsResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposRemoveProtectedBranchAppRestrictionsResponseItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposRemoveProtectedBranchAppRestrictionsResponseItemOwner;
    permissions: ReposRemoveProtectedBranchAppRestrictionsResponseItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposMergeResponseParentsItem = { sha: string; url: string };
  type ReposMergeResponseCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposMergeResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposMergeResponseCommitTree = { sha: string; url: string };
  type ReposMergeResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposMergeResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposMergeResponseCommit = {
    author: ReposMergeResponseCommitAuthor;
    comment_count: number;
    committer: ReposMergeResponseCommitCommitter;
    message: string;
    tree: ReposMergeResponseCommitTree;
    url: string;
    verification: ReposMergeResponseCommitVerification;
  };
  type ReposMergeResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposMergeResponse = {
    author: ReposMergeResponseAuthor;
    comments_url: string;
    commit: ReposMergeResponseCommit;
    committer: ReposMergeResponseCommitter;
    html_url: string;
    node_id: string;
    parents: Array<ReposMergeResponseParentsItem>;
    sha: string;
    url: string;
  };
  type ReposListUsersWithAccessToProtectedBranchResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListTopicsResponse = { names: Array<string> };
  type ReposListTeamsWithAccessToProtectedBranchResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposListTeamsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposListTagsResponseItemCommit = { sha: string; url: string };
  type ReposListTagsResponseItem = {
    commit: ReposListTagsResponseItemCommit;
    name: string;
    tarball_url: string;
    zipball_url: string;
  };
  type ReposListStatusesForRefResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListStatusesForRefResponseItem = {
    avatar_url: string;
    context: string;
    created_at: string;
    creator: ReposListStatusesForRefResponseItemCreator;
    description: string;
    id: number;
    node_id: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposListReleasesResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListReleasesResponseItemAssetsItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListReleasesResponseItemAssetsItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposListReleasesResponseItemAssetsItemUploader;
    url: string;
  };
  type ReposListReleasesResponseItem = {
    assets: Array<ReposListReleasesResponseItemAssetsItem>;
    assets_url: string;
    author: ReposListReleasesResponseItemAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: ReposListPullRequestsAssociatedWithCommitResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoOwner;
    permissions: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemHead = {
    label: string;
    ref: string;
    repo: ReposListPullRequestsAssociatedWithCommitResponseItemHeadRepo;
    sha: string;
    user: ReposListPullRequestsAssociatedWithCommitResponseItemHeadUser;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoOwner;
    permissions: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemBase = {
    label: string;
    ref: string;
    repo: ReposListPullRequestsAssociatedWithCommitResponseItemBaseRepo;
    sha: string;
    user: ReposListPullRequestsAssociatedWithCommitResponseItemBaseUser;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksStatuses = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksSelf = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComments = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComment = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksIssue = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksHtml = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksCommits = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinksComments = {
    href: string;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItemLinks = {
    comments: ReposListPullRequestsAssociatedWithCommitResponseItemLinksComments;
    commits: ReposListPullRequestsAssociatedWithCommitResponseItemLinksCommits;
    html: ReposListPullRequestsAssociatedWithCommitResponseItemLinksHtml;
    issue: ReposListPullRequestsAssociatedWithCommitResponseItemLinksIssue;
    review_comment: ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComment;
    review_comments: ReposListPullRequestsAssociatedWithCommitResponseItemLinksReviewComments;
    self: ReposListPullRequestsAssociatedWithCommitResponseItemLinksSelf;
    statuses: ReposListPullRequestsAssociatedWithCommitResponseItemLinksStatuses;
  };
  type ReposListPullRequestsAssociatedWithCommitResponseItem = {
    _links: ReposListPullRequestsAssociatedWithCommitResponseItemLinks;
    active_lock_reason: string;
    assignee: ReposListPullRequestsAssociatedWithCommitResponseItemAssignee;
    assignees: Array<
      ReposListPullRequestsAssociatedWithCommitResponseItemAssigneesItem
    >;
    author_association: string;
    base: ReposListPullRequestsAssociatedWithCommitResponseItemBase;
    body: string;
    closed_at: string;
    comments_url: string;
    commits_url: string;
    created_at: string;
    diff_url: string;
    draft: boolean;
    head: ReposListPullRequestsAssociatedWithCommitResponseItemHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<
      ReposListPullRequestsAssociatedWithCommitResponseItemLabelsItem
    >;
    locked: boolean;
    merge_commit_sha: string;
    merged_at: string;
    milestone: ReposListPullRequestsAssociatedWithCommitResponseItemMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    requested_reviewers: Array<
      ReposListPullRequestsAssociatedWithCommitResponseItemRequestedReviewersItem
    >;
    requested_teams: Array<
      ReposListPullRequestsAssociatedWithCommitResponseItemRequestedTeamsItem
    >;
    review_comment_url: string;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: ReposListPullRequestsAssociatedWithCommitResponseItemUser;
  };
  type ReposListPublicResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPublicResponseItem = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposListPublicResponseItemOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposListProtectedBranchUserRestrictionsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListProtectedBranchTeamRestrictionsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposListPagesBuildsResponseItemPusher = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListPagesBuildsResponseItemError = { message: null };
  type ReposListPagesBuildsResponseItem = {
    commit: string;
    created_at: string;
    duration: number;
    error: ReposListPagesBuildsResponseItemError;
    pusher: ReposListPagesBuildsResponseItemPusher;
    status: string;
    updated_at: string;
    url: string;
  };
  type ReposListLanguagesResponse = { C: number; Python: number };
  type ReposListInvitationsForAuthenticatedUserResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsForAuthenticatedUserResponseItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposListInvitationsForAuthenticatedUserResponseItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposListInvitationsForAuthenticatedUserResponseItemInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsForAuthenticatedUserResponseItemInvitee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsForAuthenticatedUserResponseItem = {
    created_at: string;
    html_url: string;
    id: number;
    invitee: ReposListInvitationsForAuthenticatedUserResponseItemInvitee;
    inviter: ReposListInvitationsForAuthenticatedUserResponseItemInviter;
    permissions: string;
    repository: ReposListInvitationsForAuthenticatedUserResponseItemRepository;
    url: string;
  };
  type ReposListInvitationsResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsResponseItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposListInvitationsResponseItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposListInvitationsResponseItemInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsResponseItemInvitee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListInvitationsResponseItem = {
    created_at: string;
    html_url: string;
    id: number;
    invitee: ReposListInvitationsResponseItemInvitee;
    inviter: ReposListInvitationsResponseItemInviter;
    permissions: string;
    repository: ReposListInvitationsResponseItemRepository;
    url: string;
  };
  type ReposListHooksResponseItemLastResponse = {
    code: null;
    message: null;
    status: string;
  };
  type ReposListHooksResponseItemConfig = {
    content_type: string;
    insecure_ssl: string;
    url: string;
  };
  type ReposListHooksResponseItem = {
    active: boolean;
    config: ReposListHooksResponseItemConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    last_response: ReposListHooksResponseItemLastResponse;
    name: string;
    ping_url: string;
    test_url: string;
    type: string;
    updated_at: string;
    url: string;
  };
  type ReposListForksResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposListForksResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListForksResponseItemLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type ReposListForksResponseItem = {
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: ReposListForksResponseItemLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposListForksResponseItemOwner;
    permissions: ReposListForksResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposListForOrgResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposListForOrgResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListForOrgResponseItemLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type ReposListForOrgResponseItem = {
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: ReposListForOrgResponseItemLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposListForOrgResponseItemOwner;
    permissions: ReposListForOrgResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposListDownloadsResponseItem = {
    content_type: string;
    description: string;
    download_count: number;
    html_url: string;
    id: number;
    name: string;
    size: number;
    url: string;
  };
  type ReposListDeploymentsResponseItemPayload = { deploy: string };
  type ReposListDeploymentsResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListDeploymentsResponseItem = {
    created_at: string;
    creator: ReposListDeploymentsResponseItemCreator;
    description: string;
    environment: string;
    id: number;
    node_id: string;
    original_environment: string;
    payload: ReposListDeploymentsResponseItemPayload;
    production_environment: boolean;
    ref: string;
    repository_url: string;
    sha: string;
    statuses_url: string;
    task: string;
    transient_environment: boolean;
    updated_at: string;
    url: string;
  };
  type ReposListDeploymentStatusesResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListDeploymentStatusesResponseItem = {
    created_at: string;
    creator: ReposListDeploymentStatusesResponseItemCreator;
    deployment_url: string;
    description: string;
    environment: string;
    environment_url: string;
    id: number;
    log_url: string;
    node_id: string;
    repository_url: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposListDeployKeysResponseItem = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type ReposListContributorsResponseItem = {
    avatar_url: string;
    contributions: number;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListCommitsResponseItemParentsItem = { sha: string; url: string };
  type ReposListCommitsResponseItemCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListCommitsResponseItemCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposListCommitsResponseItemCommitTree = { sha: string; url: string };
  type ReposListCommitsResponseItemCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposListCommitsResponseItemCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposListCommitsResponseItemCommit = {
    author: ReposListCommitsResponseItemCommitAuthor;
    comment_count: number;
    committer: ReposListCommitsResponseItemCommitCommitter;
    message: string;
    tree: ReposListCommitsResponseItemCommitTree;
    url: string;
    verification: ReposListCommitsResponseItemCommitVerification;
  };
  type ReposListCommitsResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListCommitsResponseItem = {
    author: ReposListCommitsResponseItemAuthor;
    comments_url: string;
    commit: ReposListCommitsResponseItemCommit;
    committer: ReposListCommitsResponseItemCommitter;
    html_url: string;
    node_id: string;
    parents: Array<ReposListCommitsResponseItemParentsItem>;
    sha: string;
    url: string;
  };
  type ReposListCommitCommentsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListCommitCommentsResponseItem = {
    body: string;
    commit_id: string;
    created_at: string;
    html_url: string;
    id: number;
    line: number;
    node_id: string;
    path: string;
    position: number;
    updated_at: string;
    url: string;
    user: ReposListCommitCommentsResponseItemUser;
  };
  type ReposListCommentsForCommitResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListCommentsForCommitResponseItem = {
    body: string;
    commit_id: string;
    created_at: string;
    html_url: string;
    id: number;
    line: number;
    node_id: string;
    path: string;
    position: number;
    updated_at: string;
    url: string;
    user: ReposListCommentsForCommitResponseItemUser;
  };
  type ReposListCollaboratorsResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposListCollaboratorsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    permissions: ReposListCollaboratorsResponseItemPermissions;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListBranchesForHeadCommitResponseItemCommit = {
    sha: string;
    url: string;
  };
  type ReposListBranchesForHeadCommitResponseItem = {
    commit: ReposListBranchesForHeadCommitResponseItemCommit;
    name: string;
    protected: string;
  };
  type ReposListBranchesResponseItemProtectionRequiredStatusChecks = {
    contexts: Array<string>;
    enforcement_level: string;
  };
  type ReposListBranchesResponseItemProtection = {
    enabled: boolean;
    required_status_checks: ReposListBranchesResponseItemProtectionRequiredStatusChecks;
  };
  type ReposListBranchesResponseItemCommit = { sha: string; url: string };
  type ReposListBranchesResponseItem = {
    commit: ReposListBranchesResponseItemCommit;
    name: string;
    protected: boolean;
    protection: ReposListBranchesResponseItemProtection;
    protection_url: string;
  };
  type ReposListAssetsForReleaseResponseItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposListAssetsForReleaseResponseItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposListAssetsForReleaseResponseItemUploader;
    url: string;
  };
  type ReposListAppsWithAccessToProtectedBranchResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposListAppsWithAccessToProtectedBranchResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposListAppsWithAccessToProtectedBranchResponseItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposListAppsWithAccessToProtectedBranchResponseItemOwner;
    permissions: ReposListAppsWithAccessToProtectedBranchResponseItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposGetViewsResponseViewsItem = {
    count: number;
    timestamp: string;
    uniques: number;
  };
  type ReposGetViewsResponse = {
    count: number;
    uniques: number;
    views: Array<ReposGetViewsResponseViewsItem>;
  };
  type ReposGetUsersWithAccessToProtectedBranchResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetTopReferrersResponseItem = {
    count: number;
    referrer: string;
    uniques: number;
  };
  type ReposGetTopPathsResponseItem = {
    count: number;
    path: string;
    title: string;
    uniques: number;
  };
  type ReposGetTeamsWithAccessToProtectedBranchResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposGetReleaseByTagResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetReleaseByTagResponseAssetsItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetReleaseByTagResponseAssetsItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposGetReleaseByTagResponseAssetsItemUploader;
    url: string;
  };
  type ReposGetReleaseByTagResponse = {
    assets: Array<ReposGetReleaseByTagResponseAssetsItem>;
    assets_url: string;
    author: ReposGetReleaseByTagResponseAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposGetReleaseAssetResponseUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetReleaseAssetResponse = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposGetReleaseAssetResponseUploader;
    url: string;
  };
  type ReposGetReleaseResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetReleaseResponseAssetsItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetReleaseResponseAssetsItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposGetReleaseResponseAssetsItemUploader;
    url: string;
  };
  type ReposGetReleaseResponse = {
    assets: Array<ReposGetReleaseResponseAssetsItem>;
    assets_url: string;
    author: ReposGetReleaseResponseAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposGetReadmeResponseLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposGetReadmeResponse = {
    _links: ReposGetReadmeResponseLinks;
    content: string;
    download_url: string;
    encoding: string;
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type ReposGetProtectedBranchRestrictionsResponseUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetProtectedBranchRestrictionsResponseTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposGetProtectedBranchRestrictionsResponseAppsItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposGetProtectedBranchRestrictionsResponseAppsItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposGetProtectedBranchRestrictionsResponseAppsItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposGetProtectedBranchRestrictionsResponseAppsItemOwner;
    permissions: ReposGetProtectedBranchRestrictionsResponseAppsItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposGetProtectedBranchRestrictionsResponse = {
    apps: Array<ReposGetProtectedBranchRestrictionsResponseAppsItem>;
    apps_url: string;
    teams: Array<ReposGetProtectedBranchRestrictionsResponseTeamsItem>;
    teams_url: string;
    url: string;
    users: Array<ReposGetProtectedBranchRestrictionsResponseUsersItem>;
    users_url: string;
  };
  type ReposGetProtectedBranchRequiredStatusChecksResponse = {
    contexts: Array<string>;
    contexts_url: string;
    strict: boolean;
    url: string;
  };
  type ReposGetProtectedBranchRequiredSignaturesResponse = {
    enabled: boolean;
    url: string;
  };
  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions = {
    teams: Array<
      ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsTeamsItem
    >;
    teams_url: string;
    url: string;
    users: Array<
      ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictionsUsersItem
    >;
    users_url: string;
  };
  type ReposGetProtectedBranchPullRequestReviewEnforcementResponse = {
    dismiss_stale_reviews: boolean;
    dismissal_restrictions: ReposGetProtectedBranchPullRequestReviewEnforcementResponseDismissalRestrictions;
    require_code_owner_reviews: boolean;
    required_approving_review_count: number;
    url: string;
  };
  type ReposGetProtectedBranchAdminEnforcementResponse = {
    enabled: boolean;
    url: string;
  };
  type ReposGetParticipationStatsResponse = {
    all: Array<number>;
    owner: Array<number>;
  };
  type ReposGetPagesBuildResponsePusher = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetPagesBuildResponseError = { message: null };
  type ReposGetPagesBuildResponse = {
    commit: string;
    created_at: string;
    duration: number;
    error: ReposGetPagesBuildResponseError;
    pusher: ReposGetPagesBuildResponsePusher;
    status: string;
    updated_at: string;
    url: string;
  };
  type ReposGetPagesResponseSource = { branch: string; directory: string };
  type ReposGetPagesResponse = {
    cname: string;
    custom_404: boolean;
    html_url: string;
    source: ReposGetPagesResponseSource;
    status: string;
    url: string;
  };
  type ReposGetLatestReleaseResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetLatestReleaseResponseAssetsItemUploader = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetLatestReleaseResponseAssetsItem = {
    browser_download_url: string;
    content_type: string;
    created_at: string;
    download_count: number;
    id: number;
    label: string;
    name: string;
    node_id: string;
    size: number;
    state: string;
    updated_at: string;
    uploader: ReposGetLatestReleaseResponseAssetsItemUploader;
    url: string;
  };
  type ReposGetLatestReleaseResponse = {
    assets: Array<ReposGetLatestReleaseResponseAssetsItem>;
    assets_url: string;
    author: ReposGetLatestReleaseResponseAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposGetLatestPagesBuildResponsePusher = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetLatestPagesBuildResponseError = { message: null };
  type ReposGetLatestPagesBuildResponse = {
    commit: string;
    created_at: string;
    duration: number;
    error: ReposGetLatestPagesBuildResponseError;
    pusher: ReposGetLatestPagesBuildResponsePusher;
    status: string;
    updated_at: string;
    url: string;
  };
  type ReposGetHookResponseLastResponse = {
    code: null;
    message: null;
    status: string;
  };
  type ReposGetHookResponseConfig = {
    content_type: string;
    insecure_ssl: string;
    url: string;
  };
  type ReposGetHookResponse = {
    active: boolean;
    config: ReposGetHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    last_response: ReposGetHookResponseLastResponse;
    name: string;
    ping_url: string;
    test_url: string;
    type: string;
    updated_at: string;
    url: string;
  };
  type ReposGetDownloadResponse = {
    content_type: string;
    description: string;
    download_count: number;
    html_url: string;
    id: number;
    name: string;
    size: number;
    url: string;
  };
  type ReposGetDeploymentStatusResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetDeploymentStatusResponse = {
    created_at: string;
    creator: ReposGetDeploymentStatusResponseCreator;
    deployment_url: string;
    description: string;
    environment: string;
    environment_url: string;
    id: number;
    log_url: string;
    node_id: string;
    repository_url: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposGetDeploymentResponsePayload = { deploy: string };
  type ReposGetDeploymentResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetDeploymentResponse = {
    created_at: string;
    creator: ReposGetDeploymentResponseCreator;
    description: string;
    environment: string;
    id: number;
    node_id: string;
    original_environment: string;
    payload: ReposGetDeploymentResponsePayload;
    production_environment: boolean;
    ref: string;
    repository_url: string;
    sha: string;
    statuses_url: string;
    task: string;
    transient_environment: boolean;
    updated_at: string;
    url: string;
  };
  type ReposGetDeployKeyResponse = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type ReposGetContributorsStatsResponseItemWeeksItem = {
    a: number;
    c: number;
    d: number;
    w: string;
  };
  type ReposGetContributorsStatsResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetContributorsStatsResponseItem = {
    author: ReposGetContributorsStatsResponseItemAuthor;
    total: number;
    weeks: Array<ReposGetContributorsStatsResponseItemWeeksItem>;
  };
  type ReposGetContentsResponseItemLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposGetContentsResponseItem = {
    _links: ReposGetContentsResponseItemLinks;
    download_url: string | null;
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type ReposGetContentsResponseLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposGetContentsResponse =
    | {
        _links: ReposGetContentsResponseLinks;
        content?: string;
        download_url: string | null;
        encoding?: string;
        git_url: string;
        html_url: string;
        name: string;
        path: string;
        sha: string;
        size: number;
        type: string;
        url: string;
        target?: string;
        submodule_git_url?: string;
      }
    | Array<ReposGetContentsResponseItem>;
  type ReposGetCommitCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetCommitCommentResponse = {
    body: string;
    commit_id: string;
    created_at: string;
    html_url: string;
    id: number;
    line: number;
    node_id: string;
    path: string;
    position: number;
    updated_at: string;
    url: string;
    user: ReposGetCommitCommentResponseUser;
  };
  type ReposGetCommitActivityStatsResponseItem = {
    days: Array<number>;
    total: number;
    week: number;
  };
  type ReposGetCommitResponseStats = {
    additions: number;
    deletions: number;
    total: number;
  };
  type ReposGetCommitResponseParentsItem = { sha: string; url: string };
  type ReposGetCommitResponseFilesItem = {
    additions: number;
    blob_url: string;
    changes: number;
    deletions: number;
    filename: string;
    patch: string;
    raw_url: string;
    status: string;
  };
  type ReposGetCommitResponseCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetCommitResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposGetCommitResponseCommitTree = { sha: string; url: string };
  type ReposGetCommitResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposGetCommitResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposGetCommitResponseCommit = {
    author: ReposGetCommitResponseCommitAuthor;
    comment_count: number;
    committer: ReposGetCommitResponseCommitCommitter;
    message: string;
    tree: ReposGetCommitResponseCommitTree;
    url: string;
    verification: ReposGetCommitResponseCommitVerification;
  };
  type ReposGetCommitResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetCommitResponse = {
    author: ReposGetCommitResponseAuthor;
    comments_url: string;
    commit: ReposGetCommitResponseCommit;
    committer: ReposGetCommitResponseCommitter;
    files: Array<ReposGetCommitResponseFilesItem>;
    html_url: string;
    node_id: string;
    parents: Array<ReposGetCommitResponseParentsItem>;
    sha: string;
    stats: ReposGetCommitResponseStats;
    url: string;
  };
  type ReposGetCombinedStatusForRefResponseStatusesItem = {
    avatar_url: string;
    context: string;
    created_at: string;
    description: string;
    id: number;
    node_id: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposGetCombinedStatusForRefResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetCombinedStatusForRefResponseRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposGetCombinedStatusForRefResponseRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposGetCombinedStatusForRefResponse = {
    commit_url: string;
    repository: ReposGetCombinedStatusForRefResponseRepository;
    sha: string;
    state: string;
    statuses: Array<ReposGetCombinedStatusForRefResponseStatusesItem>;
    total_count: number;
    url: string;
  };
  type ReposGetCollaboratorPermissionLevelResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetCollaboratorPermissionLevelResponse = {
    permission: string;
    user: ReposGetCollaboratorPermissionLevelResponseUser;
  };
  type ReposGetClonesResponseClonesItem = {
    count: number;
    timestamp: string;
    uniques: number;
  };
  type ReposGetClonesResponse = {
    clones: Array<ReposGetClonesResponseClonesItem>;
    count: number;
    uniques: number;
  };
  type ReposGetBranchProtectionResponseRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetBranchProtectionResponseRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposGetBranchProtectionResponseRestrictionsAppsItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposGetBranchProtectionResponseRestrictionsAppsItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposGetBranchProtectionResponseRestrictionsAppsItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposGetBranchProtectionResponseRestrictionsAppsItemOwner;
    permissions: ReposGetBranchProtectionResponseRestrictionsAppsItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposGetBranchProtectionResponseRestrictions = {
    apps: Array<ReposGetBranchProtectionResponseRestrictionsAppsItem>;
    apps_url: string;
    teams: Array<ReposGetBranchProtectionResponseRestrictionsTeamsItem>;
    teams_url: string;
    url: string;
    users: Array<ReposGetBranchProtectionResponseRestrictionsUsersItem>;
    users_url: string;
  };
  type ReposGetBranchProtectionResponseRequiredStatusChecks = {
    contexts: Array<string>;
    contexts_url: string;
    strict: boolean;
    url: string;
  };
  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions = {
    teams: Array<
      ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsTeamsItem
    >;
    teams_url: string;
    url: string;
    users: Array<
      ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictionsUsersItem
    >;
    users_url: string;
  };
  type ReposGetBranchProtectionResponseRequiredPullRequestReviews = {
    dismiss_stale_reviews: boolean;
    dismissal_restrictions: ReposGetBranchProtectionResponseRequiredPullRequestReviewsDismissalRestrictions;
    require_code_owner_reviews: boolean;
    required_approving_review_count: number;
    url: string;
  };
  type ReposGetBranchProtectionResponseEnforceAdmins = {
    enabled: boolean;
    url: string;
  };
  type ReposGetBranchProtectionResponse = {
    enforce_admins: ReposGetBranchProtectionResponseEnforceAdmins;
    required_pull_request_reviews: ReposGetBranchProtectionResponseRequiredPullRequestReviews;
    required_status_checks: ReposGetBranchProtectionResponseRequiredStatusChecks;
    restrictions: ReposGetBranchProtectionResponseRestrictions;
    url: string;
  };
  type ReposGetBranchResponseProtectionRequiredStatusChecks = {
    contexts: Array<string>;
    enforcement_level: string;
  };
  type ReposGetBranchResponseProtection = {
    enabled: boolean;
    required_status_checks: ReposGetBranchResponseProtectionRequiredStatusChecks;
  };
  type ReposGetBranchResponseCommitParentsItem = { sha: string; url: string };
  type ReposGetBranchResponseCommitCommitter = {
    avatar_url: string;
    gravatar_id: string;
    id: number;
    login: string;
    url: string;
  };
  type ReposGetBranchResponseCommitCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposGetBranchResponseCommitCommitTree = { sha: string; url: string };
  type ReposGetBranchResponseCommitCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposGetBranchResponseCommitCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposGetBranchResponseCommitCommit = {
    author: ReposGetBranchResponseCommitCommitAuthor;
    committer: ReposGetBranchResponseCommitCommitCommitter;
    message: string;
    tree: ReposGetBranchResponseCommitCommitTree;
    url: string;
    verification: ReposGetBranchResponseCommitCommitVerification;
  };
  type ReposGetBranchResponseCommitAuthor = {
    avatar_url: string;
    gravatar_id: string;
    id: number;
    login: string;
    url: string;
  };
  type ReposGetBranchResponseCommit = {
    author: ReposGetBranchResponseCommitAuthor;
    commit: ReposGetBranchResponseCommitCommit;
    committer: ReposGetBranchResponseCommitCommitter;
    node_id: string;
    parents: Array<ReposGetBranchResponseCommitParentsItem>;
    sha: string;
    url: string;
  };
  type ReposGetBranchResponseLinks = { html: string; self: string };
  type ReposGetBranchResponse = {
    _links: ReposGetBranchResponseLinks;
    commit: ReposGetBranchResponseCommit;
    name: string;
    protected: boolean;
    protection: ReposGetBranchResponseProtection;
    protection_url: string;
  };
  type ReposGetAppsWithAccessToProtectedBranchResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposGetAppsWithAccessToProtectedBranchResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposGetAppsWithAccessToProtectedBranchResponseItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposGetAppsWithAccessToProtectedBranchResponseItemOwner;
    permissions: ReposGetAppsWithAccessToProtectedBranchResponseItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposGetResponseSourcePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposGetResponseSourceOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetResponseSource = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposGetResponseSourceOwner;
    permissions: ReposGetResponseSourcePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposGetResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposGetResponseParentPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposGetResponseParentOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetResponseParent = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposGetResponseParentOwner;
    permissions: ReposGetResponseParentPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposGetResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetResponseOrganization = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposGetResponseLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type ReposGetResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: ReposGetResponseLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    organization: ReposGetResponseOrganization;
    owner: ReposGetResponseOwner;
    parent: ReposGetResponseParent;
    permissions: ReposGetResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    source: ReposGetResponseSource;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposEnablePagesSiteResponseSource = {
    branch: string;
    directory: string;
  };
  type ReposEnablePagesSiteResponse = {
    cname: string;
    custom_404: boolean;
    html_url: string;
    source: ReposEnablePagesSiteResponseSource;
    status: string;
    url: string;
  };
  type ReposDeleteFileResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposDeleteFileResponseCommitTree = { sha: string; url: string };
  type ReposDeleteFileResponseCommitParentsItem = {
    html_url: string;
    sha: string;
    url: string;
  };
  type ReposDeleteFileResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposDeleteFileResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposDeleteFileResponseCommit = {
    author: ReposDeleteFileResponseCommitAuthor;
    committer: ReposDeleteFileResponseCommitCommitter;
    html_url: string;
    message: string;
    node_id: string;
    parents: Array<ReposDeleteFileResponseCommitParentsItem>;
    sha: string;
    tree: ReposDeleteFileResponseCommitTree;
    url: string;
    verification: ReposDeleteFileResponseCommitVerification;
  };
  type ReposDeleteFileResponse = {
    commit: ReposDeleteFileResponseCommit;
    content: null;
  };
  type ReposDeleteResponse = { documentation_url: string; message: string };
  type ReposCreateUsingTemplateResponseTemplateRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposCreateUsingTemplateResponseTemplateRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateUsingTemplateResponseTemplateRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposCreateUsingTemplateResponseTemplateRepositoryOwner;
    permissions: ReposCreateUsingTemplateResponseTemplateRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposCreateUsingTemplateResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposCreateUsingTemplateResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateUsingTemplateResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposCreateUsingTemplateResponseOwner;
    permissions: ReposCreateUsingTemplateResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: ReposCreateUsingTemplateResponseTemplateRepository;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposCreateStatusResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateStatusResponse = {
    avatar_url: string;
    context: string;
    created_at: string;
    creator: ReposCreateStatusResponseCreator;
    description: string;
    id: number;
    node_id: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposCreateReleaseResponseAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateReleaseResponse = {
    assets: Array<any>;
    assets_url: string;
    author: ReposCreateReleaseResponseAuthor;
    body: string;
    created_at: string;
    draft: boolean;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    prerelease: boolean;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    upload_url: string;
    url: string;
    zipball_url: string;
  };
  type ReposCreateOrUpdateFileResponseContentLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposCreateOrUpdateFileResponseContent = {
    _links: ReposCreateOrUpdateFileResponseContentLinks;
    download_url: string;
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type ReposCreateOrUpdateFileResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposCreateOrUpdateFileResponseCommitTree = { sha: string; url: string };
  type ReposCreateOrUpdateFileResponseCommitParentsItem = {
    html_url: string;
    sha: string;
    url: string;
  };
  type ReposCreateOrUpdateFileResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCreateOrUpdateFileResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCreateOrUpdateFileResponseCommit = {
    author: ReposCreateOrUpdateFileResponseCommitAuthor;
    committer: ReposCreateOrUpdateFileResponseCommitCommitter;
    html_url: string;
    message: string;
    node_id: string;
    parents: Array<ReposCreateOrUpdateFileResponseCommitParentsItem>;
    sha: string;
    tree: ReposCreateOrUpdateFileResponseCommitTree;
    url: string;
    verification: ReposCreateOrUpdateFileResponseCommitVerification;
  };
  type ReposCreateOrUpdateFileResponse = {
    commit: ReposCreateOrUpdateFileResponseCommit;
    content: ReposCreateOrUpdateFileResponseContent;
  };
  type ReposCreateInOrgResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposCreateInOrgResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateInOrgResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposCreateInOrgResponseOwner;
    permissions: ReposCreateInOrgResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposCreateHookResponseLastResponse = {
    code: null;
    message: null;
    status: string;
  };
  type ReposCreateHookResponseConfig = {
    content_type: string;
    insecure_ssl: string;
    url: string;
  };
  type ReposCreateHookResponse = {
    active: boolean;
    config: ReposCreateHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    last_response: ReposCreateHookResponseLastResponse;
    name: string;
    ping_url: string;
    test_url: string;
    type: string;
    updated_at: string;
    url: string;
  };
  type ReposCreateForkResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposCreateForkResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateForkResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposCreateForkResponseOwner;
    permissions: ReposCreateForkResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposCreateForAuthenticatedUserResponsePermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ReposCreateForAuthenticatedUserResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateForAuthenticatedUserResponse = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ReposCreateForAuthenticatedUserResponseOwner;
    permissions: ReposCreateForAuthenticatedUserResponsePermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ReposCreateFileResponseContentLinks = {
    git: string;
    html: string;
    self: string;
  };
  type ReposCreateFileResponseContent = {
    _links: ReposCreateFileResponseContentLinks;
    download_url: string;
    git_url: string;
    html_url: string;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type ReposCreateFileResponseCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposCreateFileResponseCommitTree = { sha: string; url: string };
  type ReposCreateFileResponseCommitParentsItem = {
    html_url: string;
    sha: string;
    url: string;
  };
  type ReposCreateFileResponseCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCreateFileResponseCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCreateFileResponseCommit = {
    author: ReposCreateFileResponseCommitAuthor;
    committer: ReposCreateFileResponseCommitCommitter;
    html_url: string;
    message: string;
    node_id: string;
    parents: Array<ReposCreateFileResponseCommitParentsItem>;
    sha: string;
    tree: ReposCreateFileResponseCommitTree;
    url: string;
    verification: ReposCreateFileResponseCommitVerification;
  };
  type ReposCreateFileResponse = {
    commit: ReposCreateFileResponseCommit;
    content: ReposCreateFileResponseContent;
  };
  type ReposCreateDeploymentStatusResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateDeploymentStatusResponse = {
    created_at: string;
    creator: ReposCreateDeploymentStatusResponseCreator;
    deployment_url: string;
    description: string;
    environment: string;
    environment_url: string;
    id: number;
    log_url: string;
    node_id: string;
    repository_url: string;
    state: string;
    target_url: string;
    updated_at: string;
    url: string;
  };
  type ReposCreateDeploymentResponsePayload = { deploy: string };
  type ReposCreateDeploymentResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateDeploymentResponse = {
    created_at: string;
    creator: ReposCreateDeploymentResponseCreator;
    description: string;
    environment: string;
    id: number;
    node_id: string;
    original_environment: string;
    payload: ReposCreateDeploymentResponsePayload;
    production_environment: boolean;
    ref: string;
    repository_url: string;
    sha: string;
    statuses_url: string;
    task: string;
    transient_environment: boolean;
    updated_at: string;
    url: string;
  };
  type ReposCreateCommitCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCreateCommitCommentResponse = {
    body: string;
    commit_id: string;
    created_at: string;
    html_url: string;
    id: number;
    line: number;
    node_id: string;
    path: string;
    position: number;
    updated_at: string;
    url: string;
    user: ReposCreateCommitCommentResponseUser;
  };
  type ReposCompareCommitsResponseMergeBaseCommitParentsItem = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommitTree = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommitCommit = {
    author: ReposCompareCommitsResponseMergeBaseCommitCommitAuthor;
    comment_count: number;
    committer: ReposCompareCommitsResponseMergeBaseCommitCommitCommitter;
    message: string;
    tree: ReposCompareCommitsResponseMergeBaseCommitCommitTree;
    url: string;
    verification: ReposCompareCommitsResponseMergeBaseCommitCommitVerification;
  };
  type ReposCompareCommitsResponseMergeBaseCommitAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseMergeBaseCommit = {
    author: ReposCompareCommitsResponseMergeBaseCommitAuthor;
    comments_url: string;
    commit: ReposCompareCommitsResponseMergeBaseCommitCommit;
    committer: ReposCompareCommitsResponseMergeBaseCommitCommitter;
    html_url: string;
    node_id: string;
    parents: Array<ReposCompareCommitsResponseMergeBaseCommitParentsItem>;
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseFilesItem = {
    additions: number;
    blob_url: string;
    changes: number;
    contents_url: string;
    deletions: number;
    filename: string;
    patch: string;
    raw_url: string;
    sha: string;
    status: string;
  };
  type ReposCompareCommitsResponseCommitsItemParentsItem = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseCommitsItemCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseCommitsItemCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposCompareCommitsResponseCommitsItemCommitTree = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseCommitsItemCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseCommitsItemCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseCommitsItemCommit = {
    author: ReposCompareCommitsResponseCommitsItemCommitAuthor;
    comment_count: number;
    committer: ReposCompareCommitsResponseCommitsItemCommitCommitter;
    message: string;
    tree: ReposCompareCommitsResponseCommitsItemCommitTree;
    url: string;
    verification: ReposCompareCommitsResponseCommitsItemCommitVerification;
  };
  type ReposCompareCommitsResponseCommitsItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseCommitsItem = {
    author: ReposCompareCommitsResponseCommitsItemAuthor;
    comments_url: string;
    commit: ReposCompareCommitsResponseCommitsItemCommit;
    committer: ReposCompareCommitsResponseCommitsItemCommitter;
    html_url: string;
    node_id: string;
    parents: Array<ReposCompareCommitsResponseCommitsItemParentsItem>;
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseBaseCommitParentsItem = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseBaseCommitCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseBaseCommitCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type ReposCompareCommitsResponseBaseCommitCommitTree = {
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponseBaseCommitCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseBaseCommitCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type ReposCompareCommitsResponseBaseCommitCommit = {
    author: ReposCompareCommitsResponseBaseCommitCommitAuthor;
    comment_count: number;
    committer: ReposCompareCommitsResponseBaseCommitCommitCommitter;
    message: string;
    tree: ReposCompareCommitsResponseBaseCommitCommitTree;
    url: string;
    verification: ReposCompareCommitsResponseBaseCommitCommitVerification;
  };
  type ReposCompareCommitsResponseBaseCommitAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposCompareCommitsResponseBaseCommit = {
    author: ReposCompareCommitsResponseBaseCommitAuthor;
    comments_url: string;
    commit: ReposCompareCommitsResponseBaseCommitCommit;
    committer: ReposCompareCommitsResponseBaseCommitCommitter;
    html_url: string;
    node_id: string;
    parents: Array<ReposCompareCommitsResponseBaseCommitParentsItem>;
    sha: string;
    url: string;
  };
  type ReposCompareCommitsResponse = {
    ahead_by: number;
    base_commit: ReposCompareCommitsResponseBaseCommit;
    behind_by: number;
    commits: Array<ReposCompareCommitsResponseCommitsItem>;
    diff_url: string;
    files: Array<ReposCompareCommitsResponseFilesItem>;
    html_url: string;
    merge_base_commit: ReposCompareCommitsResponseMergeBaseCommit;
    patch_url: string;
    permalink_url: string;
    status: string;
    total_commits: number;
    url: string;
  };
  type ReposAddProtectedBranchUserRestrictionsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposAddProtectedBranchTeamRestrictionsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type ReposAddProtectedBranchRequiredSignaturesResponse = {
    enabled: boolean;
    url: string;
  };
  type ReposAddProtectedBranchAppRestrictionsResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ReposAddProtectedBranchAppRestrictionsResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ReposAddProtectedBranchAppRestrictionsResponseItem = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ReposAddProtectedBranchAppRestrictionsResponseItemOwner;
    permissions: ReposAddProtectedBranchAppRestrictionsResponseItemPermissions;
    slug: string;
    updated_at: string;
  };
  type ReposAddProtectedBranchAdminEnforcementResponse = {
    enabled: boolean;
    url: string;
  };
  type ReposAddDeployKeyResponse = {
    created_at: string;
    id: number;
    key: string;
    read_only: boolean;
    title: string;
    url: string;
    verified: boolean;
  };
  type ReposAddCollaboratorResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposAddCollaboratorResponseRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ReposAddCollaboratorResponseRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ReposAddCollaboratorResponseInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposAddCollaboratorResponseInvitee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReposAddCollaboratorResponse = {
    created_at: string;
    html_url: string;
    id: number;
    invitee: ReposAddCollaboratorResponseInvitee;
    inviter: ReposAddCollaboratorResponseInviter;
    permissions: string;
    repository: ReposAddCollaboratorResponseRepository;
    url: string;
  };
  type ReactionsListForTeamDiscussionCommentResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForTeamDiscussionCommentResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForTeamDiscussionCommentResponseItemUser;
  };
  type ReactionsListForTeamDiscussionResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForTeamDiscussionResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForTeamDiscussionResponseItemUser;
  };
  type ReactionsListForPullRequestReviewCommentResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForPullRequestReviewCommentResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForPullRequestReviewCommentResponseItemUser;
  };
  type ReactionsListForIssueCommentResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForIssueCommentResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForIssueCommentResponseItemUser;
  };
  type ReactionsListForIssueResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForIssueResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForIssueResponseItemUser;
  };
  type ReactionsListForCommitCommentResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsListForCommitCommentResponseItem = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsListForCommitCommentResponseItemUser;
  };
  type ReactionsCreateForTeamDiscussionCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForTeamDiscussionCommentResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForTeamDiscussionCommentResponseUser;
  };
  type ReactionsCreateForTeamDiscussionResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForTeamDiscussionResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForTeamDiscussionResponseUser;
  };
  type ReactionsCreateForPullRequestReviewCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForPullRequestReviewCommentResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForPullRequestReviewCommentResponseUser;
  };
  type ReactionsCreateForIssueCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForIssueCommentResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForIssueCommentResponseUser;
  };
  type ReactionsCreateForIssueResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForIssueResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForIssueResponseUser;
  };
  type ReactionsCreateForCommitCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ReactionsCreateForCommitCommentResponse = {
    content: string;
    created_at: string;
    id: number;
    node_id: string;
    user: ReactionsCreateForCommitCommentResponseUser;
  };
  type RateLimitGetResponseResourcesSearch = {
    limit: number;
    remaining: number;
    reset: number;
  };
  type RateLimitGetResponseResourcesIntegrationManifest = {
    limit: number;
    remaining: number;
    reset: number;
  };
  type RateLimitGetResponseResourcesGraphql = {
    limit: number;
    remaining: number;
    reset: number;
  };
  type RateLimitGetResponseResourcesCore = {
    limit: number;
    remaining: number;
    reset: number;
  };
  type RateLimitGetResponseResources = {
    core: RateLimitGetResponseResourcesCore;
    graphql: RateLimitGetResponseResourcesGraphql;
    integration_manifest: RateLimitGetResponseResourcesIntegrationManifest;
    search: RateLimitGetResponseResourcesSearch;
  };
  type RateLimitGetResponseRate = {
    limit: number;
    remaining: number;
    reset: number;
  };
  type RateLimitGetResponse = {
    rate: RateLimitGetResponseRate;
    resources: RateLimitGetResponseResources;
  };
  type PullsUpdateReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateReviewResponseLinksPullRequest = { href: string };
  type PullsUpdateReviewResponseLinksHtml = { href: string };
  type PullsUpdateReviewResponseLinks = {
    html: PullsUpdateReviewResponseLinksHtml;
    pull_request: PullsUpdateReviewResponseLinksPullRequest;
  };
  type PullsUpdateReviewResponse = {
    _links: PullsUpdateReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsUpdateReviewResponseUser;
  };
  type PullsUpdateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateCommentResponseLinksSelf = { href: string };
  type PullsUpdateCommentResponseLinksPullRequest = { href: string };
  type PullsUpdateCommentResponseLinksHtml = { href: string };
  type PullsUpdateCommentResponseLinks = {
    html: PullsUpdateCommentResponseLinksHtml;
    pull_request: PullsUpdateCommentResponseLinksPullRequest;
    self: PullsUpdateCommentResponseLinksSelf;
  };
  type PullsUpdateCommentResponse = {
    _links: PullsUpdateCommentResponseLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsUpdateCommentResponseUser;
  };
  type PullsUpdateBranchResponse = { message: string; url: string };
  type PullsUpdateResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsUpdateResponseRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsUpdateResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsUpdateResponseMergedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsUpdateResponseHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsUpdateResponseHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsUpdateResponseHeadRepoOwner;
    permissions: PullsUpdateResponseHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsUpdateResponseHead = {
    label: string;
    ref: string;
    repo: PullsUpdateResponseHeadRepo;
    sha: string;
    user: PullsUpdateResponseHeadUser;
  };
  type PullsUpdateResponseBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsUpdateResponseBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsUpdateResponseBaseRepoOwner;
    permissions: PullsUpdateResponseBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsUpdateResponseBase = {
    label: string;
    ref: string;
    repo: PullsUpdateResponseBaseRepo;
    sha: string;
    user: PullsUpdateResponseBaseUser;
  };
  type PullsUpdateResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsUpdateResponseLinksStatuses = { href: string };
  type PullsUpdateResponseLinksSelf = { href: string };
  type PullsUpdateResponseLinksReviewComments = { href: string };
  type PullsUpdateResponseLinksReviewComment = { href: string };
  type PullsUpdateResponseLinksIssue = { href: string };
  type PullsUpdateResponseLinksHtml = { href: string };
  type PullsUpdateResponseLinksCommits = { href: string };
  type PullsUpdateResponseLinksComments = { href: string };
  type PullsUpdateResponseLinks = {
    comments: PullsUpdateResponseLinksComments;
    commits: PullsUpdateResponseLinksCommits;
    html: PullsUpdateResponseLinksHtml;
    issue: PullsUpdateResponseLinksIssue;
    review_comment: PullsUpdateResponseLinksReviewComment;
    review_comments: PullsUpdateResponseLinksReviewComments;
    self: PullsUpdateResponseLinksSelf;
    statuses: PullsUpdateResponseLinksStatuses;
  };
  type PullsUpdateResponse = {
    _links: PullsUpdateResponseLinks;
    active_lock_reason: string;
    additions: number;
    assignee: PullsUpdateResponseAssignee;
    assignees: Array<PullsUpdateResponseAssigneesItem>;
    author_association: string;
    base: PullsUpdateResponseBase;
    body: string;
    changed_files: number;
    closed_at: string;
    comments: number;
    comments_url: string;
    commits: number;
    commits_url: string;
    created_at: string;
    deletions: number;
    diff_url: string;
    draft: boolean;
    head: PullsUpdateResponseHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsUpdateResponseLabelsItem>;
    locked: boolean;
    maintainer_can_modify: boolean;
    merge_commit_sha: string;
    mergeable: boolean;
    mergeable_state: string;
    merged: boolean;
    merged_at: string;
    merged_by: PullsUpdateResponseMergedBy;
    milestone: PullsUpdateResponseMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    rebaseable: boolean;
    requested_reviewers: Array<PullsUpdateResponseRequestedReviewersItem>;
    requested_teams: Array<PullsUpdateResponseRequestedTeamsItem>;
    review_comment_url: string;
    review_comments: number;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsUpdateResponseUser;
  };
  type PullsSubmitReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsSubmitReviewResponseLinksPullRequest = { href: string };
  type PullsSubmitReviewResponseLinksHtml = { href: string };
  type PullsSubmitReviewResponseLinks = {
    html: PullsSubmitReviewResponseLinksHtml;
    pull_request: PullsSubmitReviewResponseLinksPullRequest;
  };
  type PullsSubmitReviewResponse = {
    _links: PullsSubmitReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsSubmitReviewResponseUser;
  };
  type PullsMergeResponse = { merged: boolean; message: string; sha: string };
  type PullsListReviewsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListReviewsResponseItemLinksPullRequest = { href: string };
  type PullsListReviewsResponseItemLinksHtml = { href: string };
  type PullsListReviewsResponseItemLinks = {
    html: PullsListReviewsResponseItemLinksHtml;
    pull_request: PullsListReviewsResponseItemLinksPullRequest;
  };
  type PullsListReviewsResponseItem = {
    _links: PullsListReviewsResponseItemLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsListReviewsResponseItemUser;
  };
  type PullsListReviewRequestsResponseUsersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListReviewRequestsResponseTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsListReviewRequestsResponse = {
    teams: Array<PullsListReviewRequestsResponseTeamsItem>;
    users: Array<PullsListReviewRequestsResponseUsersItem>;
  };
  type PullsListFilesResponseItem = {
    additions: number;
    blob_url: string;
    changes: number;
    contents_url: string;
    deletions: number;
    filename: string;
    patch: string;
    raw_url: string;
    sha: string;
    status: string;
  };
  type PullsListCommitsResponseItemParentsItem = { sha: string; url: string };
  type PullsListCommitsResponseItemCommitter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListCommitsResponseItemCommitVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type PullsListCommitsResponseItemCommitTree = { sha: string; url: string };
  type PullsListCommitsResponseItemCommitCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type PullsListCommitsResponseItemCommitAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type PullsListCommitsResponseItemCommit = {
    author: PullsListCommitsResponseItemCommitAuthor;
    comment_count: number;
    committer: PullsListCommitsResponseItemCommitCommitter;
    message: string;
    tree: PullsListCommitsResponseItemCommitTree;
    url: string;
    verification: PullsListCommitsResponseItemCommitVerification;
  };
  type PullsListCommitsResponseItemAuthor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListCommitsResponseItem = {
    author: PullsListCommitsResponseItemAuthor;
    comments_url: string;
    commit: PullsListCommitsResponseItemCommit;
    committer: PullsListCommitsResponseItemCommitter;
    html_url: string;
    node_id: string;
    parents: Array<PullsListCommitsResponseItemParentsItem>;
    sha: string;
    url: string;
  };
  type PullsListCommentsForRepoResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListCommentsForRepoResponseItemLinksSelf = { href: string };
  type PullsListCommentsForRepoResponseItemLinksPullRequest = { href: string };
  type PullsListCommentsForRepoResponseItemLinksHtml = { href: string };
  type PullsListCommentsForRepoResponseItemLinks = {
    html: PullsListCommentsForRepoResponseItemLinksHtml;
    pull_request: PullsListCommentsForRepoResponseItemLinksPullRequest;
    self: PullsListCommentsForRepoResponseItemLinksSelf;
  };
  type PullsListCommentsForRepoResponseItem = {
    _links: PullsListCommentsForRepoResponseItemLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsListCommentsForRepoResponseItemUser;
  };
  type PullsListCommentsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListCommentsResponseItemLinksSelf = { href: string };
  type PullsListCommentsResponseItemLinksPullRequest = { href: string };
  type PullsListCommentsResponseItemLinksHtml = { href: string };
  type PullsListCommentsResponseItemLinks = {
    html: PullsListCommentsResponseItemLinksHtml;
    pull_request: PullsListCommentsResponseItemLinksPullRequest;
    self: PullsListCommentsResponseItemLinksSelf;
  };
  type PullsListCommentsResponseItem = {
    _links: PullsListCommentsResponseItemLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsListCommentsResponseItemUser;
  };
  type PullsListResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsListResponseItemRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsListResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsListResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsListResponseItemHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsListResponseItemHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsListResponseItemHeadRepoOwner;
    permissions: PullsListResponseItemHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsListResponseItemHead = {
    label: string;
    ref: string;
    repo: PullsListResponseItemHeadRepo;
    sha: string;
    user: PullsListResponseItemHeadUser;
  };
  type PullsListResponseItemBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsListResponseItemBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsListResponseItemBaseRepoOwner;
    permissions: PullsListResponseItemBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsListResponseItemBase = {
    label: string;
    ref: string;
    repo: PullsListResponseItemBaseRepo;
    sha: string;
    user: PullsListResponseItemBaseUser;
  };
  type PullsListResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsListResponseItemLinksStatuses = { href: string };
  type PullsListResponseItemLinksSelf = { href: string };
  type PullsListResponseItemLinksReviewComments = { href: string };
  type PullsListResponseItemLinksReviewComment = { href: string };
  type PullsListResponseItemLinksIssue = { href: string };
  type PullsListResponseItemLinksHtml = { href: string };
  type PullsListResponseItemLinksCommits = { href: string };
  type PullsListResponseItemLinksComments = { href: string };
  type PullsListResponseItemLinks = {
    comments: PullsListResponseItemLinksComments;
    commits: PullsListResponseItemLinksCommits;
    html: PullsListResponseItemLinksHtml;
    issue: PullsListResponseItemLinksIssue;
    review_comment: PullsListResponseItemLinksReviewComment;
    review_comments: PullsListResponseItemLinksReviewComments;
    self: PullsListResponseItemLinksSelf;
    statuses: PullsListResponseItemLinksStatuses;
  };
  type PullsListResponseItem = {
    _links: PullsListResponseItemLinks;
    active_lock_reason: string;
    assignee: PullsListResponseItemAssignee;
    assignees: Array<PullsListResponseItemAssigneesItem>;
    author_association: string;
    base: PullsListResponseItemBase;
    body: string;
    closed_at: string;
    comments_url: string;
    commits_url: string;
    created_at: string;
    diff_url: string;
    draft: boolean;
    head: PullsListResponseItemHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsListResponseItemLabelsItem>;
    locked: boolean;
    merge_commit_sha: string;
    merged_at: string;
    milestone: PullsListResponseItemMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    requested_reviewers: Array<PullsListResponseItemRequestedReviewersItem>;
    requested_teams: Array<PullsListResponseItemRequestedTeamsItem>;
    review_comment_url: string;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsListResponseItemUser;
  };
  type PullsGetReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetReviewResponseLinksPullRequest = { href: string };
  type PullsGetReviewResponseLinksHtml = { href: string };
  type PullsGetReviewResponseLinks = {
    html: PullsGetReviewResponseLinksHtml;
    pull_request: PullsGetReviewResponseLinksPullRequest;
  };
  type PullsGetReviewResponse = {
    _links: PullsGetReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsGetReviewResponseUser;
  };
  type PullsGetCommentsForReviewResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetCommentsForReviewResponseItemLinksSelf = { href: string };
  type PullsGetCommentsForReviewResponseItemLinksPullRequest = { href: string };
  type PullsGetCommentsForReviewResponseItemLinksHtml = { href: string };
  type PullsGetCommentsForReviewResponseItemLinks = {
    html: PullsGetCommentsForReviewResponseItemLinksHtml;
    pull_request: PullsGetCommentsForReviewResponseItemLinksPullRequest;
    self: PullsGetCommentsForReviewResponseItemLinksSelf;
  };
  type PullsGetCommentsForReviewResponseItem = {
    _links: PullsGetCommentsForReviewResponseItemLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    node_id: string;
    original_commit_id: string;
    original_position: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    updated_at: string;
    url: string;
    user: PullsGetCommentsForReviewResponseItemUser;
  };
  type PullsGetCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetCommentResponseLinksSelf = { href: string };
  type PullsGetCommentResponseLinksPullRequest = { href: string };
  type PullsGetCommentResponseLinksHtml = { href: string };
  type PullsGetCommentResponseLinks = {
    html: PullsGetCommentResponseLinksHtml;
    pull_request: PullsGetCommentResponseLinksPullRequest;
    self: PullsGetCommentResponseLinksSelf;
  };
  type PullsGetCommentResponse = {
    _links: PullsGetCommentResponseLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsGetCommentResponseUser;
  };
  type PullsGetResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsGetResponseRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsGetResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsGetResponseMergedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsGetResponseHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsGetResponseHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsGetResponseHeadRepoOwner;
    permissions: PullsGetResponseHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsGetResponseHead = {
    label: string;
    ref: string;
    repo: PullsGetResponseHeadRepo;
    sha: string;
    user: PullsGetResponseHeadUser;
  };
  type PullsGetResponseBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsGetResponseBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsGetResponseBaseRepoOwner;
    permissions: PullsGetResponseBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsGetResponseBase = {
    label: string;
    ref: string;
    repo: PullsGetResponseBaseRepo;
    sha: string;
    user: PullsGetResponseBaseUser;
  };
  type PullsGetResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsGetResponseLinksStatuses = { href: string };
  type PullsGetResponseLinksSelf = { href: string };
  type PullsGetResponseLinksReviewComments = { href: string };
  type PullsGetResponseLinksReviewComment = { href: string };
  type PullsGetResponseLinksIssue = { href: string };
  type PullsGetResponseLinksHtml = { href: string };
  type PullsGetResponseLinksCommits = { href: string };
  type PullsGetResponseLinksComments = { href: string };
  type PullsGetResponseLinks = {
    comments: PullsGetResponseLinksComments;
    commits: PullsGetResponseLinksCommits;
    html: PullsGetResponseLinksHtml;
    issue: PullsGetResponseLinksIssue;
    review_comment: PullsGetResponseLinksReviewComment;
    review_comments: PullsGetResponseLinksReviewComments;
    self: PullsGetResponseLinksSelf;
    statuses: PullsGetResponseLinksStatuses;
  };
  type PullsGetResponse = {
    _links: PullsGetResponseLinks;
    active_lock_reason: string;
    additions: number;
    assignee: PullsGetResponseAssignee;
    assignees: Array<PullsGetResponseAssigneesItem>;
    author_association: string;
    base: PullsGetResponseBase;
    body: string;
    changed_files: number;
    closed_at: string;
    comments: number;
    comments_url: string;
    commits: number;
    commits_url: string;
    created_at: string;
    deletions: number;
    diff_url: string;
    draft: boolean;
    head: PullsGetResponseHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsGetResponseLabelsItem>;
    locked: boolean;
    maintainer_can_modify: boolean;
    merge_commit_sha: string;
    mergeable: boolean;
    mergeable_state: string;
    merged: boolean;
    merged_at: string;
    merged_by: PullsGetResponseMergedBy;
    milestone: PullsGetResponseMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    rebaseable: boolean;
    requested_reviewers: Array<PullsGetResponseRequestedReviewersItem>;
    requested_teams: Array<PullsGetResponseRequestedTeamsItem>;
    review_comment_url: string;
    review_comments: number;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsGetResponseUser;
  };
  type PullsDismissReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsDismissReviewResponseLinksPullRequest = { href: string };
  type PullsDismissReviewResponseLinksHtml = { href: string };
  type PullsDismissReviewResponseLinks = {
    html: PullsDismissReviewResponseLinksHtml;
    pull_request: PullsDismissReviewResponseLinksPullRequest;
  };
  type PullsDismissReviewResponse = {
    _links: PullsDismissReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsDismissReviewResponseUser;
  };
  type PullsDeletePendingReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsDeletePendingReviewResponseLinksPullRequest = { href: string };
  type PullsDeletePendingReviewResponseLinksHtml = { href: string };
  type PullsDeletePendingReviewResponseLinks = {
    html: PullsDeletePendingReviewResponseLinksHtml;
    pull_request: PullsDeletePendingReviewResponseLinksPullRequest;
  };
  type PullsDeletePendingReviewResponse = {
    _links: PullsDeletePendingReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsDeletePendingReviewResponseUser;
  };
  type PullsCreateReviewRequestResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsCreateReviewRequestResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateReviewRequestResponseHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateReviewRequestResponseHeadRepoOwner;
    permissions: PullsCreateReviewRequestResponseHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateReviewRequestResponseHead = {
    label: string;
    ref: string;
    repo: PullsCreateReviewRequestResponseHeadRepo;
    sha: string;
    user: PullsCreateReviewRequestResponseHeadUser;
  };
  type PullsCreateReviewRequestResponseBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateReviewRequestResponseBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateReviewRequestResponseBaseRepoOwner;
    permissions: PullsCreateReviewRequestResponseBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateReviewRequestResponseBase = {
    label: string;
    ref: string;
    repo: PullsCreateReviewRequestResponseBaseRepo;
    sha: string;
    user: PullsCreateReviewRequestResponseBaseUser;
  };
  type PullsCreateReviewRequestResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewRequestResponseLinksStatuses = { href: string };
  type PullsCreateReviewRequestResponseLinksSelf = { href: string };
  type PullsCreateReviewRequestResponseLinksReviewComments = { href: string };
  type PullsCreateReviewRequestResponseLinksReviewComment = { href: string };
  type PullsCreateReviewRequestResponseLinksIssue = { href: string };
  type PullsCreateReviewRequestResponseLinksHtml = { href: string };
  type PullsCreateReviewRequestResponseLinksCommits = { href: string };
  type PullsCreateReviewRequestResponseLinksComments = { href: string };
  type PullsCreateReviewRequestResponseLinks = {
    comments: PullsCreateReviewRequestResponseLinksComments;
    commits: PullsCreateReviewRequestResponseLinksCommits;
    html: PullsCreateReviewRequestResponseLinksHtml;
    issue: PullsCreateReviewRequestResponseLinksIssue;
    review_comment: PullsCreateReviewRequestResponseLinksReviewComment;
    review_comments: PullsCreateReviewRequestResponseLinksReviewComments;
    self: PullsCreateReviewRequestResponseLinksSelf;
    statuses: PullsCreateReviewRequestResponseLinksStatuses;
  };
  type PullsCreateReviewRequestResponse = {
    _links: PullsCreateReviewRequestResponseLinks;
    active_lock_reason: string;
    assignee: PullsCreateReviewRequestResponseAssignee;
    assignees: Array<PullsCreateReviewRequestResponseAssigneesItem>;
    author_association: string;
    base: PullsCreateReviewRequestResponseBase;
    body: string;
    closed_at: string;
    comments_url: string;
    commits_url: string;
    created_at: string;
    diff_url: string;
    draft: boolean;
    head: PullsCreateReviewRequestResponseHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsCreateReviewRequestResponseLabelsItem>;
    locked: boolean;
    merge_commit_sha: string;
    merged_at: string;
    milestone: PullsCreateReviewRequestResponseMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    requested_reviewers: Array<
      PullsCreateReviewRequestResponseRequestedReviewersItem
    >;
    requested_teams: Array<PullsCreateReviewRequestResponseRequestedTeamsItem>;
    review_comment_url: string;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsCreateReviewRequestResponseUser;
  };
  type PullsCreateReviewCommentReplyResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewCommentReplyResponseLinksSelf = { href: string };
  type PullsCreateReviewCommentReplyResponseLinksPullRequest = { href: string };
  type PullsCreateReviewCommentReplyResponseLinksHtml = { href: string };
  type PullsCreateReviewCommentReplyResponseLinks = {
    html: PullsCreateReviewCommentReplyResponseLinksHtml;
    pull_request: PullsCreateReviewCommentReplyResponseLinksPullRequest;
    self: PullsCreateReviewCommentReplyResponseLinksSelf;
  };
  type PullsCreateReviewCommentReplyResponse = {
    _links: PullsCreateReviewCommentReplyResponseLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    node_id: string;
    original_commit_id: string;
    original_position: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    updated_at: string;
    url: string;
    user: PullsCreateReviewCommentReplyResponseUser;
  };
  type PullsCreateReviewResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateReviewResponseLinksPullRequest = { href: string };
  type PullsCreateReviewResponseLinksHtml = { href: string };
  type PullsCreateReviewResponseLinks = {
    html: PullsCreateReviewResponseLinksHtml;
    pull_request: PullsCreateReviewResponseLinksPullRequest;
  };
  type PullsCreateReviewResponse = {
    _links: PullsCreateReviewResponseLinks;
    body: string;
    commit_id: string;
    html_url: string;
    id: number;
    node_id: string;
    pull_request_url: string;
    state: string;
    user: PullsCreateReviewResponseUser;
  };
  type PullsCreateFromIssueResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsCreateFromIssueResponseRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsCreateFromIssueResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsCreateFromIssueResponseMergedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsCreateFromIssueResponseHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateFromIssueResponseHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateFromIssueResponseHeadRepoOwner;
    permissions: PullsCreateFromIssueResponseHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateFromIssueResponseHead = {
    label: string;
    ref: string;
    repo: PullsCreateFromIssueResponseHeadRepo;
    sha: string;
    user: PullsCreateFromIssueResponseHeadUser;
  };
  type PullsCreateFromIssueResponseBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateFromIssueResponseBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateFromIssueResponseBaseRepoOwner;
    permissions: PullsCreateFromIssueResponseBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateFromIssueResponseBase = {
    label: string;
    ref: string;
    repo: PullsCreateFromIssueResponseBaseRepo;
    sha: string;
    user: PullsCreateFromIssueResponseBaseUser;
  };
  type PullsCreateFromIssueResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateFromIssueResponseLinksStatuses = { href: string };
  type PullsCreateFromIssueResponseLinksSelf = { href: string };
  type PullsCreateFromIssueResponseLinksReviewComments = { href: string };
  type PullsCreateFromIssueResponseLinksReviewComment = { href: string };
  type PullsCreateFromIssueResponseLinksIssue = { href: string };
  type PullsCreateFromIssueResponseLinksHtml = { href: string };
  type PullsCreateFromIssueResponseLinksCommits = { href: string };
  type PullsCreateFromIssueResponseLinksComments = { href: string };
  type PullsCreateFromIssueResponseLinks = {
    comments: PullsCreateFromIssueResponseLinksComments;
    commits: PullsCreateFromIssueResponseLinksCommits;
    html: PullsCreateFromIssueResponseLinksHtml;
    issue: PullsCreateFromIssueResponseLinksIssue;
    review_comment: PullsCreateFromIssueResponseLinksReviewComment;
    review_comments: PullsCreateFromIssueResponseLinksReviewComments;
    self: PullsCreateFromIssueResponseLinksSelf;
    statuses: PullsCreateFromIssueResponseLinksStatuses;
  };
  type PullsCreateFromIssueResponse = {
    _links: PullsCreateFromIssueResponseLinks;
    active_lock_reason: string;
    additions: number;
    assignee: PullsCreateFromIssueResponseAssignee;
    assignees: Array<PullsCreateFromIssueResponseAssigneesItem>;
    author_association: string;
    base: PullsCreateFromIssueResponseBase;
    body: string;
    changed_files: number;
    closed_at: string;
    comments: number;
    comments_url: string;
    commits: number;
    commits_url: string;
    created_at: string;
    deletions: number;
    diff_url: string;
    draft: boolean;
    head: PullsCreateFromIssueResponseHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsCreateFromIssueResponseLabelsItem>;
    locked: boolean;
    maintainer_can_modify: boolean;
    merge_commit_sha: string;
    mergeable: boolean;
    mergeable_state: string;
    merged: boolean;
    merged_at: string;
    merged_by: PullsCreateFromIssueResponseMergedBy;
    milestone: PullsCreateFromIssueResponseMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    rebaseable: boolean;
    requested_reviewers: Array<
      PullsCreateFromIssueResponseRequestedReviewersItem
    >;
    requested_teams: Array<PullsCreateFromIssueResponseRequestedTeamsItem>;
    review_comment_url: string;
    review_comments: number;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsCreateFromIssueResponseUser;
  };
  type PullsCreateCommentReplyResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateCommentReplyResponseLinksSelf = { href: string };
  type PullsCreateCommentReplyResponseLinksPullRequest = { href: string };
  type PullsCreateCommentReplyResponseLinksHtml = { href: string };
  type PullsCreateCommentReplyResponseLinks = {
    html: PullsCreateCommentReplyResponseLinksHtml;
    pull_request: PullsCreateCommentReplyResponseLinksPullRequest;
    self: PullsCreateCommentReplyResponseLinksSelf;
  };
  type PullsCreateCommentReplyResponse = {
    _links: PullsCreateCommentReplyResponseLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsCreateCommentReplyResponseUser;
  };
  type PullsCreateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateCommentResponseLinksSelf = { href: string };
  type PullsCreateCommentResponseLinksPullRequest = { href: string };
  type PullsCreateCommentResponseLinksHtml = { href: string };
  type PullsCreateCommentResponseLinks = {
    html: PullsCreateCommentResponseLinksHtml;
    pull_request: PullsCreateCommentResponseLinksPullRequest;
    self: PullsCreateCommentResponseLinksSelf;
  };
  type PullsCreateCommentResponse = {
    _links: PullsCreateCommentResponseLinks;
    author_association: string;
    body: string;
    commit_id: string;
    created_at: string;
    diff_hunk: string;
    html_url: string;
    id: number;
    in_reply_to_id: number;
    line: number;
    node_id: string;
    original_commit_id: string;
    original_line: number;
    original_position: number;
    original_start_line: number;
    path: string;
    position: number;
    pull_request_review_id: number;
    pull_request_url: string;
    side: string;
    start_line: number;
    start_side: string;
    updated_at: string;
    url: string;
    user: PullsCreateCommentResponseUser;
  };
  type PullsCreateResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseRequestedTeamsItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type PullsCreateResponseRequestedReviewersItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: PullsCreateResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type PullsCreateResponseMergedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type PullsCreateResponseHeadUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseHeadRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateResponseHeadRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseHeadRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateResponseHeadRepoOwner;
    permissions: PullsCreateResponseHeadRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateResponseHead = {
    label: string;
    ref: string;
    repo: PullsCreateResponseHeadRepo;
    sha: string;
    user: PullsCreateResponseHeadUser;
  };
  type PullsCreateResponseBaseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseBaseRepoPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type PullsCreateResponseBaseRepoOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseBaseRepo = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: PullsCreateResponseBaseRepoOwner;
    permissions: PullsCreateResponseBaseRepoPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type PullsCreateResponseBase = {
    label: string;
    ref: string;
    repo: PullsCreateResponseBaseRepo;
    sha: string;
    user: PullsCreateResponseBaseUser;
  };
  type PullsCreateResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type PullsCreateResponseLinksStatuses = { href: string };
  type PullsCreateResponseLinksSelf = { href: string };
  type PullsCreateResponseLinksReviewComments = { href: string };
  type PullsCreateResponseLinksReviewComment = { href: string };
  type PullsCreateResponseLinksIssue = { href: string };
  type PullsCreateResponseLinksHtml = { href: string };
  type PullsCreateResponseLinksCommits = { href: string };
  type PullsCreateResponseLinksComments = { href: string };
  type PullsCreateResponseLinks = {
    comments: PullsCreateResponseLinksComments;
    commits: PullsCreateResponseLinksCommits;
    html: PullsCreateResponseLinksHtml;
    issue: PullsCreateResponseLinksIssue;
    review_comment: PullsCreateResponseLinksReviewComment;
    review_comments: PullsCreateResponseLinksReviewComments;
    self: PullsCreateResponseLinksSelf;
    statuses: PullsCreateResponseLinksStatuses;
  };
  type PullsCreateResponse = {
    _links: PullsCreateResponseLinks;
    active_lock_reason: string;
    additions: number;
    assignee: PullsCreateResponseAssignee;
    assignees: Array<PullsCreateResponseAssigneesItem>;
    author_association: string;
    base: PullsCreateResponseBase;
    body: string;
    changed_files: number;
    closed_at: string;
    comments: number;
    comments_url: string;
    commits: number;
    commits_url: string;
    created_at: string;
    deletions: number;
    diff_url: string;
    draft: boolean;
    head: PullsCreateResponseHead;
    html_url: string;
    id: number;
    issue_url: string;
    labels: Array<PullsCreateResponseLabelsItem>;
    locked: boolean;
    maintainer_can_modify: boolean;
    merge_commit_sha: string;
    mergeable: boolean;
    mergeable_state: string;
    merged: boolean;
    merged_at: string;
    merged_by: PullsCreateResponseMergedBy;
    milestone: PullsCreateResponseMilestone;
    node_id: string;
    number: number;
    patch_url: string;
    rebaseable: boolean;
    requested_reviewers: Array<PullsCreateResponseRequestedReviewersItem>;
    requested_teams: Array<PullsCreateResponseRequestedTeamsItem>;
    review_comment_url: string;
    review_comments: number;
    review_comments_url: string;
    state: string;
    statuses_url: string;
    title: string;
    updated_at: string;
    url: string;
    user: PullsCreateResponseUser;
  };
  type ProjectsUpdateColumnResponse = {
    cards_url: string;
    created_at: string;
    id: number;
    name: string;
    node_id: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsUpdateCardResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsUpdateCardResponse = {
    archived: boolean;
    column_url: string;
    content_url: string;
    created_at: string;
    creator: ProjectsUpdateCardResponseCreator;
    id: number;
    node_id: string;
    note: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsUpdateResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsUpdateResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsUpdateResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsReviewUserPermissionLevelResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsReviewUserPermissionLevelResponse = {
    permission: string;
    user: ProjectsReviewUserPermissionLevelResponseUser;
  };
  type ProjectsListForUserResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsListForUserResponseItem = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsListForUserResponseItemCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsListForRepoResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsListForRepoResponseItem = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsListForRepoResponseItemCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsListForOrgResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsListForOrgResponseItem = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsListForOrgResponseItemCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsListColumnsResponseItem = {
    cards_url: string;
    created_at: string;
    id: number;
    name: string;
    node_id: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsListCollaboratorsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsListCardsResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsListCardsResponseItem = {
    archived: boolean;
    column_url: string;
    content_url: string;
    created_at: string;
    creator: ProjectsListCardsResponseItemCreator;
    id: number;
    node_id: string;
    note: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsGetColumnResponse = {
    cards_url: string;
    created_at: string;
    id: number;
    name: string;
    node_id: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsGetCardResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsGetCardResponse = {
    archived: boolean;
    column_url: string;
    content_url: string;
    created_at: string;
    creator: ProjectsGetCardResponseCreator;
    id: number;
    node_id: string;
    note: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsGetResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsGetResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsGetResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsCreateForRepoResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsCreateForRepoResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsCreateForRepoResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsCreateForOrgResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsCreateForOrgResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsCreateForOrgResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsCreateForAuthenticatedUserResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsCreateForAuthenticatedUserResponse = {
    body: string;
    columns_url: string;
    created_at: string;
    creator: ProjectsCreateForAuthenticatedUserResponseCreator;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    number: number;
    owner_url: string;
    state: string;
    updated_at: string;
    url: string;
  };
  type ProjectsCreateColumnResponse = {
    cards_url: string;
    created_at: string;
    id: number;
    name: string;
    node_id: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type ProjectsCreateCardResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ProjectsCreateCardResponse = {
    archived: boolean;
    column_url: string;
    content_url: string;
    created_at: string;
    creator: ProjectsCreateCardResponseCreator;
    id: number;
    node_id: string;
    note: string;
    project_url: string;
    updated_at: string;
    url: string;
  };
  type OrgsUpdateMembershipResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsUpdateMembershipResponseOrganization = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsUpdateMembershipResponse = {
    organization: OrgsUpdateMembershipResponseOrganization;
    organization_url: string;
    role: string;
    state: string;
    url: string;
    user: OrgsUpdateMembershipResponseUser;
  };
  type OrgsUpdateHookResponseConfig = { content_type: string; url: string };
  type OrgsUpdateHookResponse = {
    active: boolean;
    config: OrgsUpdateHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    name: string;
    ping_url: string;
    updated_at: string;
    url: string;
  };
  type OrgsUpdateResponsePlan = {
    name: string;
    private_repos: number;
    space: number;
  };
  type OrgsUpdateResponse = {
    avatar_url: string;
    billing_email: string;
    blog: string;
    collaborators: number;
    company: string;
    created_at: string;
    default_repository_settings: string;
    description: string;
    disk_usage: number;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_allowed_repository_creation_type: string;
    members_can_create_repositories: boolean;
    members_url: string;
    name: string;
    node_id: string;
    owned_private_repos: number;
    plan: OrgsUpdateResponsePlan;
    private_gists: number;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    total_private_repos: number;
    two_factor_requirement_enabled: boolean;
    type: string;
    url: string;
  };
  type OrgsRemoveOutsideCollaboratorResponse = {
    documentation_url: string;
    message: string;
  };
  type OrgsListPublicMembersResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListPendingInvitationsResponseItemInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListPendingInvitationsResponseItem = {
    created_at: string;
    email: string;
    id: number;
    invitation_team_url: string;
    inviter: OrgsListPendingInvitationsResponseItemInviter;
    login: string;
    role: string;
    team_count: number;
  };
  type OrgsListOutsideCollaboratorsResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListMembershipsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListMembershipsResponseItemOrganization = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsListMembershipsResponseItem = {
    organization: OrgsListMembershipsResponseItemOrganization;
    organization_url: string;
    role: string;
    state: string;
    url: string;
    user: OrgsListMembershipsResponseItemUser;
  };
  type OrgsListMembersResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListInvitationTeamsResponseItem = {
    description: string;
    html_url: string;
    id: number;
    members_url: string;
    name: string;
    node_id: string;
    parent: null;
    permission: string;
    privacy: string;
    repositories_url: string;
    slug: string;
    url: string;
  };
  type OrgsListInstallationsResponseInstallationsItemPermissions = {
    deployments: string;
    metadata: string;
    pull_requests: string;
    statuses: string;
  };
  type OrgsListInstallationsResponseInstallationsItemAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListInstallationsResponseInstallationsItem = {
    access_tokens_url: string;
    account: OrgsListInstallationsResponseInstallationsItemAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: OrgsListInstallationsResponseInstallationsItemPermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type OrgsListInstallationsResponse = {
    installations: Array<OrgsListInstallationsResponseInstallationsItem>;
    total_count: number;
  };
  type OrgsListHooksResponseItemConfig = { content_type: string; url: string };
  type OrgsListHooksResponseItem = {
    active: boolean;
    config: OrgsListHooksResponseItemConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    name: string;
    ping_url: string;
    updated_at: string;
    url: string;
  };
  type OrgsListForUserResponseItem = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsListForAuthenticatedUserResponseItem = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsListBlockedUsersResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsListResponseItem = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsGetMembershipForAuthenticatedUserResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsGetMembershipForAuthenticatedUserResponseOrganization = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsGetMembershipForAuthenticatedUserResponse = {
    organization: OrgsGetMembershipForAuthenticatedUserResponseOrganization;
    organization_url: string;
    role: string;
    state: string;
    url: string;
    user: OrgsGetMembershipForAuthenticatedUserResponseUser;
  };
  type OrgsGetMembershipResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsGetMembershipResponseOrganization = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsGetMembershipResponse = {
    organization: OrgsGetMembershipResponseOrganization;
    organization_url: string;
    role: string;
    state: string;
    url: string;
    user: OrgsGetMembershipResponseUser;
  };
  type OrgsGetHookResponseConfig = { content_type: string; url: string };
  type OrgsGetHookResponse = {
    active: boolean;
    config: OrgsGetHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    name: string;
    ping_url: string;
    updated_at: string;
    url: string;
  };
  type OrgsGetResponsePlan = {
    name: string;
    private_repos: number;
    space: number;
    filled_seats?: number;
    seats?: number;
  };
  type OrgsGetResponse = {
    avatar_url: string;
    billing_email?: string;
    blog: string;
    collaborators?: number;
    company: string;
    created_at: string;
    default_repository_settings?: string;
    description: string;
    disk_usage?: number;
    email: string;
    events_url: string;
    followers: number;
    following: number;
    has_organization_projects: boolean;
    has_repository_projects: boolean;
    hooks_url: string;
    html_url: string;
    id: number;
    is_verified: boolean;
    issues_url: string;
    location: string;
    login: string;
    members_allowed_repository_creation_type?: string;
    members_can_create_repositories?: boolean;
    members_url: string;
    name: string;
    node_id: string;
    owned_private_repos?: number;
    plan: OrgsGetResponsePlan;
    private_gists?: number;
    public_gists: number;
    public_members_url: string;
    public_repos: number;
    repos_url: string;
    total_private_repos?: number;
    two_factor_requirement_enabled?: boolean;
    type: string;
    url: string;
  };
  type OrgsCreateInvitationResponseInviter = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsCreateInvitationResponse = {
    created_at: string;
    email: string;
    id: number;
    invitation_team_url: string;
    inviter: OrgsCreateInvitationResponseInviter;
    login: string;
    role: string;
    team_count: number;
  };
  type OrgsCreateHookResponseConfig = { content_type: string; url: string };
  type OrgsCreateHookResponse = {
    active: boolean;
    config: OrgsCreateHookResponseConfig;
    created_at: string;
    events: Array<string>;
    id: number;
    name: string;
    ping_url: string;
    updated_at: string;
    url: string;
  };
  type OrgsConvertMemberToOutsideCollaboratorResponse = {
    documentation_url: string;
    message: string;
  };
  type OrgsAddOrUpdateMembershipResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OrgsAddOrUpdateMembershipResponseOrganization = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type OrgsAddOrUpdateMembershipResponse = {
    organization: OrgsAddOrUpdateMembershipResponseOrganization;
    organization_url: string;
    role: string;
    state: string;
    url: string;
    user: OrgsAddOrUpdateMembershipResponseUser;
  };
  type OauthAuthorizationsUpdateAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsUpdateAuthorizationResponse = {
    app: OauthAuthorizationsUpdateAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsResetAuthorizationResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OauthAuthorizationsResetAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsResetAuthorizationResponse = {
    app: OauthAuthorizationsResetAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: OauthAuthorizationsResetAuthorizationResponseUser;
  };
  type OauthAuthorizationsListGrantsResponseItemApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsListGrantsResponseItem = {
    app: OauthAuthorizationsListGrantsResponseItemApp;
    created_at: string;
    id: number;
    scopes: Array<string>;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsListAuthorizationsResponseItemApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsListAuthorizationsResponseItem = {
    app: OauthAuthorizationsListAuthorizationsResponseItemApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponse = {
    app: OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponse = {
    app: OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsGetOrCreateAuthorizationForAppResponse = {
    app: OauthAuthorizationsGetOrCreateAuthorizationForAppResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsGetGrantResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsGetGrantResponse = {
    app: OauthAuthorizationsGetGrantResponseApp;
    created_at: string;
    id: number;
    scopes: Array<string>;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsGetAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsGetAuthorizationResponse = {
    app: OauthAuthorizationsGetAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsCreateAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsCreateAuthorizationResponse = {
    app: OauthAuthorizationsCreateAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
  };
  type OauthAuthorizationsCheckAuthorizationResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type OauthAuthorizationsCheckAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type OauthAuthorizationsCheckAuthorizationResponse = {
    app: OauthAuthorizationsCheckAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: OauthAuthorizationsCheckAuthorizationResponseUser;
  };
  type MigrationsUpdateImportResponse = {
    authors_url: string;
    html_url: string;
    repository_url: string;
    status: string;
    url: string;
    use_lfs: string;
    vcs: string;
    vcs_url: string;
    authors_count?: number;
    commit_count?: number;
    has_large_files?: boolean;
    large_files_count?: number;
    large_files_size?: number;
    percent?: number;
    status_text?: string;
    tfvc_project?: string;
  };
  type MigrationsStartImportResponse = {
    authors_count: number;
    authors_url: string;
    commit_count: number;
    has_large_files: boolean;
    html_url: string;
    large_files_count: number;
    large_files_size: number;
    percent: number;
    repository_url: string;
    status: string;
    status_text: string;
    url: string;
    use_lfs: string;
    vcs: string;
    vcs_url: string;
  };
  type MigrationsStartForOrgResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsStartForOrgResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsStartForOrgResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsStartForOrgResponseRepositoriesItemOwner;
    permissions: MigrationsStartForOrgResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsStartForOrgResponseOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type MigrationsStartForOrgResponse = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsStartForOrgResponseOwner;
    repositories: Array<MigrationsStartForOrgResponseRepositoriesItem>;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsStartForAuthenticatedUserResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsStartForAuthenticatedUserResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsStartForAuthenticatedUserResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsStartForAuthenticatedUserResponseRepositoriesItemOwner;
    permissions: MigrationsStartForAuthenticatedUserResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsStartForAuthenticatedUserResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsStartForAuthenticatedUserResponse = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsStartForAuthenticatedUserResponseOwner;
    repositories: Array<
      MigrationsStartForAuthenticatedUserResponseRepositoriesItem
    >;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsSetLfsPreferenceResponse = {
    authors_count: number;
    authors_url: string;
    has_large_files: boolean;
    html_url: string;
    large_files_count: number;
    large_files_size: number;
    repository_url: string;
    status: string;
    status_text: string;
    url: string;
    use_lfs: string;
    vcs: string;
    vcs_url: string;
  };
  type MigrationsMapCommitAuthorResponse = {
    email: string;
    id: number;
    import_url: string;
    name: string;
    remote_id: string;
    remote_name: string;
    url: string;
  };
  type MigrationsListForOrgResponseItemRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsListForOrgResponseItemRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsListForOrgResponseItemRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsListForOrgResponseItemRepositoriesItemOwner;
    permissions: MigrationsListForOrgResponseItemRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsListForOrgResponseItemOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type MigrationsListForOrgResponseItem = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsListForOrgResponseItemOwner;
    repositories: Array<MigrationsListForOrgResponseItemRepositoriesItem>;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsListForAuthenticatedUserResponseItemRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsListForAuthenticatedUserResponseItemRepositoriesItemOwner;
    permissions: MigrationsListForAuthenticatedUserResponseItemRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsListForAuthenticatedUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsListForAuthenticatedUserResponseItem = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsListForAuthenticatedUserResponseItemOwner;
    repositories: Array<
      MigrationsListForAuthenticatedUserResponseItemRepositoriesItem
    >;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsGetStatusForOrgResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsGetStatusForOrgResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsGetStatusForOrgResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsGetStatusForOrgResponseRepositoriesItemOwner;
    permissions: MigrationsGetStatusForOrgResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsGetStatusForOrgResponseOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type MigrationsGetStatusForOrgResponse = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsGetStatusForOrgResponseOwner;
    repositories: Array<MigrationsGetStatusForOrgResponseRepositoriesItem>;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemOwner;
    permissions: MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type MigrationsGetStatusForAuthenticatedUserResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type MigrationsGetStatusForAuthenticatedUserResponse = {
    created_at: string;
    exclude_attachments: boolean;
    guid: string;
    id: number;
    lock_repositories: boolean;
    owner: MigrationsGetStatusForAuthenticatedUserResponseOwner;
    repositories: Array<
      MigrationsGetStatusForAuthenticatedUserResponseRepositoriesItem
    >;
    state: string;
    updated_at: string;
    url: string;
  };
  type MigrationsGetLargeFilesResponseItem = {
    oid: string;
    path: string;
    ref_name: string;
    size: number;
  };
  type MigrationsGetImportProgressResponse = {
    authors_count: number;
    authors_url: string;
    has_large_files: boolean;
    html_url: string;
    large_files_count: number;
    large_files_size: number;
    repository_url: string;
    status: string;
    status_text: string;
    url: string;
    use_lfs: string;
    vcs: string;
    vcs_url: string;
  };
  type MigrationsGetCommitAuthorsResponseItem = {
    email: string;
    id: number;
    import_url: string;
    name: string;
    remote_id: string;
    remote_name: string;
    url: string;
  };
  type MetaGetResponse = {
    git: Array<string>;
    hooks: Array<string>;
    importer: Array<string>;
    pages: Array<string>;
    verifiable_password_authentication: boolean;
  };
  type LicensesListCommonlyUsedResponseItem = {
    key: string;
    name: string;
    node_id?: string;
    spdx_id: string;
    url: string;
  };
  type LicensesListResponseItem = {
    key: string;
    name: string;
    node_id?: string;
    spdx_id: string;
    url: string;
  };
  type LicensesGetForRepoResponseLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type LicensesGetForRepoResponseLinks = {
    git: string;
    html: string;
    self: string;
  };
  type LicensesGetForRepoResponse = {
    _links: LicensesGetForRepoResponseLinks;
    content: string;
    download_url: string;
    encoding: string;
    git_url: string;
    html_url: string;
    license: LicensesGetForRepoResponseLicense;
    name: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type LicensesGetResponse = {
    body: string;
    conditions: Array<string>;
    description: string;
    featured: boolean;
    html_url: string;
    implementation: string;
    key: string;
    limitations: Array<string>;
    name: string;
    node_id: string;
    permissions: Array<string>;
    spdx_id: string;
    url: string;
  };
  type IssuesUpdateMilestoneResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateMilestoneResponse = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesUpdateMilestoneResponseCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesUpdateLabelResponse = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesUpdateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateCommentResponse = {
    body: string;
    created_at: string;
    html_url: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: IssuesUpdateCommentResponseUser;
  };
  type IssuesUpdateResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateResponsePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesUpdateResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesUpdateResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesUpdateResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesUpdateResponseClosedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesUpdateResponse = {
    active_lock_reason: string;
    assignee: IssuesUpdateResponseAssignee;
    assignees: Array<IssuesUpdateResponseAssigneesItem>;
    body: string;
    closed_at: null;
    closed_by: IssuesUpdateResponseClosedBy;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesUpdateResponseLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesUpdateResponseMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesUpdateResponsePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesUpdateResponseUser;
  };
  type IssuesReplaceLabelsResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesRemoveLabelResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponsePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesRemoveAssigneesResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesRemoveAssigneesResponse = {
    active_lock_reason: string;
    assignee: IssuesRemoveAssigneesResponseAssignee;
    assignees: Array<IssuesRemoveAssigneesResponseAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesRemoveAssigneesResponseLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesRemoveAssigneesResponseMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesRemoveAssigneesResponsePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesRemoveAssigneesResponseUser;
  };
  type IssuesListMilestonesForRepoResponseItemCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListMilestonesForRepoResponseItem = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListMilestonesForRepoResponseItemCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListLabelsOnIssueResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListLabelsForRepoResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListLabelsForMilestoneResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListForRepoResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForRepoResponseItemPullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesListForRepoResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForRepoResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListForRepoResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListForRepoResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListForRepoResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForRepoResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForRepoResponseItem = {
    active_lock_reason: string;
    assignee: IssuesListForRepoResponseItemAssignee;
    assignees: Array<IssuesListForRepoResponseItemAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesListForRepoResponseItemLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesListForRepoResponseItemMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesListForRepoResponseItemPullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesListForRepoResponseItemUser;
  };
  type IssuesListForOrgResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForOrgResponseItemRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type IssuesListForOrgResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForOrgResponseItemRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: IssuesListForOrgResponseItemRepositoryOwner;
    permissions: IssuesListForOrgResponseItemRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type IssuesListForOrgResponseItemPullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesListForOrgResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForOrgResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListForOrgResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListForOrgResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListForOrgResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForOrgResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForOrgResponseItem = {
    active_lock_reason: string;
    assignee: IssuesListForOrgResponseItemAssignee;
    assignees: Array<IssuesListForOrgResponseItemAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesListForOrgResponseItemLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesListForOrgResponseItemMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesListForOrgResponseItemPullRequest;
    repository: IssuesListForOrgResponseItemRepository;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesListForOrgResponseItemUser;
  };
  type IssuesListForAuthenticatedUserResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type IssuesListForAuthenticatedUserResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: IssuesListForAuthenticatedUserResponseItemRepositoryOwner;
    permissions: IssuesListForAuthenticatedUserResponseItemRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type IssuesListForAuthenticatedUserResponseItemPullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListForAuthenticatedUserResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListForAuthenticatedUserResponseItem = {
    active_lock_reason: string;
    assignee: IssuesListForAuthenticatedUserResponseItemAssignee;
    assignees: Array<IssuesListForAuthenticatedUserResponseItemAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesListForAuthenticatedUserResponseItemLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesListForAuthenticatedUserResponseItemMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesListForAuthenticatedUserResponseItemPullRequest;
    repository: IssuesListForAuthenticatedUserResponseItemRepository;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesListForAuthenticatedUserResponseItemUser;
  };
  type IssuesListEventsForTimelineResponseItemActor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForTimelineResponseItem = {
    actor: IssuesListEventsForTimelineResponseItemActor;
    commit_id: string;
    commit_url: string;
    created_at: string;
    event: string;
    id: number;
    node_id: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssuePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListEventsForRepoResponseItemIssueMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssueAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItemIssue = {
    active_lock_reason: string;
    assignee: IssuesListEventsForRepoResponseItemIssueAssignee;
    assignees: Array<IssuesListEventsForRepoResponseItemIssueAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesListEventsForRepoResponseItemIssueLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesListEventsForRepoResponseItemIssueMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesListEventsForRepoResponseItemIssuePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesListEventsForRepoResponseItemIssueUser;
  };
  type IssuesListEventsForRepoResponseItemActor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsForRepoResponseItem = {
    actor: IssuesListEventsForRepoResponseItemActor;
    commit_id: string;
    commit_url: string;
    created_at: string;
    event: string;
    id: number;
    issue: IssuesListEventsForRepoResponseItemIssue;
    node_id: string;
    url: string;
  };
  type IssuesListEventsResponseItemActor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListEventsResponseItem = {
    actor: IssuesListEventsResponseItemActor;
    commit_id: string;
    commit_url: string;
    created_at: string;
    event: string;
    id: number;
    node_id: string;
    url: string;
  };
  type IssuesListCommentsForRepoResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListCommentsForRepoResponseItem = {
    body: string;
    created_at: string;
    html_url: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: IssuesListCommentsForRepoResponseItemUser;
  };
  type IssuesListCommentsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListCommentsResponseItem = {
    body: string;
    created_at: string;
    html_url: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: IssuesListCommentsResponseItemUser;
  };
  type IssuesListAssigneesResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItemRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type IssuesListResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItemRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: IssuesListResponseItemRepositoryOwner;
    permissions: IssuesListResponseItemRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type IssuesListResponseItemPullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesListResponseItemMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItemMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesListResponseItemMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesListResponseItemLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesListResponseItemAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItemAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesListResponseItem = {
    active_lock_reason: string;
    assignee: IssuesListResponseItemAssignee;
    assignees: Array<IssuesListResponseItemAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesListResponseItemLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesListResponseItemMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesListResponseItemPullRequest;
    repository: IssuesListResponseItemRepository;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesListResponseItemUser;
  };
  type IssuesGetMilestoneResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetMilestoneResponse = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesGetMilestoneResponseCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesGetLabelResponse = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesGetEventResponseIssueUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetEventResponseIssuePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesGetEventResponseIssueMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetEventResponseIssueMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesGetEventResponseIssueMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesGetEventResponseIssueLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesGetEventResponseIssueAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetEventResponseIssueAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetEventResponseIssue = {
    active_lock_reason: string;
    assignee: IssuesGetEventResponseIssueAssignee;
    assignees: Array<IssuesGetEventResponseIssueAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesGetEventResponseIssueLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesGetEventResponseIssueMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesGetEventResponseIssuePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesGetEventResponseIssueUser;
  };
  type IssuesGetEventResponseActor = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetEventResponse = {
    actor: IssuesGetEventResponseActor;
    commit_id: string;
    commit_url: string;
    created_at: string;
    event: string;
    id: number;
    issue: IssuesGetEventResponseIssue;
    node_id: string;
    url: string;
  };
  type IssuesGetCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetCommentResponse = {
    body: string;
    created_at: string;
    html_url: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: IssuesGetCommentResponseUser;
  };
  type IssuesGetResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetResponsePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesGetResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesGetResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesGetResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesGetResponseClosedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesGetResponse = {
    active_lock_reason: string;
    assignee: IssuesGetResponseAssignee;
    assignees: Array<IssuesGetResponseAssigneesItem>;
    body: string;
    closed_at: null;
    closed_by: IssuesGetResponseClosedBy;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesGetResponseLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesGetResponseMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesGetResponsePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesGetResponseUser;
  };
  type IssuesCreateMilestoneResponseCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateMilestoneResponse = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesCreateMilestoneResponseCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesCreateLabelResponse = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesCreateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateCommentResponse = {
    body: string;
    created_at: string;
    html_url: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: IssuesCreateCommentResponseUser;
  };
  type IssuesCreateResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateResponsePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesCreateResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesCreateResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesCreateResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesCreateResponseClosedBy = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesCreateResponse = {
    active_lock_reason: string;
    assignee: IssuesCreateResponseAssignee;
    assignees: Array<IssuesCreateResponseAssigneesItem>;
    body: string;
    closed_at: null;
    closed_by: IssuesCreateResponseClosedBy;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesCreateResponseLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesCreateResponseMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesCreateResponsePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesCreateResponseUser;
  };
  type IssuesAddLabelsResponseItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesAddAssigneesResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesAddAssigneesResponsePullRequest = {
    diff_url: string;
    html_url: string;
    patch_url: string;
    url: string;
  };
  type IssuesAddAssigneesResponseMilestoneCreator = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesAddAssigneesResponseMilestone = {
    closed_at: string;
    closed_issues: number;
    created_at: string;
    creator: IssuesAddAssigneesResponseMilestoneCreator;
    description: string;
    due_on: string;
    html_url: string;
    id: number;
    labels_url: string;
    node_id: string;
    number: number;
    open_issues: number;
    state: string;
    title: string;
    updated_at: string;
    url: string;
  };
  type IssuesAddAssigneesResponseLabelsItem = {
    color: string;
    default: boolean;
    description: string;
    id: number;
    name: string;
    node_id: string;
    url: string;
  };
  type IssuesAddAssigneesResponseAssigneesItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesAddAssigneesResponseAssignee = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type IssuesAddAssigneesResponse = {
    active_lock_reason: string;
    assignee: IssuesAddAssigneesResponseAssignee;
    assignees: Array<IssuesAddAssigneesResponseAssigneesItem>;
    body: string;
    closed_at: null;
    comments: number;
    comments_url: string;
    created_at: string;
    events_url: string;
    html_url: string;
    id: number;
    labels: Array<IssuesAddAssigneesResponseLabelsItem>;
    labels_url: string;
    locked: boolean;
    milestone: IssuesAddAssigneesResponseMilestone;
    node_id: string;
    number: number;
    pull_request: IssuesAddAssigneesResponsePullRequest;
    repository_url: string;
    state: string;
    title: string;
    updated_at: string;
    url: string;
    user: IssuesAddAssigneesResponseUser;
  };
  type InteractionsGetRestrictionsForRepoResponse = {
    expires_at: string;
    limit: string;
    origin: string;
  };
  type InteractionsGetRestrictionsForOrgResponse = {
    expires_at: string;
    limit: string;
    origin: string;
  };
  type InteractionsAddOrUpdateRestrictionsForRepoResponse = {
    expires_at: string;
    limit: string;
    origin: string;
  };
  type InteractionsAddOrUpdateRestrictionsForOrgResponse = {
    expires_at: string;
    limit: string;
    origin: string;
  };
  type GitignoreGetTemplateResponse = { name: string; source: string };
  type GitUpdateRefResponseObject = { sha: string; type: string; url: string };
  type GitUpdateRefResponse = {
    node_id: string;
    object: GitUpdateRefResponseObject;
    ref: string;
    url: string;
  };
  type GitListMatchingRefsResponseItemObject = {
    sha: string;
    type: string;
    url: string;
  };
  type GitListMatchingRefsResponseItem = {
    node_id: string;
    object: GitListMatchingRefsResponseItemObject;
    ref: string;
    url: string;
  };
  type GitGetTagResponseVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type GitGetTagResponseTagger = { date: string; email: string; name: string };
  type GitGetTagResponseObject = { sha: string; type: string; url: string };
  type GitGetTagResponse = {
    message: string;
    node_id: string;
    object: GitGetTagResponseObject;
    sha: string;
    tag: string;
    tagger: GitGetTagResponseTagger;
    url: string;
    verification: GitGetTagResponseVerification;
  };
  type GitGetRefResponseObject = { sha: string; type: string; url: string };
  type GitGetRefResponse = {
    node_id: string;
    object: GitGetRefResponseObject;
    ref: string;
    url: string;
  };
  type GitGetCommitResponseVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type GitGetCommitResponseTree = { sha: string; url: string };
  type GitGetCommitResponseParentsItem = { sha: string; url: string };
  type GitGetCommitResponseCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type GitGetCommitResponseAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type GitGetCommitResponse = {
    author: GitGetCommitResponseAuthor;
    committer: GitGetCommitResponseCommitter;
    message: string;
    parents: Array<GitGetCommitResponseParentsItem>;
    sha: string;
    tree: GitGetCommitResponseTree;
    url: string;
    verification: GitGetCommitResponseVerification;
  };
  type GitGetBlobResponse = {
    content: string;
    encoding: string;
    sha: string;
    size: number;
    url: string;
  };
  type GitCreateTreeResponseTreeItem = {
    mode: string;
    path: string;
    sha: string;
    size: number;
    type: string;
    url: string;
  };
  type GitCreateTreeResponse = {
    sha: string;
    tree: Array<GitCreateTreeResponseTreeItem>;
    url: string;
  };
  type GitCreateTagResponseVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type GitCreateTagResponseTagger = {
    date: string;
    email: string;
    name: string;
  };
  type GitCreateTagResponseObject = { sha: string; type: string; url: string };
  type GitCreateTagResponse = {
    message: string;
    node_id: string;
    object: GitCreateTagResponseObject;
    sha: string;
    tag: string;
    tagger: GitCreateTagResponseTagger;
    url: string;
    verification: GitCreateTagResponseVerification;
  };
  type GitCreateRefResponseObject = { sha: string; type: string; url: string };
  type GitCreateRefResponse = {
    node_id: string;
    object: GitCreateRefResponseObject;
    ref: string;
    url: string;
  };
  type GitCreateCommitResponseVerification = {
    payload: null;
    reason: string;
    signature: null;
    verified: boolean;
  };
  type GitCreateCommitResponseTree = { sha: string; url: string };
  type GitCreateCommitResponseParentsItem = { sha: string; url: string };
  type GitCreateCommitResponseCommitter = {
    date: string;
    email: string;
    name: string;
  };
  type GitCreateCommitResponseAuthor = {
    date: string;
    email: string;
    name: string;
  };
  type GitCreateCommitResponse = {
    author: GitCreateCommitResponseAuthor;
    committer: GitCreateCommitResponseCommitter;
    message: string;
    node_id: string;
    parents: Array<GitCreateCommitResponseParentsItem>;
    sha: string;
    tree: GitCreateCommitResponseTree;
    url: string;
    verification: GitCreateCommitResponseVerification;
  };
  type GitCreateBlobResponse = { sha: string; url: string };
  type GistsUpdateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsUpdateCommentResponse = {
    body: string;
    created_at: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: GistsUpdateCommentResponseUser;
  };
  type GistsUpdateResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsUpdateResponseHistoryItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsUpdateResponseHistoryItemChangeStatus = {
    additions: number;
    deletions: number;
    total: number;
  };
  type GistsUpdateResponseHistoryItem = {
    change_status: GistsUpdateResponseHistoryItemChangeStatus;
    committed_at: string;
    url: string;
    user: GistsUpdateResponseHistoryItemUser;
    version: string;
  };
  type GistsUpdateResponseForksItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsUpdateResponseForksItem = {
    created_at: string;
    id: string;
    updated_at: string;
    url: string;
    user: GistsUpdateResponseForksItemUser;
  };
  type GistsUpdateResponseFilesNewFileTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsUpdateResponseFilesHelloWorldRb = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsUpdateResponseFilesHelloWorldPy = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsUpdateResponseFilesHelloWorldMd = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsUpdateResponseFiles = {
    "hello_world.md": GistsUpdateResponseFilesHelloWorldMd;
    "hello_world.py": GistsUpdateResponseFilesHelloWorldPy;
    "hello_world.rb": GistsUpdateResponseFilesHelloWorldRb;
    "new_file.txt": GistsUpdateResponseFilesNewFileTxt;
  };
  type GistsUpdateResponse = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsUpdateResponseFiles;
    forks: Array<GistsUpdateResponseForksItem>;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    history: Array<GistsUpdateResponseHistoryItem>;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsUpdateResponseOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsListStarredResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListStarredResponseItemFilesHelloWorldRb = {
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    type: string;
  };
  type GistsListStarredResponseItemFiles = {
    "hello_world.rb": GistsListStarredResponseItemFilesHelloWorldRb;
  };
  type GistsListStarredResponseItem = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsListStarredResponseItemFiles;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsListStarredResponseItemOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsListPublicForUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListPublicForUserResponseItemFilesHelloWorldRb = {
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    type: string;
  };
  type GistsListPublicForUserResponseItemFiles = {
    "hello_world.rb": GistsListPublicForUserResponseItemFilesHelloWorldRb;
  };
  type GistsListPublicForUserResponseItem = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsListPublicForUserResponseItemFiles;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsListPublicForUserResponseItemOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsListPublicResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListPublicResponseItemFilesHelloWorldRb = {
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    type: string;
  };
  type GistsListPublicResponseItemFiles = {
    "hello_world.rb": GistsListPublicResponseItemFilesHelloWorldRb;
  };
  type GistsListPublicResponseItem = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsListPublicResponseItemFiles;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsListPublicResponseItemOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsListForksResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListForksResponseItem = {
    created_at: string;
    id: string;
    updated_at: string;
    url: string;
    user: GistsListForksResponseItemUser;
  };
  type GistsListCommitsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListCommitsResponseItemChangeStatus = {
    additions: number;
    deletions: number;
    total: number;
  };
  type GistsListCommitsResponseItem = {
    change_status: GistsListCommitsResponseItemChangeStatus;
    committed_at: string;
    url: string;
    user: GistsListCommitsResponseItemUser;
    version: string;
  };
  type GistsListCommentsResponseItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListCommentsResponseItem = {
    body: string;
    created_at: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: GistsListCommentsResponseItemUser;
  };
  type GistsListResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsListResponseItemFilesHelloWorldRb = {
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    type: string;
  };
  type GistsListResponseItemFiles = {
    "hello_world.rb": GistsListResponseItemFilesHelloWorldRb;
  };
  type GistsListResponseItem = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsListResponseItemFiles;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsListResponseItemOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsGetRevisionResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetRevisionResponseHistoryItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetRevisionResponseHistoryItemChangeStatus = {
    additions: number;
    deletions: number;
    total: number;
  };
  type GistsGetRevisionResponseHistoryItem = {
    change_status: GistsGetRevisionResponseHistoryItemChangeStatus;
    committed_at: string;
    url: string;
    user: GistsGetRevisionResponseHistoryItemUser;
    version: string;
  };
  type GistsGetRevisionResponseForksItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetRevisionResponseForksItem = {
    created_at: string;
    id: string;
    updated_at: string;
    url: string;
    user: GistsGetRevisionResponseForksItemUser;
  };
  type GistsGetRevisionResponseFilesHelloWorldRubyTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetRevisionResponseFilesHelloWorldPythonTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetRevisionResponseFilesHelloWorldRb = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetRevisionResponseFilesHelloWorldPy = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetRevisionResponseFiles = {
    "hello_world.py": GistsGetRevisionResponseFilesHelloWorldPy;
    "hello_world.rb": GistsGetRevisionResponseFilesHelloWorldRb;
    "hello_world_python.txt": GistsGetRevisionResponseFilesHelloWorldPythonTxt;
    "hello_world_ruby.txt": GistsGetRevisionResponseFilesHelloWorldRubyTxt;
  };
  type GistsGetRevisionResponse = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsGetRevisionResponseFiles;
    forks: Array<GistsGetRevisionResponseForksItem>;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    history: Array<GistsGetRevisionResponseHistoryItem>;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsGetRevisionResponseOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsGetCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetCommentResponse = {
    body: string;
    created_at: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: GistsGetCommentResponseUser;
  };
  type GistsGetResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetResponseHistoryItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetResponseHistoryItemChangeStatus = {
    additions: number;
    deletions: number;
    total: number;
  };
  type GistsGetResponseHistoryItem = {
    change_status: GistsGetResponseHistoryItemChangeStatus;
    committed_at: string;
    url: string;
    user: GistsGetResponseHistoryItemUser;
    version: string;
  };
  type GistsGetResponseForksItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsGetResponseForksItem = {
    created_at: string;
    id: string;
    updated_at: string;
    url: string;
    user: GistsGetResponseForksItemUser;
  };
  type GistsGetResponseFilesHelloWorldRubyTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetResponseFilesHelloWorldPythonTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetResponseFilesHelloWorldRb = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetResponseFilesHelloWorldPy = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsGetResponseFiles = {
    "hello_world.py": GistsGetResponseFilesHelloWorldPy;
    "hello_world.rb": GistsGetResponseFilesHelloWorldRb;
    "hello_world_python.txt": GistsGetResponseFilesHelloWorldPythonTxt;
    "hello_world_ruby.txt": GistsGetResponseFilesHelloWorldRubyTxt;
  };
  type GistsGetResponse = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsGetResponseFiles;
    forks: Array<GistsGetResponseForksItem>;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    history: Array<GistsGetResponseHistoryItem>;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsGetResponseOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsForkResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsForkResponseFilesHelloWorldRb = {
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    type: string;
  };
  type GistsForkResponseFiles = {
    "hello_world.rb": GistsForkResponseFilesHelloWorldRb;
  };
  type GistsForkResponse = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsForkResponseFiles;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsForkResponseOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type GistsCreateCommentResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsCreateCommentResponse = {
    body: string;
    created_at: string;
    id: number;
    node_id: string;
    updated_at: string;
    url: string;
    user: GistsCreateCommentResponseUser;
  };
  type GistsCreateResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsCreateResponseHistoryItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsCreateResponseHistoryItemChangeStatus = {
    additions: number;
    deletions: number;
    total: number;
  };
  type GistsCreateResponseHistoryItem = {
    change_status: GistsCreateResponseHistoryItemChangeStatus;
    committed_at: string;
    url: string;
    user: GistsCreateResponseHistoryItemUser;
    version: string;
  };
  type GistsCreateResponseForksItemUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type GistsCreateResponseForksItem = {
    created_at: string;
    id: string;
    updated_at: string;
    url: string;
    user: GistsCreateResponseForksItemUser;
  };
  type GistsCreateResponseFilesHelloWorldRubyTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsCreateResponseFilesHelloWorldPythonTxt = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsCreateResponseFilesHelloWorldRb = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsCreateResponseFilesHelloWorldPy = {
    content: string;
    filename: string;
    language: string;
    raw_url: string;
    size: number;
    truncated: boolean;
    type: string;
  };
  type GistsCreateResponseFiles = {
    "hello_world.py": GistsCreateResponseFilesHelloWorldPy;
    "hello_world.rb": GistsCreateResponseFilesHelloWorldRb;
    "hello_world_python.txt": GistsCreateResponseFilesHelloWorldPythonTxt;
    "hello_world_ruby.txt": GistsCreateResponseFilesHelloWorldRubyTxt;
  };
  type GistsCreateResponse = {
    comments: number;
    comments_url: string;
    commits_url: string;
    created_at: string;
    description: string;
    files: GistsCreateResponseFiles;
    forks: Array<GistsCreateResponseForksItem>;
    forks_url: string;
    git_pull_url: string;
    git_push_url: string;
    history: Array<GistsCreateResponseHistoryItem>;
    html_url: string;
    id: string;
    node_id: string;
    owner: GistsCreateResponseOwner;
    public: boolean;
    truncated: boolean;
    updated_at: string;
    url: string;
    user: null;
  };
  type CodesOfConductListConductCodesResponseItem = {
    key: string;
    name: string;
    url: string;
  };
  type CodesOfConductGetForRepoResponse = {
    body: string;
    key: string;
    name: string;
    url: string;
  };
  type CodesOfConductGetConductCodeResponse = {
    body: string;
    key: string;
    name: string;
    url: string;
  };
  type ChecksUpdateResponsePullRequestsItemHeadRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksUpdateResponsePullRequestsItemHead = {
    ref: string;
    repo: ChecksUpdateResponsePullRequestsItemHeadRepo;
    sha: string;
  };
  type ChecksUpdateResponsePullRequestsItemBaseRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksUpdateResponsePullRequestsItemBase = {
    ref: string;
    repo: ChecksUpdateResponsePullRequestsItemBaseRepo;
    sha: string;
  };
  type ChecksUpdateResponsePullRequestsItem = {
    base: ChecksUpdateResponsePullRequestsItemBase;
    head: ChecksUpdateResponsePullRequestsItemHead;
    id: number;
    number: number;
    url: string;
  };
  type ChecksUpdateResponseOutput = {
    annotations_count: number;
    annotations_url: string;
    summary: string;
    text: string;
    title: string;
  };
  type ChecksUpdateResponseCheckSuite = { id: number };
  type ChecksUpdateResponseAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksUpdateResponseAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksUpdateResponseApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksUpdateResponseAppOwner;
    permissions: ChecksUpdateResponseAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksUpdateResponse = {
    app: ChecksUpdateResponseApp;
    check_suite: ChecksUpdateResponseCheckSuite;
    completed_at: string;
    conclusion: string;
    details_url: string;
    external_id: string;
    head_sha: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    output: ChecksUpdateResponseOutput;
    pull_requests: Array<ChecksUpdateResponsePullRequestsItem>;
    started_at: string;
    status: string;
    url: string;
  };
  type ChecksSetSuitesPreferencesResponseRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ChecksSetSuitesPreferencesResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ChecksSetSuitesPreferencesResponseRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ChecksSetSuitesPreferencesResponseRepositoryOwner;
    permissions: ChecksSetSuitesPreferencesResponseRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ChecksSetSuitesPreferencesResponsePreferencesAutoTriggerChecksItem = {
    app_id: number;
    setting: boolean;
  };
  type ChecksSetSuitesPreferencesResponsePreferences = {
    auto_trigger_checks: Array<
      ChecksSetSuitesPreferencesResponsePreferencesAutoTriggerChecksItem
    >;
  };
  type ChecksSetSuitesPreferencesResponse = {
    preferences: ChecksSetSuitesPreferencesResponsePreferences;
    repository: ChecksSetSuitesPreferencesResponseRepository;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ChecksListSuitesForRefResponseCheckSuitesItemRepositoryOwner;
    permissions: ChecksListSuitesForRefResponseCheckSuitesItemRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItemApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksListSuitesForRefResponseCheckSuitesItemAppOwner;
    permissions: ChecksListSuitesForRefResponseCheckSuitesItemAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksListSuitesForRefResponseCheckSuitesItem = {
    after: string;
    app: ChecksListSuitesForRefResponseCheckSuitesItemApp;
    before: string;
    conclusion: string;
    head_branch: string;
    head_sha: string;
    id: number;
    node_id: string;
    pull_requests: Array<any>;
    repository: ChecksListSuitesForRefResponseCheckSuitesItemRepository;
    status: string;
    url: string;
  };
  type ChecksListSuitesForRefResponse = {
    check_suites: Array<ChecksListSuitesForRefResponseCheckSuitesItem>;
    total_count: number;
  };
  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHeadRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHead = {
    ref: string;
    repo: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHeadRepo;
    sha: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBaseRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBase = {
    ref: string;
    repo: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBaseRepo;
    sha: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemPullRequestsItem = {
    base: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemBase;
    head: ChecksListForSuiteResponseCheckRunsItemPullRequestsItemHead;
    id: number;
    number: number;
    url: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemOutput = {
    annotations_count: number;
    annotations_url: string;
    summary: string;
    text: string;
    title: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemCheckSuite = { id: number };
  type ChecksListForSuiteResponseCheckRunsItemAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksListForSuiteResponseCheckRunsItemApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksListForSuiteResponseCheckRunsItemAppOwner;
    permissions: ChecksListForSuiteResponseCheckRunsItemAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksListForSuiteResponseCheckRunsItem = {
    app: ChecksListForSuiteResponseCheckRunsItemApp;
    check_suite: ChecksListForSuiteResponseCheckRunsItemCheckSuite;
    completed_at: string;
    conclusion: string;
    details_url: string;
    external_id: string;
    head_sha: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    output: ChecksListForSuiteResponseCheckRunsItemOutput;
    pull_requests: Array<
      ChecksListForSuiteResponseCheckRunsItemPullRequestsItem
    >;
    started_at: string;
    status: string;
    url: string;
  };
  type ChecksListForSuiteResponse = {
    check_runs: Array<ChecksListForSuiteResponseCheckRunsItem>;
    total_count: number;
  };
  type ChecksListForRefResponseCheckRunsItemPullRequestsItemHeadRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksListForRefResponseCheckRunsItemPullRequestsItemHead = {
    ref: string;
    repo: ChecksListForRefResponseCheckRunsItemPullRequestsItemHeadRepo;
    sha: string;
  };
  type ChecksListForRefResponseCheckRunsItemPullRequestsItemBaseRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksListForRefResponseCheckRunsItemPullRequestsItemBase = {
    ref: string;
    repo: ChecksListForRefResponseCheckRunsItemPullRequestsItemBaseRepo;
    sha: string;
  };
  type ChecksListForRefResponseCheckRunsItemPullRequestsItem = {
    base: ChecksListForRefResponseCheckRunsItemPullRequestsItemBase;
    head: ChecksListForRefResponseCheckRunsItemPullRequestsItemHead;
    id: number;
    number: number;
    url: string;
  };
  type ChecksListForRefResponseCheckRunsItemOutput = {
    annotations_count: number;
    annotations_url: string;
    summary: string;
    text: string;
    title: string;
  };
  type ChecksListForRefResponseCheckRunsItemCheckSuite = { id: number };
  type ChecksListForRefResponseCheckRunsItemAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksListForRefResponseCheckRunsItemAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksListForRefResponseCheckRunsItemApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksListForRefResponseCheckRunsItemAppOwner;
    permissions: ChecksListForRefResponseCheckRunsItemAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksListForRefResponseCheckRunsItem = {
    app: ChecksListForRefResponseCheckRunsItemApp;
    check_suite: ChecksListForRefResponseCheckRunsItemCheckSuite;
    completed_at: string;
    conclusion: string;
    details_url: string;
    external_id: string;
    head_sha: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    output: ChecksListForRefResponseCheckRunsItemOutput;
    pull_requests: Array<ChecksListForRefResponseCheckRunsItemPullRequestsItem>;
    started_at: string;
    status: string;
    url: string;
  };
  type ChecksListForRefResponse = {
    check_runs: Array<ChecksListForRefResponseCheckRunsItem>;
    total_count: number;
  };
  type ChecksListAnnotationsResponseItem = {
    annotation_level: string;
    end_column: number;
    end_line: number;
    message: string;
    path: string;
    raw_details: string;
    start_column: number;
    start_line: number;
    title: string;
  };
  type ChecksGetSuiteResponseRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ChecksGetSuiteResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ChecksGetSuiteResponseRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ChecksGetSuiteResponseRepositoryOwner;
    permissions: ChecksGetSuiteResponseRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ChecksGetSuiteResponseAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksGetSuiteResponseAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksGetSuiteResponseApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksGetSuiteResponseAppOwner;
    permissions: ChecksGetSuiteResponseAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksGetSuiteResponse = {
    after: string;
    app: ChecksGetSuiteResponseApp;
    before: string;
    conclusion: string;
    head_branch: string;
    head_sha: string;
    id: number;
    node_id: string;
    pull_requests: Array<any>;
    repository: ChecksGetSuiteResponseRepository;
    status: string;
    url: string;
  };
  type ChecksGetResponsePullRequestsItemHeadRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksGetResponsePullRequestsItemHead = {
    ref: string;
    repo: ChecksGetResponsePullRequestsItemHeadRepo;
    sha: string;
  };
  type ChecksGetResponsePullRequestsItemBaseRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksGetResponsePullRequestsItemBase = {
    ref: string;
    repo: ChecksGetResponsePullRequestsItemBaseRepo;
    sha: string;
  };
  type ChecksGetResponsePullRequestsItem = {
    base: ChecksGetResponsePullRequestsItemBase;
    head: ChecksGetResponsePullRequestsItemHead;
    id: number;
    number: number;
    url: string;
  };
  type ChecksGetResponseOutput = {
    annotations_count: number;
    annotations_url: string;
    summary: string;
    text: string;
    title: string;
  };
  type ChecksGetResponseCheckSuite = { id: number };
  type ChecksGetResponseAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksGetResponseAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksGetResponseApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksGetResponseAppOwner;
    permissions: ChecksGetResponseAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksGetResponse = {
    app: ChecksGetResponseApp;
    check_suite: ChecksGetResponseCheckSuite;
    completed_at: string;
    conclusion: string;
    details_url: string;
    external_id: string;
    head_sha: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    output: ChecksGetResponseOutput;
    pull_requests: Array<ChecksGetResponsePullRequestsItem>;
    started_at: string;
    status: string;
    url: string;
  };
  type ChecksCreateSuiteResponseRepositoryPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ChecksCreateSuiteResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ChecksCreateSuiteResponseRepository = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ChecksCreateSuiteResponseRepositoryOwner;
    permissions: ChecksCreateSuiteResponseRepositoryPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ChecksCreateSuiteResponseAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksCreateSuiteResponseAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksCreateSuiteResponseApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksCreateSuiteResponseAppOwner;
    permissions: ChecksCreateSuiteResponseAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksCreateSuiteResponse = {
    after: string;
    app: ChecksCreateSuiteResponseApp;
    before: string;
    conclusion: string;
    head_branch: string;
    head_sha: string;
    id: number;
    node_id: string;
    pull_requests: Array<any>;
    repository: ChecksCreateSuiteResponseRepository;
    status: string;
    url: string;
  };
  type ChecksCreateResponsePullRequestsItemHeadRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksCreateResponsePullRequestsItemHead = {
    ref: string;
    repo: ChecksCreateResponsePullRequestsItemHeadRepo;
    sha: string;
  };
  type ChecksCreateResponsePullRequestsItemBaseRepo = {
    id: number;
    name: string;
    url: string;
  };
  type ChecksCreateResponsePullRequestsItemBase = {
    ref: string;
    repo: ChecksCreateResponsePullRequestsItemBaseRepo;
    sha: string;
  };
  type ChecksCreateResponsePullRequestsItem = {
    base: ChecksCreateResponsePullRequestsItemBase;
    head: ChecksCreateResponsePullRequestsItemHead;
    id: number;
    number: number;
    url: string;
  };
  type ChecksCreateResponseOutput = {
    summary: string;
    text: string;
    title: string;
    annotations_count?: number;
    annotations_url?: string;
  };
  type ChecksCreateResponseCheckSuite = { id: number };
  type ChecksCreateResponseAppPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type ChecksCreateResponseAppOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type ChecksCreateResponseApp = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: ChecksCreateResponseAppOwner;
    permissions: ChecksCreateResponseAppPermissions;
    slug: string;
    updated_at: string;
  };
  type ChecksCreateResponse = {
    app: ChecksCreateResponseApp;
    check_suite: ChecksCreateResponseCheckSuite;
    completed_at: null | string;
    conclusion: null | string;
    details_url: string;
    external_id: string;
    head_sha: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    output: ChecksCreateResponseOutput;
    pull_requests: Array<ChecksCreateResponsePullRequestsItem>;
    started_at: string;
    status: string;
    url: string;
  };
  type AppsResetTokenResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsResetTokenResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type AppsResetTokenResponse = {
    app: AppsResetTokenResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: AppsResetTokenResponseUser;
  };
  type AppsResetAuthorizationResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsResetAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type AppsResetAuthorizationResponse = {
    app: AppsResetAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: AppsResetAuthorizationResponseUser;
  };
  type AppsListReposResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsListReposResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: AppsListReposResponseRepositoriesItemOwner;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type AppsListReposResponse = {
    repositories: Array<AppsListReposResponseRepositoriesItem>;
    total_count: number;
  };
  type AppsListPlansStubbedResponseItem = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListPlansResponseItem = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemPlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemAccount = {
    email: null;
    id: number;
    login: string;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItem = {
    account: AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemAccount;
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItemPlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItemPlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItemAccount = {
    email: null;
    id: number;
    login: string;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type AppsListMarketplacePurchasesForAuthenticatedUserResponseItem = {
    account: AppsListMarketplacePurchasesForAuthenticatedUserResponseItemAccount;
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsListMarketplacePurchasesForAuthenticatedUserResponseItemPlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItemAccount = {
    avatar_url: string;
    description?: string;
    events_url: string;
    hooks_url?: string;
    id: number;
    issues_url?: string;
    login: string;
    members_url?: string;
    node_id: string;
    public_members_url?: string;
    repos_url: string;
    url: string;
    followers_url?: string;
    following_url?: string;
    gists_url?: string;
    gravatar_id?: string;
    html_url?: string;
    organizations_url?: string;
    received_events_url?: string;
    site_admin?: boolean;
    starred_url?: string;
    subscriptions_url?: string;
    type?: string;
  };
  type AppsListInstallationsForAuthenticatedUserResponseInstallationsItem = {
    access_tokens_url: string;
    account: AppsListInstallationsForAuthenticatedUserResponseInstallationsItemAccount;
    app_id: number;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsListInstallationsForAuthenticatedUserResponseInstallationsItemPermissions;
    repositories_url: string;
    single_file_name: string;
    target_id: number;
    target_type: string;
  };
  type AppsListInstallationsForAuthenticatedUserResponse = {
    installations: Array<
      AppsListInstallationsForAuthenticatedUserResponseInstallationsItem
    >;
    total_count: number;
  };
  type AppsListInstallationsResponseItemPermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type AppsListInstallationsResponseItemAccount = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type AppsListInstallationsResponseItem = {
    access_tokens_url: string;
    account: AppsListInstallationsResponseItemAccount;
    app_id: number;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsListInstallationsResponseItemPermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: string;
    target_id: number;
    target_type: string;
  };
  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemOwner;
    permissions: AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type AppsListInstallationReposForAuthenticatedUserResponse = {
    repositories: Array<
      AppsListInstallationReposForAuthenticatedUserResponseRepositoriesItem
    >;
    total_count: number;
  };
  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchasePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchase = {
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchasePlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChangePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChange = {
    effective_date: string;
    id: number;
    plan: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChangePlan;
    unit_count: null;
  };
  type AppsListAccountsUserOrOrgOnPlanStubbedResponseItem = {
    email: null;
    id: number;
    login: string;
    marketplace_pending_change: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePendingChange;
    marketplace_purchase: AppsListAccountsUserOrOrgOnPlanStubbedResponseItemMarketplacePurchase;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchasePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchase = {
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchasePlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChangePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChange = {
    effective_date: string;
    id: number;
    plan: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChangePlan;
    unit_count: null;
  };
  type AppsListAccountsUserOrOrgOnPlanResponseItem = {
    email: null;
    id: number;
    login: string;
    marketplace_pending_change: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePendingChange;
    marketplace_purchase: AppsListAccountsUserOrOrgOnPlanResponseItemMarketplacePurchase;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type AppsGetUserInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsGetUserInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsGetUserInstallationResponse = {
    access_tokens_url: string;
    account: AppsGetUserInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsGetUserInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsGetRepoInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsGetRepoInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsGetRepoInstallationResponse = {
    access_tokens_url: string;
    account: AppsGetRepoInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsGetRepoInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsGetOrgInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsGetOrgInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsGetOrgInstallationResponse = {
    access_tokens_url: string;
    account: AppsGetOrgInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsGetOrgInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsGetInstallationResponsePermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type AppsGetInstallationResponseAccount = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type AppsGetInstallationResponse = {
    access_tokens_url: string;
    account: AppsGetInstallationResponseAccount;
    app_id: number;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsGetInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: string;
    target_id: number;
    target_type: string;
  };
  type AppsGetBySlugResponsePermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type AppsGetBySlugResponseOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type AppsGetBySlugResponse = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: AppsGetBySlugResponseOwner;
    permissions: AppsGetBySlugResponsePermissions;
    slug: string;
    updated_at: string;
  };
  type AppsGetAuthenticatedResponsePermissions = {
    contents: string;
    issues: string;
    metadata: string;
    single_file: string;
  };
  type AppsGetAuthenticatedResponseOwner = {
    avatar_url: string;
    description: string;
    events_url: string;
    hooks_url: string;
    id: number;
    issues_url: string;
    login: string;
    members_url: string;
    node_id: string;
    public_members_url: string;
    repos_url: string;
    url: string;
  };
  type AppsGetAuthenticatedResponse = {
    created_at: string;
    description: string;
    events: Array<string>;
    external_url: string;
    html_url: string;
    id: number;
    installations_count: number;
    name: string;
    node_id: string;
    owner: AppsGetAuthenticatedResponseOwner;
    permissions: AppsGetAuthenticatedResponsePermissions;
    slug: string;
    updated_at: string;
  };
  type AppsFindUserInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsFindUserInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsFindUserInstallationResponse = {
    access_tokens_url: string;
    account: AppsFindUserInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsFindUserInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsFindRepoInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsFindRepoInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsFindRepoInstallationResponse = {
    access_tokens_url: string;
    account: AppsFindRepoInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsFindRepoInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsFindOrgInstallationResponsePermissions = {
    checks: string;
    contents: string;
    metadata: string;
  };
  type AppsFindOrgInstallationResponseAccount = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsFindOrgInstallationResponse = {
    access_tokens_url: string;
    account: AppsFindOrgInstallationResponseAccount;
    app_id: number;
    created_at: string;
    events: Array<string>;
    html_url: string;
    id: number;
    permissions: AppsFindOrgInstallationResponsePermissions;
    repositories_url: string;
    repository_selection: string;
    single_file_name: null;
    target_id: number;
    target_type: string;
    updated_at: string;
  };
  type AppsCreateInstallationTokenResponseRepositoriesItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type AppsCreateInstallationTokenResponseRepositoriesItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsCreateInstallationTokenResponseRepositoriesItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: AppsCreateInstallationTokenResponseRepositoriesItemOwner;
    permissions: AppsCreateInstallationTokenResponseRepositoriesItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type AppsCreateInstallationTokenResponsePermissions = {
    contents: string;
    issues: string;
  };
  type AppsCreateInstallationTokenResponse = {
    expires_at: string;
    permissions: AppsCreateInstallationTokenResponsePermissions;
    repositories: Array<AppsCreateInstallationTokenResponseRepositoriesItem>;
    token: string;
  };
  type AppsCreateFromManifestResponseOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsCreateFromManifestResponse = {
    client_id: string;
    client_secret: string;
    created_at: string;
    description: null;
    external_url: string;
    html_url: string;
    id: number;
    name: string;
    node_id: string;
    owner: AppsCreateFromManifestResponseOwner;
    pem: string;
    updated_at: string;
    webhook_secret: string;
  };
  type AppsCreateContentAttachmentResponse = {
    body: string;
    id: number;
    title: string;
  };
  type AppsCheckTokenResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsCheckTokenResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type AppsCheckTokenResponse = {
    app: AppsCheckTokenResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: AppsCheckTokenResponseUser;
  };
  type AppsCheckAuthorizationResponseUser = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type AppsCheckAuthorizationResponseApp = {
    client_id: string;
    name: string;
    url: string;
  };
  type AppsCheckAuthorizationResponse = {
    app: AppsCheckAuthorizationResponseApp;
    created_at: string;
    fingerprint: string;
    hashed_token: string;
    id: number;
    note: string;
    note_url: string;
    scopes: Array<string>;
    token: string;
    token_last_eight: string;
    updated_at: string;
    url: string;
    user: AppsCheckAuthorizationResponseUser;
  };
  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchasePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchase = {
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchasePlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChangePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChange = {
    effective_date: string;
    id: number;
    plan: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChangePlan;
    unit_count: null;
  };
  type AppsCheckAccountIsAssociatedWithAnyStubbedResponse = {
    email: null;
    id: number;
    login: string;
    marketplace_pending_change: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePendingChange;
    marketplace_purchase: AppsCheckAccountIsAssociatedWithAnyStubbedResponseMarketplacePurchase;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchasePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchase = {
    billing_cycle: string;
    free_trial_ends_on: string;
    next_billing_date: string;
    on_free_trial: boolean;
    plan: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchasePlan;
    unit_count: null;
    updated_at: string;
  };
  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChangePlan = {
    accounts_url: string;
    bullets: Array<string>;
    description: string;
    has_free_trial: boolean;
    id: number;
    monthly_price_in_cents: number;
    name: string;
    number: number;
    price_model: string;
    state: string;
    unit_name: null;
    url: string;
    yearly_price_in_cents: number;
  };
  type AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChange = {
    effective_date: string;
    id: number;
    plan: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChangePlan;
    unit_count: null;
  };
  type AppsCheckAccountIsAssociatedWithAnyResponse = {
    email: null;
    id: number;
    login: string;
    marketplace_pending_change: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePendingChange;
    marketplace_purchase: AppsCheckAccountIsAssociatedWithAnyResponseMarketplacePurchase;
    organization_billing_email: string;
    type: string;
    url: string;
  };
  type ActivitySetThreadSubscriptionResponse = {
    created_at: string;
    ignored: boolean;
    reason: null;
    subscribed: boolean;
    thread_url: string;
    url: string;
  };
  type ActivitySetRepoSubscriptionResponse = {
    created_at: string;
    ignored: boolean;
    reason: null;
    repository_url: string;
    subscribed: boolean;
    url: string;
  };
  type ActivityListWatchersForRepoResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListWatchedReposForAuthenticatedUserResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ActivityListWatchedReposForAuthenticatedUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListWatchedReposForAuthenticatedUserResponseItemLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type ActivityListWatchedReposForAuthenticatedUserResponseItem = {
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: ActivityListWatchedReposForAuthenticatedUserResponseItemLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ActivityListWatchedReposForAuthenticatedUserResponseItemOwner;
    permissions: ActivityListWatchedReposForAuthenticatedUserResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ActivityListStargazersForRepoResponseItem = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListReposWatchedByUserResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ActivityListReposWatchedByUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListReposWatchedByUserResponseItemLicense = {
    key: string;
    name: string;
    node_id: string;
    spdx_id: string;
    url: string;
  };
  type ActivityListReposWatchedByUserResponseItem = {
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    license: ActivityListReposWatchedByUserResponseItemLicense;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ActivityListReposWatchedByUserResponseItemOwner;
    permissions: ActivityListReposWatchedByUserResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ActivityListReposStarredByUserResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ActivityListReposStarredByUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListReposStarredByUserResponseItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ActivityListReposStarredByUserResponseItemOwner;
    permissions: ActivityListReposStarredByUserResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ActivityListReposStarredByAuthenticatedUserResponseItemPermissions = {
    admin: boolean;
    pull: boolean;
    push: boolean;
  };
  type ActivityListReposStarredByAuthenticatedUserResponseItemOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListReposStarredByAuthenticatedUserResponseItem = {
    allow_merge_commit: boolean;
    allow_rebase_merge: boolean;
    allow_squash_merge: boolean;
    archive_url: string;
    archived: boolean;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    clone_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    created_at: string;
    default_branch: string;
    deployments_url: string;
    description: string;
    disabled: boolean;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_count: number;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    has_downloads: boolean;
    has_issues: boolean;
    has_pages: boolean;
    has_projects: boolean;
    has_wiki: boolean;
    homepage: string;
    hooks_url: string;
    html_url: string;
    id: number;
    is_template: boolean;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    language: null;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    mirror_url: string;
    name: string;
    network_count: number;
    node_id: string;
    notifications_url: string;
    open_issues_count: number;
    owner: ActivityListReposStarredByAuthenticatedUserResponseItemOwner;
    permissions: ActivityListReposStarredByAuthenticatedUserResponseItemPermissions;
    private: boolean;
    pulls_url: string;
    pushed_at: string;
    releases_url: string;
    size: number;
    ssh_url: string;
    stargazers_count: number;
    stargazers_url: string;
    statuses_url: string;
    subscribers_count: number;
    subscribers_url: string;
    subscription_url: string;
    svn_url: string;
    tags_url: string;
    teams_url: string;
    template_repository: null;
    topics: Array<string>;
    trees_url: string;
    updated_at: string;
    url: string;
    watchers_count: number;
  };
  type ActivityListNotificationsForRepoResponseItemSubject = {
    latest_comment_url: string;
    title: string;
    type: string;
    url: string;
  };
  type ActivityListNotificationsForRepoResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListNotificationsForRepoResponseItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ActivityListNotificationsForRepoResponseItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ActivityListNotificationsForRepoResponseItem = {
    id: string;
    last_read_at: string;
    reason: string;
    repository: ActivityListNotificationsForRepoResponseItemRepository;
    subject: ActivityListNotificationsForRepoResponseItemSubject;
    unread: boolean;
    updated_at: string;
    url: string;
  };
  type ActivityListNotificationsResponseItemSubject = {
    latest_comment_url: string;
    title: string;
    type: string;
    url: string;
  };
  type ActivityListNotificationsResponseItemRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityListNotificationsResponseItemRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ActivityListNotificationsResponseItemRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ActivityListNotificationsResponseItem = {
    id: string;
    last_read_at: string;
    reason: string;
    repository: ActivityListNotificationsResponseItemRepository;
    subject: ActivityListNotificationsResponseItemSubject;
    unread: boolean;
    updated_at: string;
    url: string;
  };
  type ActivityListFeedsResponseLinksUser = { href: string; type: string };
  type ActivityListFeedsResponseLinksTimeline = { href: string; type: string };
  type ActivityListFeedsResponseLinksSecurityAdvisories = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinksCurrentUserPublic = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinksCurrentUserOrganizationsItem = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinksCurrentUserOrganization = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinksCurrentUserActor = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinksCurrentUser = {
    href: string;
    type: string;
  };
  type ActivityListFeedsResponseLinks = {
    current_user: ActivityListFeedsResponseLinksCurrentUser;
    current_user_actor: ActivityListFeedsResponseLinksCurrentUserActor;
    current_user_organization: ActivityListFeedsResponseLinksCurrentUserOrganization;
    current_user_organizations: Array<
      ActivityListFeedsResponseLinksCurrentUserOrganizationsItem
    >;
    current_user_public: ActivityListFeedsResponseLinksCurrentUserPublic;
    security_advisories: ActivityListFeedsResponseLinksSecurityAdvisories;
    timeline: ActivityListFeedsResponseLinksTimeline;
    user: ActivityListFeedsResponseLinksUser;
  };
  type ActivityListFeedsResponse = {
    _links: ActivityListFeedsResponseLinks;
    current_user_actor_url: string;
    current_user_organization_url: string;
    current_user_organization_urls: Array<string>;
    current_user_public_url: string;
    current_user_url: string;
    security_advisories_url: string;
    timeline_url: string;
    user_url: string;
  };
  type ActivityGetThreadSubscriptionResponse = {
    created_at: string;
    ignored: boolean;
    reason: null;
    subscribed: boolean;
    thread_url: string;
    url: string;
  };
  type ActivityGetThreadResponseSubject = {
    latest_comment_url: string;
    title: string;
    type: string;
    url: string;
  };
  type ActivityGetThreadResponseRepositoryOwner = {
    avatar_url: string;
    events_url: string;
    followers_url: string;
    following_url: string;
    gists_url: string;
    gravatar_id: string;
    html_url: string;
    id: number;
    login: string;
    node_id: string;
    organizations_url: string;
    received_events_url: string;
    repos_url: string;
    site_admin: boolean;
    starred_url: string;
    subscriptions_url: string;
    type: string;
    url: string;
  };
  type ActivityGetThreadResponseRepository = {
    archive_url: string;
    assignees_url: string;
    blobs_url: string;
    branches_url: string;
    collaborators_url: string;
    comments_url: string;
    commits_url: string;
    compare_url: string;
    contents_url: string;
    contributors_url: string;
    deployments_url: string;
    description: string;
    downloads_url: string;
    events_url: string;
    fork: boolean;
    forks_url: string;
    full_name: string;
    git_commits_url: string;
    git_refs_url: string;
    git_tags_url: string;
    git_url: string;
    html_url: string;
    id: number;
    issue_comment_url: string;
    issue_events_url: string;
    issues_url: string;
    keys_url: string;
    labels_url: string;
    languages_url: string;
    merges_url: string;
    milestones_url: string;
    name: string;
    node_id: string;
    notifications_url: string;
    owner: ActivityGetThreadResponseRepositoryOwner;
    private: boolean;
    pulls_url: string;
    releases_url: string;
    ssh_url: string;
    stargazers_url: string;
    statuses_url: string;
    subscribers_url: string;
    subscription_url: string;
    tags_url: string;
    teams_url: string;
    trees_url: string;
    url: string;
  };
  type ActivityGetThreadResponse = {
    id: string;
    last_read_at: string;
    reason: string;
    repository: ActivityGetThreadResponseRepository;
    subject: ActivityGetThreadResponseSubject;
    unread: boolean;
    updated_at: string;
    url: string;
  };
  type ActivityGetRepoSubscriptionResponse = {
    created_at: string;
    ignored: boolean;
    reason: null;
    repository_url: string;
    subscribed: boolean;
    url: string;
  };
  type ActivityListNotificationsResponse = Array<
    ActivityListNotificationsResponseItem
  >;
  type ActivityListNotificationsForRepoResponse = Array<
    ActivityListNotificationsForRepoResponseItem
  >;
  type ActivityListReposStarredByAuthenticatedUserResponse = Array<
    ActivityListReposStarredByAuthenticatedUserResponseItem
  >;
  type ActivityListReposStarredByUserResponse = Array<
    ActivityListReposStarredByUserResponseItem
  >;
  type ActivityListReposWatchedByUserResponse = Array<
    ActivityListReposWatchedByUserResponseItem
  >;
  type ActivityListStargazersForRepoResponse = Array<
    ActivityListStargazersForRepoResponseItem
  >;
  type ActivityListWatchedReposForAuthenticatedUserResponse = Array<
    ActivityListWatchedReposForAuthenticatedUserResponseItem
  >;
  type ActivityListWatchersForRepoResponse = Array<
    ActivityListWatchersForRepoResponseItem
  >;
  type AppsListAccountsUserOrOrgOnPlanResponse = Array<
    AppsListAccountsUserOrOrgOnPlanResponseItem
  >;
  type AppsListAccountsUserOrOrgOnPlanStubbedResponse = Array<
    AppsListAccountsUserOrOrgOnPlanStubbedResponseItem
  >;
  type AppsListInstallationsResponse = Array<AppsListInstallationsResponseItem>;
  type AppsListMarketplacePurchasesForAuthenticatedUserResponse = Array<
    AppsListMarketplacePurchasesForAuthenticatedUserResponseItem
  >;
  type AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponse = Array<
    AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponseItem
  >;
  type AppsListPlansResponse = Array<AppsListPlansResponseItem>;
  type AppsListPlansStubbedResponse = Array<AppsListPlansStubbedResponseItem>;
  type ChecksListAnnotationsResponse = Array<ChecksListAnnotationsResponseItem>;
  type CodesOfConductListConductCodesResponse = Array<
    CodesOfConductListConductCodesResponseItem
  >;
  type GistsListResponse = Array<GistsListResponseItem>;
  type GistsListCommentsResponse = Array<GistsListCommentsResponseItem>;
  type GistsListCommitsResponse = Array<GistsListCommitsResponseItem>;
  type GistsListForksResponse = Array<GistsListForksResponseItem>;
  type GistsListPublicResponse = Array<GistsListPublicResponseItem>;
  type GistsListPublicForUserResponse = Array<
    GistsListPublicForUserResponseItem
  >;
  type GistsListStarredResponse = Array<GistsListStarredResponseItem>;
  type GitListMatchingRefsResponse = Array<GitListMatchingRefsResponseItem>;
  type GitignoreListTemplatesResponse = Array<string>;
  type IssuesAddLabelsResponse = Array<IssuesAddLabelsResponseItem>;
  type IssuesListResponse = Array<IssuesListResponseItem>;
  type IssuesListAssigneesResponse = Array<IssuesListAssigneesResponseItem>;
  type IssuesListCommentsResponse = Array<IssuesListCommentsResponseItem>;
  type IssuesListCommentsForRepoResponse = Array<
    IssuesListCommentsForRepoResponseItem
  >;
  type IssuesListEventsResponse = Array<IssuesListEventsResponseItem>;
  type IssuesListEventsForRepoResponse = Array<
    IssuesListEventsForRepoResponseItem
  >;
  type IssuesListEventsForTimelineResponse = Array<
    IssuesListEventsForTimelineResponseItem
  >;
  type IssuesListForAuthenticatedUserResponse = Array<
    IssuesListForAuthenticatedUserResponseItem
  >;
  type IssuesListForOrgResponse = Array<IssuesListForOrgResponseItem>;
  type IssuesListForRepoResponse = Array<IssuesListForRepoResponseItem>;
  type IssuesListLabelsForMilestoneResponse = Array<
    IssuesListLabelsForMilestoneResponseItem
  >;
  type IssuesListLabelsForRepoResponse = Array<
    IssuesListLabelsForRepoResponseItem
  >;
  type IssuesListLabelsOnIssueResponse = Array<
    IssuesListLabelsOnIssueResponseItem
  >;
  type IssuesListMilestonesForRepoResponse = Array<
    IssuesListMilestonesForRepoResponseItem
  >;
  type IssuesRemoveLabelResponse = Array<IssuesRemoveLabelResponseItem>;
  type IssuesReplaceLabelsResponse = Array<IssuesReplaceLabelsResponseItem>;
  type LicensesListResponse = Array<LicensesListResponseItem>;
  type LicensesListCommonlyUsedResponse = Array<
    LicensesListCommonlyUsedResponseItem
  >;
  type MigrationsGetCommitAuthorsResponse = Array<
    MigrationsGetCommitAuthorsResponseItem
  >;
  type MigrationsGetLargeFilesResponse = Array<
    MigrationsGetLargeFilesResponseItem
  >;
  type MigrationsListForAuthenticatedUserResponse = Array<
    MigrationsListForAuthenticatedUserResponseItem
  >;
  type MigrationsListForOrgResponse = Array<MigrationsListForOrgResponseItem>;
  type OauthAuthorizationsListAuthorizationsResponse = Array<
    OauthAuthorizationsListAuthorizationsResponseItem
  >;
  type OauthAuthorizationsListGrantsResponse = Array<
    OauthAuthorizationsListGrantsResponseItem
  >;
  type OrgsListResponse = Array<OrgsListResponseItem>;
  type OrgsListBlockedUsersResponse = Array<OrgsListBlockedUsersResponseItem>;
  type OrgsListForAuthenticatedUserResponse = Array<
    OrgsListForAuthenticatedUserResponseItem
  >;
  type OrgsListForUserResponse = Array<OrgsListForUserResponseItem>;
  type OrgsListHooksResponse = Array<OrgsListHooksResponseItem>;
  type OrgsListInvitationTeamsResponse = Array<
    OrgsListInvitationTeamsResponseItem
  >;
  type OrgsListMembersResponse = Array<OrgsListMembersResponseItem>;
  type OrgsListMembershipsResponse = Array<OrgsListMembershipsResponseItem>;
  type OrgsListOutsideCollaboratorsResponse = Array<
    OrgsListOutsideCollaboratorsResponseItem
  >;
  type OrgsListPendingInvitationsResponse = Array<
    OrgsListPendingInvitationsResponseItem
  >;
  type OrgsListPublicMembersResponse = Array<OrgsListPublicMembersResponseItem>;
  type ProjectsListCardsResponse = Array<ProjectsListCardsResponseItem>;
  type ProjectsListCollaboratorsResponse = Array<
    ProjectsListCollaboratorsResponseItem
  >;
  type ProjectsListColumnsResponse = Array<ProjectsListColumnsResponseItem>;
  type ProjectsListForOrgResponse = Array<ProjectsListForOrgResponseItem>;
  type ProjectsListForRepoResponse = Array<ProjectsListForRepoResponseItem>;
  type ProjectsListForUserResponse = Array<ProjectsListForUserResponseItem>;
  type PullsGetCommentsForReviewResponse = Array<
    PullsGetCommentsForReviewResponseItem
  >;
  type PullsListResponse = Array<PullsListResponseItem>;
  type PullsListCommentsResponse = Array<PullsListCommentsResponseItem>;
  type PullsListCommentsForRepoResponse = Array<
    PullsListCommentsForRepoResponseItem
  >;
  type PullsListCommitsResponse = Array<PullsListCommitsResponseItem>;
  type PullsListFilesResponse = Array<PullsListFilesResponseItem>;
  type PullsListReviewsResponse = Array<PullsListReviewsResponseItem>;
  type ReactionsListForCommitCommentResponse = Array<
    ReactionsListForCommitCommentResponseItem
  >;
  type ReactionsListForIssueResponse = Array<ReactionsListForIssueResponseItem>;
  type ReactionsListForIssueCommentResponse = Array<
    ReactionsListForIssueCommentResponseItem
  >;
  type ReactionsListForPullRequestReviewCommentResponse = Array<
    ReactionsListForPullRequestReviewCommentResponseItem
  >;
  type ReactionsListForTeamDiscussionResponse = Array<
    ReactionsListForTeamDiscussionResponseItem
  >;
  type ReactionsListForTeamDiscussionCommentResponse = Array<
    ReactionsListForTeamDiscussionCommentResponseItem
  >;
  type ReposAddProtectedBranchAppRestrictionsResponse = Array<
    ReposAddProtectedBranchAppRestrictionsResponseItem
  >;
  type ReposAddProtectedBranchRequiredStatusChecksContextsResponse = Array<
    string
  >;
  type ReposAddProtectedBranchTeamRestrictionsResponse = Array<
    ReposAddProtectedBranchTeamRestrictionsResponseItem
  >;
  type ReposAddProtectedBranchUserRestrictionsResponse = Array<
    ReposAddProtectedBranchUserRestrictionsResponseItem
  >;
  type ReposGetAppsWithAccessToProtectedBranchResponse = Array<
    ReposGetAppsWithAccessToProtectedBranchResponseItem
  >;
  type ReposGetCodeFrequencyStatsResponse = Array<Array<number>>;
  type ReposGetCommitActivityStatsResponse = Array<
    ReposGetCommitActivityStatsResponseItem
  >;
  type ReposGetContributorsStatsResponse = Array<
    ReposGetContributorsStatsResponseItem
  >;
  type ReposGetPunchCardStatsResponse = Array<Array<number>>;
  type ReposGetTeamsWithAccessToProtectedBranchResponse = Array<
    ReposGetTeamsWithAccessToProtectedBranchResponseItem
  >;
  type ReposGetTopPathsResponse = Array<ReposGetTopPathsResponseItem>;
  type ReposGetTopReferrersResponse = Array<ReposGetTopReferrersResponseItem>;
  type ReposGetUsersWithAccessToProtectedBranchResponse = Array<
    ReposGetUsersWithAccessToProtectedBranchResponseItem
  >;
  type ReposListAppsWithAccessToProtectedBranchResponse = Array<
    ReposListAppsWithAccessToProtectedBranchResponseItem
  >;
  type ReposListAssetsForReleaseResponse = Array<
    ReposListAssetsForReleaseResponseItem
  >;
  type ReposListBranchesResponse = Array<ReposListBranchesResponseItem>;
  type ReposListBranchesForHeadCommitResponse = Array<
    ReposListBranchesForHeadCommitResponseItem
  >;
  type ReposListCollaboratorsResponse = Array<
    ReposListCollaboratorsResponseItem
  >;
  type ReposListCommentsForCommitResponse = Array<
    ReposListCommentsForCommitResponseItem
  >;
  type ReposListCommitCommentsResponse = Array<
    ReposListCommitCommentsResponseItem
  >;
  type ReposListCommitsResponse = Array<ReposListCommitsResponseItem>;
  type ReposListContributorsResponse = Array<ReposListContributorsResponseItem>;
  type ReposListDeployKeysResponse = Array<ReposListDeployKeysResponseItem>;
  type ReposListDeploymentStatusesResponse = Array<
    ReposListDeploymentStatusesResponseItem
  >;
  type ReposListDeploymentsResponse = Array<ReposListDeploymentsResponseItem>;
  type ReposListDownloadsResponse = Array<ReposListDownloadsResponseItem>;
  type ReposListForOrgResponse = Array<ReposListForOrgResponseItem>;
  type ReposListForksResponse = Array<ReposListForksResponseItem>;
  type ReposListHooksResponse = Array<ReposListHooksResponseItem>;
  type ReposListInvitationsResponse = Array<ReposListInvitationsResponseItem>;
  type ReposListInvitationsForAuthenticatedUserResponse = Array<
    ReposListInvitationsForAuthenticatedUserResponseItem
  >;
  type ReposListPagesBuildsResponse = Array<ReposListPagesBuildsResponseItem>;
  type ReposListProtectedBranchRequiredStatusChecksContextsResponse = Array<
    string
  >;
  type ReposListProtectedBranchTeamRestrictionsResponse = Array<
    ReposListProtectedBranchTeamRestrictionsResponseItem
  >;
  type ReposListProtectedBranchUserRestrictionsResponse = Array<
    ReposListProtectedBranchUserRestrictionsResponseItem
  >;
  type ReposListPublicResponse = Array<ReposListPublicResponseItem>;
  type ReposListPullRequestsAssociatedWithCommitResponse = Array<
    ReposListPullRequestsAssociatedWithCommitResponseItem
  >;
  type ReposListReleasesResponse = Array<ReposListReleasesResponseItem>;
  type ReposListStatusesForRefResponse = Array<
    ReposListStatusesForRefResponseItem
  >;
  type ReposListTagsResponse = Array<ReposListTagsResponseItem>;
  type ReposListTeamsResponse = Array<ReposListTeamsResponseItem>;
  type ReposListTeamsWithAccessToProtectedBranchResponse = Array<
    ReposListTeamsWithAccessToProtectedBranchResponseItem
  >;
  type ReposListUsersWithAccessToProtectedBranchResponse = Array<
    ReposListUsersWithAccessToProtectedBranchResponseItem
  >;
  type ReposRemoveProtectedBranchAppRestrictionsResponse = Array<
    ReposRemoveProtectedBranchAppRestrictionsResponseItem
  >;
  type ReposRemoveProtectedBranchRequiredStatusChecksContextsResponse = Array<
    string
  >;
  type ReposRemoveProtectedBranchTeamRestrictionsResponse = Array<
    ReposRemoveProtectedBranchTeamRestrictionsResponseItem
  >;
  type ReposRemoveProtectedBranchUserRestrictionsResponse = Array<
    ReposRemoveProtectedBranchUserRestrictionsResponseItem
  >;
  type ReposReplaceProtectedBranchAppRestrictionsResponse = Array<
    ReposReplaceProtectedBranchAppRestrictionsResponseItem
  >;
  type ReposReplaceProtectedBranchRequiredStatusChecksContextsResponse = Array<
    string
  >;
  type ReposReplaceProtectedBranchTeamRestrictionsResponse = Array<
    ReposReplaceProtectedBranchTeamRestrictionsResponseItem
  >;
  type ReposReplaceProtectedBranchUserRestrictionsResponse = Array<
    ReposReplaceProtectedBranchUserRestrictionsResponseItem
  >;
  type TeamsListResponse = Array<TeamsListResponseItem>;
  type TeamsListChildResponse = Array<TeamsListChildResponseItem>;
  type TeamsListDiscussionCommentsResponse = Array<
    TeamsListDiscussionCommentsResponseItem
  >;
  type TeamsListDiscussionsResponse = Array<TeamsListDiscussionsResponseItem>;
  type TeamsListForAuthenticatedUserResponse = Array<
    TeamsListForAuthenticatedUserResponseItem
  >;
  type TeamsListMembersResponse = Array<TeamsListMembersResponseItem>;
  type TeamsListPendingInvitationsResponse = Array<
    TeamsListPendingInvitationsResponseItem
  >;
  type TeamsListProjectsResponse = Array<TeamsListProjectsResponseItem>;
  type TeamsListReposResponse = Array<TeamsListReposResponseItem>;
  type UsersAddEmailsResponse = Array<UsersAddEmailsResponseItem>;
  type UsersListResponse = Array<UsersListResponseItem>;
  type UsersListBlockedResponse = Array<UsersListBlockedResponseItem>;
  type UsersListEmailsResponse = Array<UsersListEmailsResponseItem>;
  type UsersListFollowersForAuthenticatedUserResponse = Array<
    UsersListFollowersForAuthenticatedUserResponseItem
  >;
  type UsersListFollowersForUserResponse = Array<
    UsersListFollowersForUserResponseItem
  >;
  type UsersListFollowingForAuthenticatedUserResponse = Array<
    UsersListFollowingForAuthenticatedUserResponseItem
  >;
  type UsersListFollowingForUserResponse = Array<
    UsersListFollowingForUserResponseItem
  >;
  type UsersListGpgKeysResponse = Array<UsersListGpgKeysResponseItem>;
  type UsersListGpgKeysForUserResponse = Array<
    UsersListGpgKeysForUserResponseItem
  >;
  type UsersListPublicEmailsResponse = Array<UsersListPublicEmailsResponseItem>;
  type UsersListPublicKeysResponse = Array<UsersListPublicKeysResponseItem>;
  type UsersListPublicKeysForUserResponse = Array<
    UsersListPublicKeysForUserResponseItem
  >;
  type UsersTogglePrimaryEmailVisibilityResponse = Array<
    UsersTogglePrimaryEmailVisibilityResponseItem
  >;

  // param types
  export type ActivityCheckStarringRepoParams = {
    owner: string;

    repo: string;
  };
  export type ActivityDeleteRepoSubscriptionParams = {
    owner: string;

    repo: string;
  };
  export type ActivityDeleteThreadSubscriptionParams = {
    thread_id: number;
  };
  export type ActivityGetRepoSubscriptionParams = {
    owner: string;

    repo: string;
  };
  export type ActivityGetThreadParams = {
    thread_id: number;
  };
  export type ActivityGetThreadSubscriptionParams = {
    thread_id: number;
  };
  export type ActivityListEventsForOrgParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListEventsForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListNotificationsParams = {
    /**
     * If `true`, show notifications marked as read.
     */
    all?: boolean;
    /**
     * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    before?: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * If `true`, only shows notifications in which the user is directly participating or mentioned.
     */
    participating?: boolean;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
  };
  export type ActivityListNotificationsForRepoParams = {
    /**
     * If `true`, show notifications marked as read.
     */
    all?: boolean;
    /**
     * Only show notifications updated before the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    before?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * If `true`, only shows notifications in which the user is directly participating or mentioned.
     */
    participating?: boolean;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Only show notifications updated after the given time. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
  };
  export type ActivityListPublicEventsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type ActivityListPublicEventsForOrgParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type ActivityListPublicEventsForRepoNetworkParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ActivityListPublicEventsForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListReceivedEventsForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListReceivedPublicEventsForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListRepoEventsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ActivityListReposStarredByAuthenticatedUserParams = {
    /**
     * One of `asc` (ascending) or `desc` (descending).
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
     */
    sort?: "created" | "updated";
  };
  export type ActivityListReposStarredByUserParams = {
    /**
     * One of `asc` (ascending) or `desc` (descending).
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * One of `created` (when the repository was starred) or `updated` (when it was last pushed to).
     */
    sort?: "created" | "updated";

    username: string;
  };
  export type ActivityListReposWatchedByUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type ActivityListStargazersForRepoParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ActivityListWatchedReposForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type ActivityListWatchersForRepoParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ActivityMarkAsReadParams = {
    /**
     * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
     */
    last_read_at?: string;
  };
  export type ActivityMarkNotificationsAsReadForRepoParams = {
    /**
     * Describes the last point that notifications were checked. Anything updated since this time will not be updated. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Default: The current timestamp.
     */
    last_read_at?: string;

    owner: string;

    repo: string;
  };
  export type ActivityMarkThreadAsReadParams = {
    thread_id: number;
  };
  export type ActivitySetRepoSubscriptionParams = {
    /**
     * Determines if all notifications should be blocked from this repository.
     */
    ignored?: boolean;

    owner: string;

    repo: string;
    /**
     * Determines if notifications should be received from this repository.
     */
    subscribed?: boolean;
  };
  export type ActivitySetThreadSubscriptionParams = {
    /**
     * Unsubscribes and subscribes you to a conversation. Set `ignored` to `true` to block all notifications from this thread.
     */
    ignored?: boolean;

    thread_id: number;
  };
  export type ActivityStarRepoParams = {
    owner: string;

    repo: string;
  };
  export type ActivityUnstarRepoParams = {
    owner: string;

    repo: string;
  };
  export type AppsAddRepoToInstallationParams = {
    installation_id: number;

    repository_id: number;
  };
  export type AppsCheckAccountIsAssociatedWithAnyParams = {
    account_id: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsCheckAccountIsAssociatedWithAnyStubbedParams = {
    account_id: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsCheckAuthorizationParams = {
    access_token: string;

    client_id: string;
  };
  export type AppsCheckTokenParams = {
    /**
     * The OAuth access token used to authenticate to the GitHub API.
     */
    access_token?: string;

    client_id: string;
  };
  export type AppsCreateContentAttachmentParams = {
    /**
     * The body text of the content attachment displayed in the body or comment of an issue or pull request. This parameter supports markdown.
     */
    body: string;

    content_reference_id: number;
    /**
     * The title of the content attachment displayed in the body or comment of an issue or pull request.
     */
    title: string;
  };
  export type AppsCreateFromManifestParams = {
    code: string;
  };
  export type AppsCreateInstallationTokenParams = {
    installation_id: number;
    /**
     * The permissions granted to the access token. The permissions object includes the permission names and their access type. For a complete list of permissions and allowable values, see "[GitHub App permissions](https://developer.github.com/apps/building-github-apps/creating-github-apps-using-url-parameters/#github-app-permissions)."
     */
    permissions?: AppsCreateInstallationTokenParamsPermissions;
    /**
     * The `id`s of the repositories that the installation token can access. Providing repository `id`s restricts the access of an installation token to specific repositories. You can use the "[List repositories](https://developer.github.com/v3/apps/installations/#list-repositories)" endpoint to get the `id` of all repositories that an installation can access. For example, you can select specific repositories when creating an installation token to restrict the number of repositories that can be cloned using the token.
     */
    repository_ids?: number[];
  };
  export type AppsDeleteAuthorizationParams = {
    /**
     * The OAuth access token used to authenticate to the GitHub API.
     */
    access_token?: string;

    client_id: string;
  };
  export type AppsDeleteInstallationParams = {
    installation_id: number;
  };
  export type AppsDeleteTokenParams = {
    /**
     * The OAuth access token used to authenticate to the GitHub API.
     */
    access_token?: string;

    client_id: string;
  };
  export type AppsFindOrgInstallationParams = {
    org: string;
  };
  export type AppsFindRepoInstallationParams = {
    owner: string;

    repo: string;
  };
  export type AppsFindUserInstallationParams = {
    username: string;
  };
  export type AppsGetBySlugParams = {
    app_slug: string;
  };
  export type AppsGetInstallationParams = {
    installation_id: number;
  };
  export type AppsGetOrgInstallationParams = {
    org: string;
  };
  export type AppsGetRepoInstallationParams = {
    owner: string;

    repo: string;
  };
  export type AppsGetUserInstallationParams = {
    username: string;
  };
  export type AppsListAccountsUserOrOrgOnPlanParams = {
    /**
     * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    plan_id: number;
    /**
     * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
     */
    sort?: "created" | "updated";
  };
  export type AppsListAccountsUserOrOrgOnPlanStubbedParams = {
    /**
     * To return the oldest accounts first, set to `asc`. Can be one of `asc` or `desc`. Ignored without the `sort` parameter.
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    plan_id: number;
    /**
     * Sorts the GitHub accounts by the date they were created or last updated. Can be one of `created` or `updated`.
     */
    sort?: "created" | "updated";
  };
  export type AppsListInstallationReposForAuthenticatedUserParams = {
    installation_id: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListInstallationsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListInstallationsForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListMarketplacePurchasesForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListMarketplacePurchasesForAuthenticatedUserStubbedParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListPlansParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListPlansStubbedParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsListReposParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type AppsRemoveRepoFromInstallationParams = {
    installation_id: number;

    repository_id: number;
  };
  export type AppsResetAuthorizationParams = {
    access_token: string;

    client_id: string;
  };
  export type AppsResetTokenParams = {
    /**
     * The OAuth access token used to authenticate to the GitHub API.
     */
    access_token?: string;

    client_id: string;
  };
  export type AppsRevokeAuthorizationForApplicationParams = {
    access_token: string;

    client_id: string;
  };
  export type AppsRevokeGrantForApplicationParams = {
    access_token: string;

    client_id: string;
  };
  export type ChecksCreateParams = {
    /**
     * Displays a button on GitHub that can be clicked to alert your app to do additional tasks. For example, a code linting app can display a button that automatically fixes detected errors. The button created in this object is displayed after the check run completes. When a user clicks the button, GitHub sends the [`check_run.requested_action` webhook](https://developer.github.com/v3/activity/events/types/#checkrunevent) to your app. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)." To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
     */
    actions?: ChecksCreateParamsActions[];
    /**
     * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    completed_at?: string;
    /**
     * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`. When the conclusion is `action_required`, additional details should be provided on the site specified by `details_url`.
     * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
     */
    conclusion?:
      | "success"
      | "failure"
      | "neutral"
      | "cancelled"
      | "timed_out"
      | "action_required";
    /**
     * The URL of the integrator's site that has the full details of the check.
     */
    details_url?: string;
    /**
     * A reference for the run on the integrator's system.
     */
    external_id?: string;
    /**
     * The SHA of the commit.
     */
    head_sha: string;
    /**
     * The name of the check. For example, "code-coverage".
     */
    name: string;
    /**
     * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object) description.
     */
    output?: ChecksCreateParamsOutput;

    owner: string;

    repo: string;
    /**
     * The time that the check run began. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    started_at?: string;
    /**
     * The current status. Can be one of `queued`, `in_progress`, or `completed`.
     */
    status?: "queued" | "in_progress" | "completed";
  };
  export type ChecksCreateSuiteParams = {
    /**
     * The sha of the head commit.
     */
    head_sha: string;

    owner: string;

    repo: string;
  };
  export type ChecksGetParams = {
    check_run_id: number;

    owner: string;

    repo: string;
  };
  export type ChecksGetSuiteParams = {
    check_suite_id: number;

    owner: string;

    repo: string;
  };
  export type ChecksListAnnotationsParams = {
    check_run_id: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ChecksListForRefParams = {
    /**
     * Returns check runs with the specified `name`.
     */
    check_name?: string;
    /**
     * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
     */
    filter?: "latest" | "all";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    ref: string;

    repo: string;
    /**
     * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
     */
    status?: "queued" | "in_progress" | "completed";
  };
  export type ChecksListForSuiteParams = {
    /**
     * Returns check runs with the specified `name`.
     */
    check_name?: string;

    check_suite_id: number;
    /**
     * Filters check runs by their `completed_at` timestamp. Can be one of `latest` (returning the most recent check runs) or `all`.
     */
    filter?: "latest" | "all";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Returns check runs with the specified `status`. Can be one of `queued`, `in_progress`, or `completed`.
     */
    status?: "queued" | "in_progress" | "completed";
  };
  export type ChecksListSuitesForRefParams = {
    /**
     * Filters check suites by GitHub App `id`.
     */
    app_id?: number;
    /**
     * Filters checks suites by the name of the [check run](https://developer.github.com/v3/checks/runs/).
     */
    check_name?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    ref: string;

    repo: string;
  };
  export type ChecksRerequestSuiteParams = {
    check_suite_id: number;

    owner: string;

    repo: string;
  };
  export type ChecksSetSuitesPreferencesParams = {
    /**
     * Enables or disables automatic creation of CheckSuite events upon pushes to the repository. Enabled by default. See the [`auto_trigger_checks` object](https://developer.github.com/v3/checks/suites/#auto_trigger_checks-object) description for details.
     */
    auto_trigger_checks?: ChecksSetSuitesPreferencesParamsAutoTriggerChecks[];

    owner: string;

    repo: string;
  };
  export type ChecksUpdateParams = {
    /**
     * Possible further actions the integrator can perform, which a user may trigger. Each action includes a `label`, `identifier` and `description`. A maximum of three actions are accepted. See the [`actions` object](https://developer.github.com/v3/checks/runs/#actions-object) description. To learn more about check runs and requested actions, see "[Check runs and requested actions](https://developer.github.com/v3/checks/runs/#check-runs-and-requested-actions)."
     */
    actions?: ChecksUpdateParamsActions[];

    check_run_id: number;
    /**
     * The time the check completed. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    completed_at?: string;
    /**
     * **Required if you provide `completed_at` or a `status` of `completed`**. The final conclusion of the check. Can be one of `success`, `failure`, `neutral`, `cancelled`, `timed_out`, or `action_required`.
     * **Note:** Providing `conclusion` will automatically set the `status` parameter to `completed`.
     */
    conclusion?:
      | "success"
      | "failure"
      | "neutral"
      | "cancelled"
      | "timed_out"
      | "action_required";
    /**
     * The URL of the integrator's site that has the full details of the check.
     */
    details_url?: string;
    /**
     * A reference for the run on the integrator's system.
     */
    external_id?: string;
    /**
     * The name of the check. For example, "code-coverage".
     */
    name?: string;
    /**
     * Check runs can accept a variety of data in the `output` object, including a `title` and `summary` and can optionally provide descriptive details about the run. See the [`output` object](https://developer.github.com/v3/checks/runs/#output-object-1) description.
     */
    output?: ChecksUpdateParamsOutput;

    owner: string;

    repo: string;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    started_at?: string;
    /**
     * The current status. Can be one of `queued`, `in_progress`, or `completed`.
     */
    status?: "queued" | "in_progress" | "completed";
  };
  export type CodesOfConductGetConductCodeParams = {
    key: string;
  };
  export type CodesOfConductGetForRepoParams = {
    owner: string;

    repo: string;
  };
  export type GistsCheckIsStarredParams = {
    gist_id: string;
  };
  export type GistsCreateParams = {
    /**
     * A descriptive name for this gist.
     */
    description?: string;
    /**
     * The filenames and content of each file in the gist. The keys in the `files` object represent the filename and have the type `string`.
     */
    files: GistsCreateParamsFiles;
    /**
     * When `true`, the gist will be public and available for anyone to see.
     */
    public?: boolean;
  };
  export type GistsCreateCommentParams = {
    /**
     * The comment text.
     */
    body: string;

    gist_id: string;
  };
  export type GistsDeleteParams = {
    gist_id: string;
  };
  export type GistsDeleteCommentParams = {
    comment_id: number;

    gist_id: string;
  };
  export type GistsForkParams = {
    gist_id: string;
  };
  export type GistsGetParams = {
    gist_id: string;
  };
  export type GistsGetCommentParams = {
    comment_id: number;

    gist_id: string;
  };
  export type GistsGetRevisionParams = {
    gist_id: string;

    sha: string;
  };
  export type GistsListParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
     */
    since?: string;
  };
  export type GistsListCommentsParams = {
    gist_id: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type GistsListCommitsParams = {
    gist_id: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type GistsListForksParams = {
    gist_id: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type GistsListPublicParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
     */
    since?: string;
  };
  export type GistsListPublicForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
     */
    since?: string;

    username: string;
  };
  export type GistsListStarredParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only gists updated at or after this time are returned.
     */
    since?: string;
  };
  export type GistsStarParams = {
    gist_id: string;
  };
  export type GistsUnstarParams = {
    gist_id: string;
  };
  export type GistsUpdateParams = {
    /**
     * A descriptive name for this gist.
     */
    description?: string;
    /**
     * The filenames and content that make up this gist.
     */
    files?: GistsUpdateParamsFiles;

    gist_id: string;
  };
  export type GistsUpdateCommentParams = {
    /**
     * The comment text.
     */
    body: string;

    comment_id: number;

    gist_id: string;
  };
  export type GitCreateBlobParams = {
    /**
     * The new blob's content.
     */
    content: string;
    /**
     * The encoding used for `content`. Currently, `"utf-8"` and `"base64"` are supported.
     */
    encoding?: string;

    owner: string;

    repo: string;
  };
  export type GitCreateCommitParams = {
    /**
     * Information about the author of the commit. By default, the `author` will be the authenticated user and the current date. See the `author` and `committer` object below for details.
     */
    author?: GitCreateCommitParamsAuthor;
    /**
     * Information about the person who is making the commit. By default, `committer` will use the information set in `author`. See the `author` and `committer` object below for details.
     */
    committer?: GitCreateCommitParamsCommitter;
    /**
     * The commit message
     */
    message: string;

    owner: string;
    /**
     * The SHAs of the commits that were the parents of this commit. If omitted or empty, the commit will be written as a root commit. For a single parent, an array of one SHA should be provided; for a merge commit, an array of more than one should be provided.
     */
    parents: string[];

    repo: string;
    /**
     * The [PGP signature](https://en.wikipedia.org/wiki/Pretty_Good_Privacy) of the commit. GitHub adds the signature to the `gpgsig` header of the created commit. For a commit signature to be verifiable by Git or GitHub, it must be an ASCII-armored detached PGP signature over the string commit as it would be written to the object database. To pass a `signature` parameter, you need to first manually create a valid PGP signature, which can be complicated. You may find it easier to [use the command line](https://git-scm.com/book/id/v2/Git-Tools-Signing-Your-Work) to create signed commits.
     */
    signature?: string;
    /**
     * The SHA of the tree object this commit points to
     */
    tree: string;
  };
  export type GitCreateRefParams = {
    owner: string;
    /**
     * The name of the fully qualified reference (ie: `refs/heads/master`). If it doesn't start with 'refs' and have at least two slashes, it will be rejected.
     */
    ref: string;

    repo: string;
    /**
     * The SHA1 value for this reference.
     */
    sha: string;
  };
  export type GitCreateTagParams = {
    /**
     * The tag message.
     */
    message: string;
    /**
     * The SHA of the git object this is tagging.
     */
    object: string;

    owner: string;

    repo: string;
    /**
     * The tag's name. This is typically a version (e.g., "v0.0.1").
     */
    tag: string;
    /**
     * An object with information about the individual creating the tag.
     */
    tagger?: GitCreateTagParamsTagger;
    /**
     * The type of the object we're tagging. Normally this is a `commit` but it can also be a `tree` or a `blob`.
     */
    type: "commit" | "tree" | "blob";
  };
  export type GitCreateTreeParams = {
    /**
     * The SHA1 of the tree you want to update with new data. If you don't set this, the commit will be created on top of everything; however, it will only contain your change, the rest of your files will show up as deleted.
     */
    base_tree?: string;

    owner: string;

    repo: string;
    /**
     * Objects (of `path`, `mode`, `type`, and `sha`) specifying a tree structure.
     */
    tree: GitCreateTreeParamsTree[];
  };
  export type GitDeleteRefParams = {
    owner: string;

    ref: string;

    repo: string;
  };
  export type GitGetBlobParams = {
    file_sha: string;

    owner: string;

    repo: string;
  };
  export type GitGetCommitParams = {
    commit_sha: string;

    owner: string;

    repo: string;
  };
  export type GitGetRefParams = {
    owner: string;

    ref: string;

    repo: string;
  };
  export type GitGetTagParams = {
    owner: string;

    repo: string;

    tag_sha: string;
  };
  export type GitGetTreeParams = {
    owner: string;

    recursive?: "1";

    repo: string;

    tree_sha: string;
  };
  export type GitListMatchingRefsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    ref: string;

    repo: string;
  };
  export type GitListRefsParams = {
    /**
     * Filter by sub-namespace (reference prefix). Most commen examples would be `'heads/'` and `'tags/'` to retrieve branches or tags
     */
    namespace?: string;

    owner: string;

    page?: number;

    per_page?: number;

    repo: string;
  };
  export type GitUpdateRefParams = {
    /**
     * Indicates whether to force the update or to make sure the update is a fast-forward update. Leaving this out or setting it to `false` will make sure you're not overwriting work.
     */
    force?: boolean;

    owner: string;

    ref: string;

    repo: string;
    /**
     * The SHA1 value to set this reference to
     */
    sha: string;
  };
  export type GitignoreGetTemplateParams = {
    name: string;
  };
  export type InteractionsAddOrUpdateRestrictionsForOrgParams = {
    /**
     * Specifies the group of GitHub users who can comment, open issues, or create pull requests in public repositories for the given organization. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
     */
    limit: "existing_users" | "contributors_only" | "collaborators_only";

    org: string;
  };
  export type InteractionsAddOrUpdateRestrictionsForRepoParams = {
    /**
     * Specifies the group of GitHub users who can comment, open issues, or create pull requests for the given repository. Must be one of: `existing_users`, `contributors_only`, or `collaborators_only`.
     */
    limit: "existing_users" | "contributors_only" | "collaborators_only";

    owner: string;

    repo: string;
  };
  export type InteractionsGetRestrictionsForOrgParams = {
    org: string;
  };
  export type InteractionsGetRestrictionsForRepoParams = {
    owner: string;

    repo: string;
  };
  export type InteractionsRemoveRestrictionsForOrgParams = {
    org: string;
  };
  export type InteractionsRemoveRestrictionsForRepoParams = {
    owner: string;

    repo: string;
  };
  export type IssuesAddAssigneesParamsDeprecatedNumber = {
    /**
     * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._
     */
    assignees?: string[];
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesAddAssigneesParams = {
    /**
     * Usernames of people to assign this issue to. _NOTE: Only users with push access can add assignees to an issue. Assignees are silently ignored otherwise._
     */
    assignees?: string[];

    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesAddLabelsParamsDeprecatedNumber = {
    /**
     * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
     */
    labels: string[];
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesAddLabelsParams = {
    issue_number: number;
    /**
     * The name of the label to add to the issue. Must contain at least one label. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
     */
    labels: string[];

    owner: string;

    repo: string;
  };
  export type IssuesCheckAssigneeParams = {
    assignee: string;

    owner: string;

    repo: string;
  };
  export type IssuesCreateParamsDeprecatedAssignee = {
    /**
     * Login for the user that this issue should be assigned to. _NOTE: Only users with push access can set the assignee for new issues. The assignee is silently dropped otherwise. **This field is deprecated.**_
     * @deprecated "assignee" parameter has been deprecated and will be removed in future
     */
    assignee?: string;
    /**
     * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
     */
    assignees?: string[];
    /**
     * The contents of the issue.
     */
    body?: string;
    /**
     * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._
     */
    labels?: string[];
    /**
     * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._
     */
    milestone?: number;

    owner: string;

    repo: string;
    /**
     * The title of the issue.
     */
    title: string;
  };
  export type IssuesCreateParams = {
    /**
     * Logins for Users to assign to this issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
     */
    assignees?: string[];
    /**
     * The contents of the issue.
     */
    body?: string;
    /**
     * Labels to associate with this issue. _NOTE: Only users with push access can set labels for new issues. Labels are silently dropped otherwise._
     */
    labels?: string[];
    /**
     * The `number` of the milestone to associate this issue with. _NOTE: Only users with push access can set the milestone for new issues. The milestone is silently dropped otherwise._
     */
    milestone?: number;

    owner: string;

    repo: string;
    /**
     * The title of the issue.
     */
    title: string;
  };
  export type IssuesCreateCommentParamsDeprecatedNumber = {
    /**
     * The contents of the comment.
     */
    body: string;
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesCreateCommentParams = {
    /**
     * The contents of the comment.
     */
    body: string;

    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesCreateLabelParams = {
    /**
     * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
     */
    color: string;
    /**
     * A short description of the label.
     */
    description?: string;
    /**
     * The name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
     */
    name: string;

    owner: string;

    repo: string;
  };
  export type IssuesCreateMilestoneParams = {
    /**
     * A description of the milestone.
     */
    description?: string;
    /**
     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    due_on?: string;

    owner: string;

    repo: string;
    /**
     * The state of the milestone. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the milestone.
     */
    title: string;
  };
  export type IssuesDeleteCommentParams = {
    comment_id: number;

    owner: string;

    repo: string;
  };
  export type IssuesDeleteLabelParams = {
    name: string;

    owner: string;

    repo: string;
  };
  export type IssuesDeleteMilestoneParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "milestone_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesDeleteMilestoneParams = {
    milestone_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesGetParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesGetParams = {
    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesGetCommentParams = {
    comment_id: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesGetEventParams = {
    event_id: number;

    owner: string;

    repo: string;
  };
  export type IssuesGetLabelParams = {
    name: string;

    owner: string;

    repo: string;
  };
  export type IssuesGetMilestoneParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "milestone_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesGetMilestoneParams = {
    milestone_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesListParams = {
    /**
     * The direction of the sort. Can be either `asc` or `desc`.
     */
    direction?: "asc" | "desc";
    /**
     * Indicates which sorts of issues to return. Can be one of:
     * \* `assigned`: Issues assigned to you
     * \* `created`: Issues created by you
     * \* `mentioned`: Issues mentioning you
     * \* `subscribed`: Issues you're subscribed to updates for
     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
     */
    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
    /**
     * A list of comma separated label names. Example: `bug,ui,@high`
     */
    labels?: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * What to sort results by. Can be either `created`, `updated`, `comments`.
     */
    sort?: "created" | "updated" | "comments";
    /**
     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type IssuesListAssigneesParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListCommentsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
  };
  export type IssuesListCommentsParams = {
    issue_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
  };
  export type IssuesListCommentsForRepoParams = {
    /**
     * Either `asc` or `desc`. Ignored without the `sort` parameter.
     */
    direction?: "asc" | "desc";

    owner: string;

    repo: string;
    /**
     * Only comments updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * Either `created` or `updated`.
     */
    sort?: "created" | "updated";
  };
  export type IssuesListEventsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListEventsParams = {
    issue_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListEventsForRepoParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListEventsForTimelineParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListEventsForTimelineParams = {
    issue_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListForAuthenticatedUserParams = {
    /**
     * The direction of the sort. Can be either `asc` or `desc`.
     */
    direction?: "asc" | "desc";
    /**
     * Indicates which sorts of issues to return. Can be one of:
     * \* `assigned`: Issues assigned to you
     * \* `created`: Issues created by you
     * \* `mentioned`: Issues mentioning you
     * \* `subscribed`: Issues you're subscribed to updates for
     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
     */
    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
    /**
     * A list of comma separated label names. Example: `bug,ui,@high`
     */
    labels?: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * What to sort results by. Can be either `created`, `updated`, `comments`.
     */
    sort?: "created" | "updated" | "comments";
    /**
     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type IssuesListForOrgParams = {
    /**
     * The direction of the sort. Can be either `asc` or `desc`.
     */
    direction?: "asc" | "desc";
    /**
     * Indicates which sorts of issues to return. Can be one of:
     * \* `assigned`: Issues assigned to you
     * \* `created`: Issues created by you
     * \* `mentioned`: Issues mentioning you
     * \* `subscribed`: Issues you're subscribed to updates for
     * \* `all`: All issues the authenticated user can see, regardless of participation or creation
     */
    filter?: "assigned" | "created" | "mentioned" | "subscribed" | "all";
    /**
     * A list of comma separated label names. Example: `bug,ui,@high`
     */
    labels?: string;

    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * What to sort results by. Can be either `created`, `updated`, `comments`.
     */
    sort?: "created" | "updated" | "comments";
    /**
     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type IssuesListForRepoParams = {
    /**
     * Can be the name of a user. Pass in `none` for issues with no assigned user, and `*` for issues assigned to any user.
     */
    assignee?: string;
    /**
     * The user that created the issue.
     */
    creator?: string;
    /**
     * The direction of the sort. Can be either `asc` or `desc`.
     */
    direction?: "asc" | "desc";
    /**
     * A list of comma separated label names. Example: `bug,ui,@high`
     */
    labels?: string;
    /**
     * A user that's mentioned in the issue.
     */
    mentioned?: string;
    /**
     * If an `integer` is passed, it should refer to a milestone by its `number` field. If the string `*` is passed, issues with any milestone are accepted. If the string `none` is passed, issues without milestones are returned.
     */
    milestone?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Only issues updated at or after this time are returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * What to sort results by. Can be either `created`, `updated`, `comments`.
     */
    sort?: "created" | "updated" | "comments";
    /**
     * Indicates the state of the issues to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type IssuesListLabelsForMilestoneParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "milestone_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListLabelsForMilestoneParams = {
    milestone_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListLabelsForRepoParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListLabelsOnIssueParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListLabelsOnIssueParams = {
    issue_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type IssuesListMilestonesForRepoParams = {
    /**
     * The direction of the sort. Either `asc` or `desc`.
     */
    direction?: "asc" | "desc";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * What to sort results by. Either `due_on` or `completeness`.
     */
    sort?: "due_on" | "completeness";
    /**
     * The state of the milestone. Either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type IssuesLockParamsDeprecatedNumber = {
    /**
     * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
     * \* `off-topic`
     * \* `too heated`
     * \* `resolved`
     * \* `spam`
     */
    lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesLockParams = {
    issue_number: number;
    /**
     * The reason for locking the issue or pull request conversation. Lock will fail if you don't use one of these reasons:
     * \* `off-topic`
     * \* `too heated`
     * \* `resolved`
     * \* `spam`
     */
    lock_reason?: "off-topic" | "too heated" | "resolved" | "spam";

    owner: string;

    repo: string;
  };
  export type IssuesRemoveAssigneesParamsDeprecatedNumber = {
    /**
     * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._
     */
    assignees?: string[];
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesRemoveAssigneesParams = {
    /**
     * Usernames of assignees to remove from an issue. _NOTE: Only users with push access can remove assignees from an issue. Assignees are silently ignored otherwise._
     */
    assignees?: string[];

    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesRemoveLabelParamsDeprecatedNumber = {
    name: string;
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesRemoveLabelParams = {
    issue_number: number;

    name: string;

    owner: string;

    repo: string;
  };
  export type IssuesRemoveLabelsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesRemoveLabelsParams = {
    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesReplaceLabelsParamsDeprecatedNumber = {
    /**
     * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
     */
    labels?: string[];
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesReplaceLabelsParams = {
    issue_number: number;
    /**
     * The names of the labels to add to the issue. You can pass an empty array to remove all labels. **Note:** Alternatively, you can pass a single label as a `string` or an `array` of labels directly, but GitHub recommends passing an object with the `labels` key.
     */
    labels?: string[];

    owner: string;

    repo: string;
  };
  export type IssuesUnlockParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type IssuesUnlockParams = {
    issue_number: number;

    owner: string;

    repo: string;
  };
  export type IssuesUpdateParamsDeprecatedNumber = {
    /**
     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
     */
    assignees?: string[];
    /**
     * The contents of the issue.
     */
    body?: string;
    /**
     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
     */
    labels?: string[];
    /**
     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
     */
    milestone?: number | null;
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * State of the issue. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the issue.
     */
    title?: string;
  };
  export type IssuesUpdateParamsDeprecatedAssignee = {
    /**
     * Login for the user that this issue should be assigned to. **This field is deprecated.**
     * @deprecated "assignee" parameter has been deprecated and will be removed in future
     */
    assignee?: string;
    /**
     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
     */
    assignees?: string[];
    /**
     * The contents of the issue.
     */
    body?: string;

    issue_number: number;
    /**
     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
     */
    labels?: string[];
    /**
     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
     */
    milestone?: number | null;

    owner: string;

    repo: string;
    /**
     * State of the issue. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the issue.
     */
    title?: string;
  };
  export type IssuesUpdateParams = {
    /**
     * Logins for Users to assign to this issue. Pass one or more user logins to _replace_ the set of assignees on this Issue. Send an empty array (`[]`) to clear all assignees from the Issue. _NOTE: Only users with push access can set assignees for new issues. Assignees are silently dropped otherwise._
     */
    assignees?: string[];
    /**
     * The contents of the issue.
     */
    body?: string;

    issue_number: number;
    /**
     * Labels to associate with this issue. Pass one or more Labels to _replace_ the set of Labels on this Issue. Send an empty array (`[]`) to clear all Labels from the Issue. _NOTE: Only users with push access can set labels for issues. Labels are silently dropped otherwise._
     */
    labels?: string[];
    /**
     * The `number` of the milestone to associate this issue with or `null` to remove current. _NOTE: Only users with push access can set the milestone for issues. The milestone is silently dropped otherwise._
     */
    milestone?: number | null;

    owner: string;

    repo: string;
    /**
     * State of the issue. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the issue.
     */
    title?: string;
  };
  export type IssuesUpdateCommentParams = {
    /**
     * The contents of the comment.
     */
    body: string;

    comment_id: number;

    owner: string;

    repo: string;
  };
  export type IssuesUpdateLabelParams = {
    /**
     * The [hexadecimal color code](http://www.color-hex.com/) for the label, without the leading `#`.
     */
    color?: string;

    current_name: string;
    /**
     * A short description of the label.
     */
    description?: string;
    /**
     * The new name of the label. Emoji can be added to label names, using either native emoji or colon-style markup. For example, typing `:strawberry:` will render the emoji ![:strawberry:](https://github.githubassets.com/images/icons/emoji/unicode/1f353.png ":strawberry:"). For a full list of available emoji and codes, see [emoji-cheat-sheet.com](http://emoji-cheat-sheet.com/).
     */
    name?: string;

    owner: string;

    repo: string;
  };
  export type IssuesUpdateMilestoneParamsDeprecatedNumber = {
    /**
     * A description of the milestone.
     */
    description?: string;
    /**
     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    due_on?: string;
    /**
     * @deprecated "number" parameter renamed to "milestone_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * The state of the milestone. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the milestone.
     */
    title?: string;
  };
  export type IssuesUpdateMilestoneParams = {
    /**
     * A description of the milestone.
     */
    description?: string;
    /**
     * The milestone due date. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    due_on?: string;

    milestone_number: number;

    owner: string;

    repo: string;
    /**
     * The state of the milestone. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the milestone.
     */
    title?: string;
  };
  export type LicensesGetParams = {
    license: string;
  };
  export type LicensesGetForRepoParams = {
    owner: string;

    repo: string;
  };
  export type MarkdownRenderParams = {
    /**
     * The repository context to use when creating references in `gfm` mode. Omit this parameter when using `markdown` mode.
     */
    context?: string;
    /**
     * The rendering mode. Can be either:
     * \* `markdown` to render a document in plain Markdown, just like README.md files are rendered.
     * \* `gfm` to render a document in [GitHub Flavored Markdown](https://github.github.com/gfm/), which creates links for user mentions as well as references to SHA-1 hashes, issues, and pull requests.
     */
    mode?: "markdown" | "gfm";
    /**
     * The Markdown text to render in HTML. Markdown content must be 400 KB or less.
     */
    text: string;
  };
  export type MarkdownRenderRawParams = {
    data: string;
  };
  export type MigrationsCancelImportParams = {
    owner: string;

    repo: string;
  };
  export type MigrationsDeleteArchiveForAuthenticatedUserParams = {
    migration_id: number;
  };
  export type MigrationsDeleteArchiveForOrgParams = {
    migration_id: number;

    org: string;
  };
  export type MigrationsGetArchiveForAuthenticatedUserParams = {
    migration_id: number;
  };
  export type MigrationsGetArchiveForOrgParams = {
    migration_id: number;

    org: string;
  };
  export type MigrationsGetCommitAuthorsParams = {
    owner: string;

    repo: string;
    /**
     * Only authors found after this id are returned. Provide the highest author ID you've seen so far. New authors may be added to the list at any point while the importer is performing the `raw` step.
     */
    since?: string;
  };
  export type MigrationsGetImportProgressParams = {
    owner: string;

    repo: string;
  };
  export type MigrationsGetLargeFilesParams = {
    owner: string;

    repo: string;
  };
  export type MigrationsGetStatusForAuthenticatedUserParams = {
    migration_id: number;
  };
  export type MigrationsGetStatusForOrgParams = {
    migration_id: number;

    org: string;
  };
  export type MigrationsListForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type MigrationsListForOrgParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type MigrationsMapCommitAuthorParams = {
    author_id: number;
    /**
     * The new Git author email.
     */
    email?: string;
    /**
     * The new Git author name.
     */
    name?: string;

    owner: string;

    repo: string;
  };
  export type MigrationsSetLfsPreferenceParams = {
    owner: string;

    repo: string;
    /**
     * Can be one of `opt_in` (large files will be stored using Git LFS) or `opt_out` (large files will be removed during the import).
     */
    use_lfs: "opt_in" | "opt_out";
  };
  export type MigrationsStartForAuthenticatedUserParams = {
    /**
     * Does not include attachments uploaded to GitHub.com in the migration data when set to `true`. Excluding attachments will reduce the migration archive file size.
     */
    exclude_attachments?: boolean;
    /**
     * Locks the `repositories` to prevent changes during the migration when set to `true`.
     */
    lock_repositories?: boolean;
    /**
     * An array of repositories to include in the migration.
     */
    repositories: string[];
  };
  export type MigrationsStartForOrgParams = {
    /**
     * Indicates whether attachments should be excluded from the migration (to reduce migration archive file size).
     */
    exclude_attachments?: boolean;
    /**
     * Indicates whether repositories should be locked (to prevent manipulation) while migrating data.
     */
    lock_repositories?: boolean;

    org: string;
    /**
     * A list of arrays indicating which repositories should be migrated.
     */
    repositories: string[];
  };
  export type MigrationsStartImportParams = {
    owner: string;

    repo: string;
    /**
     * For a tfvc import, the name of the project that is being imported.
     */
    tfvc_project?: string;
    /**
     * The originating VCS type. Can be one of `subversion`, `git`, `mercurial`, or `tfvc`. Please be aware that without this parameter, the import job will take additional time to detect the VCS type before beginning the import. This detection step will be reflected in the response.
     */
    vcs?: "subversion" | "git" | "mercurial" | "tfvc";
    /**
     * If authentication is required, the password to provide to `vcs_url`.
     */
    vcs_password?: string;
    /**
     * The URL of the originating repository.
     */
    vcs_url: string;
    /**
     * If authentication is required, the username to provide to `vcs_url`.
     */
    vcs_username?: string;
  };
  export type MigrationsUnlockRepoForAuthenticatedUserParams = {
    migration_id: number;

    repo_name: string;
  };
  export type MigrationsUnlockRepoForOrgParams = {
    migration_id: number;

    org: string;

    repo_name: string;
  };
  export type MigrationsUpdateImportParams = {
    owner: string;

    repo: string;
    /**
     * The password to provide to the originating repository.
     */
    vcs_password?: string;
    /**
     * The username to provide to the originating repository.
     */
    vcs_username?: string;
  };
  export type OauthAuthorizationsCheckAuthorizationParams = {
    access_token: string;

    client_id: string;
  };
  export type OauthAuthorizationsCreateAuthorizationParams = {
    /**
     * The 20 character OAuth app client key for which to create the token.
     */
    client_id?: string;
    /**
     * The 40 character OAuth app client secret for which to create the token.
     */
    client_secret?: string;
    /**
     * A unique string to distinguish an authorization from others created for the same client ID and user.
     */
    fingerprint?: string;
    /**
     * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
     */
    note: string;
    /**
     * A URL to remind you what app the OAuth token is for.
     */
    note_url?: string;
    /**
     * A list of scopes that this authorization is in.
     */
    scopes?: string[];
  };
  export type OauthAuthorizationsDeleteAuthorizationParams = {
    authorization_id: number;
  };
  export type OauthAuthorizationsDeleteGrantParams = {
    grant_id: number;
  };
  export type OauthAuthorizationsGetAuthorizationParams = {
    authorization_id: number;
  };
  export type OauthAuthorizationsGetGrantParams = {
    grant_id: number;
  };
  export type OauthAuthorizationsGetOrCreateAuthorizationForAppParams = {
    client_id: string;
    /**
     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
     */
    client_secret: string;
    /**
     * A unique string to distinguish an authorization from others created for the same client and user. If provided, this API is functionally equivalent to [Get-or-create an authorization for a specific app and fingerprint](https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint).
     */
    fingerprint?: string;
    /**
     * A note to remind you what the OAuth token is for.
     */
    note?: string;
    /**
     * A URL to remind you what app the OAuth token is for.
     */
    note_url?: string;
    /**
     * A list of scopes that this authorization is in.
     */
    scopes?: string[];
  };
  export type OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintParams = {
    client_id: string;
    /**
     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
     */
    client_secret: string;

    fingerprint: string;
    /**
     * A note to remind you what the OAuth token is for.
     */
    note?: string;
    /**
     * A URL to remind you what app the OAuth token is for.
     */
    note_url?: string;
    /**
     * A list of scopes that this authorization is in.
     */
    scopes?: string[];
  };
  export type OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintParams = {
    client_id: string;
    /**
     * The 40 character OAuth app client secret associated with the client ID specified in the URL.
     */
    client_secret: string;

    fingerprint: string;
    /**
     * A note to remind you what the OAuth token is for.
     */
    note?: string;
    /**
     * A URL to remind you what app the OAuth token is for.
     */
    note_url?: string;
    /**
     * A list of scopes that this authorization is in.
     */
    scopes?: string[];
  };
  export type OauthAuthorizationsListAuthorizationsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OauthAuthorizationsListGrantsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OauthAuthorizationsResetAuthorizationParams = {
    access_token: string;

    client_id: string;
  };
  export type OauthAuthorizationsRevokeAuthorizationForApplicationParams = {
    access_token: string;

    client_id: string;
  };
  export type OauthAuthorizationsRevokeGrantForApplicationParams = {
    access_token: string;

    client_id: string;
  };
  export type OauthAuthorizationsUpdateAuthorizationParams = {
    /**
     * A list of scopes to add to this authorization.
     */
    add_scopes?: string[];

    authorization_id: number;
    /**
     * A unique string to distinguish an authorization from others created for the same client ID and user.
     */
    fingerprint?: string;
    /**
     * A note to remind you what the OAuth token is for. Tokens not associated with a specific OAuth application (i.e. personal access tokens) must have a unique note.
     */
    note?: string;
    /**
     * A URL to remind you what app the OAuth token is for.
     */
    note_url?: string;
    /**
     * A list of scopes to remove from this authorization.
     */
    remove_scopes?: string[];
    /**
     * Replaces the authorization scopes with these.
     */
    scopes?: string[];
  };
  export type OrgsAddOrUpdateMembershipParams = {
    org: string;
    /**
     * The role to give the user in the organization. Can be one of:
     * \* `admin` - The user will become an owner of the organization.
     * \* `member` - The user will become a non-owner member of the organization.
     */
    role?: "admin" | "member";

    username: string;
  };
  export type OrgsBlockUserParams = {
    org: string;

    username: string;
  };
  export type OrgsCheckBlockedUserParams = {
    org: string;

    username: string;
  };
  export type OrgsCheckMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsCheckPublicMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsConcealMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsConvertMemberToOutsideCollaboratorParams = {
    org: string;

    username: string;
  };
  export type OrgsCreateHookParams = {
    /**
     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
     */
    active?: boolean;
    /**
     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#create-hook-config-params).
     */
    config: OrgsCreateHookParamsConfig;
    /**
     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
     */
    events?: string[];
    /**
     * Must be passed as "web".
     */
    name: string;

    org: string;
  };
  export type OrgsCreateInvitationParams = {
    /**
     * **Required unless you provide `invitee_id`**. Email address of the person you are inviting, which can be an existing GitHub user.
     */
    email?: string;
    /**
     * **Required unless you provide `email`**. GitHub user ID for the person you are inviting.
     */
    invitee_id?: number;

    org: string;
    /**
     * Specify role for new member. Can be one of:
     * \* `admin` - Organization owners with full administrative rights to the organization and complete access to all repositories and teams.
     * \* `direct_member` - Non-owner organization members with ability to see other members and join teams by invitation.
     * \* `billing_manager` - Non-owner organization members with ability to manage the billing settings of your organization.
     */
    role?: "admin" | "direct_member" | "billing_manager";
    /**
     * Specify IDs for the teams you want to invite new members to.
     */
    team_ids?: number[];
  };
  export type OrgsDeleteHookParams = {
    hook_id: number;

    org: string;
  };
  export type OrgsGetParams = {
    org: string;
  };
  export type OrgsGetHookParams = {
    hook_id: number;

    org: string;
  };
  export type OrgsGetMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsGetMembershipForAuthenticatedUserParams = {
    org: string;
  };
  export type OrgsListParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The integer ID of the last Organization that you've seen.
     */
    since?: string;
  };
  export type OrgsListBlockedUsersParams = {
    org: string;
  };
  export type OrgsListForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type OrgsListHooksParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListInstallationsParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListInvitationTeamsParams = {
    invitation_id: number;

    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListMembersParams = {
    /**
     * Filter members returned in the list. Can be one of:
     * \* `2fa_disabled` - Members without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled. Available for organization owners.
     * \* `all` - All members the authenticated user can see.
     */
    filter?: "2fa_disabled" | "all";

    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Filter members returned by their role. Can be one of:
     * \* `all` - All members of the organization, regardless of role.
     * \* `admin` - Organization owners.
     * \* `member` - Non-owner organization members.
     */
    role?: "all" | "admin" | "member";
  };
  export type OrgsListMembershipsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Indicates the state of the memberships to return. Can be either `active` or `pending`. If not specified, the API returns both active and pending memberships.
     */
    state?: "active" | "pending";
  };
  export type OrgsListOutsideCollaboratorsParams = {
    /**
     * Filter the list of outside collaborators. Can be one of:
     * \* `2fa_disabled`: Outside collaborators without [two-factor authentication](https://github.com/blog/1614-two-factor-authentication) enabled.
     * \* `all`: All outside collaborators.
     */
    filter?: "2fa_disabled" | "all";

    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListPendingInvitationsParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsListPublicMembersParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type OrgsPingHookParams = {
    hook_id: number;

    org: string;
  };
  export type OrgsPublicizeMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsRemoveMemberParams = {
    org: string;

    username: string;
  };
  export type OrgsRemoveMembershipParams = {
    org: string;

    username: string;
  };
  export type OrgsRemoveOutsideCollaboratorParams = {
    org: string;

    username: string;
  };
  export type OrgsUnblockUserParams = {
    org: string;

    username: string;
  };
  export type OrgsUpdateParams = {
    /**
     * Billing email address. This address is not publicized.
     */
    billing_email?: string;
    /**
     * The company name.
     */
    company?: string;
    /**
     * Default permission level members have for organization repositories:
     * \* `read` - can pull, but not push to or administer this repository.
     * \* `write` - can pull and push, but not administer this repository.
     * \* `admin` - can pull, push, and administer this repository.
     * \* `none` - no permissions granted by default.
     */
    default_repository_permission?: "read" | "write" | "admin" | "none";
    /**
     * The description of the company.
     */
    description?: string;
    /**
     * The publicly visible email address.
     */
    email?: string;
    /**
     * Toggles whether organization projects are enabled for the organization.
     */
    has_organization_projects?: boolean;
    /**
     * Toggles whether repository projects are enabled for repositories that belong to the organization.
     */
    has_repository_projects?: boolean;
    /**
     * The location.
     */
    location?: string;
    /**
     * Specifies which types of repositories non-admin organization members can create. Can be one of:
     * \* `all` - all organization members can create public and private repositories.
     * \* `private` - members can create private repositories. This option is only available to repositories that are part of an organization on [GitHub Business Cloud](https://github.com/pricing/business-cloud).
     * \* `none` - only admin members can create repositories.
     * **Note:** Using this parameter will override values set in `members_can_create_repositories`. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
     */
    members_allowed_repository_creation_type?: "all" | "private" | "none";
    /**
     * Toggles the ability of non-admin organization members to create repositories. Can be one of:
     * \* `true` - all organization members can create repositories.
     * \* `false` - only admin members can create repositories.
     * Default: `true`
     * **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details. **Note:** Another parameter can override the this parameter. See [this note](https://developer.github.com/v3/orgs/#members_can_create_repositories) for details.
     */
    members_can_create_repositories?: boolean;
    /**
     * The shorthand name of the company.
     */
    name?: string;

    org: string;
  };
  export type OrgsUpdateHookParams = {
    /**
     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
     */
    active?: boolean;
    /**
     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/orgs/hooks/#update-hook-config-params).
     */
    config?: OrgsUpdateHookParamsConfig;
    /**
     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
     */
    events?: string[];

    hook_id: number;

    org: string;
  };
  export type OrgsUpdateMembershipParams = {
    org: string;
    /**
     * The state that the membership should be in. Only `"active"` will be accepted.
     */
    state: "active";
  };
  export type ProjectsAddCollaboratorParams = {
    /**
     * The permission to grant the collaborator. 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 verbs](https://developer.github.com/v3/#http-verbs)." Can be one of:
     * \* `read` - can read, but not write to or administer this project.
     * \* `write` - can read and write, but not administer this project.
     * \* `admin` - can read, write and administer this project.
     */
    permission?: "read" | "write" | "admin";

    project_id: number;

    username: string;
  };
  export type ProjectsCreateCardParams = {
    column_id: number;
    /**
     * The issue or pull request id you want to associate with this card. You can use the [List issues for a repository](https://developer.github.com/v3/issues/#list-issues-for-a-repository) and [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoints to find this id.
     * **Note:** Depending on whether you use the issue id or pull request id, you will need to specify `Issue` or `PullRequest` as the `content_type`.
     */
    content_id?: number;
    /**
     * **Required if you provide `content_id`**. The type of content you want to associate with this card. Use `Issue` when `content_id` is an issue id and use `PullRequest` when `content_id` is a pull request id.
     */
    content_type?: string;
    /**
     * The card's note content. Only valid for cards without another type of content, so you must omit when specifying `content_id` and `content_type`.
     */
    note?: string;
  };
  export type ProjectsCreateColumnParams = {
    /**
     * The name of the column.
     */
    name: string;

    project_id: number;
  };
  export type ProjectsCreateForAuthenticatedUserParams = {
    /**
     * The description of the project.
     */
    body?: string;
    /**
     * The name of the project.
     */
    name: string;
  };
  export type ProjectsCreateForOrgParams = {
    /**
     * The description of the project.
     */
    body?: string;
    /**
     * The name of the project.
     */
    name: string;

    org: string;
  };
  export type ProjectsCreateForRepoParams = {
    /**
     * The description of the project.
     */
    body?: string;
    /**
     * The name of the project.
     */
    name: string;

    owner: string;

    repo: string;
  };
  export type ProjectsDeleteParams = {
    project_id: number;
  };
  export type ProjectsDeleteCardParams = {
    card_id: number;
  };
  export type ProjectsDeleteColumnParams = {
    column_id: number;
  };
  export type ProjectsGetParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    project_id: number;
  };
  export type ProjectsGetCardParams = {
    card_id: number;
  };
  export type ProjectsGetColumnParams = {
    column_id: number;
  };
  export type ProjectsListCardsParams = {
    /**
     * Filters the project cards that are returned by the card's state. Can be one of `all`,`archived`, or `not_archived`.
     */
    archived_state?: "all" | "archived" | "not_archived";

    column_id: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type ProjectsListCollaboratorsParams = {
    /**
     * Filters the collaborators by their affiliation. Can be one of:
     * \* `outside`: Outside collaborators of a project that are not a member of the project's organization.
     * \* `direct`: Collaborators with permissions to a project, regardless of organization membership status.
     * \* `all`: All collaborators the authenticated user can see.
     */
    affiliation?: "outside" | "direct" | "all";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    project_id: number;
  };
  export type ProjectsListColumnsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    project_id: number;
  };
  export type ProjectsListForOrgParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type ProjectsListForRepoParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";
  };
  export type ProjectsListForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Indicates the state of the projects to return. Can be either `open`, `closed`, or `all`.
     */
    state?: "open" | "closed" | "all";

    username: string;
  };
  export type ProjectsMoveCardParams = {
    card_id: number;
    /**
     * The `id` value of a column in the same project.
     */
    column_id?: number;
    /**
     * Can be one of `top`, `bottom`, or `after:<card_id>`, where `<card_id>` is the `id` value of a card in the same column, or in the new column specified by `column_id`.
     */
    position: string;
  };
  export type ProjectsMoveColumnParams = {
    column_id: number;
    /**
     * Can be one of `first`, `last`, or `after:<column_id>`, where `<column_id>` is the `id` value of a column in the same project.
     */
    position: string;
  };
  export type ProjectsRemoveCollaboratorParams = {
    project_id: number;

    username: string;
  };
  export type ProjectsReviewUserPermissionLevelParams = {
    project_id: number;

    username: string;
  };
  export type ProjectsUpdateParams = {
    /**
     * The description of the project.
     */
    body?: string;
    /**
     * The name of the project.
     */
    name?: string;
    /**
     * The permission level that determines whether all members of the project's organization can see and/or make changes to the project. Setting `organization_permission` is only available for organization projects. If an organization member belongs to a team with a higher level of access or is a collaborator with a higher level of access, their permission level is not lowered by `organization_permission`. For information on changing access for a team or collaborator, see [Add or update team project](https://developer.github.com/v3/teams/#add-or-update-team-project) or [Add user as a collaborator](https://developer.github.com/v3/projects/collaborators/#add-user-as-a-collaborator).
     *
     * **Note:** Updating a project's `organization_permission` requires `admin` access to the project.
     *
     * Can be one of:
     * \* `read` - Organization members can read, but not write to or administer this project.
     * \* `write` - Organization members can read and write, but not administer this project.
     * \* `admin` - Organization members can read, write and administer this project.
     * \* `none` - Organization members can only see this project if it is public.
     */
    organization_permission?: string;
    /**
     * Sets the visibility of a project board. Setting `private` is only available for organization and user projects. **Note:** Updating a project's visibility requires `admin` access to the project.
     *
     * Can be one of:
     * \* `false` - Anyone can see the project.
     * \* `true` - Only the user can view a project board created on a user account. Organization members with the appropriate `organization_permission` can see project boards in an organization account.
     */
    private?: boolean;

    project_id: number;
    /**
     * State of the project. Either `open` or `closed`.
     */
    state?: "open" | "closed";
  };
  export type ProjectsUpdateCardParams = {
    /**
     * Use `true` to archive a project card. Specify `false` if you need to restore a previously archived project card.
     */
    archived?: boolean;

    card_id: number;
    /**
     * The card's note content. Only valid for cards without another type of content, so this cannot be specified if the card already has a `content_id` and `content_type`.
     */
    note?: string;
  };
  export type ProjectsUpdateColumnParams = {
    column_id: number;
    /**
     * The new name of the column.
     */
    name: string;
  };
  export type PullsCheckIfMergedParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type PullsCheckIfMergedParams = {
    owner: string;

    pull_number: number;

    repo: string;
  };
  export type PullsCreateParams = {
    /**
     * The name of the branch you want the changes pulled into. This should be an existing branch on the current repository. You cannot submit a pull request to one repository that requests a merge to a base of another repository.
     */
    base: string;
    /**
     * The contents of the pull request.
     */
    body?: string;
    /**
     * Indicates whether the pull request is a draft. See "[Draft Pull Requests](https://help.github.com/en/articles/about-pull-requests#draft-pull-requests)" in the GitHub Help documentation to learn more.
     */
    draft?: boolean;
    /**
     * The name of the branch where your changes are implemented. For cross-repository pull requests in the same network, namespace `head` with a user like this: `username:branch`.
     */
    head: string;
    /**
     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
     */
    maintainer_can_modify?: boolean;

    owner: string;

    repo: string;
    /**
     * The title of the new pull request.
     */
    title: string;
  };
  export type PullsCreateCommentParamsDeprecatedNumber = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateCommentParamsDeprecatedInReplyTo = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.
     * @deprecated "in_reply_to" parameter has been deprecated and will be removed in future
     */
    in_reply_to?: number;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    pull_number: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateCommentParams = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    pull_number: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateCommentReplyParamsDeprecatedNumber = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateCommentReplyParamsDeprecatedInReplyTo = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * The comment ID to reply to. **Note**: This must be the ID of a top-level comment, not a reply to that comment. Replies to replies are not supported.
     * @deprecated "in_reply_to" parameter has been deprecated and will be removed in future
     */
    in_reply_to?: number;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    pull_number: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateCommentReplyParams = {
    /**
     * The text of the review comment.
     */
    body: string;
    /**
     * The SHA of the commit needing a comment. Not using the latest commit SHA may render your comment outdated if a subsequent commit modifies the line you specify as the `position`.
     */
    commit_id: string;
    /**
     * **Required with `comfort-fade` preview**. The line of the blob in the pull request diff that the comment applies to. For a multi-line comment, the last line of the range that your comment applies to.
     */
    line?: number;

    owner: string;
    /**
     * The relative path to the file that necessitates a comment.
     */
    path: string;
    /**
     * **Required without `comfort-fade` preview**. The position in the diff where you want to add a review comment. Note this value is not the same as the line number in the file. For help finding the position value, read the note above.
     */
    position?: number;

    pull_number: number;

    repo: string;
    /**
     * **Required with `comfort-fade` preview**. In a split diff view, the side of the diff that the pull request's changes appear on. Can be `LEFT` or `RIGHT`. Use `LEFT` for deletions that appear in red. Use `RIGHT` for additions that appear in green or unchanged lines that appear in white and are shown for context. For a multi-line comment, side represents whether the last line of the comment range is a deletion or addition. For more information, see "[Diff view options](https://help.github.com/en/articles/about-comparing-branches-in-pull-requests#diff-view-options)" in the GitHub Help documentation.
     */
    side?: "LEFT" | "RIGHT";
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_line` is the first line in the pull request diff that your multi-line comment applies to. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation.
     */
    start_line?: number;
    /**
     * **Required when using multi-line comments**. To create multi-line comments, you must use the `comfort-fade` preview header. The `start_side` is the starting side of the diff that the comment applies to. Can be `LEFT` or `RIGHT`. To learn more about multi-line comments, see "[Commenting on a pull request](https://help.github.com/en/articles/commenting-on-a-pull-request#adding-line-comments-to-a-pull-request)" in the GitHub Help documentation. See `side` in this table for additional context.
     */
    start_side?: "LEFT" | "RIGHT" | "side";
  };
  export type PullsCreateFromIssueParams = {
    base: string;

    draft?: boolean;

    head: string;

    issue: number;

    maintainer_can_modify?: boolean;

    owner: string;

    repo: string;
  };
  export type PullsCreateReviewParamsDeprecatedNumber = {
    /**
     * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.
     */
    body?: string;
    /**
     * Use the following table to specify the location, destination, and contents of the draft review comment.
     */
    comments?: PullsCreateReviewParamsComments[];
    /**
     * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.
     */
    commit_id?: string;
    /**
     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.
     */
    event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type PullsCreateReviewParams = {
    /**
     * **Required** when using `REQUEST_CHANGES` or `COMMENT` for the `event` parameter. The body text of the pull request review.
     */
    body?: string;
    /**
     * Use the following table to specify the location, destination, and contents of the draft review comment.
     */
    comments?: PullsCreateReviewParamsComments[];
    /**
     * The SHA of the commit that needs a review. Not using the latest commit SHA may render your review comment outdated if a subsequent commit modifies the line you specify as the `position`. Defaults to the most recent commit in the pull request when you do not specify a value.
     */
    commit_id?: string;
    /**
     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. By leaving this blank, you set the review action state to `PENDING`, which means you will need to [submit the pull request review](https://developer.github.com/v3/pulls/reviews/#submit-a-pull-request-review) when you are ready.
     */
    event?: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";

    owner: string;

    pull_number: number;

    repo: string;
  };
  export type PullsCreateReviewCommentReplyParams = {
    /**
     * The text of the review comment.
     */
    body: string;

    comment_id: number;

    owner: string;

    pull_number: number;

    repo: string;
  };
  export type PullsCreateReviewRequestParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * An array of user `login`s that will be requested.
     */
    reviewers?: string[];
    /**
     * An array of team `slug`s that will be requested.
     */
    team_reviewers?: string[];
  };
  export type PullsCreateReviewRequestParams = {
    owner: string;

    pull_number: number;

    repo: string;
    /**
     * An array of user `login`s that will be requested.
     */
    reviewers?: string[];
    /**
     * An array of team `slug`s that will be requested.
     */
    team_reviewers?: string[];
  };
  export type PullsDeleteCommentParams = {
    comment_id: number;

    owner: string;

    repo: string;
  };
  export type PullsDeletePendingReviewParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;

    review_id: number;
  };
  export type PullsDeletePendingReviewParams = {
    owner: string;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type PullsDeleteReviewRequestParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * An array of user `login`s that will be removed.
     */
    reviewers?: string[];
    /**
     * An array of team `slug`s that will be removed.
     */
    team_reviewers?: string[];
  };
  export type PullsDeleteReviewRequestParams = {
    owner: string;

    pull_number: number;

    repo: string;
    /**
     * An array of user `login`s that will be removed.
     */
    reviewers?: string[];
    /**
     * An array of team `slug`s that will be removed.
     */
    team_reviewers?: string[];
  };
  export type PullsDismissReviewParamsDeprecatedNumber = {
    /**
     * The message for the pull request review dismissal
     */
    message: string;
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;

    review_id: number;
  };
  export type PullsDismissReviewParams = {
    /**
     * The message for the pull request review dismissal
     */
    message: string;

    owner: string;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type PullsGetParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type PullsGetParams = {
    owner: string;

    pull_number: number;

    repo: string;
  };
  export type PullsGetCommentParams = {
    comment_id: number;

    owner: string;

    repo: string;
  };
  export type PullsGetCommentsForReviewParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;

    review_id: number;
  };
  export type PullsGetCommentsForReviewParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type PullsGetReviewParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;

    review_id: number;
  };
  export type PullsGetReviewParams = {
    owner: string;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type PullsListParams = {
    /**
     * Filter pulls by base branch name. Example: `gh-pages`.
     */
    base?: string;
    /**
     * The direction of the sort. Can be either `asc` or `desc`. Default: `desc` when sort is `created` or sort is not specified, otherwise `asc`.
     */
    direction?: "asc" | "desc";
    /**
     * Filter pulls by head user or head organization and branch name in the format of `user:ref-name` or `organization:ref-name`. For example: `github:new-script-format` or `octocat:test-branch`.
     */
    head?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * What to sort results by. Can be either `created`, `updated`, `popularity` (comment count) or `long-running` (age, filtering by pulls updated in the last month).
     */
    sort?: "created" | "updated" | "popularity" | "long-running";
    /**
     * Either `open`, `closed`, or `all` to filter by state.
     */
    state?: "open" | "closed" | "all";
  };
  export type PullsListCommentsParamsDeprecatedNumber = {
    /**
     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
     */
    direction?: "asc" | "desc";
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
     */
    since?: string;
    /**
     * Can be either `created` or `updated` comments.
     */
    sort?: "created" | "updated";
  };
  export type PullsListCommentsParams = {
    /**
     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
     */
    direction?: "asc" | "desc";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
     */
    since?: string;
    /**
     * Can be either `created` or `updated` comments.
     */
    sort?: "created" | "updated";
  };
  export type PullsListCommentsForRepoParams = {
    /**
     * Can be either `asc` or `desc`. Ignored without `sort` parameter.
     */
    direction?: "asc" | "desc";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`. Only returns comments `updated` at or after this time.
     */
    since?: string;
    /**
     * Can be either `created` or `updated` comments.
     */
    sort?: "created" | "updated";
  };
  export type PullsListCommitsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type PullsListCommitsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;
  };
  export type PullsListFilesParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type PullsListFilesParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;
  };
  export type PullsListReviewRequestsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type PullsListReviewRequestsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;
  };
  export type PullsListReviewsParamsDeprecatedNumber = {
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type PullsListReviewsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    pull_number: number;

    repo: string;
  };
  export type PullsMergeParamsDeprecatedNumber = {
    /**
     * Extra detail to append to automatic commit message.
     */
    commit_message?: string;
    /**
     * Title for the automatic commit message.
     */
    commit_title?: string;
    /**
     * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.
     */
    merge_method?: "merge" | "squash" | "rebase";
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * SHA that pull request head must match to allow merge.
     */
    sha?: string;
  };
  export type PullsMergeParams = {
    /**
     * Extra detail to append to automatic commit message.
     */
    commit_message?: string;
    /**
     * Title for the automatic commit message.
     */
    commit_title?: string;
    /**
     * Merge method to use. Possible values are `merge`, `squash` or `rebase`. Default is `merge`.
     */
    merge_method?: "merge" | "squash" | "rebase";

    owner: string;

    pull_number: number;

    repo: string;
    /**
     * SHA that pull request head must match to allow merge.
     */
    sha?: string;
  };
  export type PullsSubmitReviewParamsDeprecatedNumber = {
    /**
     * The body text of the pull request review
     */
    body?: string;
    /**
     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
     */
    event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;

    review_id: number;
  };
  export type PullsSubmitReviewParams = {
    /**
     * The body text of the pull request review
     */
    body?: string;
    /**
     * The review action you want to perform. The review actions include: `APPROVE`, `REQUEST_CHANGES`, or `COMMENT`. When you leave this blank, the API returns _HTTP 422 (Unrecognizable entity)_ and sets the review action state to `PENDING`, which means you will need to re-submit the pull request review using a review action.
     */
    event: "APPROVE" | "REQUEST_CHANGES" | "COMMENT";

    owner: string;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type PullsUpdateParamsDeprecatedNumber = {
    /**
     * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.
     */
    base?: string;
    /**
     * The contents of the pull request.
     */
    body?: string;
    /**
     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
     */
    maintainer_can_modify?: boolean;
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;
    /**
     * State of this Pull Request. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the pull request.
     */
    title?: string;
  };
  export type PullsUpdateParams = {
    /**
     * The name of the branch you want your changes pulled into. This should be an existing branch on the current repository. You cannot update the base branch on a pull request to point to another repository.
     */
    base?: string;
    /**
     * The contents of the pull request.
     */
    body?: string;
    /**
     * Indicates whether [maintainers can modify](https://help.github.com/articles/allowing-changes-to-a-pull-request-branch-created-from-a-fork/) the pull request.
     */
    maintainer_can_modify?: boolean;

    owner: string;

    pull_number: number;

    repo: string;
    /**
     * State of this Pull Request. Either `open` or `closed`.
     */
    state?: "open" | "closed";
    /**
     * The title of the pull request.
     */
    title?: string;
  };
  export type PullsUpdateBranchParams = {
    /**
     * The expected SHA of the pull request's HEAD ref. This is the most recent commit on the pull request's branch. If the expected SHA does not match the pull request's HEAD, you will receive a `422 Unprocessable Entity` status. You can use the "[List commits on a repository](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository)" endpoint to find the most recent commit SHA. Default: SHA of the pull request's current HEAD ref.
     */
    expected_head_sha?: string;

    owner: string;

    pull_number: number;

    repo: string;
  };
  export type PullsUpdateCommentParams = {
    /**
     * The text of the reply to the review comment.
     */
    body: string;

    comment_id: number;

    owner: string;

    repo: string;
  };
  export type PullsUpdateReviewParamsDeprecatedNumber = {
    /**
     * The body text of the pull request review.
     */
    body: string;
    /**
     * @deprecated "number" parameter renamed to "pull_number"
     */
    number: number;

    owner: string;

    repo: string;

    review_id: number;
  };
  export type PullsUpdateReviewParams = {
    /**
     * The body text of the pull request review.
     */
    body: string;

    owner: string;

    pull_number: number;

    repo: string;

    review_id: number;
  };
  export type ReactionsCreateForCommitCommentParams = {
    comment_id: number;
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the commit comment.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;

    repo: string;
  };
  export type ReactionsCreateForIssueParamsDeprecatedNumber = {
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;

    repo: string;
  };
  export type ReactionsCreateForIssueParams = {
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    issue_number: number;

    owner: string;

    repo: string;
  };
  export type ReactionsCreateForIssueCommentParams = {
    comment_id: number;
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the issue comment.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;

    repo: string;
  };
  export type ReactionsCreateForPullRequestReviewCommentParams = {
    comment_id: number;
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the pull request review comment.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;

    repo: string;
  };
  export type ReactionsCreateForTeamDiscussionParams = {
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    discussion_number: number;

    team_id: number;
  };
  export type ReactionsCreateForTeamDiscussionCommentParams = {
    comment_number: number;
    /**
     * The [reaction type](https://developer.github.com/v3/reactions/#reaction-types) to add to the team discussion comment.
     */
    content:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    discussion_number: number;

    team_id: number;
  };
  export type ReactionsDeleteParams = {
    reaction_id: number;
  };
  export type ReactionsListForCommitCommentParams = {
    comment_id: number;
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a commit comment.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReactionsListForIssueParamsDeprecatedNumber = {
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";
    /**
     * @deprecated "number" parameter renamed to "issue_number"
     */
    number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReactionsListForIssueParams = {
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    issue_number: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReactionsListForIssueCommentParams = {
    comment_id: number;
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to an issue comment.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReactionsListForPullRequestReviewCommentParams = {
    comment_id: number;
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a pull request review comment.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReactionsListForTeamDiscussionParams = {
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    discussion_number: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type ReactionsListForTeamDiscussionCommentParams = {
    comment_number: number;
    /**
     * Returns a single [reaction type](https://developer.github.com/v3/reactions/#reaction-types). Omit this parameter to list all reactions to a team discussion comment.
     */
    content?:
      | "+1"
      | "-1"
      | "laugh"
      | "confused"
      | "heart"
      | "hooray"
      | "rocket"
      | "eyes";

    discussion_number: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type ReposAcceptInvitationParams = {
    invitation_id: number;
  };
  export type ReposAddCollaboratorParams = {
    owner: string;
    /**
     * The permission to grant the collaborator. **Only valid on organization-owned repositories.** Can be one of:
     * \* `pull` - can pull, but not push to or administer this repository.
     * \* `push` - can pull and push, but not administer this repository.
     * \* `admin` - can pull, push and administer this repository.
     */
    permission?: "pull" | "push" | "admin";

    repo: string;

    username: string;
  };
  export type ReposAddDeployKeyParams = {
    /**
     * The contents of the key.
     */
    key: string;

    owner: string;
    /**
     * If `true`, the key will only be able to read repository contents. Otherwise, the key will be able to read and write.
     *
     * Deploy keys with write access can perform the same actions as an organization member with admin access, or a collaborator on a personal repository. For more information, see "[Repository permission levels for an organization](https://help.github.com/articles/repository-permission-levels-for-an-organization/)" and "[Permission levels for a user account repository](https://help.github.com/articles/permission-levels-for-a-user-account-repository/)."
     */
    read_only?: boolean;

    repo: string;
    /**
     * A name for the key.
     */
    title?: string;
  };
  export type ReposAddProtectedBranchAdminEnforcementParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposAddProtectedBranchAppRestrictionsParams = {
    apps: string[];

    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposAddProtectedBranchRequiredSignaturesParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposAddProtectedBranchRequiredStatusChecksContextsParams = {
    branch: string;

    contexts: string[];

    owner: string;

    repo: string;
  };
  export type ReposAddProtectedBranchTeamRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    teams: string[];
  };
  export type ReposAddProtectedBranchUserRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    users: string[];
  };
  export type ReposCheckCollaboratorParams = {
    owner: string;

    repo: string;

    username: string;
  };
  export type ReposCheckVulnerabilityAlertsParams = {
    owner: string;

    repo: string;
  };
  export type ReposCompareCommitsParams = {
    base: string;

    head: string;

    owner: string;

    repo: string;
  };
  export type ReposCreateCommitCommentParamsDeprecatedSha = {
    /**
     * The contents of the comment.
     */
    body: string;

    owner: string;
    /**
     * Relative path of the file to comment on.
     */
    path?: string;
    /**
     * Line index in the diff to comment on.
     */
    position?: number;

    repo: string;
    /**
     * @deprecated "sha" parameter renamed to "commit_sha"
     */
    sha: string;
  };
  export type ReposCreateCommitCommentParamsDeprecatedLine = {
    /**
     * The contents of the comment.
     */
    body: string;

    commit_sha: string;
    /**
     * **Deprecated**. Use **position** parameter instead. Line number in the file to comment on.
     * @deprecated "line" parameter has been deprecated and will be removed in future
     */
    line?: number;

    owner: string;
    /**
     * Relative path of the file to comment on.
     */
    path?: string;
    /**
     * Line index in the diff to comment on.
     */
    position?: number;

    repo: string;
  };
  export type ReposCreateCommitCommentParams = {
    /**
     * The contents of the comment.
     */
    body: string;

    commit_sha: string;

    owner: string;
    /**
     * Relative path of the file to comment on.
     */
    path?: string;
    /**
     * Line index in the diff to comment on.
     */
    position?: number;

    repo: string;
  };
  export type ReposCreateDeploymentParams = {
    /**
     * Attempts to automatically merge the default branch into the requested ref, if it's behind the default branch.
     */
    auto_merge?: boolean;
    /**
     * Short description of the deployment.
     */
    description?: string;
    /**
     * Name for the target deployment environment (e.g., `production`, `staging`, `qa`).
     */
    environment?: string;

    owner: string;
    /**
     * JSON payload with extra information about the deployment.
     */
    payload?: string;
    /**
     * Specifies if the given environment is one that end-users directly interact with. Default: `true` when `environment` is `production` and `false` otherwise.
     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
     */
    production_environment?: boolean;
    /**
     * The ref to deploy. This can be a branch, tag, or SHA.
     */
    ref: string;

    repo: string;
    /**
     * The [status](https://developer.github.com/v3/repos/statuses/) contexts to verify against commit status checks. If you omit this parameter, GitHub verifies all unique contexts before creating a deployment. To bypass checking entirely, pass an empty array. Defaults to all unique contexts.
     */
    required_contexts?: string[];
    /**
     * Specifies a task to execute (e.g., `deploy` or `deploy:migrations`).
     */
    task?: string;
    /**
     * Specifies if the given environment is specific to the deployment and will no longer exist at some point in the future. Default: `false`
     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
     */
    transient_environment?: boolean;
  };
  export type ReposCreateDeploymentStatusParams = {
    /**
     * Adds a new `inactive` status to all prior non-transient, non-production environment deployments with the same repository and `environment` name as the created status's deployment. An `inactive` status is only added to deployments that had a `success` state. Default: `true`
     * **Note:** To add an `inactive` status to `production` environments, you must use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
     */
    auto_inactive?: boolean;

    deployment_id: number;
    /**
     * A short description of the status. The maximum description length is 140 characters.
     */
    description?: string;
    /**
     * Name for the target deployment environment, which can be changed when setting a deploy status. For example, `production`, `staging`, or `qa`. **Note:** This parameter requires you to use the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
     */
    environment?: "production" | "staging" | "qa";
    /**
     * Sets the URL for accessing your environment. Default: `""`
     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
     */
    environment_url?: string;
    /**
     * The full URL of the deployment's output. This parameter replaces `target_url`. We will continue to accept `target_url` to support legacy uses, but we recommend replacing `target_url` with `log_url`. Setting `log_url` will automatically set `target_url` to the same value. Default: `""`
     * **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. **Note:** This parameter requires you to use the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type.
     */
    log_url?: string;

    owner: string;

    repo: string;
    /**
     * The state of the status. Can be one of `error`, `failure`, `inactive`, `in_progress`, `queued` `pending`, or `success`. **Note:** To use the `inactive` state, you must provide the [`application/vnd.github.ant-man-preview+json`](https://developer.github.com/v3/previews/#enhanced-deployments) custom media type. To use the `in_progress` and `queued` states, you must provide the [`application/vnd.github.flash-preview+json`](https://developer.github.com/v3/previews/#deployment-statuses) custom media type.
     */
    state:
      | "error"
      | "failure"
      | "inactive"
      | "in_progress"
      | "queued"
      | "pending"
      | "success";
    /**
     * The target URL to associate with this status. This URL should contain output to keep the user updated while the task is running or serve as historical information for what happened in the deployment. **Note:** It's recommended to use the `log_url` parameter, which replaces `target_url`.
     */
    target_url?: string;
  };
  export type ReposCreateDispatchEventParams = {
    /**
     * JSON payload with extra information about the webhook event that your action or worklow may use.
     */
    client_payload?: ReposCreateDispatchEventParamsClientPayload;
    /**
     * **Required:** A custom webhook event name.
     */
    event_type?: string;

    owner: string;

    repo: string;
  };
  export type ReposCreateFileParams = {
    /**
     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
     */
    author?: ReposCreateFileParamsAuthor;
    /**
     * The branch name. Default: the repository’s default branch (usually `master`)
     */
    branch?: string;
    /**
     * The person that committed the file. Default: the authenticated user.
     */
    committer?: ReposCreateFileParamsCommitter;
    /**
     * The new file content, using Base64 encoding.
     */
    content: string;
    /**
     * The commit message.
     */
    message: string;

    owner: string;

    path: string;

    repo: string;
    /**
     * **Required if you are updating a file**. The blob SHA of the file being replaced.
     */
    sha?: string;
  };
  export type ReposCreateForAuthenticatedUserParams = {
    /**
     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
     */
    allow_merge_commit?: boolean;
    /**
     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
     */
    allow_rebase_merge?: boolean;
    /**
     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
     */
    allow_squash_merge?: boolean;
    /**
     * Pass `true` to create an initial commit with empty README.
     */
    auto_init?: boolean;
    /**
     * A short description of the repository.
     */
    description?: string;
    /**
     * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
     */
    gitignore_template?: string;
    /**
     * Either `true` to enable issues for this repository or `false` to disable them.
     */
    has_issues?: boolean;
    /**
     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
     */
    has_projects?: boolean;
    /**
     * Either `true` to enable the wiki for this repository or `false` to disable it.
     */
    has_wiki?: boolean;
    /**
     * A URL with more information about the repository.
     */
    homepage?: string;
    /**
     * Either `true` to make this repo available as a template repository or `false` to prevent it.
     */
    is_template?: boolean;
    /**
     * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
     */
    license_template?: string;
    /**
     * The name of the repository.
     */
    name: string;
    /**
     * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
     */
    private?: boolean;
    /**
     * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
     */
    team_id?: number;
  };
  export type ReposCreateForkParams = {
    /**
     * Optional parameter to specify the organization name if forking into an organization.
     */
    organization?: string;

    owner: string;

    repo: string;
  };
  export type ReposCreateHookParams = {
    /**
     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
     */
    active?: boolean;
    /**
     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
     */
    config: ReposCreateHookParamsConfig;
    /**
     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for.
     */
    events?: string[];
    /**
     * Use `web` to create a webhook. Default: `web`. This parameter only accepts the value `web`.
     */
    name?: string;

    owner: string;

    repo: string;
  };
  export type ReposCreateInOrgParams = {
    /**
     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
     */
    allow_merge_commit?: boolean;
    /**
     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
     */
    allow_rebase_merge?: boolean;
    /**
     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
     */
    allow_squash_merge?: boolean;
    /**
     * Pass `true` to create an initial commit with empty README.
     */
    auto_init?: boolean;
    /**
     * A short description of the repository.
     */
    description?: string;
    /**
     * Desired language or platform [.gitignore template](https://github.com/github/gitignore) to apply. Use the name of the template without the extension. For example, "Haskell".
     */
    gitignore_template?: string;
    /**
     * Either `true` to enable issues for this repository or `false` to disable them.
     */
    has_issues?: boolean;
    /**
     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
     */
    has_projects?: boolean;
    /**
     * Either `true` to enable the wiki for this repository or `false` to disable it.
     */
    has_wiki?: boolean;
    /**
     * A URL with more information about the repository.
     */
    homepage?: string;
    /**
     * Either `true` to make this repo available as a template repository or `false` to prevent it.
     */
    is_template?: boolean;
    /**
     * Choose an [open source license template](https://choosealicense.com/) that best suits your needs, and then use the [license keyword](https://help.github.com/articles/licensing-a-repository/#searching-github-by-license-type) as the `license_template` string. For example, "mit" or "mpl-2.0".
     */
    license_template?: string;
    /**
     * The name of the repository.
     */
    name: string;

    org: string;
    /**
     * Either `true` to create a private repository or `false` to create a public one. Creating private repositories requires a paid GitHub account.
     */
    private?: boolean;
    /**
     * The id of the team that will be granted access to this repository. This is only valid when creating a repository in an organization.
     */
    team_id?: number;
  };
  export type ReposCreateOrUpdateFileParams = {
    /**
     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
     */
    author?: ReposCreateOrUpdateFileParamsAuthor;
    /**
     * The branch name. Default: the repository’s default branch (usually `master`)
     */
    branch?: string;
    /**
     * The person that committed the file. Default: the authenticated user.
     */
    committer?: ReposCreateOrUpdateFileParamsCommitter;
    /**
     * The new file content, using Base64 encoding.
     */
    content: string;
    /**
     * The commit message.
     */
    message: string;

    owner: string;

    path: string;

    repo: string;
    /**
     * **Required if you are updating a file**. The blob SHA of the file being replaced.
     */
    sha?: string;
  };
  export type ReposCreateReleaseParams = {
    /**
     * Text describing the contents of the tag.
     */
    body?: string;
    /**
     * `true` to create a draft (unpublished) release, `false` to create a published one.
     */
    draft?: boolean;
    /**
     * The name of the release.
     */
    name?: string;

    owner: string;
    /**
     * `true` to identify the release as a prerelease. `false` to identify the release as a full release.
     */
    prerelease?: boolean;

    repo: string;
    /**
     * The name of the tag.
     */
    tag_name: string;
    /**
     * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
     */
    target_commitish?: string;
  };
  export type ReposCreateStatusParams = {
    /**
     * A string label to differentiate this status from the status of other systems.
     */
    context?: string;
    /**
     * A short description of the status.
     */
    description?: string;

    owner: string;

    repo: string;

    sha: string;
    /**
     * The state of the status. Can be one of `error`, `failure`, `pending`, or `success`.
     */
    state: "error" | "failure" | "pending" | "success";
    /**
     * The target URL to associate with this status. This URL will be linked from the GitHub UI to allow users to easily see the source of the status.
     * For example, if your continuous integration system is posting build status, you would want to provide the deep link for the build output for this specific SHA:
     * `http://ci.example.com/user/repo/build/sha`
     */
    target_url?: string;
  };
  export type ReposCreateUsingTemplateParams = {
    /**
     * A short description of the new repository.
     */
    description?: string;
    /**
     * The name of the new repository.
     */
    name: string;
    /**
     * The organization or person who will own the new repository. To create a new repository in an organization, the authenticated user must be a member of the specified organization.
     */
    owner?: string;
    /**
     * Either `true` to create a new private repository or `false` to create a new public one.
     */
    private?: boolean;

    template_owner: string;

    template_repo: string;
  };
  export type ReposDeclineInvitationParams = {
    invitation_id: number;
  };
  export type ReposDeleteParams = {
    owner: string;

    repo: string;
  };
  export type ReposDeleteCommitCommentParams = {
    comment_id: number;

    owner: string;

    repo: string;
  };
  export type ReposDeleteDownloadParams = {
    download_id: number;

    owner: string;

    repo: string;
  };
  export type ReposDeleteFileParams = {
    /**
     * object containing information about the author.
     */
    author?: ReposDeleteFileParamsAuthor;
    /**
     * The branch name. Default: the repository’s default branch (usually `master`)
     */
    branch?: string;
    /**
     * object containing information about the committer.
     */
    committer?: ReposDeleteFileParamsCommitter;
    /**
     * The commit message.
     */
    message: string;

    owner: string;

    path: string;

    repo: string;
    /**
     * The blob SHA of the file being replaced.
     */
    sha: string;
  };
  export type ReposDeleteHookParams = {
    hook_id: number;

    owner: string;

    repo: string;
  };
  export type ReposDeleteInvitationParams = {
    invitation_id: number;

    owner: string;

    repo: string;
  };
  export type ReposDeleteReleaseParams = {
    owner: string;

    release_id: number;

    repo: string;
  };
  export type ReposDeleteReleaseAssetParams = {
    asset_id: number;

    owner: string;

    repo: string;
  };
  export type ReposDisableAutomatedSecurityFixesParams = {
    owner: string;

    repo: string;
  };
  export type ReposDisablePagesSiteParams = {
    owner: string;

    repo: string;
  };
  export type ReposDisableVulnerabilityAlertsParams = {
    owner: string;

    repo: string;
  };
  export type ReposEnableAutomatedSecurityFixesParams = {
    owner: string;

    repo: string;
  };
  export type ReposEnablePagesSiteParams = {
    owner: string;

    repo: string;

    source?: ReposEnablePagesSiteParamsSource;
  };
  export type ReposEnableVulnerabilityAlertsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetAppsWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetArchiveLinkParams = {
    archive_format: string;

    owner: string;

    ref: string;

    repo: string;
  };
  export type ReposGetBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetBranchProtectionParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetClonesParams = {
    owner: string;
    /**
     * Must be one of: `day`, `week`.
     */
    per?: "day" | "week";

    repo: string;
  };
  export type ReposGetCodeFrequencyStatsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetCollaboratorPermissionLevelParams = {
    owner: string;

    repo: string;

    username: string;
  };
  export type ReposGetCombinedStatusForRefParams = {
    owner: string;

    ref: string;

    repo: string;
  };
  export type ReposGetCommitParamsDeprecatedSha = {
    owner: string;

    repo: string;
    /**
     * @deprecated "sha" parameter renamed to "ref"
     */
    sha: string;
  };
  export type ReposGetCommitParamsDeprecatedCommitSha = {
    /**
     * @deprecated "commit_sha" parameter renamed to "ref"
     */
    commit_sha: string;

    owner: string;

    repo: string;
  };
  export type ReposGetCommitParams = {
    owner: string;

    ref: string;

    repo: string;
  };
  export type ReposGetCommitActivityStatsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetCommitCommentParams = {
    comment_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetCommitRefShaParams = {
    owner: string;

    ref: string;

    repo: string;
  };
  export type ReposGetContentsParams = {
    owner: string;

    path: string;
    /**
     * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
     */
    ref?: string;

    repo: string;
  };
  export type ReposGetContributorsStatsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetDeployKeyParams = {
    key_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetDeploymentParams = {
    deployment_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetDeploymentStatusParams = {
    deployment_id: number;

    owner: string;

    repo: string;

    status_id: number;
  };
  export type ReposGetDownloadParams = {
    download_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetHookParams = {
    hook_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetLatestPagesBuildParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetLatestReleaseParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetPagesParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetPagesBuildParams = {
    build_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetParticipationStatsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetProtectedBranchAdminEnforcementParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetProtectedBranchPullRequestReviewEnforcementParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetProtectedBranchRequiredSignaturesParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetProtectedBranchRequiredStatusChecksParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetProtectedBranchRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetPunchCardStatsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetReadmeParams = {
    owner: string;
    /**
     * The name of the commit/branch/tag. Default: the repository’s default branch (usually `master`)
     */
    ref?: string;

    repo: string;
  };
  export type ReposGetReleaseParams = {
    owner: string;

    release_id: number;

    repo: string;
  };
  export type ReposGetReleaseAssetParams = {
    asset_id: number;

    owner: string;

    repo: string;
  };
  export type ReposGetReleaseByTagParams = {
    owner: string;

    repo: string;

    tag: string;
  };
  export type ReposGetTeamsWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetTopPathsParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetTopReferrersParams = {
    owner: string;

    repo: string;
  };
  export type ReposGetUsersWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposGetViewsParams = {
    owner: string;
    /**
     * Must be one of: `day`, `week`.
     */
    per?: "day" | "week";

    repo: string;
  };
  export type ReposListParams = {
    /**
     * Comma-separated list of values. Can include:
     * \* `owner`: Repositories that are owned by the authenticated user.
     * \* `collaborator`: Repositories that the user has been added to as a collaborator.
     * \* `organization_member`: Repositories that the user has access to through being a member of an organization. This includes every repository on every team that the user is on.
     */
    affiliation?: string;
    /**
     * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Can be one of `created`, `updated`, `pushed`, `full_name`.
     */
    sort?: "created" | "updated" | "pushed" | "full_name";
    /**
     * Can be one of `all`, `owner`, `public`, `private`, `member`. Default: `all`
     *
     * Will cause a `422` error if used in the same request as **visibility** or **affiliation**. Will cause a `422` error if used in the same request as **visibility** or **affiliation**.
     */
    type?: "all" | "owner" | "public" | "private" | "member";
    /**
     * Can be one of `all`, `public`, or `private`.
     */
    visibility?: "all" | "public" | "private";
  };
  export type ReposListAppsWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposListAssetsForReleaseParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    release_id: number;

    repo: string;
  };
  export type ReposListBranchesParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Setting to `true` returns only protected branches. When set to `false`, only unprotected branches are returned. Omitting this parameter returns all branches.
     */
    protected?: boolean;

    repo: string;
  };
  export type ReposListBranchesForHeadCommitParams = {
    commit_sha: string;

    owner: string;

    repo: string;
  };
  export type ReposListCollaboratorsParams = {
    /**
     * Filter collaborators returned by their affiliation. Can be one of:
     * \* `outside`: All outside collaborators of an organization-owned repository.
     * \* `direct`: All collaborators with permissions to an organization-owned repository, regardless of organization membership status.
     * \* `all`: All collaborators the authenticated user can see.
     */
    affiliation?: "outside" | "direct" | "all";

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListCommentsForCommitParamsDeprecatedRef = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * @deprecated "ref" parameter renamed to "commit_sha"
     */
    ref: string;

    repo: string;
  };
  export type ReposListCommentsForCommitParams = {
    commit_sha: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListCommitCommentsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListCommitsParams = {
    /**
     * GitHub login or email address by which to filter by commit author.
     */
    author?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Only commits containing this file path will be returned.
     */
    path?: string;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * SHA or branch to start listing commits from. Default: the repository’s default branch (usually `master`).
     */
    sha?: string;
    /**
     * Only commits after this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    since?: string;
    /**
     * Only commits before this date will be returned. This is a timestamp in [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) format: `YYYY-MM-DDTHH:MM:SSZ`.
     */
    until?: string;
  };
  export type ReposListContributorsParams = {
    /**
     * Set to `1` or `true` to include anonymous contributors in results.
     */
    anon?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListDeployKeysParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListDeploymentStatusesParams = {
    deployment_id: number;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListDeploymentsParams = {
    /**
     * The name of the environment that was deployed to (e.g., `staging` or `production`).
     */
    environment?: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The name of the ref. This can be a branch, tag, or SHA.
     */
    ref?: string;

    repo: string;
    /**
     * The SHA recorded at creation time.
     */
    sha?: string;
    /**
     * The name of the task for the deployment (e.g., `deploy` or `deploy:migrations`).
     */
    task?: string;
  };
  export type ReposListDownloadsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListForOrgParams = {
    /**
     * Can be one of `asc` or `desc`. Default: when using `full_name`: `asc`, otherwise `desc`
     */
    direction?: "asc" | "desc";

    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Can be one of `created`, `updated`, `pushed`, `full_name`.
     */
    sort?: "created" | "updated" | "pushed" | "full_name";
    /**
     * Can be one of `all`, `public`, `private`, `forks`, `sources`, `member`.
     */
    type?: "all" | "public" | "private" | "forks" | "sources" | "member";
  };
  export type ReposListForUserParams = {
    /**
     * Can be one of `asc` or `desc`. Default: `asc` when using `full_name`, otherwise `desc`
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Can be one of `created`, `updated`, `pushed`, `full_name`.
     */
    sort?: "created" | "updated" | "pushed" | "full_name";
    /**
     * Can be one of `all`, `owner`, `member`.
     */
    type?: "all" | "owner" | "member";

    username: string;
  };
  export type ReposListForksParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
    /**
     * The sort order. Can be either `newest`, `oldest`, or `stargazers`.
     */
    sort?: "newest" | "oldest" | "stargazers";
  };
  export type ReposListHooksParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListInvitationsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListInvitationsForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type ReposListLanguagesParams = {
    owner: string;

    repo: string;
  };
  export type ReposListPagesBuildsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListProtectedBranchRequiredStatusChecksContextsParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposListProtectedBranchTeamRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposListProtectedBranchUserRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposListPublicParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The integer ID of the last Repository that you've seen.
     */
    since?: string;
  };
  export type ReposListPullRequestsAssociatedWithCommitParams = {
    commit_sha: string;

    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListReleasesParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListStatusesForRefParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    ref: string;

    repo: string;
  };
  export type ReposListTagsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListTeamsParams = {
    owner: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    repo: string;
  };
  export type ReposListTeamsWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposListTopicsParams = {
    owner: string;

    repo: string;
  };
  export type ReposListUsersWithAccessToProtectedBranchParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposMergeParams = {
    /**
     * The name of the base branch that the head will be merged into.
     */
    base: string;
    /**
     * Commit message to use for the merge commit. If omitted, a default message will be used.
     */
    commit_message?: string;
    /**
     * The head to merge. This can be a branch name or a commit SHA1.
     */
    head: string;

    owner: string;

    repo: string;
  };
  export type ReposPingHookParams = {
    hook_id: number;

    owner: string;

    repo: string;
  };
  export type ReposRemoveBranchProtectionParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveCollaboratorParams = {
    owner: string;

    repo: string;

    username: string;
  };
  export type ReposRemoveDeployKeyParams = {
    key_id: number;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchAdminEnforcementParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchAppRestrictionsParams = {
    apps: string[];

    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchPullRequestReviewEnforcementParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchRequiredSignaturesParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchRequiredStatusChecksParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchRequiredStatusChecksContextsParams = {
    branch: string;

    contexts: string[];

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposRemoveProtectedBranchTeamRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    teams: string[];
  };
  export type ReposRemoveProtectedBranchUserRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    users: string[];
  };
  export type ReposReplaceProtectedBranchAppRestrictionsParams = {
    apps: string[];

    branch: string;

    owner: string;

    repo: string;
  };
  export type ReposReplaceProtectedBranchRequiredStatusChecksContextsParams = {
    branch: string;

    contexts: string[];

    owner: string;

    repo: string;
  };
  export type ReposReplaceProtectedBranchTeamRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    teams: string[];
  };
  export type ReposReplaceProtectedBranchUserRestrictionsParams = {
    branch: string;

    owner: string;

    repo: string;

    users: string[];
  };
  export type ReposReplaceTopicsParams = {
    /**
     * An array of topics to add to the repository. Pass one or more topics to _replace_ the set of existing topics. Send an empty array (`[]`) to clear all topics from the repository. **Note:** Topic `names` cannot contain uppercase letters.
     */
    names: string[];

    owner: string;

    repo: string;
  };
  export type ReposRequestPageBuildParams = {
    owner: string;

    repo: string;
  };
  export type ReposRetrieveCommunityProfileMetricsParams = {
    owner: string;

    repo: string;
  };
  export type ReposTestPushHookParams = {
    hook_id: number;

    owner: string;

    repo: string;
  };
  export type ReposTransferParams = {
    /**
     * **Required:** The username or organization name the repository will be transferred to.
     */
    new_owner?: string;

    owner: string;

    repo: string;
    /**
     * ID of the team or teams to add to the repository. Teams can only be added to organization-owned repositories.
     */
    team_ids?: number[];
  };
  export type ReposUpdateParams = {
    /**
     * Either `true` to allow merging pull requests with a merge commit, or `false` to prevent merging pull requests with merge commits.
     */
    allow_merge_commit?: boolean;
    /**
     * Either `true` to allow rebase-merging pull requests, or `false` to prevent rebase-merging.
     */
    allow_rebase_merge?: boolean;
    /**
     * Either `true` to allow squash-merging pull requests, or `false` to prevent squash-merging.
     */
    allow_squash_merge?: boolean;
    /**
     * `true` to archive this repository. **Note**: You cannot unarchive repositories through the API.
     */
    archived?: boolean;
    /**
     * Updates the default branch for this repository.
     */
    default_branch?: string;
    /**
     * A short description of the repository.
     */
    description?: string;
    /**
     * Either `true` to enable issues for this repository or `false` to disable them.
     */
    has_issues?: boolean;
    /**
     * Either `true` to enable projects for this repository or `false` to disable them. **Note:** If you're creating a repository in an organization that has disabled repository projects, the default is `false`, and if you pass `true`, the API returns an error.
     */
    has_projects?: boolean;
    /**
     * Either `true` to enable the wiki for this repository or `false` to disable it.
     */
    has_wiki?: boolean;
    /**
     * A URL with more information about the repository.
     */
    homepage?: string;
    /**
     * Either `true` to make this repo available as a template repository or `false` to prevent it.
     */
    is_template?: boolean;
    /**
     * The name of the repository.
     */
    name?: string;

    owner: string;
    /**
     * Either `true` to make the repository private or `false` to make it public. Creating private repositories requires a paid GitHub account. Default: `false`.
     * **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private. **Note**: You will get a `422` error if the organization restricts [changing repository visibility](https://help.github.com/articles/repository-permission-levels-for-an-organization#changing-the-visibility-of-repositories) to organization owners and a non-owner tries to change the value of private.
     */
    private?: boolean;

    repo: string;
  };
  export type ReposUpdateBranchProtectionParams = {
    branch: string;
    /**
     * Enforce all configured restrictions for administrators. Set to `true` to enforce required status checks for repository administrators. Set to `null` to disable.
     */
    enforce_admins: boolean | null;

    owner: string;

    repo: string;
    /**
     * Require at least one approving review on a pull request, before merging. Set to `null` to disable.
     */
    required_pull_request_reviews: ReposUpdateBranchProtectionParamsRequiredPullRequestReviews | null;
    /**
     * Require status checks to pass before merging. Set to `null` to disable.
     */
    required_status_checks: ReposUpdateBranchProtectionParamsRequiredStatusChecks | null;
    /**
     * Restrict who can push to this branch. User, app, and team `restrictions` are only available for organization-owned repositories. Set to `null` to disable.
     */
    restrictions: ReposUpdateBranchProtectionParamsRestrictions | null;
  };
  export type ReposUpdateCommitCommentParams = {
    /**
     * The contents of the comment
     */
    body: string;

    comment_id: number;

    owner: string;

    repo: string;
  };
  export type ReposUpdateFileParams = {
    /**
     * The author of the file. Default: The `committer` or the authenticated user if you omit `committer`.
     */
    author?: ReposUpdateFileParamsAuthor;
    /**
     * The branch name. Default: the repository’s default branch (usually `master`)
     */
    branch?: string;
    /**
     * The person that committed the file. Default: the authenticated user.
     */
    committer?: ReposUpdateFileParamsCommitter;
    /**
     * The new file content, using Base64 encoding.
     */
    content: string;
    /**
     * The commit message.
     */
    message: string;

    owner: string;

    path: string;

    repo: string;
    /**
     * **Required if you are updating a file**. The blob SHA of the file being replaced.
     */
    sha?: string;
  };
  export type ReposUpdateHookParams = {
    /**
     * Determines if notifications are sent when the webhook is triggered. Set to `true` to send notifications.
     */
    active?: boolean;
    /**
     * Determines a list of events to be added to the list of events that the Hook triggers for.
     */
    add_events?: string[];
    /**
     * Key/value pairs to provide settings for this webhook. [These are defined below](https://developer.github.com/v3/repos/hooks/#create-hook-config-params).
     */
    config?: ReposUpdateHookParamsConfig;
    /**
     * Determines what [events](https://developer.github.com/v3/activity/events/types/) the hook is triggered for. This replaces the entire array of events.
     */
    events?: string[];

    hook_id: number;

    owner: string;
    /**
     * Determines a list of events to be removed from the list of events that the Hook triggers for.
     */
    remove_events?: string[];

    repo: string;
  };
  export type ReposUpdateInformationAboutPagesSiteParams = {
    /**
     * Specify a custom domain for the repository. Sending a `null` value will remove the custom domain. For more about custom domains, see "[Using a custom domain with GitHub Pages](https://help.github.com/articles/using-a-custom-domain-with-github-pages/)."
     */
    cname?: string;

    owner: string;

    repo: string;
    /**
     * Update the source for the repository. Must include the branch name, and may optionally specify the subdirectory `/docs`. Possible values are `"gh-pages"`, `"master"`, and `"master /docs"`.
     */
    source?: '"gh-pages"' | '"master"' | '"master /docs"';
  };
  export type ReposUpdateInvitationParams = {
    invitation_id: number;

    owner: string;
    /**
     * The permissions that the associated user will have on the repository. Valid values are `read`, `write`, and `admin`.
     */
    permissions?: "read" | "write" | "admin";

    repo: string;
  };
  export type ReposUpdateProtectedBranchPullRequestReviewEnforcementParams = {
    branch: string;
    /**
     * Set to `true` if you want to automatically dismiss approving reviews when someone pushes a new commit.
     */
    dismiss_stale_reviews?: boolean;
    /**
     * Specify which users and teams can dismiss pull request reviews. Pass an empty `dismissal_restrictions` object to disable. User and team `dismissal_restrictions` are only available for organization-owned repositories. Omit this parameter for personal repositories.
     */
    dismissal_restrictions?: ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions;

    owner: string;

    repo: string;
    /**
     * Blocks merging pull requests until [code owners](https://help.github.com/articles/about-code-owners/) have reviewed.
     */
    require_code_owner_reviews?: boolean;
    /**
     * Specifies the number of reviewers required to approve pull requests. Use a number between 1 and 6.
     */
    required_approving_review_count?: number;
  };
  export type ReposUpdateProtectedBranchRequiredStatusChecksParams = {
    branch: string;
    /**
     * The list of status checks to require in order to merge into this branch
     */
    contexts?: string[];

    owner: string;

    repo: string;
    /**
     * Require branches to be up to date before merging.
     */
    strict?: boolean;
  };
  export type ReposUpdateReleaseParams = {
    /**
     * Text describing the contents of the tag.
     */
    body?: string;
    /**
     * `true` makes the release a draft, and `false` publishes the release.
     */
    draft?: boolean;
    /**
     * The name of the release.
     */
    name?: string;

    owner: string;
    /**
     * `true` to identify the release as a prerelease, `false` to identify the release as a full release.
     */
    prerelease?: boolean;

    release_id: number;

    repo: string;
    /**
     * The name of the tag.
     */
    tag_name?: string;
    /**
     * Specifies the commitish value that determines where the Git tag is created from. Can be any branch or commit SHA. Unused if the Git tag already exists. Default: the repository's default branch (usually `master`).
     */
    target_commitish?: string;
  };
  export type ReposUpdateReleaseAssetParams = {
    asset_id: number;
    /**
     * An alternate short description of the asset. Used in place of the filename.
     */
    label?: string;
    /**
     * The file name of the asset.
     */
    name?: string;

    owner: string;

    repo: string;
  };
  export type ReposUploadReleaseAssetParams = {
    file: string | object;

    headers: ReposUploadReleaseAssetParamsHeaders;
    /**
     * An alternate short description of the asset. Used in place of the filename. This should be set in a URI query parameter.
     */
    label?: string;
    /**
     * The file name of the asset. This should be set in a URI query parameter.
     */
    name: string;
    /**
     * The `upload_url` key returned from creating or getting a release
     */
    url: string;
  };
  export type SearchCodeParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching code](https://help.github.com/articles/searching-code/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query. Can only be `indexed`, which indicates how recently a file has been indexed by the GitHub search infrastructure. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?: "indexed";
  };
  export type SearchCommitsParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching commits](https://help.github.com/articles/searching-commits/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query by `author-date` or `committer-date`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?: "author-date" | "committer-date";
  };
  export type SearchIssuesParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?:
      | "comments"
      | "reactions"
      | "reactions-+1"
      | "reactions--1"
      | "reactions-smile"
      | "reactions-thinking_face"
      | "reactions-heart"
      | "reactions-tada"
      | "interactions"
      | "created"
      | "updated";
  };
  export type SearchIssuesAndPullRequestsParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching issues and pull requests](https://help.github.com/articles/searching-issues-and-pull-requests/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query by the number of `comments`, `reactions`, `reactions-+1`, `reactions--1`, `reactions-smile`, `reactions-thinking_face`, `reactions-heart`, `reactions-tada`, or `interactions`. You can also sort results by how recently the items were `created` or `updated`, Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?:
      | "comments"
      | "reactions"
      | "reactions-+1"
      | "reactions--1"
      | "reactions-smile"
      | "reactions-thinking_face"
      | "reactions-heart"
      | "reactions-tada"
      | "interactions"
      | "created"
      | "updated";
  };
  export type SearchLabelsParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * The search keywords. This endpoint does not accept qualifiers in the query. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
     */
    q: string;
    /**
     * The id of the repository.
     */
    repository_id: number;
    /**
     * Sorts the results of your query by when the label was `created` or `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?: "created" | "updated";
  };
  export type SearchReposParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching for repositories](https://help.github.com/articles/searching-for-repositories/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query by number of `stars`, `forks`, or `help-wanted-issues` or how recently the items were `updated`. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?: "stars" | "forks" | "help-wanted-issues" | "updated";
  };
  export type SearchTopicsParams = {
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query).
     */
    q: string;
  };
  export type SearchUsersParams = {
    /**
     * Determines whether the first search result returned is the highest number of matches (`desc`) or lowest number of matches (`asc`). This parameter is ignored unless you provide `sort`.
     */
    order?: "desc" | "asc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The query contains one or more search keywords and qualifiers. Qualifiers allow you to limit your search to specific areas of GitHub. The REST API supports the same qualifiers as GitHub.com. To learn more about the format of the query, see [Constructing a search query](https://developer.github.com/v3/search/#constructing-a-search-query). See "[Searching users](https://help.github.com/articles/searching-users/)" for a detailed list of qualifiers.
     */
    q: string;
    /**
     * Sorts the results of your query by number of `followers` or `repositories`, or when the person `joined` GitHub. Default: [best match](https://developer.github.com/v3/search/#ranking-search-results)
     */
    sort?: "followers" | "repositories" | "joined";
  };
  export type TeamsAddMemberParams = {
    team_id: number;

    username: string;
  };
  export type TeamsAddOrUpdateMembershipParams = {
    /**
     * The role that this user should have in the team. Can be one of:
     * \* `member` - a normal member of the team.
     * \* `maintainer` - a team maintainer. Able to add/remove other team members, promote other team members to team maintainer, and edit the team's name and description.
     */
    role?: "member" | "maintainer";

    team_id: number;

    username: string;
  };
  export type TeamsAddOrUpdateProjectParams = {
    /**
     * The permission to grant to the team for this project. Can be one of:
     * \* `read` - team members can read, but not write to or administer this project.
     * \* `write` - team members can read and write, but not administer this project.
     * \* `admin` - team members can read, write and administer this project.
     * Default: the team's `permission` attribute will be used to determine what permission to grant the team on this project. 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 verbs](https://developer.github.com/v3/#http-verbs)."
     * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited from a parent team.
     */
    permission?: "read" | "write" | "admin";

    project_id: number;

    team_id: number;
  };
  export type TeamsAddOrUpdateRepoParams = {
    owner: string;
    /**
     * The permission to grant the team on this repository. Can be one of:
     * \* `pull` - team members can pull, but not push to or administer this repository.
     * \* `push` - team members can pull and push, but not administer this repository.
     * \* `admin` - team members can pull, push and administer this repository.
     *
     * If no permission is specified, the team's `permission` attribute will be used to determine what permission to grant the team on this repository.
     * **Note**: If you pass the `hellcat-preview` media type, you can promote—but not demote—a `permission` attribute inherited through a parent team.
     */
    permission?: "pull" | "push" | "admin";

    repo: string;

    team_id: number;
  };
  export type TeamsCheckManagesRepoParams = {
    owner: string;

    repo: string;

    team_id: number;
  };
  export type TeamsCreateParamsDeprecatedPermission = {
    /**
     * The description of the team.
     */
    description?: string;
    /**
     * The logins of organization members to add as maintainers of the team.
     */
    maintainers?: string[];
    /**
     * The name of the team.
     */
    name: string;

    org: string;
    /**
     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
     */
    parent_team_id?: number;
    /**
     * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
     * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
     * \* `push` - team members can pull and push, but not administer newly-added repositories.
     * \* `admin` - team members can pull, push and administer newly-added repositories.
     * @deprecated "permission" parameter has been deprecated and will be removed in future
     */
    permission?: string;
    /**
     * The level of privacy this team should have. The options are:
     * **For a non-nested team:**
     * \* `secret` - only visible to organization owners and members of this team.
     * \* `closed` - visible to all members of this organization.
     * Default: `secret`
     * **For a parent or child team:**
     * \* `closed` - visible to all members of this organization.
     * Default for child team: `closed`
     * **Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.
     */
    privacy?: "secret" | "closed";
    /**
     * The full name (e.g., "organization-name/repository-name") of repositories to add the team to.
     */
    repo_names?: string[];
  };
  export type TeamsCreateParams = {
    /**
     * The description of the team.
     */
    description?: string;
    /**
     * The logins of organization members to add as maintainers of the team.
     */
    maintainers?: string[];
    /**
     * The name of the team.
     */
    name: string;

    org: string;
    /**
     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
     */
    parent_team_id?: number;
    /**
     * The level of privacy this team should have. The options are:
     * **For a non-nested team:**
     * \* `secret` - only visible to organization owners and members of this team.
     * \* `closed` - visible to all members of this organization.
     * Default: `secret`
     * **For a parent or child team:**
     * \* `closed` - visible to all members of this organization.
     * Default for child team: `closed`
     * **Note**: You must pass the `hellcat-preview` media type to set privacy default to `closed` for child teams.
     */
    privacy?: "secret" | "closed";
    /**
     * The full name (e.g., "organization-name/repository-name") of repositories to add the team to.
     */
    repo_names?: string[];
  };
  export type TeamsCreateDiscussionParams = {
    /**
     * The discussion post's body text.
     */
    body: string;
    /**
     * Private posts are only visible to team members, organization owners, and team maintainers. Public posts are visible to all members of the organization. Set to `true` to create a private post.
     */
    private?: boolean;

    team_id: number;
    /**
     * The discussion post's title.
     */
    title: string;
  };
  export type TeamsCreateDiscussionCommentParams = {
    /**
     * The discussion comment's body text.
     */
    body: string;

    discussion_number: number;

    team_id: number;
  };
  export type TeamsDeleteParams = {
    team_id: number;
  };
  export type TeamsDeleteDiscussionParams = {
    discussion_number: number;

    team_id: number;
  };
  export type TeamsDeleteDiscussionCommentParams = {
    comment_number: number;

    discussion_number: number;

    team_id: number;
  };
  export type TeamsGetParams = {
    team_id: number;
  };
  export type TeamsGetByNameParams = {
    org: string;

    team_slug: string;
  };
  export type TeamsGetDiscussionParams = {
    discussion_number: number;

    team_id: number;
  };
  export type TeamsGetDiscussionCommentParams = {
    comment_number: number;

    discussion_number: number;

    team_id: number;
  };
  export type TeamsGetMemberParams = {
    team_id: number;

    username: string;
  };
  export type TeamsGetMembershipParams = {
    team_id: number;

    username: string;
  };
  export type TeamsListParams = {
    org: string;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type TeamsListChildParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsListDiscussionCommentsParams = {
    /**
     * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
     */
    direction?: "asc" | "desc";

    discussion_number: number;
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsListDiscussionsParams = {
    /**
     * Sorts the discussion comments by the date they were created. To return the oldest comments first, set to `asc`. Can be one of `asc` or `desc`.
     */
    direction?: "asc" | "desc";
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsListForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type TeamsListMembersParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * Filters members returned by their role in the team. Can be one of:
     * \* `member` - normal members of the team.
     * \* `maintainer` - team maintainers.
     * \* `all` - all members of the team.
     */
    role?: "member" | "maintainer" | "all";

    team_id: number;
  };
  export type TeamsListPendingInvitationsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsListProjectsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsListReposParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    team_id: number;
  };
  export type TeamsRemoveMemberParams = {
    team_id: number;

    username: string;
  };
  export type TeamsRemoveMembershipParams = {
    team_id: number;

    username: string;
  };
  export type TeamsRemoveProjectParams = {
    project_id: number;

    team_id: number;
  };
  export type TeamsRemoveRepoParams = {
    owner: string;

    repo: string;

    team_id: number;
  };
  export type TeamsReviewProjectParams = {
    project_id: number;

    team_id: number;
  };
  export type TeamsUpdateParamsDeprecatedPermission = {
    /**
     * The description of the team.
     */
    description?: string;
    /**
     * The name of the team.
     */
    name: string;
    /**
     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
     */
    parent_team_id?: number;
    /**
     * **Deprecated**. The permission that new repositories will be added to the team with when none is specified. Can be one of:
     * \* `pull` - team members can pull, but not push to or administer newly-added repositories.
     * \* `push` - team members can pull and push, but not administer newly-added repositories.
     * \* `admin` - team members can pull, push and administer newly-added repositories.
     * @deprecated "permission" parameter has been deprecated and will be removed in future
     */
    permission?: string;
    /**
     * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
     * **For a non-nested team:**
     * \* `secret` - only visible to organization owners and members of this team.
     * \* `closed` - visible to all members of this organization.
     * **For a parent or child team:**
     * \* `closed` - visible to all members of this organization.
     */
    privacy?: "secret" | "closed";

    team_id: number;
  };
  export type TeamsUpdateParams = {
    /**
     * The description of the team.
     */
    description?: string;
    /**
     * The name of the team.
     */
    name: string;
    /**
     * The ID of a team to set as the parent team. **Note**: You must pass the `hellcat-preview` media type to use this parameter.
     */
    parent_team_id?: number;
    /**
     * The level of privacy this team should have. Editing teams without specifying this parameter leaves `privacy` intact. The options are:
     * **For a non-nested team:**
     * \* `secret` - only visible to organization owners and members of this team.
     * \* `closed` - visible to all members of this organization.
     * **For a parent or child team:**
     * \* `closed` - visible to all members of this organization.
     */
    privacy?: "secret" | "closed";

    team_id: number;
  };
  export type TeamsUpdateDiscussionParams = {
    /**
     * The discussion post's body text.
     */
    body?: string;

    discussion_number: number;

    team_id: number;
    /**
     * The discussion post's title.
     */
    title?: string;
  };
  export type TeamsUpdateDiscussionCommentParams = {
    /**
     * The discussion comment's body text.
     */
    body: string;

    comment_number: number;

    discussion_number: number;

    team_id: number;
  };
  export type UsersAddEmailsParams = {
    /**
     * Adds one or more email addresses to your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
     */
    emails: string[];
  };
  export type UsersBlockParams = {
    username: string;
  };
  export type UsersCheckBlockedParams = {
    username: string;
  };
  export type UsersCheckFollowingParams = {
    username: string;
  };
  export type UsersCheckFollowingForUserParams = {
    target_user: string;

    username: string;
  };
  export type UsersCreateGpgKeyParams = {
    /**
     * Your GPG key, generated in ASCII-armored format. See "[Generating a new GPG key](https://help.github.com/articles/generating-a-new-gpg-key/)" for help creating a GPG key.
     */
    armored_public_key?: string;
  };
  export type UsersCreatePublicKeyParams = {
    /**
     * The public SSH key to add to your GitHub account. See "[Generating a new SSH key](https://help.github.com/articles/generating-a-new-ssh-key-and-adding-it-to-the-ssh-agent/)" for guidance on how to create a public SSH key.
     */
    key?: string;
    /**
     * A descriptive name for the new key. Use a name that will help you recognize this key in your GitHub account. For example, if you're using a personal Mac, you might call this key "Personal MacBook Air".
     */
    title?: string;
  };
  export type UsersDeleteEmailsParams = {
    /**
     * Deletes one or more email addresses from your GitHub account. Must contain at least one email address. **Note:** Alternatively, you can pass a single email address or an `array` of emails addresses directly, but we recommend that you pass an object using the `emails` key.
     */
    emails: string[];
  };
  export type UsersDeleteGpgKeyParams = {
    gpg_key_id: number;
  };
  export type UsersDeletePublicKeyParams = {
    key_id: number;
  };
  export type UsersFollowParams = {
    username: string;
  };
  export type UsersGetByUsernameParams = {
    username: string;
  };
  export type UsersGetContextForUserParams = {
    /**
     * Uses the ID for the `subject_type` you specified. **Required** when using `subject_type`.
     */
    subject_id?: string;
    /**
     * Identifies which additional information you'd like to receive about the person's hovercard. Can be `organization`, `repository`, `issue`, `pull_request`. **Required** when using `subject_id`.
     */
    subject_type?: "organization" | "repository" | "issue" | "pull_request";

    username: string;
  };
  export type UsersGetGpgKeyParams = {
    gpg_key_id: number;
  };
  export type UsersGetPublicKeyParams = {
    key_id: number;
  };
  export type UsersListParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
    /**
     * The integer ID of the last User that you've seen.
     */
    since?: string;
  };
  export type UsersListEmailsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListFollowersForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListFollowersForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type UsersListFollowingForAuthenticatedUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListFollowingForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type UsersListGpgKeysParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListGpgKeysForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type UsersListPublicEmailsParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListPublicKeysParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;
  };
  export type UsersListPublicKeysForUserParams = {
    /**
     * Page number of the results to fetch.
     */
    page?: number;
    /**
     * Results per page (max 100)
     */
    per_page?: number;

    username: string;
  };
  export type UsersTogglePrimaryEmailVisibilityParams = {
    /**
     * Specify the _primary_ email address that needs a visibility change.
     */
    email: string;
    /**
     * Use `public` to enable an authenticated user to view the specified email address, or use `private` so this primary email address cannot be seen publicly.
     */
    visibility: string;
  };
  export type UsersUnblockParams = {
    username: string;
  };
  export type UsersUnfollowParams = {
    username: string;
  };
  export type UsersUpdateAuthenticatedParams = {
    /**
     * The new short biography of the user.
     */
    bio?: string;
    /**
     * The new blog URL of the user.
     */
    blog?: string;
    /**
     * The new company of the user.
     */
    company?: string;
    /**
     * The publicly visible email address of the user.
     */
    email?: string;
    /**
     * The new hiring availability of the user.
     */
    hireable?: boolean;
    /**
     * The new location of the user.
     */
    location?: string;
    /**
     * The new name of the user.
     */
    name?: string;
  };

  // child param types
  export type AppsCreateInstallationTokenParamsPermissions = {};
  export type ChecksCreateParamsActions = {
    description: string;
    identifier: string;
    label: string;
  };
  export type ChecksCreateParamsOutput = {
    annotations?: ChecksCreateParamsOutputAnnotations[];
    images?: ChecksCreateParamsOutputImages[];
    summary: string;
    text?: string;
    title: string;
  };
  export type ChecksCreateParamsOutputAnnotations = {
    annotation_level: "notice" | "warning" | "failure";
    end_column?: number;
    end_line: number;
    message: string;
    path: string;
    raw_details?: string;
    start_column?: number;
    start_line: number;
    title?: string;
  };
  export type ChecksCreateParamsOutputImages = {
    alt: string;
    caption?: string;
    image_url: string;
  };
  export type ChecksSetSuitesPreferencesParamsAutoTriggerChecks = {
    app_id: number;
    setting: boolean;
  };
  export type ChecksUpdateParamsActions = {
    description: string;
    identifier: string;
    label: string;
  };
  export type ChecksUpdateParamsOutput = {
    annotations?: ChecksUpdateParamsOutputAnnotations[];
    images?: ChecksUpdateParamsOutputImages[];
    summary: string;
    text?: string;
    title?: string;
  };
  export type ChecksUpdateParamsOutputAnnotations = {
    annotation_level: "notice" | "warning" | "failure";
    end_column?: number;
    end_line: number;
    message: string;
    path: string;
    raw_details?: string;
    start_column?: number;
    start_line: number;
    title?: string;
  };
  export type ChecksUpdateParamsOutputImages = {
    alt: string;
    caption?: string;
    image_url: string;
  };
  export type GistsCreateParamsFiles = {
    content?: string;
  };
  export type GistsUpdateParamsFiles = {
    content?: string;
    filename?: string;
  };
  export type GitCreateCommitParamsAuthor = {
    date?: string;
    email?: string;
    name?: string;
  };
  export type GitCreateCommitParamsCommitter = {
    date?: string;
    email?: string;
    name?: string;
  };
  export type GitCreateTagParamsTagger = {
    date?: string;
    email?: string;
    name?: string;
  };
  export type GitCreateTreeParamsTree = {
    content?: string;
    mode?: "100644" | "100755" | "040000" | "160000" | "120000";
    path?: string;
    sha?: string;
    type?: "blob" | "tree" | "commit";
  };
  export type OrgsCreateHookParamsConfig = {
    content_type?: string;
    insecure_ssl?: string;
    secret?: string;
    url: string;
  };
  export type OrgsUpdateHookParamsConfig = {
    content_type?: string;
    insecure_ssl?: string;
    secret?: string;
    url: string;
  };
  export type PullsCreateReviewParamsComments = {
    body: string;
    path: string;
    position: number;
  };
  export type ReposCreateDispatchEventParamsClientPayload = {};
  export type ReposCreateFileParamsAuthor = {
    email: string;
    name: string;
  };
  export type ReposCreateFileParamsCommitter = {
    email: string;
    name: string;
  };
  export type ReposCreateHookParamsConfig = {
    content_type?: string;
    insecure_ssl?: string;
    secret?: string;
    url: string;
  };
  export type ReposCreateOrUpdateFileParamsAuthor = {
    email: string;
    name: string;
  };
  export type ReposCreateOrUpdateFileParamsCommitter = {
    email: string;
    name: string;
  };
  export type ReposDeleteFileParamsAuthor = {
    email?: string;
    name?: string;
  };
  export type ReposDeleteFileParamsCommitter = {
    email?: string;
    name?: string;
  };
  export type ReposEnablePagesSiteParamsSource = {
    branch?: "master" | "gh-pages";
    path?: string;
  };
  export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviews = {
    dismiss_stale_reviews?: boolean;
    dismissal_restrictions?: ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions;
    require_code_owner_reviews?: boolean;
    required_approving_review_count?: number;
  };
  export type ReposUpdateBranchProtectionParamsRequiredPullRequestReviewsDismissalRestrictions = {
    teams?: string[];
    users?: string[];
  };
  export type ReposUpdateBranchProtectionParamsRequiredStatusChecks = {
    contexts: string[];
    strict: boolean;
  };
  export type ReposUpdateBranchProtectionParamsRestrictions = {
    apps?: string[];
    teams: string[];
    users: string[];
  };
  export type ReposUpdateFileParamsAuthor = {
    email: string;
    name: string;
  };
  export type ReposUpdateFileParamsCommitter = {
    email: string;
    name: string;
  };
  export type ReposUpdateHookParamsConfig = {
    content_type?: string;
    insecure_ssl?: string;
    secret?: string;
    url: string;
  };
  export type ReposUpdateProtectedBranchPullRequestReviewEnforcementParamsDismissalRestrictions = {
    teams?: string[];
    users?: string[];
  };
  export type ReposUploadReleaseAssetParamsHeaders = {
    "content-length": number;
    "content-type": string;
  };
}

declare class Octokit {
  constructor(options?: Octokit.Options);
  authenticate(auth: Octokit.AuthBasic): void;
  authenticate(auth: Octokit.AuthOAuthToken): void;
  authenticate(auth: Octokit.AuthOAuthSecret): void;
  authenticate(auth: Octokit.AuthUserToken): void;
  authenticate(auth: Octokit.AuthJWT): void;

  hook: {
    before(
      name: string,
      callback: (options: Octokit.HookOptions) => void
    ): void;
    after(
      name: string,
      callback: (
        response: Octokit.Response<any>,
        options: Octokit.HookOptions
      ) => void
    ): void;
    error(
      name: string,
      callback: (error: Octokit.HookError, options: Octokit.HookOptions) => void
    ): void;
    wrap(
      name: string,
      callback: (
        request: (
          options: Octokit.HookOptions
        ) => Promise<Octokit.Response<any>>,
        options: Octokit.HookOptions
      ) => void
    ): void;
  };

  static plugin(plugin: Octokit.Plugin | Octokit.Plugin[]): Octokit.Static;

  registerEndpoints(endpoints: {
    [scope: string]: Octokit.EndpointOptions;
  }): void;

  request: Octokit.Request;

  paginate: Octokit.Paginate;

  log: Octokit.Log;

  activity: {
    /**
     * Requires for the user to be authenticated.
     */
    checkStarringRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityCheckStarringRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint should only be used to stop watching a repository. To control whether or not you wish to receive notifications from a repository, [set the repository's subscription manually](https://developer.github.com/v3/activity/watching/#set-a-repository-subscription).
     */
    deleteRepoSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityDeleteRepoSubscriptionParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Mutes all future notifications for a conversation until you comment on the thread or get **@mention**ed.
     */
    deleteThreadSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityDeleteThreadSubscriptionParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    getRepoSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityGetRepoSubscriptionParams
      ): Promise<Octokit.Response<Octokit.ActivityGetRepoSubscriptionResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getThread: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityGetThreadParams
      ): Promise<Octokit.Response<Octokit.ActivityGetThreadResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This checks to see if the current user is subscribed to a thread. You can also [get a repository subscription](https://developer.github.com/v3/activity/watching/#get-a-repository-subscription).
     *
     * Note that subscriptions are only generated if a user is participating in a conversation--for example, they've replied to the thread, were **@mentioned**, or manually subscribe to a thread.
     */
    getThreadSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityGetThreadSubscriptionParams
      ): Promise<
        Octokit.Response<Octokit.ActivityGetThreadSubscriptionResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This is the user's organization dashboard. You must be authenticated as the user to view this.
     */
    listEventsForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityListEventsForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If you are authenticated as the given user, you will see your private events. Otherwise, you'll only see public events.
     */
    listEventsForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListEventsForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * GitHub provides several timeline resources in [Atom](http://en.wikipedia.org/wiki/Atom_(standard)) format. The Feeds API lists all the feeds available to the authenticated user:
     *
     * *   **Timeline**: The GitHub global public timeline
     * *   **User**: The public timeline for any user, using [URI template](https://developer.github.com/v3/#hypermedia)
     * *   **Current user public**: The public timeline for the authenticated user
     * *   **Current user**: The private timeline for the authenticated user
     * *   **Current user actor**: The private timeline for activity created by the authenticated user
     * *   **Current user organizations**: The private timeline for the organizations the authenticated user is a member of.
     * *   **Security advisories**: A collection of public announcements that provide information about security-related vulnerabilities in software on GitHub.
     *
     * **Note**: Private feeds are only returned when [authenticating via Basic Auth](https://developer.github.com/v3/#basic-authentication) since current feed URIs use the older, non revocable auth tokens.
     */
    listFeeds: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.ActivityListFeedsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all notifications for the current user, sorted by most recently updated.
     *
     * The following example uses the `since` parameter to list notifications that have been updated after the specified time.
     */
    listNotifications: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListNotificationsParams
      ): Promise<Octokit.Response<Octokit.ActivityListNotificationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all notifications for the current user.
     */
    listNotificationsForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListNotificationsForRepoParams
      ): Promise<
        Octokit.Response<Octokit.ActivityListNotificationsForRepoResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * We delay the public events feed by five minutes, which means the most recent event returned by the public events API actually occurred at least five minutes ago.
     */
    listPublicEvents: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityListPublicEventsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listPublicEventsForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListPublicEventsForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listPublicEventsForRepoNetwork: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListPublicEventsForRepoNetworkParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listPublicEventsForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListPublicEventsForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * These are events that you've received by watching repos and following users. If you are authenticated as the given user, you will see private events. Otherwise, you'll only see public events.
     */
    listReceivedEventsForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListReceivedEventsForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listReceivedPublicEventsForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListReceivedPublicEventsForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listRepoEvents: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityListRepoEventsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
     */
    listReposStarredByAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListReposStarredByAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.ActivityListReposStarredByAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
     */
    listReposStarredByUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListReposStarredByUserParams
      ): Promise<
        Octokit.Response<Octokit.ActivityListReposStarredByUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listReposWatchedByUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListReposWatchedByUserParams
      ): Promise<
        Octokit.Response<Octokit.ActivityListReposWatchedByUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can also find out _when_ stars were created by passing the following custom [media type](https://developer.github.com/v3/media/) via the `Accept` header:
     */
    listStargazersForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListStargazersForRepoParams
      ): Promise<
        Octokit.Response<Octokit.ActivityListStargazersForRepoResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listWatchedReposForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListWatchedReposForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.ActivityListWatchedReposForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };

    listWatchersForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityListWatchersForRepoParams
      ): Promise<Octokit.Response<Octokit.ActivityListWatchersForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Marks a notification as "read" removes it from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List your notifications](https://developer.github.com/v3/activity/notifications/#list-your-notifications) endpoint and pass the query parameter `all=false`.
     */
    markAsRead: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityMarkAsReadParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Marks all notifications in a repository as "read" removes them from the [default view on GitHub](https://github.com/notifications). If the number of notifications is too large to complete in one request, you will receive a `202 Accepted` status and GitHub will run an asynchronous process to mark notifications as "read." To check whether any "unread" notifications remain, you can use the [List your notifications in a repository](https://developer.github.com/v3/activity/notifications/#list-your-notifications-in-a-repository) endpoint and pass the query parameter `all=false`.
     */
    markNotificationsAsReadForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivityMarkNotificationsAsReadForRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    markThreadAsRead: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityMarkThreadAsReadParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If you would like to watch a repository, set `subscribed` to `true`. If you would like to ignore notifications made within a repository, set `ignored` to `true`. If you would like to stop watching a repository, [delete the repository's subscription](https://developer.github.com/v3/activity/watching/#delete-a-repository-subscription) completely.
     */
    setRepoSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivitySetRepoSubscriptionParams
      ): Promise<Octokit.Response<Octokit.ActivitySetRepoSubscriptionResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This lets you subscribe or unsubscribe from a conversation.
     */
    setThreadSubscription: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ActivitySetThreadSubscriptionParams
      ): Promise<
        Octokit.Response<Octokit.ActivitySetThreadSubscriptionResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Requires for the user to be authenticated.
     *
     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
     */
    starRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityStarRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Requires for the user to be authenticated.
     */
    unstarRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.ActivityUnstarRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
  };
  apps: {
    /**
     * Add a single repository to an installation. The authenticated user must have admin access to the repository.
     *
     * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization)) or [Basic Authentication](https://developer.github.com/v3/auth/#basic-authentication) to access this endpoint.
     */
    addRepoToInstallation: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsAddRepoToInstallationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
     *
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    checkAccountIsAssociatedWithAny: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsCheckAccountIsAssociatedWithAnyParams
      ): Promise<
        Octokit.Response<Octokit.AppsCheckAccountIsAssociatedWithAnyResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Shows whether the user or organization account actively subscribes to a plan listed by the authenticated GitHub App. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
     *
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    checkAccountIsAssociatedWithAnyStubbed: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsCheckAccountIsAssociatedWithAnyStubbedParams
      ): Promise<
        Octokit.Response<
          Octokit.AppsCheckAccountIsAssociatedWithAnyStubbedResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
     * @deprecated octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization
     */
    checkAuthorization: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsCheckAuthorizationParams
      ): Promise<Octokit.Response<Octokit.AppsCheckAuthorizationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) to use this endpoint, where the username is the OAuth application `client_id` and the password is its `client_secret`. Invalid tokens will return `404 NOT FOUND`.
     */
    checkToken: {
      (params?: Octokit.RequestOptions & Octokit.AppsCheckTokenParams): Promise<
        Octokit.Response<Octokit.AppsCheckTokenResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates an attachment under a content reference URL in the body or comment of an issue or pull request. Use the `id` of the content reference from the [`content_reference` event](https://developer.github.com/v3/activity/events/types/#contentreferenceevent) to create an attachment.
     *
     * The app must create a content attachment within six hours of the content reference URL being posted. See "[Using content attachments](https://developer.github.com/apps/using-content-attachments/)" for details about content attachments.
     *
     * You must use an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
     *
     * This example creates a content attachment for the domain `https://errors.ai/`.
     */
    createContentAttachment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsCreateContentAttachmentParams
      ): Promise<Octokit.Response<Octokit.AppsCreateContentAttachmentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Use this endpoint to complete the handshake necessary when implementing the [GitHub App Manifest flow](https://developer.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/). When you create a GitHub App with the manifest flow, you receive a temporary `code` used to retrieve the GitHub App's `id`, `pem` (private key), and `webhook_secret`.
     */
    createFromManifest: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsCreateFromManifestParams
      ): Promise<Octokit.Response<Octokit.AppsCreateFromManifestResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates an installation access token that enables a GitHub App to make authenticated API requests for the app's installation on an organization or individual account. Installation tokens expire one hour from the time you create them. Using an expired token produces a status code of `401 - Unauthorized`, and requires creating a new installation token.
     *
     * By default the installation token has access to all repositories that the installation can access. To restrict the access to specific repositories, you can provide the `repository_ids` when creating the token. When you omit `repository_ids`, the response does not contain the `repositories` key.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     *
     * This example grants the token "Read and write" permission to `issues` and "Read" permission to `contents`, and restricts the token's access to the repository with an `id` of 1296269.
     */
    createInstallationToken: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsCreateInstallationTokenParams
      ): Promise<Octokit.Response<Octokit.AppsCreateInstallationTokenResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid OAuth `access_token` as an input parameter and the grant for the token's owner will be deleted.
     *
     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
     */
    deleteAuthorization: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsDeleteAuthorizationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Uninstalls a GitHub App on a user, organization, or business account.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    deleteInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsDeleteInstallationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
     */
    deleteToken: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsDeleteTokenParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the organization's installation information.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     * @deprecated octokit.apps.findOrgInstallation() has been renamed to octokit.apps.getOrgInstallation() (2019-04-10)
     */
    findOrgInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsFindOrgInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsFindOrgInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     * @deprecated octokit.apps.findRepoInstallation() has been renamed to octokit.apps.getRepoInstallation() (2019-04-10)
     */
    findRepoInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsFindRepoInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsFindRepoInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the user’s installation information.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     * @deprecated octokit.apps.findUserInstallation() has been renamed to octokit.apps.getUserInstallation() (2019-04-10)
     */
    findUserInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsFindUserInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsFindUserInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns the GitHub App associated with the authentication credentials used. To see how many app installations are associated with this GitHub App, see the `installations_count` in the response. For more details about your app's installations, see the "[List installations](https://developer.github.com/v3/apps/#list-installations)" endpoint.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    getAuthenticated: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.AppsGetAuthenticatedResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: The `:app_slug` is just the URL-friendly name of your GitHub App. You can find this on the settings page for your GitHub App (e.g., `https://github.com/settings/apps/:app_slug`).
     *
     * If the GitHub App you specify is public, you can access this endpoint without authenticating. If the GitHub App you specify is private, you must authenticate with a [personal access token](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
     */
    getBySlug: {
      (params?: Octokit.RequestOptions & Octokit.AppsGetBySlugParams): Promise<
        Octokit.Response<Octokit.AppsGetBySlugResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    getInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsGetInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsGetInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the organization's installation information.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    getOrgInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsGetOrgInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsGetOrgInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the repository's installation information. The installation's account type will be either an organization or a user account, depending which account the repository belongs to.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    getRepoInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsGetRepoInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsGetRepoInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables an authenticated GitHub App to find the user’s installation information.
     *
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     */
    getUserInstallation: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsGetUserInstallationParams
      ): Promise<Octokit.Response<Octokit.AppsGetUserInstallationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns any accounts associated with a plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
     *
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    listAccountsUserOrOrgOnPlan: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListAccountsUserOrOrgOnPlanParams
      ): Promise<
        Octokit.Response<Octokit.AppsListAccountsUserOrOrgOnPlanResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns any accounts associated with a plan, including free plans. For per-seat pricing, you see the list of accounts that have purchased the plan, including the number of seats purchased. When someone submits a plan change that won't be processed until the end of their billing cycle, you will also see the upcoming pending change.
     *
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    listAccountsUserOrOrgOnPlanStubbed: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListAccountsUserOrOrgOnPlanStubbedParams
      ): Promise<
        Octokit.Response<Octokit.AppsListAccountsUserOrOrgOnPlanStubbedResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access for an installation.
     *
     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
     *
     * You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.
     *
     * The access the user has to each repository is included in the hash under the `permissions` key.
     */
    listInstallationReposForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListInstallationReposForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.AppsListInstallationReposForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint.
     *
     * The permissions the installation has are included under the `permissions` key.
     */
    listInstallations: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsListInstallationsParams
      ): Promise<Octokit.Response<Octokit.AppsListInstallationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists installations of your GitHub App that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
     *
     * You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint.
     *
     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
     *
     * You can find the permissions for the installation under the `permissions` key.
     */
    listInstallationsForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListInstallationsForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.AppsListInstallationsForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns only active subscriptions. You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/).
     */
    listMarketplacePurchasesForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns only active subscriptions. You must use a [user-to-server OAuth access token](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/#identifying-users-on-your-site), created for a user who has authorized your GitHub App, to access this endpoint. . OAuth Apps must authenticate using an [OAuth token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/).
     */
    listMarketplacePurchasesForAuthenticatedUserStubbed: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserStubbedParams
      ): Promise<
        Octokit.Response<
          Octokit.AppsListMarketplacePurchasesForAuthenticatedUserStubbedResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    listPlans: {
      (params?: Octokit.RequestOptions & Octokit.AppsListPlansParams): Promise<
        Octokit.Response<Octokit.AppsListPlansResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * GitHub Apps must use a [JWT](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-a-github-app) to access this endpoint. OAuth Apps must use [basic authentication](https://developer.github.com/v3/auth/#basic-authentication) with their client ID and client secret to access this endpoint.
     */
    listPlansStubbed: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsListPlansStubbedParams
      ): Promise<Octokit.Response<Octokit.AppsListPlansStubbedResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List repositories that an installation can access.
     *
     * You must use an [installation access token](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/#authenticating-as-an-installation) to access this endpoint.
     */
    listRepos: {
      (params?: Octokit.RequestOptions & Octokit.AppsListReposParams): Promise<
        Octokit.Response<Octokit.AppsListReposResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Remove a single repository from an installation. The authenticated user must have admin access to the repository.
     *
     * You must use a personal access token (which you can create via the [command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line/) or the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization)) or [Basic Authentication](https://developer.github.com/v3/auth/#basic-authentication) to access this endpoint.
     */
    removeRepoFromInstallation: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsRemoveRepoFromInstallationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
     * @deprecated octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization
     */
    resetAuthorization: {
      (
        params?: Octokit.RequestOptions & Octokit.AppsResetAuthorizationParams
      ): Promise<Octokit.Response<Octokit.AppsResetAuthorizationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
     */
    resetToken: {
      (params?: Octokit.RequestOptions & Octokit.AppsResetTokenParams): Promise<
        Octokit.Response<Octokit.AppsResetTokenResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
     * @deprecated octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application
     */
    revokeAuthorizationForApplication: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsRevokeAuthorizationForApplicationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted.
     *
     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under "Authorized OAuth Apps" on GitHub](https://github.com/settings/applications#authorized).
     * @deprecated octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application
     */
    revokeGrantForApplication: {
      (
        params?: Octokit.RequestOptions &
          Octokit.AppsRevokeGrantForApplicationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
  };
  checks: {
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
     *
     * Creates a new check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to create check runs.
     */
    create: {
      (params?: Octokit.RequestOptions & Octokit.ChecksCreateParams): Promise<
        Octokit.Response<Octokit.ChecksCreateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
     *
     * By default, check suites are automatically created when you create a [check run](https://developer.github.com/v3/checks/runs/). You only need to use this endpoint for manually creating check suites when you've disabled automatic creation using "[Set preferences for check suites on a repository](https://developer.github.com/v3/checks/suites/#set-preferences-for-check-suites-on-a-repository)". Your GitHub App must have the `checks:write` permission to create check suites.
     */
    createSuite: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksCreateSuiteParams
      ): Promise<Octokit.Response<Octokit.ChecksCreateSuiteResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
     *
     * Gets a single check run using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.ChecksGetParams): Promise<
        Octokit.Response<Octokit.ChecksGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
     *
     * Gets a single check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.
     */
    getSuite: {
      (params?: Octokit.RequestOptions & Octokit.ChecksGetSuiteParams): Promise<
        Octokit.Response<Octokit.ChecksGetSuiteResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists annotations for a check run using the annotation `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get annotations for a check run. OAuth Apps and authenticated users must have the `repo` scope to get annotations for a check run in a private repository.
     */
    listAnnotations: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksListAnnotationsParams
      ): Promise<Octokit.Response<Octokit.ChecksListAnnotationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
     *
     * Lists check runs for a commit ref. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
     */
    listForRef: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksListForRefParams
      ): Promise<Octokit.Response<Octokit.ChecksListForRefResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
     *
     * Lists check runs for a check suite using its `id`. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to get check runs. OAuth Apps and authenticated users must have the `repo` scope to get check runs in a private repository.
     */
    listForSuite: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksListForSuiteParams
      ): Promise<Octokit.Response<Octokit.ChecksListForSuiteResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array and a `null` value for `head_branch`.
     *
     * Lists check suites for a commit `ref`. The `ref` can be a SHA, branch name, or a tag name. GitHub Apps must have the `checks:read` permission on a private repository or pull access to a public repository to list check suites. OAuth Apps and authenticated users must have the `repo` scope to get check suites in a private repository.
     */
    listSuitesForRef: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksListSuitesForRefParams
      ): Promise<Octokit.Response<Octokit.ChecksListSuitesForRefResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Triggers GitHub to rerequest an existing check suite, without pushing new code to a repository. This endpoint will trigger the [`check_suite` webhook](https://developer.github.com/v3/activity/events/types/#checksuiteevent) event with the action `rerequested`. When a check suite is `rerequested`, its `status` is reset to `queued` and the `conclusion` is cleared.
     *
     * To rerequest a check suite, your GitHub App must have the `checks:read` permission on a private repository or pull access to a public repository.
     */
    rerequestSuite: {
      (
        params?: Octokit.RequestOptions & Octokit.ChecksRerequestSuiteParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Changes the default automatic flow when creating check suites. By default, the CheckSuiteEvent is automatically created each time code is pushed to a repository. When you disable the automatic creation of check suites, you can manually [Create a check suite](https://developer.github.com/v3/checks/suites/#create-a-check-suite). You must have admin permissions in the repository to set preferences for check suites.
     */
    setSuitesPreferences: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ChecksSetSuitesPreferencesParams
      ): Promise<Octokit.Response<Octokit.ChecksSetSuitesPreferencesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The Checks API only looks for pushes in the repository where the check suite or check run were created. Pushes to a branch in a forked repository are not detected and return an empty `pull_requests` array.
     *
     * Updates a check run for a specific commit in a repository. Your GitHub App must have the `checks:write` permission to edit check runs.
     */
    update: {
      (params?: Octokit.RequestOptions & Octokit.ChecksUpdateParams): Promise<
        Octokit.Response<Octokit.ChecksUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  codesOfConduct: {
    getConductCode: {
      (
        params?: Octokit.RequestOptions &
          Octokit.CodesOfConductGetConductCodeParams
      ): Promise<
        Octokit.Response<Octokit.CodesOfConductGetConductCodeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This method returns the contents of the repository's code of conduct file, if one is detected.
     */
    getForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.CodesOfConductGetForRepoParams
      ): Promise<Octokit.Response<Octokit.CodesOfConductGetForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listConductCodes: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.CodesOfConductListConductCodesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  emojis: {
    /**
     * Lists all the emojis available to use on GitHub.
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  gists: {
    checkIsStarred: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsCheckIsStarredParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Allows you to add a new gist with one or more files.
     *
     * **Note:** Don't name your files "gistfile" with a numerical suffix. This is the format of the automatic naming scheme that Gist uses internally.
     */
    create: {
      (params?: Octokit.RequestOptions & Octokit.GistsCreateParams): Promise<
        Octokit.Response<Octokit.GistsCreateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    createComment: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsCreateCommentParams
      ): Promise<Octokit.Response<Octokit.GistsCreateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    delete: {
      (params?: Octokit.RequestOptions & Octokit.GistsDeleteParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };

    deleteComment: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsDeleteCommentParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: This was previously `/gists/:gist_id/fork`.
     */
    fork: {
      (params?: Octokit.RequestOptions & Octokit.GistsForkParams): Promise<
        Octokit.Response<Octokit.GistsForkResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    get: {
      (params?: Octokit.RequestOptions & Octokit.GistsGetParams): Promise<
        Octokit.Response<Octokit.GistsGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getComment: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsGetCommentParams
      ): Promise<Octokit.Response<Octokit.GistsGetCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getRevision: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsGetRevisionParams
      ): Promise<Octokit.Response<Octokit.GistsGetRevisionResponse>>;

      endpoint: Octokit.Endpoint;
    };

    list: {
      (params?: Octokit.RequestOptions & Octokit.GistsListParams): Promise<
        Octokit.Response<Octokit.GistsListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listComments: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsListCommentsParams
      ): Promise<Octokit.Response<Octokit.GistsListCommentsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listCommits: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsListCommitsParams
      ): Promise<Octokit.Response<Octokit.GistsListCommitsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listForks: {
      (params?: Octokit.RequestOptions & Octokit.GistsListForksParams): Promise<
        Octokit.Response<Octokit.GistsListForksResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all public gists sorted by most recently updated to least recently updated.
     *
     * Note: With [pagination](https://developer.github.com/v3/#pagination), you can fetch up to 3000 gists. For example, you can fetch 100 pages with 30 gists per page or 30 pages with 100 gists per page.
     */
    listPublic: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsListPublicParams
      ): Promise<Octokit.Response<Octokit.GistsListPublicResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listPublicForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsListPublicForUserParams
      ): Promise<Octokit.Response<Octokit.GistsListPublicForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the authenticated user's starred gists:
     */
    listStarred: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsListStarredParams
      ): Promise<Octokit.Response<Octokit.GistsListStarredResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
     */
    star: {
      (params?: Octokit.RequestOptions & Octokit.GistsStarParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };

    unstar: {
      (params?: Octokit.RequestOptions & Octokit.GistsUnstarParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Allows you to update or delete a gist file and rename gist files. Files from the previous version of the gist that aren't explicitly changed during an edit are unchanged.
     */
    update: {
      (params?: Octokit.RequestOptions & Octokit.GistsUpdateParams): Promise<
        Octokit.Response<Octokit.GistsUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    updateComment: {
      (
        params?: Octokit.RequestOptions & Octokit.GistsUpdateCommentParams
      ): Promise<Octokit.Response<Octokit.GistsUpdateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  git: {
    createBlob: {
      (params?: Octokit.RequestOptions & Octokit.GitCreateBlobParams): Promise<
        Octokit.Response<Octokit.GitCreateBlobResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).
     *
     * In this example, the payload of the signature would be:
     *
     *
     *
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    createCommit: {
      (
        params?: Octokit.RequestOptions & Octokit.GitCreateCommitParams
      ): Promise<Octokit.Response<Octokit.GitCreateCommitResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a reference for your repository. You are unable to create new references for empty repositories, even if the commit SHA-1 hash used exists. Empty repositories are repositories without branches.
     */
    createRef: {
      (params?: Octokit.RequestOptions & Octokit.GitCreateRefParams): Promise<
        Octokit.Response<Octokit.GitCreateRefResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Note that creating a tag object does not create the reference that makes a tag in Git. If you want to create an annotated tag in Git, you have to do this call to create the tag object, and then [create](https://developer.github.com/v3/git/refs/#create-a-reference) the `refs/tags/[tag]` reference. If you want to create a lightweight tag, you only have to [create](https://developer.github.com/v3/git/refs/#create-a-reference) the tag reference - this call would be unnecessary.
     *
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    createTag: {
      (params?: Octokit.RequestOptions & Octokit.GitCreateTagParams): Promise<
        Octokit.Response<Octokit.GitCreateTagResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The tree creation API accepts nested entries. If you specify both a tree and a nested path modifying that tree, this endpoint will overwrite the contents of the tree with the new path contents, and create a new tree structure.
     *
     * If you use this endpoint to add, delete, or modify the file contents in a tree, you will need to commit the tree and then update a branch to point to the commit. For more information see "[Create a commit](https://developer.github.com/v3/git/commits/#create-a-commit)" and "[Update a reference](https://developer.github.com/v3/git/refs/#update-a-reference)."
     */
    createTree: {
      (params?: Octokit.RequestOptions & Octokit.GitCreateTreeParams): Promise<
        Octokit.Response<Octokit.GitCreateTreeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * ```
     * DELETE /repos/octocat/Hello-World/git/refs/heads/feature-a
     * ```
     *
     * ```
     * DELETE /repos/octocat/Hello-World/git/refs/tags/v1.0
     * ```
     */
    deleteRef: {
      (params?: Octokit.RequestOptions & Octokit.GitDeleteRefParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The `content` in the response will always be Base64 encoded.
     *
     * _Note_: This API supports blobs up to 100 megabytes in size.
     */
    getBlob: {
      (params?: Octokit.RequestOptions & Octokit.GitGetBlobParams): Promise<
        Octokit.Response<Octokit.GitGetBlobResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets a Git [commit object](https://git-scm.com/book/en/v1/Git-Internals-Git-Objects#Commit-Objects).
     *
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    getCommit: {
      (params?: Octokit.RequestOptions & Octokit.GitGetCommitParams): Promise<
        Octokit.Response<Octokit.GitGetCommitResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns a single reference from your Git database. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't match an existing ref, a `404` is returned.
     *
     * **Note:** You need to explicitly [request a pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
     *
     * To get the reference for a branch named `skunkworkz/featureA`, the endpoint route is:
     */
    getRef: {
      (params?: Octokit.RequestOptions & Octokit.GitGetRefParams): Promise<
        Octokit.Response<Octokit.GitGetRefResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    getTag: {
      (params?: Octokit.RequestOptions & Octokit.GitGetTagParams): Promise<
        Octokit.Response<Octokit.GitGetTagResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If `truncated` is `true`, the number of items in the `tree` array exceeded our maximum limit. If you need to fetch more items, you can clone the repository and iterate over the Git data locally.
     */
    getTree: {
      (params?: Octokit.RequestOptions & Octokit.GitGetTreeParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns an array of references from your Git database that match the supplied name. The `:ref` in the URL must be formatted as `heads/<branch name>` for branches and `tags/<tag name>` for tags. If the `:ref` doesn't exist in the repository, but existing refs start with `:ref`, they will be returned as an array.
     *
     * When you use this endpoint without providing a `:ref`, it will return an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`.
     *
     * **Note:** You need to explicitly [request a pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) to trigger a test merge commit, which checks the mergeability of pull requests. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
     *
     * If you request matching references for a branch named `feature` but the branch `feature` doesn't exist, the response can still include other matching head refs that start with the word `feature`, such as `featureA` and `featureB`.
     */
    listMatchingRefs: {
      (
        params?: Octokit.RequestOptions & Octokit.GitListMatchingRefsParams
      ): Promise<Octokit.Response<Octokit.GitListMatchingRefsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns an array of all the references from your Git database, including notes and stashes if they exist on the server. Anything in the namespace is returned, not just `heads` and `tags`. If there are no references to list, a `404` is returned.
     */
    listRefs: {
      (params?: Octokit.RequestOptions & Octokit.GitListRefsParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };

    updateRef: {
      (params?: Octokit.RequestOptions & Octokit.GitUpdateRefParams): Promise<
        Octokit.Response<Octokit.GitUpdateRefResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  gitignore: {
    /**
     * The API also allows fetching the source of a single template.
     *
     * Use the raw [media type](https://developer.github.com/v3/media/) to get the raw contents.
     */
    getTemplate: {
      (
        params?: Octokit.RequestOptions & Octokit.GitignoreGetTemplateParams
      ): Promise<Octokit.Response<Octokit.GitignoreGetTemplateResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all templates available to pass as an option when [creating a repository](https://developer.github.com/v3/repos/#create).
     */
    listTemplates: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.GitignoreListTemplatesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  interactions: {
    /**
     * Temporarily restricts interactions to certain GitHub users in any public repository in the given organization. You must be an organization owner to set these restrictions.
     */
    addOrUpdateRestrictionsForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsAddOrUpdateRestrictionsForOrgParams
      ): Promise<
        Octokit.Response<
          Octokit.InteractionsAddOrUpdateRestrictionsForOrgResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Temporarily restricts interactions to certain GitHub users within the given repository. You must have owner or admin access to set restrictions.
     */
    addOrUpdateRestrictionsForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsAddOrUpdateRestrictionsForRepoParams
      ): Promise<
        Octokit.Response<
          Octokit.InteractionsAddOrUpdateRestrictionsForRepoResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Shows which group of GitHub users can interact with this organization and when the restriction expires. If there are no restrictions, you will see an empty response.
     */
    getRestrictionsForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsGetRestrictionsForOrgParams
      ): Promise<
        Octokit.Response<Octokit.InteractionsGetRestrictionsForOrgResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Shows which group of GitHub users can interact with this repository and when the restriction expires. If there are no restrictions, you will see an empty response.
     */
    getRestrictionsForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsGetRestrictionsForRepoParams
      ): Promise<
        Octokit.Response<Octokit.InteractionsGetRestrictionsForRepoResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes all interaction restrictions from public repositories in the given organization. You must be an organization owner to remove restrictions.
     */
    removeRestrictionsForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsRemoveRestrictionsForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes all interaction restrictions from the given repository. You must have owner or admin access to remove restrictions.
     */
    removeRestrictionsForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.InteractionsRemoveRestrictionsForRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
  };
  issues: {
    /**
     * Adds up to 10 assignees to an issue. Users already assigned to an issue are not replaced.
     *
     * This example adds two assignees to the existing `octocat` assignee.
     */
    addAssignees: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesAddAssigneesParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesAddAssigneesResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesAddAssigneesParams
      ): Promise<Octokit.Response<Octokit.IssuesAddAssigneesResponse>>;

      endpoint: Octokit.Endpoint;
    };

    addLabels: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesAddLabelsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesAddLabelsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesAddLabelsParams
      ): Promise<Octokit.Response<Octokit.IssuesAddLabelsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Checks if a user has permission to be assigned to an issue in this repository.
     *
     * If the `assignee` can be assigned to issues in the repository, a `204` header with no content is returned.
     *
     * Otherwise a `404` status code is returned.
     */
    checkAssignee: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesCheckAssigneeParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Any user with pull access to a repository can create an issue. If [issues are disabled in the repository](https://help.github.com/articles/disabling-issues/), the API returns a `410 Gone` status.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    create: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesCreateParamsDeprecatedAssignee
      ): Promise<Octokit.Response<Octokit.IssuesCreateResponse>>;
      (params?: Octokit.RequestOptions & Octokit.IssuesCreateParams): Promise<
        Octokit.Response<Octokit.IssuesCreateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesCreateCommentParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesCreateCommentResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesCreateCommentParams
      ): Promise<Octokit.Response<Octokit.IssuesCreateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    createLabel: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesCreateLabelParams
      ): Promise<Octokit.Response<Octokit.IssuesCreateLabelResponse>>;

      endpoint: Octokit.Endpoint;
    };

    createMilestone: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesCreateMilestoneParams
      ): Promise<Octokit.Response<Octokit.IssuesCreateMilestoneResponse>>;

      endpoint: Octokit.Endpoint;
    };

    deleteComment: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesDeleteCommentParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteLabel: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesDeleteLabelParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteMilestone: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesDeleteMilestoneParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesDeleteMilestoneParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The API returns a [`301 Moved Permanently` status](https://developer.github.com/v3/#http-redirects) if the issue was [transferred](https://help.github.com/articles/transferring-an-issue-to-another-repository/) to another repository. If the issue was transferred to or deleted from a repository where the authenticated user lacks read access, the API returns a `404 Not Found` status. If the issue was deleted from a repository where the authenticated user has read access, the API returns a `410 Gone` status. To receive webhook events for transferred and deleted issues, subscribe to the [`issues`](https://developer.github.com/v3/activity/events/types/#issuesevent) webhook.
     *
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    get: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesGetParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesGetResponse>>;
      (params?: Octokit.RequestOptions & Octokit.IssuesGetParams): Promise<
        Octokit.Response<Octokit.IssuesGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getComment: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesGetCommentParams
      ): Promise<Octokit.Response<Octokit.IssuesGetCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getEvent: {
      (params?: Octokit.RequestOptions & Octokit.IssuesGetEventParams): Promise<
        Octokit.Response<Octokit.IssuesGetEventResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getLabel: {
      (params?: Octokit.RequestOptions & Octokit.IssuesGetLabelParams): Promise<
        Octokit.Response<Octokit.IssuesGetLabelResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getMilestone: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesGetMilestoneParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesGetMilestoneResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesGetMilestoneParams
      ): Promise<Octokit.Response<Octokit.IssuesGetMilestoneResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.IssuesListParams): Promise<
        Octokit.Response<Octokit.IssuesListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the [available assignees](https://help.github.com/articles/assigning-issues-and-pull-requests-to-other-github-users/) for issues in a repository.
     */
    listAssignees: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListAssigneesParams
      ): Promise<Octokit.Response<Octokit.IssuesListAssigneesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Issue Comments are ordered by ascending ID.
     */
    listComments: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListCommentsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesListCommentsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListCommentsParams
      ): Promise<Octokit.Response<Octokit.IssuesListCommentsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * By default, Issue Comments are ordered by ascending ID.
     */
    listCommentsForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListCommentsForRepoParams
      ): Promise<Octokit.Response<Octokit.IssuesListCommentsForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listEvents: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListEventsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesListEventsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListEventsParams
      ): Promise<Octokit.Response<Octokit.IssuesListEventsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listEventsForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListEventsForRepoParams
      ): Promise<Octokit.Response<Octokit.IssuesListEventsForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listEventsForTimeline: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListEventsForTimelineParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesListEventsForTimelineResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListEventsForTimelineParams
      ): Promise<Octokit.Response<Octokit.IssuesListEventsForTimelineResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    listForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.IssuesListForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    listForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListForOrgParams
      ): Promise<Octokit.Response<Octokit.IssuesListForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    listForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListForRepoParams
      ): Promise<Octokit.Response<Octokit.IssuesListForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listLabelsForMilestone: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListLabelsForMilestoneParamsDeprecatedNumber
      ): Promise<
        Octokit.Response<Octokit.IssuesListLabelsForMilestoneResponse>
      >;
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListLabelsForMilestoneParams
      ): Promise<
        Octokit.Response<Octokit.IssuesListLabelsForMilestoneResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listLabelsForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListLabelsForRepoParams
      ): Promise<Octokit.Response<Octokit.IssuesListLabelsForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listLabelsOnIssue: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListLabelsOnIssueParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesListLabelsOnIssueResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesListLabelsOnIssueParams
      ): Promise<Octokit.Response<Octokit.IssuesListLabelsOnIssueResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listMilestonesForRepo: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesListMilestonesForRepoParams
      ): Promise<Octokit.Response<Octokit.IssuesListMilestonesForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access can lock an issue or pull request's conversation.
     *
     * 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 verbs](https://developer.github.com/v3/#http-verbs)."
     */
    lock: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesLockParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (params?: Octokit.RequestOptions & Octokit.IssuesLockParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes one or more assignees from an issue.
     *
     * This example removes two of three assignees, leaving the `octocat` assignee.
     */
    removeAssignees: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesRemoveAssigneesParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesRemoveAssigneesResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesRemoveAssigneesParams
      ): Promise<Octokit.Response<Octokit.IssuesRemoveAssigneesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes the specified label from the issue, and returns the remaining labels on the issue. This endpoint returns a `404 Not Found` status if the label does not exist.
     */
    removeLabel: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesRemoveLabelParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesRemoveLabelResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesRemoveLabelParams
      ): Promise<Octokit.Response<Octokit.IssuesRemoveLabelResponse>>;

      endpoint: Octokit.Endpoint;
    };

    removeLabels: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesRemoveLabelsParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesRemoveLabelsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    replaceLabels: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesReplaceLabelsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesReplaceLabelsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesReplaceLabelsParams
      ): Promise<Octokit.Response<Octokit.IssuesReplaceLabelsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access can unlock an issue's conversation.
     */
    unlock: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesUnlockParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (params?: Octokit.RequestOptions & Octokit.IssuesUnlockParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Issue owners and users with push access can edit an issue.
     */
    update: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesUpdateParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesUpdateResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesUpdateParamsDeprecatedAssignee
      ): Promise<Octokit.Response<Octokit.IssuesUpdateResponse>>;
      (params?: Octokit.RequestOptions & Octokit.IssuesUpdateParams): Promise<
        Octokit.Response<Octokit.IssuesUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    updateComment: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesUpdateCommentParams
      ): Promise<Octokit.Response<Octokit.IssuesUpdateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateLabel: {
      (
        params?: Octokit.RequestOptions & Octokit.IssuesUpdateLabelParams
      ): Promise<Octokit.Response<Octokit.IssuesUpdateLabelResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateMilestone: {
      (
        params?: Octokit.RequestOptions &
          Octokit.IssuesUpdateMilestoneParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.IssuesUpdateMilestoneResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.IssuesUpdateMilestoneParams
      ): Promise<Octokit.Response<Octokit.IssuesUpdateMilestoneResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  licenses: {
    get: {
      (params?: Octokit.RequestOptions & Octokit.LicensesGetParams): Promise<
        Octokit.Response<Octokit.LicensesGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This method returns the contents of the repository's license file, if one is detected.
     *
     * Similar to [the repository contents API](https://developer.github.com/v3/repos/contents/#get-contents), this method also supports [custom media types](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw license content or rendered license HTML.
     */
    getForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.LicensesGetForRepoParams
      ): Promise<Octokit.Response<Octokit.LicensesGetForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * @deprecated octokit.licenses.list() has been renamed to octokit.licenses.listCommonlyUsed() (2019-03-05)
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.LicensesListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listCommonlyUsed: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.LicensesListCommonlyUsedResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  markdown: {
    render: {
      (params?: Octokit.RequestOptions & Octokit.MarkdownRenderParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You must send Markdown as plain text (using a `Content-Type` header of `text/plain` or `text/x-markdown`) to this endpoint, rather than using JSON format. In raw mode, [GitHub Flavored Markdown](https://github.github.com/gfm/) is not supported and Markdown will be rendered in plain format like a README.md file. Markdown content must be 400 KB or less.
     */
    renderRaw: {
      (
        params?: Octokit.RequestOptions & Octokit.MarkdownRenderRawParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
  };
  meta: {
    /**
     * This endpoint provides a list of GitHub's IP addresses. For more information, see "[About GitHub's IP addresses](https://help.github.com/articles/about-github-s-ip-addresses/)."
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.MetaGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  migrations: {
    /**
     * Stop an import for a repository.
     */
    cancelImport: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsCancelImportParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a previous migration archive. Downloadable migration archives are automatically deleted after seven days. Migration metadata, which is returned in the [Get a list of user migrations](https://developer.github.com/v3/migrations/users/#get-a-list-of-user-migrations) and [Get the status of a user migration](https://developer.github.com/v3/migrations/users/#get-the-status-of-a-user-migration) endpoints, will continue to be available even after an archive is deleted.
     */
    deleteArchiveForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsDeleteArchiveForAuthenticatedUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a previous migration archive. Migration archives are automatically deleted after seven days.
     */
    deleteArchiveForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsDeleteArchiveForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Fetches the URL to download the migration archive as a `tar.gz` file. Depending on the resources your repository uses, the migration archive can contain JSON files with data for these objects:
     *
     * *   attachments
     * *   bases
     * *   commit\_comments
     * *   issue\_comments
     * *   issue\_events
     * *   issues
     * *   milestones
     * *   organizations
     * *   projects
     * *   protected\_branches
     * *   pull\_request\_reviews
     * *   pull\_requests
     * *   releases
     * *   repositories
     * *   review\_comments
     * *   schema
     * *   users
     *
     * The archive will also contain an `attachments` directory that includes all attachment files uploaded to GitHub.com and a `repositories` directory that contains the repository's Git data.
     */
    getArchiveForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetArchiveForAuthenticatedUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Fetches the URL to a migration archive.
     */
    getArchiveForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetArchiveForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Each type of source control system represents authors in a different way. For example, a Git commit author has a display name and an email address, but a Subversion commit author just has a username. The GitHub Importer will make the author information valid, but the author might not be correct. For example, it will change the bare Subversion username `hubot` into something like `hubot <hubot@12341234-abab-fefe-8787-fedcba987654>`.
     *
     * This API method and the "Map a commit author" method allow you to provide correct Git author information.
     */
    getCommitAuthors: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetCommitAuthorsParams
      ): Promise<Octokit.Response<Octokit.MigrationsGetCommitAuthorsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * View the progress of an import.
     *
     * **Import status**
     *
     * This section includes details about the possible values of the `status` field of the Import Progress response.
     *
     * An import that does not have errors will progress through these steps:
     *
     * *   `detecting` - the "detection" step of the import is in progress because the request did not include a `vcs` parameter. The import is identifying the type of source control present at the URL.
     * *   `importing` - the "raw" step of the import is in progress. This is where commit data is fetched from the original repository. The import progress response will include `commit_count` (the total number of raw commits that will be imported) and `percent` (0 - 100, the current progress through the import).
     * *   `mapping` - the "rewrite" step of the import is in progress. This is where SVN branches are converted to Git branches, and where author updates are applied. The import progress response does not include progress information.
     * *   `pushing` - the "push" step of the import is in progress. This is where the importer updates the repository on GitHub. The import progress response will include `push_percent`, which is the percent value reported by `git push` when it is "Writing objects".
     * *   `complete` - the import is complete, and the repository is ready on GitHub.
     *
     * If there are problems, you will see one of these in the `status` field:
     *
     * *   `auth_failed` - the import requires authentication in order to connect to the original repository. To update authentication for the import, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
     * *   `error` - the import encountered an error. The import progress response will include the `failed_step` and an error message. Contact [GitHub Support](https://github.com/contact) for more information.
     * *   `detection_needs_auth` - the importer requires authentication for the originating repository to continue detection. To update authentication for the import, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
     * *   `detection_found_nothing` - the importer didn't recognize any source control at the URL. To resolve, [Cancel the import](https://developer.github.com/v3/migrations/source_imports/#cancel-an-import) and [retry](https://developer.github.com/v3/migrations/source_imports/#start-an-import) with the correct URL.
     * *   `detection_found_multiple` - the importer found several projects or repositories at the provided URL. When this is the case, the Import Progress response will also include a `project_choices` field with the possible project choices as values. To update project choice, please see the [Update Existing Import](https://developer.github.com/v3/migrations/source_imports/#update-existing-import) section.
     *
     * **The project_choices field**
     *
     * When multiple projects are found at the provided URL, the response hash will include a `project_choices` field, the value of which is an array of hashes each representing a project choice. The exact key/value pairs of the project hashes will differ depending on the version control type.
     *
     * **Git LFS related fields**
     *
     * This section includes details about Git LFS related fields that may be present in the Import Progress response.
     *
     * *   `use_lfs` - describes whether the import has been opted in or out of using Git LFS. The value can be `opt_in`, `opt_out`, or `undecided` if no action has been taken.
     * *   `has_large_files` - the boolean value describing whether files larger than 100MB were found during the `importing` step.
     * *   `large_files_size` - the total size in gigabytes of files larger than 100MB found in the originating repository.
     * *   `large_files_count` - the total number of files larger than 100MB found in the originating repository. To see a list of these files, make a "Get Large Files" request.
     */
    getImportProgress: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetImportProgressParams
      ): Promise<Octokit.Response<Octokit.MigrationsGetImportProgressResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List files larger than 100MB found during the import
     */
    getLargeFiles: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsGetLargeFilesParams
      ): Promise<Octokit.Response<Octokit.MigrationsGetLargeFilesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Fetches a single user migration. The response includes the `state` of the migration, which can be one of the following values:
     *
     * *   `pending` - the migration hasn't started yet.
     * *   `exporting` - the migration is in progress.
     * *   `exported` - the migration finished successfully.
     * *   `failed` - the migration failed.
     *
     * Once the migration has been `exported` you can [download the migration archive](https://developer.github.com/v3/migrations/users/#download-a-user-migration-archive).
     */
    getStatusForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetStatusForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.MigrationsGetStatusForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Fetches the status of a migration.
     *
     * The `state` of a migration can be one of the following values:
     *
     * *   `pending`, which means the migration hasn't started yet.
     * *   `exporting`, which means the migration is in progress.
     * *   `exported`, which means the migration finished successfully.
     * *   `failed`, which means the migration failed.
     */
    getStatusForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsGetStatusForOrgParams
      ): Promise<Octokit.Response<Octokit.MigrationsGetStatusForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all migrations a user has started.
     */
    listForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsListForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.MigrationsListForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the most recent migrations.
     */
    listForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsListForOrgParams
      ): Promise<Octokit.Response<Octokit.MigrationsListForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Update an author's identity for the import. Your application can continue updating authors any time before you push new commits to the repository.
     */
    mapCommitAuthor: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsMapCommitAuthorParams
      ): Promise<Octokit.Response<Octokit.MigrationsMapCommitAuthorResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can import repositories from Subversion, Mercurial, and TFS that include files larger than 100MB. This ability is powered by [Git LFS](https://git-lfs.github.com). You can learn more about our LFS feature and working with large files [on our help site](https://help.github.com/articles/versioning-large-files/).
     */
    setLfsPreference: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsSetLfsPreferenceParams
      ): Promise<Octokit.Response<Octokit.MigrationsSetLfsPreferenceResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Initiates the generation of a user migration archive.
     */
    startForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsStartForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.MigrationsStartForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Initiates the generation of a migration archive.
     */
    startForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsStartForOrgParams
      ): Promise<Octokit.Response<Octokit.MigrationsStartForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Start a source import to a GitHub repository using GitHub Importer.
     */
    startImport: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsStartImportParams
      ): Promise<Octokit.Response<Octokit.MigrationsStartImportResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Unlocks a repository. You can lock repositories when you [start a user migration](https://developer.github.com/v3/migrations/users/#start-a-user-migration). Once the migration is complete you can unlock each repository to begin using it again or [delete the repository](https://developer.github.com/v3/repos/#delete-a-repository) if you no longer need the source data. Returns a status of `404 Not Found` if the repository is not locked.
     */
    unlockRepoForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsUnlockRepoForAuthenticatedUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Unlocks a repository that was locked for migration. You should unlock each migrated repository and [delete them](https://developer.github.com/v3/repos/#delete-a-repository) when the migration is complete and you no longer need the source data.
     */
    unlockRepoForOrg: {
      (
        params?: Octokit.RequestOptions &
          Octokit.MigrationsUnlockRepoForOrgParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * An import can be updated with credentials or a project choice by passing in the appropriate parameters in this API request. If no parameters are provided, the import will be restarted.
     *
     * Some servers (e.g. TFS servers) can have several projects at a single URL. In those cases the import progress will have the status `detection_found_multiple` and the Import Progress response will include a `project_choices` array. You can select the project to import by providing one of the objects in the `project_choices` array in the update request.
     *
     * The following example demonstrates the workflow for updating an import with "project1" as the project choice. Given a `project_choices` array like such:
     *
     * To restart an import, no parameters are provided in the update request.
     */
    updateImport: {
      (
        params?: Octokit.RequestOptions & Octokit.MigrationsUpdateImportParams
      ): Promise<Octokit.Response<Octokit.MigrationsUpdateImportResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  oauthAuthorizations: {
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth applications can use a special API method for checking OAuth token validity without exceeding the normal rate limits for failed login attempts. Authentication works differently with this particular endpoint. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
     * @deprecated octokit.apps.checkAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#check-an-authorization
     */
    checkAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsCheckAuthorizationParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsCheckAuthorizationResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * Creates OAuth tokens using [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication). If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
     *
     * To create tokens for a particular OAuth application using this endpoint, you must authenticate as the user you want to create an authorization for and provide the app's client ID and secret, found on your OAuth application's settings page. If your OAuth application intends to create multiple tokens for one user, use `fingerprint` to differentiate between them.
     *
     * You can also create tokens on GitHub from the [personal access tokens settings](https://github.com/settings/tokens) page. Read more about these tokens in [the GitHub Help documentation](https://help.github.com/articles/creating-an-access-token-for-command-line-use).
     *
     * Organizations that enforce SAML SSO require personal access tokens to be whitelisted. Read more about whitelisting tokens in [the GitHub Help documentation](https://help.github.com/articles/about-identity-and-access-management-with-saml-single-sign-on).
     * @deprecated octokit.oauthAuthorizations.createAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#create-a-new-authorization
     */
    createAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsCreateAuthorizationParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsCreateAuthorizationResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     * @deprecated octokit.oauthAuthorizations.deleteAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-an-authorization
     */
    deleteAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsDeleteAuthorizationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for your user. Once deleted, the application has no access to your account and is no longer listed on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized).
     * @deprecated octokit.oauthAuthorizations.deleteGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#delete-a-grant
     */
    deleteGrant: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsDeleteGrantParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     * @deprecated octokit.oauthAuthorizations.getAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-authorization
     */
    getAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsGetAuthorizationParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsGetAuthorizationResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     * @deprecated octokit.oauthAuthorizations.getGrant() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-a-single-grant
     */
    getGrant: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsGetGrantParams
      ): Promise<Octokit.Response<Octokit.OauthAuthorizationsGetGrantResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * Creates a new authorization for the specified OAuth application, only if an authorization for that application doesn't already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
     *
     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
     *
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForApp() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app
     */
    getOrCreateAuthorizationForApp: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppParams
      ): Promise<
        Octokit.Response<
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
     *
     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForAppAndFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
     */
    getOrCreateAuthorizationForAppAndFingerprint: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintParams
      ): Promise<
        Octokit.Response<
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppAndFingerprintResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * **Warning:** Apps must use the [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow) to obtain OAuth tokens that work with GitHub SAML organizations. OAuth tokens created using the Authorizations API will be unable to access GitHub SAML organizations. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * This method will create a new authorization for the specified OAuth application, only if an authorization for that application and fingerprint do not already exist for the user. The URL includes the 20 character client ID for the OAuth app that is requesting the token. `fingerprint` is a unique string to distinguish an authorization from others created for the same client ID and user. It returns the user's existing authorization for the application if one is present. Otherwise, it creates and returns a new one.
     *
     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
     * @deprecated octokit.oauthAuthorizations.getOrCreateAuthorizationForAppFingerprint() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#get-or-create-an-authorization-for-a-specific-app-and-fingerprint
     */
    getOrCreateAuthorizationForAppFingerprint: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintParams
      ): Promise<
        Octokit.Response<
          Octokit.OauthAuthorizationsGetOrCreateAuthorizationForAppFingerprintResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     * @deprecated octokit.oauthAuthorizations.listAuthorizations() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations
     */
    listAuthorizations: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsListAuthorizationsParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsListAuthorizationsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * You can use this API to list the set of OAuth applications that have been granted access to your account. Unlike the [list your authorizations](https://developer.github.com/v3/oauth_authorizations/#list-your-authorizations) API, this API does not manage individual tokens. This API will return one entry for each OAuth application that has been granted access to your account, regardless of the number of tokens an application has generated for your user. The list of OAuth applications returned matches what is shown on [the application authorizations settings screen within GitHub](https://github.com/settings/applications#authorized). The `scopes` returned are the union of scopes authorized for the application. For example, if an application has one token with `repo` scope and another token with `user` scope, the grant will return `["repo", "user"]`.
     * @deprecated octokit.oauthAuthorizations.listGrants() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#list-your-grants
     */
    listGrants: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsListGrantsParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsListGrantsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth applications can use this API method to reset a valid OAuth token without end-user involvement. Applications must save the "token" property in the response because changes take effect immediately. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. Invalid tokens will return `404 NOT FOUND`.
     * @deprecated octokit.apps.resetAuthorization() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#reset-an-authorization
     */
    resetAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsResetAuthorizationParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsResetAuthorizationResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth application owners can revoke a single token for an OAuth application. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password.
     * @deprecated octokit.apps.revokeAuthorizationForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-an-authorization-for-an-application
     */
    revokeAuthorizationForApplication: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsRevokeAuthorizationForApplicationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will replace and discontinue OAuth endpoints containing `access_token` in the path parameter. We are introducing new endpoints that allow you to securely manage tokens for OAuth Apps by using `access_token` as an input parameter. For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * OAuth application owners can revoke a grant for their OAuth application and a specific user. You must use [Basic Authentication](https://developer.github.com/v3/auth#basic-authentication) when accessing this endpoint, using the OAuth application's `client_id` and `client_secret` as the username and password. You must also provide a valid token as `:access_token` and the grant for the token's owner will be deleted.
     *
     * Deleting an OAuth application's grant will also delete all OAuth tokens associated with the application for the user. Once deleted, the application will have no access to the user's account and will no longer be listed on [the Applications settings page under "Authorized OAuth Apps" on GitHub](https://github.com/settings/applications#authorized).
     * @deprecated octokit.apps.revokeGrantForApplication() is deprecated, see https://developer.github.com/v3/apps/oauth_applications/#revoke-a-grant-for-an-application
     */
    revokeGrantForApplication: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsRevokeGrantForApplicationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Deprecation Notice:** GitHub will discontinue the [OAuth Authorizations API](https://developer.github.com/v3/oauth_authorizations/), which is used by integrations to create personal access tokens and OAuth tokens, and you must now create these tokens using our [web application flow](https://developer.github.com/apps/building-oauth-apps/authorizing-oauth-apps/#web-application-flow). For more information, see the [blog post](https://developer.github.com/changes/2019-11-05-deprecated-passwords-and-authorizations-api).
     *
     * If you have two-factor authentication setup, Basic Authentication for this endpoint requires that you use a one-time password (OTP) and your username and password instead of tokens. For more information, see "[Working with two-factor authentication](https://developer.github.com/v3/auth/#working-with-two-factor-authentication)."
     *
     * You can only send one of these scope keys at a time.
     * @deprecated octokit.oauthAuthorizations.updateAuthorization() is deprecated, see https://developer.github.com/v3/oauth_authorizations/#update-an-existing-authorization
     */
    updateAuthorization: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OauthAuthorizationsUpdateAuthorizationParams
      ): Promise<
        Octokit.Response<Octokit.OauthAuthorizationsUpdateAuthorizationResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  orgs: {
    /**
     * 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://developer.github.com/v3/orgs/members/#get-organization-membership) 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, the authenticated user is limited to 50 organization invitations per 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.
     */
    addOrUpdateMembership: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsAddOrUpdateMembershipParams
      ): Promise<Octokit.Response<Octokit.OrgsAddOrUpdateMembershipResponse>>;

      endpoint: Octokit.Endpoint;
    };

    blockUser: {
      (params?: Octokit.RequestOptions & Octokit.OrgsBlockUserParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If the user is blocked:
     *
     * If the user is not blocked:
     */
    checkBlockedUser: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsCheckBlockedUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Check if a user is, publicly or privately, a member of the organization.
     */
    checkMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsCheckMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    checkPublicMembership: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsCheckPublicMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    concealMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsConcealMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * When an organization member is converted to an outside collaborator, they'll only have access to the repositories that their current team membership allows. The user will no longer be a member of the organization. For more information, see "[Converting an organization member to an outside collaborator](https://help.github.com/articles/converting-an-organization-member-to-an-outside-collaborator/)".
     */
    convertMemberToOutsideCollaborator: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsConvertMemberToOutsideCollaboratorParams
      ): Promise<
        Octokit.Response<Octokit.OrgsConvertMemberToOutsideCollaboratorResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Here's how you can create a hook that posts payloads in JSON format:
     */
    createHook: {
      (params?: Octokit.RequestOptions & Octokit.OrgsCreateHookParams): Promise<
        Octokit.Response<Octokit.OrgsCreateHookResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Invite people to an organization by using their GitHub user ID or their email address. In order to create invitations in an organization, the authenticated user must be an organization owner.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createInvitation: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsCreateInvitationParams
      ): Promise<Octokit.Response<Octokit.OrgsCreateInvitationResponse>>;

      endpoint: Octokit.Endpoint;
    };

    deleteHook: {
      (params?: Octokit.RequestOptions & Octokit.OrgsDeleteHookParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * To see many of the organization response values, you need to be an authenticated organization owner with the `admin:org` scope. When the value of `two_factor_requirement_enabled` is `true`, the organization requires all members, billing managers, and outside collaborators to enable [two-factor authentication](https://help.github.com/articles/securing-your-account-with-two-factor-authentication-2fa/).
     *
     * GitHub Apps with the `Organization plan` permission can use this endpoint to retrieve information about an organization's GitHub plan. See "[Authenticating with GitHub Apps](https://developer.github.com/apps/building-github-apps/authenticating-with-github-apps/)" for details. For an example response, see "[Response with GitHub plan information](https://developer.github.com/v3/orgs/#response-with-github-plan-information)."
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.OrgsGetParams): Promise<
        Octokit.Response<Octokit.OrgsGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getHook: {
      (params?: Octokit.RequestOptions & Octokit.OrgsGetHookParams): Promise<
        Octokit.Response<Octokit.OrgsGetHookResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * In order to get a user's membership with an organization, the authenticated user must be an organization member.
     */
    getMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsGetMembershipParams
      ): Promise<Octokit.Response<Octokit.OrgsGetMembershipResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getMembershipForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsGetMembershipForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.OrgsGetMembershipForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all organizations, in the order that they were created on GitHub.
     *
     * **Note:** Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of organizations.
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.OrgsListParams): Promise<
        Octokit.Response<Octokit.OrgsListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the users blocked by an organization.
     */
    listBlockedUsers: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListBlockedUsersParams
      ): Promise<Octokit.Response<Octokit.OrgsListBlockedUsersResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List organizations for the authenticated user.
     *
     * **OAuth scope requirements**
     *
     * This only lists organizations that your authorization allows you to operate on in some way (e.g., you can list teams with `read:org` scope, you can publicize your organization membership with `user` scope, etc.). Therefore, this API requires at least `user` or `read:org` scope. OAuth requests with insufficient scope receive a `403 Forbidden` response.
     */
    listForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsListForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.OrgsListForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List [public organization memberships](https://help.github.com/articles/publicizing-or-concealing-organization-membership) for the specified user.
     *
     * This method only lists _public_ memberships, regardless of authentication. If you need to fetch all of the organization memberships (public and private) for the authenticated user, use the [List your organizations](https://developer.github.com/v3/orgs/#list-your-organizations) API instead.
     */
    listForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListForUserParams
      ): Promise<Octokit.Response<Octokit.OrgsListForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listHooks: {
      (params?: Octokit.RequestOptions & Octokit.OrgsListHooksParams): Promise<
        Octokit.Response<Octokit.OrgsListHooksResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all GitHub Apps in an organization. The installation count includes all GitHub Apps installed on repositories in the organization. You must be an organization owner with `admin:read` scope to use this endpoint.
     */
    listInstallations: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListInstallationsParams
      ): Promise<Octokit.Response<Octokit.OrgsListInstallationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all teams associated with an invitation. In order to see invitations in an organization, the authenticated user must be an organization owner.
     */
    listInvitationTeams: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListInvitationTeamsParams
      ): Promise<Octokit.Response<Octokit.OrgsListInvitationTeamsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all users who are members of an organization. If the authenticated user is also a member of this organization then both concealed and public members will be returned.
     */
    listMembers: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListMembersParams
      ): Promise<Octokit.Response<Octokit.OrgsListMembersResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listMemberships: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListMembershipsParams
      ): Promise<Octokit.Response<Octokit.OrgsListMembershipsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all users who are outside collaborators of an organization.
     */
    listOutsideCollaborators: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsListOutsideCollaboratorsParams
      ): Promise<
        Octokit.Response<Octokit.OrgsListOutsideCollaboratorsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
     */
    listPendingInvitations: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsListPendingInvitationsParams
      ): Promise<Octokit.Response<Octokit.OrgsListPendingInvitationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Members of an organization can choose to have their membership publicized or not.
     */
    listPublicMembers: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsListPublicMembersParams
      ): Promise<Octokit.Response<Octokit.OrgsListPublicMembersResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This will trigger a [ping event](https://developer.github.com/webhooks/#ping-event) to be sent to the hook.
     */
    pingHook: {
      (params?: Octokit.RequestOptions & Octokit.OrgsPingHookParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The user can publicize their own membership. (A user cannot publicize the membership for another user.)
     *
     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
     */
    publicizeMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsPublicizeMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removing a user from this list will remove them from all teams and they will no longer have any access to the organization's repositories.
     */
    removeMember: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsRemoveMemberParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * 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.
     */
    removeMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsRemoveMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removing a user from this list will remove them from all the organization's repositories.
     */
    removeOutsideCollaborator: {
      (
        params?: Octokit.RequestOptions &
          Octokit.OrgsRemoveOutsideCollaboratorParams
      ): Promise<
        Octokit.Response<Octokit.OrgsRemoveOutsideCollaboratorResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    unblockUser: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsUnblockUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The new `members_allowed_repository_creation_type` replaces the functionality of `members_can_create_repositories`.
     *
     * Setting `members_allowed_repository_creation_type` will override the value of `members_can_create_repositories` in the following ways:
     *
     * *   Setting `members_allowed_repository_creation_type` to `all` or `private` sets `members_can_create_repositories` to `true`.
     * *   Setting `members_allowed_repository_creation_type` to `none` sets `members_can_create_repositories` to `false`.
     * *   If you omit `members_allowed_repository_creation_type`, `members_can_create_repositories` is not modified.
     */
    update: {
      (params?: Octokit.RequestOptions & Octokit.OrgsUpdateParams): Promise<
        Octokit.Response<Octokit.OrgsUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    updateHook: {
      (params?: Octokit.RequestOptions & Octokit.OrgsUpdateHookParams): Promise<
        Octokit.Response<Octokit.OrgsUpdateHookResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    updateMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.OrgsUpdateMembershipParams
      ): Promise<Octokit.Response<Octokit.OrgsUpdateMembershipResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  projects: {
    /**
     * Adds a collaborator to a an organization project and sets their permission level. You must be an organization owner or a project `admin` to add a collaborator.
     */
    addCollaborator: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsAddCollaboratorParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: GitHub's REST API v3 considers every pull request an issue, but not every issue is a pull request. For this reason, "Issues" endpoints may return both issues and pull requests in the response. You can identify pull requests by the `pull_request` key.
     *
     * Be aware that the `id` of a pull request returned from "Issues" endpoints will be an _issue id_. To find out the pull request id, use the "[List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests)" endpoint.
     */
    createCard: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsCreateCardParams
      ): Promise<Octokit.Response<Octokit.ProjectsCreateCardResponse>>;

      endpoint: Octokit.Endpoint;
    };

    createColumn: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsCreateColumnParams
      ): Promise<Octokit.Response<Octokit.ProjectsCreateColumnResponse>>;

      endpoint: Octokit.Endpoint;
    };

    createForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ProjectsCreateForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.ProjectsCreateForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates an organization project board. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     */
    createForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsCreateForOrgParams
      ): Promise<Octokit.Response<Octokit.ProjectsCreateForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a repository project board. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     */
    createForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsCreateForRepoParams
      ): Promise<Octokit.Response<Octokit.ProjectsCreateForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a project board. Returns a `404 Not Found` status if projects are disabled.
     */
    delete: {
      (params?: Octokit.RequestOptions & Octokit.ProjectsDeleteParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };

    deleteCard: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsDeleteCardParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteColumn: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsDeleteColumnParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets a project by its `id`. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.ProjectsGetParams): Promise<
        Octokit.Response<Octokit.ProjectsGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getCard: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsGetCardParams
      ): Promise<Octokit.Response<Octokit.ProjectsGetCardResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getColumn: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsGetColumnParams
      ): Promise<Octokit.Response<Octokit.ProjectsGetColumnResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listCards: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsListCardsParams
      ): Promise<Octokit.Response<Octokit.ProjectsListCardsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the collaborators for an organization project. For a project, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners. You must be an organization owner or a project `admin` to list collaborators.
     */
    listCollaborators: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ProjectsListCollaboratorsParams
      ): Promise<Octokit.Response<Octokit.ProjectsListCollaboratorsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listColumns: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsListColumnsParams
      ): Promise<Octokit.Response<Octokit.ProjectsListColumnsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the projects in an organization. Returns a `404 Not Found` status if projects are disabled in the organization. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     *
     * s
     */
    listForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsListForOrgParams
      ): Promise<Octokit.Response<Octokit.ProjectsListForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the projects in a repository. Returns a `404 Not Found` status if projects are disabled in the repository. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     */
    listForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsListForRepoParams
      ): Promise<Octokit.Response<Octokit.ProjectsListForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsListForUserParams
      ): Promise<Octokit.Response<Octokit.ProjectsListForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };

    moveCard: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsMoveCardParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    moveColumn: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsMoveColumnParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes a collaborator from an organization project. You must be an organization owner or a project `admin` to remove a collaborator.
     */
    removeCollaborator: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ProjectsRemoveCollaboratorParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns the collaborator's permission level for an organization project. Possible values for the `permission` key: `admin`, `write`, `read`, `none`. You must be an organization owner or a project `admin` to review a user's permission level.
     */
    reviewUserPermissionLevel: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ProjectsReviewUserPermissionLevelParams
      ): Promise<
        Octokit.Response<Octokit.ProjectsReviewUserPermissionLevelResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Updates a project board's information. Returns a `404 Not Found` status if projects are disabled. If you do not have sufficient privileges to perform this action, a `401 Unauthorized` or `410 Gone` status is returned.
     */
    update: {
      (params?: Octokit.RequestOptions & Octokit.ProjectsUpdateParams): Promise<
        Octokit.Response<Octokit.ProjectsUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    updateCard: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsUpdateCardParams
      ): Promise<Octokit.Response<Octokit.ProjectsUpdateCardResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateColumn: {
      (
        params?: Octokit.RequestOptions & Octokit.ProjectsUpdateColumnParams
      ): Promise<Octokit.Response<Octokit.ProjectsUpdateColumnResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  pulls: {
    checkIfMerged: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCheckIfMergedParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsCheckIfMergedParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
     *
     * You can create a new pull request.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    create: {
      (params?: Octokit.RequestOptions & Octokit.PullsCreateParams): Promise<
        Octokit.Response<Octokit.PullsCreateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Comments](https://developer.github.com/v3/issues/comments/#create-a-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
     *
     * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://developer.github.com/v3/pulls/comments/#multi-line-comment-summary-3).
     *
     * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     */
    createComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateCommentParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateCommentParamsDeprecatedInReplyTo
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsCreateCommentParams
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Creates a review comment in the pull request diff. To add a regular comment to a pull request timeline, see "[Comments](https://developer.github.com/v3/issues/comments/#create-a-comment)." We recommend creating a review comment using `line`, `side`, and optionally `start_line` and `start_side` if your comment applies to more than one line in the pull request diff.
     *
     * You can still create a review comment using the `position` parameter. When you use `position`, the `line`, `side`, `start_line`, and `start_side` parameters are not required. For more information, see [Multi-line comment summary](https://developer.github.com/v3/pulls/comments/#multi-line-comment-summary-3).
     *
     * **Note:** The position value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     * @deprecated octokit.pulls.createCommentReply() has been renamed to octokit.pulls.createComment() (2019-09-09)
     */
    createCommentReply: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateCommentReplyParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateCommentReplyParamsDeprecatedInReplyTo
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsCreateCommentReplyParams
      ): Promise<Octokit.Response<Octokit.PullsCreateCommentReplyResponse>>;

      endpoint: Octokit.Endpoint;
    };

    createFromIssue: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsCreateFromIssueParams
      ): Promise<Octokit.Response<Octokit.PullsCreateFromIssueResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     *
     * **Note:** To comment on a specific line in a file, you need to first determine the _position_ of that line in the diff. The GitHub REST API v3 offers the `application/vnd.github.v3.diff` [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests). To see a pull request diff, add this media type to the `Accept` header of a call to the [single pull request](https://developer.github.com/v3/pulls/#get-a-single-pull-request) endpoint.
     *
     * The `position` value equals the number of lines down from the first "@@" hunk header in the file you want to add a comment. The line just below the "@@" line is position 1, the next line is position 2, and so on. The position in the diff continues to increase through lines of whitespace and additional hunks until the beginning of a new file.
     */
    createReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsCreateReviewResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsCreateReviewParams
      ): Promise<Octokit.Response<Octokit.PullsCreateReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a reply to a review comment for a pull request. For the `comment_id`, provide the ID of the review comment you are replying to. This must be the ID of a _top-level review comment_, not a reply to that comment. Replies to replies are not supported.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createReviewCommentReply: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateReviewCommentReplyParams
      ): Promise<
        Octokit.Response<Octokit.PullsCreateReviewCommentReplyResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createReviewRequest: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsCreateReviewRequestParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsCreateReviewRequestResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsCreateReviewRequestParams
      ): Promise<Octokit.Response<Octokit.PullsCreateReviewRequestResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a review comment.
     */
    deleteComment: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsDeleteCommentParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deletePendingReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsDeletePendingReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsDeletePendingReviewResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsDeletePendingReviewParams
      ): Promise<Octokit.Response<Octokit.PullsDeletePendingReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };

    deleteReviewRequest: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsDeleteReviewRequestParamsDeprecatedNumber
      ): Promise<Octokit.AnyResponse>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsDeleteReviewRequestParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** To dismiss a pull request review on a [protected branch](https://developer.github.com/v3/repos/branches/), you must be a repository administrator or be included in the list of people or teams who can dismiss pull request reviews.
     */
    dismissReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsDismissReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsDismissReviewResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsDismissReviewParams
      ): Promise<Octokit.Response<Octokit.PullsDismissReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists details of a pull request by providing its number.
     *
     * When you get, [create](https://developer.github.com/v3/pulls/#create-a-pull-request), or [edit](https://developer.github.com/v3/pulls/#update-a-pull-request) a pull request, GitHub creates a merge commit to test whether the pull request can be automatically merged into the base branch. This test commit is not added to the base branch or the head branch. You can review the status of the test commit using the `mergeable` key. For more information, see "[Checking mergeability of pull requests](https://developer.github.com/v3/git/#checking-mergeability-of-pull-requests)".
     *
     * The value of the `mergeable` attribute can be `true`, `false`, or `null`. If the value is `null`, then GitHub has started a background job to compute the mergeability. After giving the job time to complete, resubmit the request. When the job finishes, you will see a non-`null` value for the `mergeable` attribute in the response. If `mergeable` is `true`, then `merge_commit_sha` will be the SHA of the _test_ merge commit.
     *
     * The value of the `merge_commit_sha` attribute changes depending on the state of the pull request. Before merging a pull request, the `merge_commit_sha` attribute holds the SHA of the _test_ merge commit. After merging a pull request, the `merge_commit_sha` attribute changes depending on how you merged the pull request:
     *
     * *   If merged as a [merge commit](https://help.github.com/articles/about-merge-methods-on-github/), `merge_commit_sha` represents the SHA of the merge commit.
     * *   If merged via a [squash](https://help.github.com/articles/about-merge-methods-on-github/#squashing-your-merge-commits), `merge_commit_sha` represents the SHA of the squashed commit on the base branch.
     * *   If [rebased](https://help.github.com/articles/about-merge-methods-on-github/#rebasing-and-merging-your-commits), `merge_commit_sha` represents the commit that the base branch was updated to.
     *
     * Pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
     */
    get: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsGetParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsGetResponse>>;
      (params?: Octokit.RequestOptions & Octokit.PullsGetParams): Promise<
        Octokit.Response<Octokit.PullsGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Provides details for a review comment.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     *
     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
     */
    getComment: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsGetCommentParams
      ): Promise<Octokit.Response<Octokit.PullsGetCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getCommentsForReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsGetCommentsForReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsGetCommentsForReviewResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsGetCommentsForReviewParams
      ): Promise<Octokit.Response<Octokit.PullsGetCommentsForReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsGetReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsGetReviewResponse>>;
      (params?: Octokit.RequestOptions & Octokit.PullsGetReviewParams): Promise<
        Octokit.Response<Octokit.PullsGetReviewResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.PullsListParams): Promise<
        Octokit.Response<Octokit.PullsListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Lists review comments for a pull request. By default, review comments are in ascending order by ID.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     *
     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
     */
    listComments: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsListCommentsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsListCommentsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsListCommentsParams
      ): Promise<Octokit.Response<Octokit.PullsListCommentsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Lists review comments for all pull requests in a repository. By default, review comments are in ascending order by ID.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     *
     * The `reactions` key will have the following payload where `url` can be used to construct the API location for [listing and creating](https://developer.github.com/v3/reactions) reactions.
     */
    listCommentsForRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsListCommentsForRepoParams
      ): Promise<Octokit.Response<Octokit.PullsListCommentsForRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists a maximum of 250 commits for a pull request. To receive a complete commit list for pull requests with more than 250 commits, use the [Commit List API](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository).
     */
    listCommits: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsListCommitsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsListCommitsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsListCommitsParams
      ): Promise<Octokit.Response<Octokit.PullsListCommitsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** The response includes a maximum of 300 files.
     */
    listFiles: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsListFilesParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsListFilesResponse>>;
      (params?: Octokit.RequestOptions & Octokit.PullsListFilesParams): Promise<
        Octokit.Response<Octokit.PullsListFilesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listReviewRequests: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsListReviewRequestsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsListReviewRequestsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsListReviewRequestsParams
      ): Promise<Octokit.Response<Octokit.PullsListReviewRequestsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The list of reviews returns in chronological order.
     */
    listReviews: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsListReviewsParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsListReviewsResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsListReviewsParams
      ): Promise<Octokit.Response<Octokit.PullsListReviewsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    merge: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsMergeParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsMergeResponse>>;
      (params?: Octokit.RequestOptions & Octokit.PullsMergeParams): Promise<
        Octokit.Response<Octokit.PullsMergeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    submitReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsSubmitReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsSubmitReviewResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsSubmitReviewParams
      ): Promise<Octokit.Response<Octokit.PullsSubmitReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Draft pull requests are available in public repositories with GitHub Free and GitHub Pro, and in public and private repositories with GitHub Team and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * To open or update a pull request in a public repository, you must have write access to the head or the source branch. For organization-owned repositories, you must be a member of the organization that owns the repository to open or update a pull request.
     */
    update: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsUpdateParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsUpdateResponse>>;
      (params?: Octokit.RequestOptions & Octokit.PullsUpdateParams): Promise<
        Octokit.Response<Octokit.PullsUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Updates the pull request branch with the latest upstream changes by merging HEAD from the base branch into the pull request branch.
     */
    updateBranch: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsUpdateBranchParams
      ): Promise<Octokit.Response<Octokit.PullsUpdateBranchResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** Multi-line comments on pull requests are currently in public beta and subject to change.
     *
     * Enables you to edit a review comment.
     *
     * **Multi-line comment summary**
     *
     * **Note:** New parameters and response fields are available for developers to preview. During the preview period, these response fields may change without advance notice. Please see the [blog post](https://developer.github.com/changes/2019-10-03-multi-line-comments) for full details.
     *
     * Use the `comfort-fade` preview header and the `line` parameter to show multi-line comment-supported fields in the response.
     *
     * If you use the `comfort-fade` preview header, your response will show:
     *
     * *   For multi-line comments, values for `start_line`, `original_start_line`, `start_side`, `line`, `original_line`, and `side`.
     * *   For single-line comments, values for `line`, `original_line`, and `side` and a `null` value for `start_line`, `original_start_line`, and `start_side`.
     *
     * If you don't use the `comfort-fade` preview header, multi-line and single-line comments will appear the same way in the response with a single `position` attribute. Your response will show:
     *
     * *   For multi-line comments, the last line of the comment range for the `position` attribute.
     * *   For single-line comments, the diff-positioned way of referencing comments for the `position` attribute. For more information, see `position` in the [input parameters](https://developer.github.com/v3/pulls/comments/#parameters-2) table.
     */
    updateComment: {
      (
        params?: Octokit.RequestOptions & Octokit.PullsUpdateCommentParams
      ): Promise<Octokit.Response<Octokit.PullsUpdateCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Update the review summary comment with new text.
     */
    updateReview: {
      (
        params?: Octokit.RequestOptions &
          Octokit.PullsUpdateReviewParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.PullsUpdateReviewResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.PullsUpdateReviewParams
      ): Promise<Octokit.Response<Octokit.PullsUpdateReviewResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  rateLimit: {
    /**
     * **Note:** Accessing this endpoint does not count against your REST API rate limit.
     *
     * **Understanding your rate limit status**
     *
     * The Search API has a [custom rate limit](https://developer.github.com/v3/search/#rate-limit), separate from the rate limit governing the rest of the REST API. The GraphQL API also has a [custom rate limit](https://developer.github.com/v4/guides/resource-limitations/#rate-limit) that is separate from and calculated differently than rate limits in the REST API.
     *
     * For these reasons, the Rate Limit API response categorizes your rate limit. Under `resources`, you'll see four objects:
     *
     * *   The `core` object provides your rate limit status for all non-search-related resources in the REST API.
     * *   The `search` object provides your rate limit status for the [Search API](https://developer.github.com/v3/search/).
     * *   The `graphql` object provides your rate limit status for the [GraphQL API](https://developer.github.com/v4/).
     * *   The `integration_manifest` object provides your rate limit status for the [GitHub App Manifest code conversion](https://developer.github.com/apps/building-github-apps/creating-github-apps-from-a-manifest/#3-you-exchange-the-temporary-code-to-retrieve-the-app-configuration) endpoint.
     *
     * For more information on the headers and values in the rate limit response, see "[Rate limiting](https://developer.github.com/v3/#rate-limiting)."
     *
     * The `rate` object (shown at the bottom of the response above) is deprecated.
     *
     * If you're writing new API client code or updating existing code, you should use the `core` object instead of the `rate` object. The `core` object contains the same information that is present in the `rate` object.
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.RateLimitGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  reactions: {
    /**
     * Create a reaction to a [commit comment](https://developer.github.com/v3/repos/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this commit comment.
     */
    createForCommitComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForCommitCommentParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsCreateForCommitCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a reaction to an [issue](https://developer.github.com/v3/issues/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue.
     */
    createForIssue: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForIssueParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.ReactionsCreateForIssueResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.ReactionsCreateForIssueParams
      ): Promise<Octokit.Response<Octokit.ReactionsCreateForIssueResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a reaction to an [issue comment](https://developer.github.com/v3/issues/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this issue comment.
     */
    createForIssueComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForIssueCommentParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsCreateForIssueCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a reaction to a [pull request review comment](https://developer.github.com/v3/pulls/comments/). A response with a `Status: 200 OK` means that you already added the reaction type to this pull request review comment.
     */
    createForPullRequestReviewComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForPullRequestReviewCommentParams
      ): Promise<
        Octokit.Response<
          Octokit.ReactionsCreateForPullRequestReviewCommentResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a reaction to a [team discussion](https://developer.github.com/v3/teams/discussions/). OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion.
     */
    createForTeamDiscussion: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForTeamDiscussionParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsCreateForTeamDiscussionResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a reaction to a [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/). OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/). A response with a `Status: 200 OK` means that you already added the reaction type to this team discussion comment.
     */
    createForTeamDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsCreateForTeamDiscussionCommentParams
      ): Promise<
        Octokit.Response<
          Octokit.ReactionsCreateForTeamDiscussionCommentResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), when deleting a [team discussion](https://developer.github.com/v3/teams/discussions/) or [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/).
     */
    delete: {
      (
        params?: Octokit.RequestOptions & Octokit.ReactionsDeleteParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to a [commit comment](https://developer.github.com/v3/repos/comments/).
     */
    listForCommitComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForCommitCommentParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsListForCommitCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to an [issue](https://developer.github.com/v3/issues/).
     */
    listForIssue: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForIssueParamsDeprecatedNumber
      ): Promise<Octokit.Response<Octokit.ReactionsListForIssueResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.ReactionsListForIssueParams
      ): Promise<Octokit.Response<Octokit.ReactionsListForIssueResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to an [issue comment](https://developer.github.com/v3/issues/comments/).
     */
    listForIssueComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForIssueCommentParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsListForIssueCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to a [pull request review comment](https://developer.github.com/v3/pulls/comments/).
     */
    listForPullRequestReviewComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForPullRequestReviewCommentParams
      ): Promise<
        Octokit.Response<
          Octokit.ReactionsListForPullRequestReviewCommentResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to a [team discussion](https://developer.github.com/v3/teams/discussions/). OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listForTeamDiscussion: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForTeamDiscussionParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsListForTeamDiscussionResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the reactions to a [team discussion comment](https://developer.github.com/v3/teams/discussion_comments/). OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listForTeamDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReactionsListForTeamDiscussionCommentParams
      ): Promise<
        Octokit.Response<Octokit.ReactionsListForTeamDiscussionCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  repos: {
    acceptInvitation: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposAcceptInvitationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     *
     * 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 verbs](https://developer.github.com/v3/#http-verbs)."
     *
     * The invitee will receive a notification that they have been invited to the repository, which they must accept or decline. They may do this via the notifications page, the email they receive, or by using the [repository invitations API endpoints](https://developer.github.com/v3/repos/invitations/).
     *
     * **Rate limits**
     *
     * To prevent abuse, you are limited to sending 50 invitations to a repository per 24 hour period. Note there is no limit if you are inviting organization members to an organization repository.
     */
    addCollaborator: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposAddCollaboratorParams
      ): Promise<Octokit.Response<Octokit.ReposAddCollaboratorResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Here's how you can create a read-only deploy key:
     */
    addDeployKey: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposAddDeployKeyParams
      ): Promise<Octokit.Response<Octokit.ReposAddDeployKeyResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Adding admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
     */
    addProtectedBranchAdminEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchAdminEnforcementParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposAddProtectedBranchAdminEnforcementResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Grants the specified apps push access for this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
     *
     * | Type    | Description                                                                                                                                                |
     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    addProtectedBranchAppRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchAppRestrictionsParams
      ): Promise<
        Octokit.Response<Octokit.ReposAddProtectedBranchAppRestrictionsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to require signed commits on a branch. You must enable branch protection to require signed commits.
     */
    addProtectedBranchRequiredSignatures: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchRequiredSignaturesParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposAddProtectedBranchRequiredSignaturesResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    addProtectedBranchRequiredStatusChecksContexts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchRequiredStatusChecksContextsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposAddProtectedBranchRequiredStatusChecksContextsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Grants the specified teams push access for this branch. If you pass the `hellcat-preview` media type, you can also give push access to child teams.
     *
     * | Type    | Description                                                                                                                                |
     * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
     * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    addProtectedBranchTeamRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchTeamRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposAddProtectedBranchTeamRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Grants the specified people push access for this branch.
     *
     * | Type    | Description                                                                                                                   |
     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    addProtectedBranchUserRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposAddProtectedBranchUserRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposAddProtectedBranchUserRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
     *
     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
     */
    checkCollaborator: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCheckCollaboratorParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Shows whether vulnerability alerts are enabled or disabled for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
     */
    checkVulnerabilityAlerts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposCheckVulnerabilityAlertsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Both `:base` and `:head` must be branch names in `:repo`. To compare branches across other repositories in the same network as `:repo`, use the format `<USERNAME>:branch`.
     *
     * The response from the API is equivalent to running the `git log base..head` command; however, commits are returned in chronological order. Pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch diff and patch formats.
     *
     * The response also includes details on the files that were changed between the two commits. This includes the status of the change (for example, if a file was added, removed, modified, or renamed), and details of the change itself. For example, files with a `renamed` status have a `previous_filename` field showing the previous filename of the file, and files with a `modified` status have a `patch` field showing the changes made to the file.
     *
     * **Working with large comparisons**
     *
     * The response will include a comparison of up to 250 commits. If you are working with a larger commit range, you can use the [Commit List API](https://developer.github.com/v3/repos/commits/#list-commits-on-a-repository) to enumerate all commits in the range.
     *
     * For comparisons with extremely large diffs, you may receive an error response indicating that the diff took too long to generate. You can typically resolve this error by using a smaller commit range.
     *
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    compareCommits: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCompareCommitsParams
      ): Promise<Octokit.Response<Octokit.ReposCompareCommitsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a comment for a commit using its `:commit_sha`.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createCommitComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposCreateCommitCommentParamsDeprecatedSha
      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposCreateCommitCommentParamsDeprecatedLine
      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateCommitCommentParams
      ): Promise<Octokit.Response<Octokit.ReposCreateCommitCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deployments offer a few configurable parameters with sane defaults.
     *
     * The `ref` parameter can be any named branch, tag, or SHA. At GitHub we often deploy branches and verify them before we merge a pull request.
     *
     * The `environment` parameter allows deployments to be issued to different runtime environments. Teams often have multiple environments for verifying their applications, such as `production`, `staging`, and `qa`. This parameter makes it easier to track which environments have requested deployments. The default environment is `production`.
     *
     * The `auto_merge` parameter is used to ensure that the requested ref is not behind the repository's default branch. If the ref _is_ behind the default branch for the repository, we will attempt to merge it for you. If the merge succeeds, the API will return a successful merge commit. If merge conflicts prevent the merge from succeeding, the API will return a failure response.
     *
     * By default, [commit statuses](https://developer.github.com/v3/repos/statuses) for every submitted context must be in a `success` state. The `required_contexts` parameter allows you to specify a subset of contexts that must be `success`, or to specify contexts that have not yet been submitted. You are not required to use commit statuses to deploy. If you do not require any contexts or create any commit statuses, the deployment will always succeed.
     *
     * The `payload` parameter is available for any extra information that a deployment system might need. It is a JSON text field that will be passed on when a deployment event is dispatched.
     *
     * The `task` parameter is used by the deployment system to allow different execution paths. In the web world this might be `deploy:migrations` to run schema changes on the system. In the compiled world this could be a flag to compile an application with debugging enabled.
     *
     * Users with `repo` or `repo_deployment` scopes can create a deployment for a given ref:
     *
     * A simple example putting the user and room into the payload to notify back to chat networks.
     *
     * A more advanced example specifying required commit statuses and bypassing auto-merging.
     *
     * You will see this response when GitHub automatically merges the base branch into the topic branch instead of creating a deployment. This auto-merge happens when:
     *
     * *   Auto-merge option is enabled in the repository
     * *   Topic branch does not include the latest changes on the base branch, which is `master`in the response example
     * *   There are no merge conflicts
     *
     * If there are no new commits in the base branch, a new request to create a deployment should give a successful response.
     *
     * This error happens when the `auto_merge` option is enabled and when the default branch (in this case `master`), can't be merged into the branch that's being deployed (in this case `topic-branch`), due to merge conflicts.
     *
     * This error happens when the `required_contexts` parameter indicates that one or more contexts need to have a `success` status for the commit to be deployed, but one or more of the required contexts do not have a state of `success`.
     */
    createDeployment: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateDeploymentParams
      ): Promise<Octokit.Response<Octokit.ReposCreateDeploymentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with `push` access can create deployment statuses for a given deployment.
     *
     * GitHub Apps require `read & write` access to "Deployments" and `read-only` access to "Repo contents" (for private repos). OAuth Apps require the `repo_deployment` scope.
     */
    createDeploymentStatus: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposCreateDeploymentStatusParams
      ): Promise<Octokit.Response<Octokit.ReposCreateDeploymentStatusResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can use this endpoint to trigger a webhook event called `repository_dispatch` when you want activity that happens outside of GitHub to trigger a GitHub Actions workflow or GitHub App webhook. You must configure your GitHub Actions workflow or GitHub App to run when the `repository_dispatch` event occurs. For an example `repository_dispatch` webhook payload, see "[RepositoryDispatchEvent](https://developer.github.com/v3/activity/events/types/#repositorydispatchevent)."
     *
     * The `client_payload` parameter is available for any extra information that your workflow might need. This parameter is a JSON payload that will be passed on when the webhook event is dispatched. For example, the `client_payload` can include a message that a user would like to send using a GitHub Actions workflow. Or the `client_payload` can be used as a test to debug your workflow. For a test example, see the [input example](https://developer.github.com/v3/repos/#example-4).
     *
     * To give you write access to the repository, you must use a personal access token with the `repo` scope. For more information, see "[Creating a personal access token for the command line](https://help.github.com/articles/creating-a-personal-access-token-for-the-command-line)" in the GitHub Help documentation.
     *
     * This input example shows how you can use the `client_payload` as a test to debug your workflow.
     */
    createDispatchEvent: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateDispatchEventParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new file or updates an existing file in a repository.
     * @deprecated octokit.repos.createFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)
     */
    createFile: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateFileParams
      ): Promise<Octokit.Response<Octokit.ReposCreateFileResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new repository for the authenticated user.
     *
     * **OAuth scope requirements**
     *
     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
     *
     * *   `public_repo` scope or `repo` scope to create a public repository
     * *   `repo` scope to create a private repository
     */
    createForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposCreateForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.ReposCreateForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Create a fork for the authenticated user.
     *
     * **Note**: Forking a Repository happens asynchronously. You may have to wait a short period of time before you can access the git objects. If this takes longer than 5 minutes, be sure to contact [GitHub Support](https://github.com/contact).
     */
    createFork: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateForkParams
      ): Promise<Octokit.Response<Octokit.ReposCreateForkResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Repositories can have multiple webhooks installed. Each webhook should have a unique `config`. Multiple webhooks can share the same `config` as long as those webhooks do not have any `events` that overlap.
     *
     * Here's how you can create a hook that posts payloads in JSON format:
     */
    createHook: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateHookParams
      ): Promise<Octokit.Response<Octokit.ReposCreateHookResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new repository for the authenticated user.
     *
     * **OAuth scope requirements**
     *
     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
     *
     * *   `public_repo` scope or `repo` scope to create a public repository
     * *   `repo` scope to create a private repository
     */
    createInOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateInOrgParams
      ): Promise<Octokit.Response<Octokit.ReposCreateInOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new file or updates an existing file in a repository.
     */
    createOrUpdateFile: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateOrUpdateFileParams
      ): Promise<Octokit.Response<Octokit.ReposCreateOrUpdateFileResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access to the repository can create a release.
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createRelease: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateReleaseParams
      ): Promise<Octokit.Response<Octokit.ReposCreateReleaseResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access in a repository can create commit statuses for a given SHA.
     *
     * Note: there is a limit of 1000 statuses per `sha` and `context` within a repository. Attempts to create more than 1000 statuses will result in a validation error.
     */
    createStatus: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateStatusParams
      ): Promise<Octokit.Response<Octokit.ReposCreateStatusResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new repository using a repository template. Use the `template_owner` and `template_repo` route parameters to specify the repository to use as the template. The authenticated user must own or be a member of an organization that owns the repository. To check if a repository is available to use as a template, get the repository's information using the [`GET /repos/:owner/:repo`](https://developer.github.com/v3/repos/#get) endpoint and check that the `is_template` key is `true`.
     *
     * **OAuth scope requirements**
     *
     * When using [OAuth](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/), authorizations must include:
     *
     * *   `public_repo` scope or `repo` scope to create a public repository
     * *   `repo` scope to create a private repository
     *
     * \`
     */
    createUsingTemplate: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposCreateUsingTemplateParams
      ): Promise<Octokit.Response<Octokit.ReposCreateUsingTemplateResponse>>;

      endpoint: Octokit.Endpoint;
    };

    declineInvitation: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeclineInvitationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deleting a repository requires admin access. If OAuth is used, the `delete_repo` scope is required.
     *
     * If an organization owner has configured the organization to prevent members from deleting organization-owned repositories, a member will get this response:
     */
    delete: {
      (params?: Octokit.RequestOptions & Octokit.ReposDeleteParams): Promise<
        Octokit.Response<Octokit.ReposDeleteResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    deleteCommitComment: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteCommitCommentParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteDownload: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteDownloadParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a file in a repository.
     *
     * You can provide an additional `committer` parameter, which is an object containing information about the committer. Or, you can provide an `author` parameter, which is an object containing information about the author.
     *
     * The `author` section is optional and is filled in with the `committer` information if omitted. If the `committer` information is omitted, the authenticated user's information is used.
     *
     * You must provide values for both `name` and `email`, whether you choose to use `author` or `committer`. Otherwise, you'll receive a `422` status code.
     */
    deleteFile: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteFileParams
      ): Promise<Octokit.Response<Octokit.ReposDeleteFileResponse>>;

      endpoint: Octokit.Endpoint;
    };

    deleteHook: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteHookParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteInvitation: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteInvitationParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access to the repository can delete a release.
     */
    deleteRelease: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteReleaseParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    deleteReleaseAsset: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDeleteReleaseAssetParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Disables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)" in the GitHub Help documentation.
     */
    disableAutomatedSecurityFixes: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposDisableAutomatedSecurityFixesParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    disablePagesSite: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposDisablePagesSiteParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Disables vulnerability alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
     */
    disableVulnerabilityAlerts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposDisableVulnerabilityAlertsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables automated security fixes for a repository. The authenticated user must have admin access to the repository. For more information, see "[Configuring automated security fixes](https://help.github.com/en/articles/configuring-automated-security-fixes)" in the GitHub Help documentation.
     */
    enableAutomatedSecurityFixes: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposEnableAutomatedSecurityFixesParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    enablePagesSite: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposEnablePagesSiteParams
      ): Promise<Octokit.Response<Octokit.ReposEnablePagesSiteResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Enables vulnerability alerts and the dependency graph for a repository. The authenticated user must have admin access to the repository. For more information, see "[About security alerts for vulnerable dependencies](https://help.github.com/en/articles/about-security-alerts-for-vulnerable-dependencies)" in the GitHub Help documentation.
     */
    enableVulnerabilityAlerts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposEnableVulnerabilityAlertsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The `parent` and `source` objects are present when the repository is a fork. `parent` is the repository this repository was forked from, `source` is the ultimate source for the network.
     */
    get: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetParams): Promise<
        Octokit.Response<Octokit.ReposGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
     */
    getAppsWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetAppsWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetAppsWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets a redirect URL to download an archive for a repository. The `:archive_format` can be either `tarball` or `zipball`. The `:ref` must be a valid Git reference. If you omit `:ref`, the repository’s default branch (usually `master`) will be used. Please make sure your HTTP framework is configured to follow redirects or you will need to use the `Location` header to make a second `GET` request.
     *
     * _Note_: For private repositories, these links are temporary and expire after five minutes.
     *
     * To follow redirects with curl, use the `-L` switch:
     */
    getArchiveLink: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetArchiveLinkParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    getBranch: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetBranchParams): Promise<
        Octokit.Response<Octokit.ReposGetBranchResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    getBranchProtection: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetBranchProtectionParams
      ): Promise<Octokit.Response<Octokit.ReposGetBranchProtectionResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get the total number of clones and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
     */
    getClones: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetClonesParams): Promise<
        Octokit.Response<Octokit.ReposGetClonesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns a weekly aggregate of the number of additions and deletions pushed to a repository.
     */
    getCodeFrequencyStats: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCodeFrequencyStatsParams
      ): Promise<Octokit.Response<Octokit.ReposGetCodeFrequencyStatsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Possible values for the `permission` key: `admin`, `write`, `read`, `none`.
     */
    getCollaboratorPermissionLevel: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCollaboratorPermissionLevelParams
      ): Promise<
        Octokit.Response<Octokit.ReposGetCollaboratorPermissionLevelResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with pull access in a repository can access a combined view of commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name.
     *
     * The most recent status for each context is returned, up to 100. This field [paginates](https://developer.github.com/v3/#pagination) if there are over 100 contexts.
     *
     * Additionally, a combined `state` is returned. The `state` is one of:
     *
     * *   **failure** if any of the contexts report as `error` or `failure`
     * *   **pending** if there are no statuses or a context is `pending`
     * *   **success** if the latest status for all contexts is `success`
     */
    getCombinedStatusForRef: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCombinedStatusForRefParams
      ): Promise<
        Octokit.Response<Octokit.ReposGetCombinedStatusForRefResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns the contents of a single commit reference. You must have `read` access for the repository to use this endpoint.
     *
     * You can pass the appropriate [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) to fetch `diff` and `patch` formats. Diffs with binary data will have no `patch` property.
     *
     * To return only the SHA-1 hash of the commit reference, you can provide the `sha` custom [media type](https://developer.github.com/v3/media/#commits-commit-comparison-and-pull-requests) in the `Accept` header. You can use this endpoint to check if a remote reference's SHA-1 hash is the same as your local reference's SHA-1 hash by providing the local SHA-1 reference as the ETag.
     *
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    getCommit: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCommitParamsDeprecatedSha
      ): Promise<Octokit.Response<Octokit.ReposGetCommitResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCommitParamsDeprecatedCommitSha
      ): Promise<Octokit.Response<Octokit.ReposGetCommitResponse>>;
      (params?: Octokit.RequestOptions & Octokit.ReposGetCommitParams): Promise<
        Octokit.Response<Octokit.ReposGetCommitResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns the last year of commit activity grouped by week. The `days` array is a group of commits per day, starting on `Sunday`.
     */
    getCommitActivityStats: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetCommitActivityStatsParams
      ): Promise<Octokit.Response<Octokit.ReposGetCommitActivityStatsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getCommitComment: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetCommitCommentParams
      ): Promise<Octokit.Response<Octokit.ReposGetCommitCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** To access this endpoint, you must provide a custom [media type](https://developer.github.com/v3/media) in the `Accept` header:
     * ```
     * application/vnd.github.VERSION.sha
     * ```
     * Returns the SHA-1 of the commit reference. You must have `read` access for the repository to get the SHA-1 of a commit reference. You can use this endpoint to check if a remote reference's SHA-1 is the same as your local reference's SHA-1 by providing the local SHA-1 reference as the ETag.
     * @deprecated "Get the SHA-1 of a commit reference" will be removed. Use "Get a single commit" instead with media type format set to "sha" instead.
     */
    getCommitRefSha: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetCommitRefShaParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets the contents of a file or directory in a repository. Specify the file path or directory in `:path`. If you omit `:path`, you will receive the contents of all files in the repository.
     *
     * Files and symlinks support [a custom media type](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw content or rendered HTML (when supported). All content types support [a custom media type](https://developer.github.com/v3/repos/contents/#custom-media-types) to ensure the content is returned in a consistent object format.
     *
     * **Note**:
     *
     * *   To get a repository's contents recursively, you can [recursively get the tree](https://developer.github.com/v3/git/trees/).
     * *   This API has an upper limit of 1,000 files for a directory. If you need to retrieve more files, use the [Git Trees API](https://developer.github.com/v3/git/trees/#get-a-tree).
     * *   This API supports files up to 1 megabyte in size.
     *
     * The response will be an array of objects, one object for each item in the directory.
     *
     * When listing the contents of a directory, submodules have their "type" specified as "file". Logically, the value _should_ be "submodule". This behavior exists in API v3 [for backwards compatibility purposes](https://git.io/v1YCW). In the next major version of the API, the type will be returned as "submodule".
     *
     * If the requested `:path` points to a symlink, and the symlink's target is a normal file in the repository, then the API responds with the content of the file (in the [format shown above](https://developer.github.com/v3/repos/contents/#response-if-content-is-a-file)).
     *
     * Otherwise, the API responds with an object describing the symlink itself:
     *
     * The `submodule_git_url` identifies the location of the submodule repository, and the `sha` identifies a specific commit within the submodule repository. Git uses the given URL when cloning the submodule repository, and checks out the submodule at that specific commit.
     *
     * If the submodule repository is not hosted on github.com, the Git URLs (`git_url` and `_links["git"]`) and the github.com URLs (`html_url` and `_links["html"]`) will have null values.
     */
    getContents: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetContentsParams
      ): Promise<Octokit.Response<Octokit.ReposGetContentsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * *   `total` - The Total number of commits authored by the contributor.
     *
     * Weekly Hash (`weeks` array):
     *
     * *   `w` - Start of the week, given as a [Unix timestamp](http://en.wikipedia.org/wiki/Unix_time).
     * *   `a` - Number of additions
     * *   `d` - Number of deletions
     * *   `c` - Number of commits
     */
    getContributorsStats: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetContributorsStatsParams
      ): Promise<Octokit.Response<Octokit.ReposGetContributorsStatsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getDeployKey: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetDeployKeyParams
      ): Promise<Octokit.Response<Octokit.ReposGetDeployKeyResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getDeployment: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetDeploymentParams
      ): Promise<Octokit.Response<Octokit.ReposGetDeploymentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with pull access can view a deployment status for a deployment:
     */
    getDeploymentStatus: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetDeploymentStatusParams
      ): Promise<Octokit.Response<Octokit.ReposGetDeploymentStatusResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getDownload: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetDownloadParams
      ): Promise<Octokit.Response<Octokit.ReposGetDownloadResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getHook: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetHookParams): Promise<
        Octokit.Response<Octokit.ReposGetHookResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getLatestPagesBuild: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetLatestPagesBuildParams
      ): Promise<Octokit.Response<Octokit.ReposGetLatestPagesBuildResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * View the latest published full release for the repository.
     *
     * The latest release is the most recent non-prerelease, non-draft release, sorted by the `created_at` attribute. The `created_at` attribute is the date of the commit used for the release, and not the date when the release was drafted or published.
     */
    getLatestRelease: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetLatestReleaseParams
      ): Promise<Octokit.Response<Octokit.ReposGetLatestReleaseResponse>>;

      endpoint: Octokit.Endpoint;
    };

    getPages: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetPagesParams): Promise<
        Octokit.Response<Octokit.ReposGetPagesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    getPagesBuild: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetPagesBuildParams
      ): Promise<Octokit.Response<Octokit.ReposGetPagesBuildResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Returns the total commit counts for the `owner` and total commit counts in `all`. `all` is everyone combined, including the `owner` in the last 52 weeks. If you'd like to get the commit counts for non-owners, you can subtract `owner` from `all`.
     *
     * The array order is oldest week (index 0) to most recent week.
     */
    getParticipationStats: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetParticipationStatsParams
      ): Promise<Octokit.Response<Octokit.ReposGetParticipationStatsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    getProtectedBranchAdminEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetProtectedBranchAdminEnforcementParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetProtectedBranchAdminEnforcementResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    getProtectedBranchPullRequestReviewEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetProtectedBranchPullRequestReviewEnforcementParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetProtectedBranchPullRequestReviewEnforcementResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to check whether a branch requires signed commits. An enabled status of `true` indicates you must sign commits on this branch. For more information, see [Signing commits with GPG](https://help.github.com/articles/signing-commits-with-gpg) in GitHub Help.
     *
     * **Note**: You must enable branch protection to require signed commits.
     */
    getProtectedBranchRequiredSignatures: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetProtectedBranchRequiredSignaturesParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetProtectedBranchRequiredSignaturesResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    getProtectedBranchRequiredStatusChecks: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetProtectedBranchRequiredStatusChecksParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetProtectedBranchRequiredStatusChecksResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists who has access to this protected branch. {{#note}}
     *
     * **Note**: Users, apps, and teams `restrictions` are only available for organization-owned repositories.
     */
    getProtectedBranchRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetProtectedBranchRestrictionsParams
      ): Promise<
        Octokit.Response<Octokit.ReposGetProtectedBranchRestrictionsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Each array contains the day number, hour number, and number of commits:
     *
     * *   `0-6`: Sunday - Saturday
     * *   `0-23`: Hour of day
     * *   Number of commits
     *
     * For example, `[2, 14, 25]` indicates that there were 25 total commits, during the 2:00pm hour on Tuesdays. All times are based on the time zone of individual commits.
     */
    getPunchCardStats: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetPunchCardStatsParams
      ): Promise<Octokit.Response<Octokit.ReposGetPunchCardStatsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets the preferred README for a repository.
     *
     * READMEs support [custom media types](https://developer.github.com/v3/repos/contents/#custom-media-types) for retrieving the raw content or rendered HTML.
     */
    getReadme: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetReadmeParams): Promise<
        Octokit.Response<Octokit.ReposGetReadmeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** This returns an `upload_url` key corresponding to the endpoint for uploading release assets. This key is a [hypermedia resource](https://developer.github.com/v3/#hypermedia).
     */
    getRelease: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseParams
      ): Promise<Octokit.Response<Octokit.ReposGetReleaseResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * To download the asset's binary content, set the `Accept` header of the request to [`application/octet-stream`](https://developer.github.com/v3/media/#media-types). The API will either redirect the client to the location, or stream it directly if possible. API clients should handle both a `200` or `302` response.
     */
    getReleaseAsset: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseAssetParams
      ): Promise<Octokit.Response<Octokit.ReposGetReleaseAssetResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get a published release with the specified tag.
     */
    getReleaseByTag: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetReleaseByTagParams
      ): Promise<Octokit.Response<Octokit.ReposGetReleaseByTagResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
     */
    getTeamsWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetTeamsWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetTeamsWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get the top 10 popular contents over the last 14 days.
     */
    getTopPaths: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetTopPathsParams
      ): Promise<Octokit.Response<Octokit.ReposGetTopPathsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get the top 10 referrers over the last 14 days.
     */
    getTopReferrers: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposGetTopReferrersParams
      ): Promise<Octokit.Response<Octokit.ReposGetTopReferrersResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the people who have push access to this branch.
     */
    getUsersWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposGetUsersWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposGetUsersWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get the total number of views and breakdown per day or week for the last 14 days. Timestamps are aligned to UTC midnight of the beginning of the day or week. Week begins on Monday.
     */
    getViews: {
      (params?: Octokit.RequestOptions & Octokit.ReposGetViewsParams): Promise<
        Octokit.Response<Octokit.ReposGetViewsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists repositories that the authenticated user has explicit permission (`:read`, `:write`, or `:admin`) to access.
     *
     * The authenticated user has explicit permission to access repositories they own, repositories where they are a collaborator, and repositories that they can access through an organization membership.
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.ReposListParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the GitHub Apps that have push access to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
     * @deprecated octokit.repos.listAppsWithAccessToProtectedBranch() has been renamed to octokit.repos.getAppsWithAccessToProtectedBranch() (2019-09-13)
     */
    listAppsWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListAppsWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListAppsWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };

    listAssetsForRelease: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListAssetsForReleaseParams
      ): Promise<Octokit.Response<Octokit.ReposListAssetsForReleaseResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listBranches: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListBranchesParams
      ): Promise<Octokit.Response<Octokit.ReposListBranchesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Returns all branches where the given commit SHA is the HEAD, or latest commit for the branch.
     */
    listBranchesForHeadCommit: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListBranchesForHeadCommitParams
      ): Promise<
        Octokit.Response<Octokit.ReposListBranchesForHeadCommitResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * For organization-owned repositories, the list of collaborators includes outside collaborators, organization members that are direct collaborators, organization members with access through team memberships, organization members with access through default organization permissions, and organization owners.
     *
     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
     */
    listCollaborators: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListCollaboratorsParams
      ): Promise<Octokit.Response<Octokit.ReposListCollaboratorsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Use the `:commit_sha` to specify the commit that will have its comments listed.
     */
    listCommentsForCommit: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListCommentsForCommitParamsDeprecatedRef
      ): Promise<Octokit.Response<Octokit.ReposListCommentsForCommitResponse>>;
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListCommentsForCommitParams
      ): Promise<Octokit.Response<Octokit.ReposListCommentsForCommitResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Commit Comments use [these custom media types](https://developer.github.com/v3/repos/comments/#custom-media-types). You can read more about the use of media types in the API [here](https://developer.github.com/v3/media/).
     *
     * Comments are ordered by ascending ID.
     */
    listCommitComments: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListCommitCommentsParams
      ): Promise<Octokit.Response<Octokit.ReposListCommitCommentsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Signature verification object**
     *
     * The response will include a `verification` object that describes the result of verifying the commit's signature. The following fields are included in the `verification` object:
     *
     * These are the possible values for `reason` in the `verification` object:
     *
     * | Value                    | Description                                                                                                                       |
     * | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
     * | `expired_key`            | The key that made the signature is expired.                                                                                       |
     * | `not_signing_key`        | The "signing" flag is not among the usage flags in the GPG key that made the signature.                                           |
     * | `gpgverify_error`        | There was an error communicating with the signature verification service.                                                         |
     * | `gpgverify_unavailable`  | The signature verification service is currently unavailable.                                                                      |
     * | `unsigned`               | The object does not include a signature.                                                                                          |
     * | `unknown_signature_type` | A non-PGP signature was found in the commit.                                                                                      |
     * | `no_user`                | No user was associated with the `committer` email address in the commit.                                                          |
     * | `unverified_email`       | The `committer` email address in the commit was associated with a user, but the email address is not verified on her/his account. |
     * | `bad_email`              | The `committer` email address in the commit is not included in the identities of the PGP key that made the signature.             |
     * | `unknown_key`            | The key that made the signature has not been registered with any user's account.                                                  |
     * | `malformed_signature`    | There was an error parsing the signature.                                                                                         |
     * | `invalid`                | The signature could not be cryptographically verified using the key whose key-id was found in the signature.                      |
     * | `valid`                  | None of the above errors applied, so the signature is considered to be verified.                                                  |
     */
    listCommits: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListCommitsParams
      ): Promise<Octokit.Response<Octokit.ReposListCommitsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists contributors to the specified repository and sorts them by the number of commits per contributor in descending order. This endpoint may return information that is a few hours old because the GitHub REST API v3 caches contributor data to improve performance.
     *
     * GitHub identifies contributors by author email address. This endpoint groups contribution counts by GitHub user, which includes all associated email addresses. To improve performance, only the first 500 author email addresses in the repository link to GitHub users. The rest will appear as anonymous contributors without associated GitHub user information.
     */
    listContributors: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListContributorsParams
      ): Promise<Octokit.Response<Octokit.ReposListContributorsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listDeployKeys: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListDeployKeysParams
      ): Promise<Octokit.Response<Octokit.ReposListDeployKeysResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with pull access can view deployment statuses for a deployment:
     */
    listDeploymentStatuses: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListDeploymentStatusesParams
      ): Promise<Octokit.Response<Octokit.ReposListDeploymentStatusesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Simple filtering of deployments is available via query parameters:
     */
    listDeployments: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListDeploymentsParams
      ): Promise<Octokit.Response<Octokit.ReposListDeploymentsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listDownloads: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListDownloadsParams
      ): Promise<Octokit.Response<Octokit.ReposListDownloadsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists repositories for the specified organization.
     */
    listForOrg: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListForOrgParams
      ): Promise<Octokit.Response<Octokit.ReposListForOrgResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists public repositories for the specified user.
     */
    listForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    listForks: {
      (params?: Octokit.RequestOptions & Octokit.ReposListForksParams): Promise<
        Octokit.Response<Octokit.ReposListForksResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listHooks: {
      (params?: Octokit.RequestOptions & Octokit.ReposListHooksParams): Promise<
        Octokit.Response<Octokit.ReposListHooksResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * When authenticating as a user with admin rights to a repository, this endpoint will list all currently open repository invitations.
     */
    listInvitations: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListInvitationsParams
      ): Promise<Octokit.Response<Octokit.ReposListInvitationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * When authenticating as a user, this endpoint will list all currently open repository invitations for that user.
     */
    listInvitationsForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListInvitationsForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListInvitationsForAuthenticatedUserResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists languages for the specified repository. The value shown for each language is the number of bytes of code written in that language.
     */
    listLanguages: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListLanguagesParams
      ): Promise<Octokit.Response<Octokit.ReposListLanguagesResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listPagesBuilds: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListPagesBuildsParams
      ): Promise<Octokit.Response<Octokit.ReposListPagesBuildsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    listProtectedBranchRequiredStatusChecksContexts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListProtectedBranchRequiredStatusChecksContextsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListProtectedBranchRequiredStatusChecksContextsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
     * @deprecated octokit.repos.listProtectedBranchTeamRestrictions() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-09)
     */
    listProtectedBranchTeamRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListProtectedBranchTeamRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListProtectedBranchTeamRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the people who have push access to this branch.
     * @deprecated octokit.repos.listProtectedBranchUserRestrictions() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-09)
     */
    listProtectedBranchUserRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListProtectedBranchUserRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListProtectedBranchUserRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all public repositories in the order that they were created.
     *
     * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of repositories.
     */
    listPublic: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListPublicParams
      ): Promise<Octokit.Response<Octokit.ReposListPublicResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all pull requests containing the provided commit SHA, which can be from any point in the commit history. The results will include open and closed pull requests. Additional preview headers may be required to see certain details for associated pull requests, such as whether a pull request is in a draft state. For more information about previews that might affect this endpoint, see the [List pull requests](https://developer.github.com/v3/pulls/#list-pull-requests) endpoint.
     */
    listPullRequestsAssociatedWithCommit: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListPullRequestsAssociatedWithCommitParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListPullRequestsAssociatedWithCommitResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This returns a list of releases, which does not include regular Git tags that have not been associated with a release. To get a list of Git tags, use the [Repository Tags API](https://developer.github.com/v3/repos/#list-tags).
     *
     * Information about published releases are available to everyone. Only users with push access will receive listings for draft releases.
     */
    listReleases: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListReleasesParams
      ): Promise<Octokit.Response<Octokit.ReposListReleasesResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with pull access in a repository can view commit statuses for a given ref. The ref can be a SHA, a branch name, or a tag name. Statuses are returned in reverse chronological order. The first status in the list will be the latest one.
     *
     * This resource is also available via a legacy route: `GET /repos/:owner/:repo/statuses/:ref`.
     */
    listStatusesForRef: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListStatusesForRefParams
      ): Promise<Octokit.Response<Octokit.ReposListStatusesForRefResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listTags: {
      (params?: Octokit.RequestOptions & Octokit.ReposListTagsParams): Promise<
        Octokit.Response<Octokit.ReposListTagsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listTeams: {
      (params?: Octokit.RequestOptions & Octokit.ReposListTeamsParams): Promise<
        Octokit.Response<Octokit.ReposListTeamsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the teams who have push access to this branch. If you pass the `hellcat-preview` media type, the list includes child teams.
     * @deprecated octokit.repos.listTeamsWithAccessToProtectedBranch() has been renamed to octokit.repos.getTeamsWithAccessToProtectedBranch() (2019-09-13)
     */
    listTeamsWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListTeamsWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListTeamsWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };

    listTopics: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposListTopicsParams
      ): Promise<Octokit.Response<Octokit.ReposListTopicsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Lists the people who have push access to this branch.
     * @deprecated octokit.repos.listUsersWithAccessToProtectedBranch() has been renamed to octokit.repos.getUsersWithAccessToProtectedBranch() (2019-09-13)
     */
    listUsersWithAccessToProtectedBranch: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposListUsersWithAccessToProtectedBranchParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposListUsersWithAccessToProtectedBranchResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };

    merge: {
      (params?: Octokit.RequestOptions & Octokit.ReposMergeParams): Promise<
        Octokit.Response<Octokit.ReposMergeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This will trigger a [ping event](https://developer.github.com/webhooks/#ping-event) to be sent to the hook.
     */
    pingHook: {
      (params?: Octokit.RequestOptions & Octokit.ReposPingHookParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    removeBranchProtection: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveBranchProtectionParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    removeCollaborator: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposRemoveCollaboratorParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    removeDeployKey: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposRemoveDeployKeyParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Removing admin enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
     */
    removeProtectedBranchAdminEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchAdminEnforcementParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Removes the ability of an app to push to this branch. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
     *
     * | Type    | Description                                                                                                                                                |
     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    removeProtectedBranchAppRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchAppRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposRemoveProtectedBranchAppRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    removeProtectedBranchPullRequestReviewEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchPullRequestReviewEnforcementParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * When authenticated with admin or owner permissions to the repository, you can use this endpoint to disable required signed commits on a branch. You must enable branch protection to require signed commits.
     */
    removeProtectedBranchRequiredSignatures: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchRequiredSignaturesParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    removeProtectedBranchRequiredStatusChecks: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    removeProtectedBranchRequiredStatusChecksContexts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksContextsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposRemoveProtectedBranchRequiredStatusChecksContextsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Disables the ability to restrict who can push to this branch.
     */
    removeProtectedBranchRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchRestrictionsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Removes the ability of a team to push to this branch. If you pass the `hellcat-preview` media type, you can include child teams.
     *
     * | Type    | Description                                                                                                                                         |
     * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | Teams that should no longer have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    removeProtectedBranchTeamRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchTeamRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposRemoveProtectedBranchTeamRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Removes the ability of a user to push to this branch.
     *
     * | Type    | Description                                                                                                                                   |
     * | ------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | Usernames of the people who should no longer have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    removeProtectedBranchUserRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRemoveProtectedBranchUserRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposRemoveProtectedBranchUserRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Replaces the list of apps that have push access to this branch. This removes all apps that previously had push access and grants push access to the new list of apps. Only installed GitHub Apps with `write` access to the `contents` permission can be added as authorized actors on a protected branch.
     *
     * | Type    | Description                                                                                                                                                |
     * | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | The GitHub Apps that have push access to this branch. Use the app's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    replaceProtectedBranchAppRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposReplaceProtectedBranchAppRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposReplaceProtectedBranchAppRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     */
    replaceProtectedBranchRequiredStatusChecksContexts: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposReplaceProtectedBranchRequiredStatusChecksContextsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposReplaceProtectedBranchRequiredStatusChecksContextsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Replaces the list of teams that have push access to this branch. This removes all teams that previously had push access and grants push access to the new list of teams. If you pass the `hellcat-preview` media type, you can include child teams.
     *
     * | Type    | Description                                                                                                                                |
     * | ------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
     * | `array` | The teams that can have push access. Use the team's `slug`. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    replaceProtectedBranchTeamRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposReplaceProtectedBranchTeamRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposReplaceProtectedBranchTeamRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Replaces the list of people that have push access to this branch. This removes all people that previously had push access and grants push access to the new list of people.
     *
     * | Type    | Description                                                                                                                   |
     * | ------- | ----------------------------------------------------------------------------------------------------------------------------- |
     * | `array` | Usernames for people who can have push access. **Note**: The list of users, apps, and teams in total is limited to 100 items. |
     */
    replaceProtectedBranchUserRestrictions: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposReplaceProtectedBranchUserRestrictionsParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposReplaceProtectedBranchUserRestrictionsResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };

    replaceTopics: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposReplaceTopicsParams
      ): Promise<Octokit.Response<Octokit.ReposReplaceTopicsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * You can request that your site be built from the latest revision on the default branch. This has the same effect as pushing a commit to your default branch, but does not require an additional commit. Manually triggering page builds can be helpful when diagnosing build warnings and failures.
     *
     * Build requests are limited to one concurrent build per repository and one concurrent build per requester. If you request a build while another is still in progress, the second request will be queued until the first completes.
     */
    requestPageBuild: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposRequestPageBuildParams
      ): Promise<Octokit.Response<Octokit.ReposRequestPageBuildResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint will return all community profile metrics, including an overall health score, repository description, the presence of documentation, detected code of conduct, detected license, and the presence of ISSUE\_TEMPLATE, PULL\_REQUEST\_TEMPLATE, README, and CONTRIBUTING files.
     */
    retrieveCommunityProfileMetrics: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposRetrieveCommunityProfileMetricsParams
      ): Promise<
        Octokit.Response<Octokit.ReposRetrieveCommunityProfileMetricsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This will trigger the hook with the latest push to the current repository if the hook is subscribed to `push` events. If the hook is not subscribed to `push` events, the server will respond with 204 but no test POST will be generated.
     *
     * **Note**: Previously `/repos/:owner/:repo/hooks/:hook_id/test`
     */
    testPushHook: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposTestPushHookParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * A transfer request will need to be accepted by the new owner when transferring a personal repository to another user. The response will contain the original `owner`, and the transfer will continue asynchronously. For more details on the requirements to transfer personal and organization-owned repositories, see [about repository transfers](https://help.github.com/articles/about-repository-transfers/).
     */
    transfer: {
      (params?: Octokit.RequestOptions & Octokit.ReposTransferParams): Promise<
        Octokit.Response<Octokit.ReposTransferResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: To edit a repository's topics, use the [`topics` endpoint](https://developer.github.com/v3/repos/#replace-all-topics-for-a-repository).
     */
    update: {
      (params?: Octokit.RequestOptions & Octokit.ReposUpdateParams): Promise<
        Octokit.Response<Octokit.ReposUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Protecting a branch requires admin or owner permissions to the repository.
     *
     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
     *
     * **Note**: The list of users, apps, and teams in total is limited to 100 items.
     */
    updateBranchProtection: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposUpdateBranchProtectionParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateBranchProtectionResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateCommitComment: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateCommitCommentParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateCommitCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new file or updates an existing file in a repository.
     * @deprecated octokit.repos.updateFile() has been renamed to octokit.repos.createOrUpdateFile() (2019-06-07)
     */
    updateFile: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateFileParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateFileResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateHook: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateHookParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateHookResponse>>;

      endpoint: Octokit.Endpoint;
    };

    updateInformationAboutPagesSite: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposUpdateInformationAboutPagesSiteParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    updateInvitation: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateInvitationParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateInvitationResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Updating pull request review enforcement requires admin or owner permissions to the repository and branch protection to be enabled.
     *
     * **Note**: Passing new arrays of `users` and `teams` replaces their previous values.
     */
    updateProtectedBranchPullRequestReviewEnforcement: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposUpdateProtectedBranchPullRequestReviewEnforcementParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposUpdateProtectedBranchPullRequestReviewEnforcementResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Protected branches are available in public repositories with GitHub Free, and in public and private repositories with GitHub Pro, GitHub Team, and GitHub Enterprise Cloud. For more information, see [GitHub's billing plans](https://help.github.com/articles/github-s-billing-plans) in the GitHub Help documentation.
     *
     * Updating required status checks requires admin or owner permissions to the repository and branch protection to be enabled.
     */
    updateProtectedBranchRequiredStatusChecks: {
      (
        params?: Octokit.RequestOptions &
          Octokit.ReposUpdateProtectedBranchRequiredStatusChecksParams
      ): Promise<
        Octokit.Response<
          Octokit.ReposUpdateProtectedBranchRequiredStatusChecksResponse
        >
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access to the repository can edit a release.
     */
    updateRelease: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateReleaseParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateReleaseResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Users with push access to the repository can edit a release asset.
     */
    updateReleaseAsset: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUpdateReleaseAssetParams
      ): Promise<Octokit.Response<Octokit.ReposUpdateReleaseAssetResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint makes use of [a Hypermedia relation](https://developer.github.com/v3/#hypermedia) to determine which URL to access. The endpoint you call to upload release assets is specific to your release. Use the `upload_url` returned in the response of the [Create a release endpoint](https://developer.github.com/v3/repos/releases/#create-a-release) to upload a release asset.
     *
     * You need to use an HTTP client which supports [SNI](http://en.wikipedia.org/wiki/Server_Name_Indication) to make calls to this endpoint.
     *
     * Most libraries will set the required `Content-Length` header automatically. Use the required `Content-Type` header to provide the media type of the asset. For a list of media types, see [Media Types](https://www.iana.org/assignments/media-types/media-types.xhtml). For example:
     *
     * `application/zip`
     *
     * GitHub expects the asset data in its raw binary form, rather than JSON. You will send the raw binary content of the asset as the request body. Everything else about the endpoint is the same as the rest of the API. For example, you'll still need to pass your authentication to be able to upload an asset.
     */
    uploadReleaseAsset: {
      (
        params?: Octokit.RequestOptions & Octokit.ReposUploadReleaseAssetParams
      ): Promise<Octokit.Response<Octokit.ReposUploadReleaseAssetResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
  search: {
    /**
     * Find file contents via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for code, you can get text match metadata for the file **content** and file **path** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * **Note:** You must [authenticate](https://developer.github.com/v3/#authentication) to search for code across all public repositories.
     *
     * **Considerations for code search**
     *
     * Due to the complexity of searching code, there are a few restrictions on how searches are performed:
     *
     * *   Only the _default branch_ is considered. In most cases, this will be the `master` branch.
     * *   Only files smaller than 384 KB are searchable.
     * *   You must always include at least one search term when searching source code. For example, searching for [`language:go`](https://github.com/search?utf8=%E2%9C%93&q=language%3Ago&type=Code) is not valid, while [`amazing language:go`](https://github.com/search?utf8=%E2%9C%93&q=amazing+language%3Ago&type=Code) is.
     *
     * Suppose you want to find the definition of the `addClass` function inside [jQuery](https://github.com/jquery/jquery). Your query would look something like this:
     *
     * Here, we're searching for the keyword `addClass` within a file's contents. We're making sure that we're only looking in files where the language is JavaScript. And we're scoping the search to the `repo:jquery/jquery` repository.
     */
    code: {
      (params?: Octokit.RequestOptions & Octokit.SearchCodeParams): Promise<
        Octokit.Response<Octokit.SearchCodeResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find commits via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for commits, you can get text match metadata for the **message** field when you provide the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * **Considerations for commit search**
     *
     * Only the _default branch_ is considered. In most cases, this will be the `master` branch.
     *
     * Suppose you want to find commits related to CSS in the [octocat/Spoon-Knife](https://github.com/octocat/Spoon-Knife) repository. Your query would look something like this:
     */
    commits: {
      (params?: Octokit.RequestOptions & Octokit.SearchCommitsParams): Promise<
        Octokit.Response<Octokit.SearchCommitsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find issues by state and keyword. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * Let's say you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
     *
     * In this query, we're searching for the keyword `windows`, within any open issue that's labeled as `bug`. The search runs across repositories whose primary language is Python. We’re sorting by creation date in ascending order, so that the oldest issues appear first in the search results.
     * @deprecated octokit.search.issues() has been renamed to octokit.search.issuesAndPullRequests() (2018-12-27)
     */
    issues: {
      (params?: Octokit.RequestOptions & Octokit.SearchIssuesParams): Promise<
        Octokit.Response<Octokit.SearchIssuesResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find issues by state and keyword. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for issues, you can get text match metadata for the issue **title**, issue **body**, and issue **comment body** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * Let's say you want to find the oldest unresolved Python bugs on Windows. Your query might look something like this.
     *
     * In this query, we're searching for the keyword `windows`, within any open issue that's labeled as `bug`. The search runs across repositories whose primary language is Python. We’re sorting by creation date in ascending order, so that the oldest issues appear first in the search results.
     */
    issuesAndPullRequests: {
      (
        params?: Octokit.RequestOptions &
          Octokit.SearchIssuesAndPullRequestsParams
      ): Promise<Octokit.Response<Octokit.SearchIssuesAndPullRequestsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find labels in a repository with names or descriptions that match search keywords. Returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for labels, you can get text match metadata for the label **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * Suppose you want to find labels in the `linguist` repository that match `bug`, `defect`, or `enhancement`. Your query might look like this:
     *
     * The labels that best match for the query appear first in the search results.
     */
    labels: {
      (params?: Octokit.RequestOptions & Octokit.SearchLabelsParams): Promise<
        Octokit.Response<Octokit.SearchLabelsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find repositories via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for repositories, you can get text match metadata for the **name** and **description** fields when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * Suppose you want to search for popular Tetris repositories written in Assembly. Your query might look like this.
     *
     * You can search for multiple topics by adding more `topic:` instances, and including the `mercy-preview` header. For example:
     *
     * In this request, we're searching for repositories with the word `tetris` in the name, the description, or the README. We're limiting the results to only find repositories where the primary language is Assembly. We're sorting by stars in descending order, so that the most popular repositories appear first in the search results.
     */
    repos: {
      (params?: Octokit.RequestOptions & Octokit.SearchReposParams): Promise<
        Octokit.Response<Octokit.SearchReposResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find topics via various criteria. Results are sorted by best match. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for topics, you can get text match metadata for the topic's **short\_description**, **description**, **name**, or **display\_name** field when you pass the `text-match` media type. For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * See "[Searching topics](https://help.github.com/articles/searching-topics/)" for a detailed list of qualifiers.
     *
     * Suppose you want to search for topics related to Ruby that are featured on [https://github.com/topics](https://github.com/topics). Your query might look like this:
     *
     * In this request, we're searching for topics with the keyword `ruby`, and we're limiting the results to find only topics that are featured. The topics that are the best match for the query appear first in the search results.
     *
     * **Note:** A search for featured Ruby topics only has 6 total results, so a [Link header](https://developer.github.com/v3/#link-header) indicating pagination is not included in the response.
     */
    topics: {
      (params?: Octokit.RequestOptions & Octokit.SearchTopicsParams): Promise<
        Octokit.Response<Octokit.SearchTopicsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Find users via various criteria. This method returns up to 100 results [per page](https://developer.github.com/v3/#pagination).
     *
     * When searching for users, you can get text match metadata for the issue **login**, **email**, and **name** fields when you pass the `text-match` media type. For more details about highlighting search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata). For more details about how to receive highlighted search results, see [Text match metadata](https://developer.github.com/v3/search/#text-match-metadata).
     *
     * Imagine you're looking for a list of popular users. You might try out this query:
     *
     * Here, we're looking at users with the name Tom. We're only interested in those with more than 42 repositories, and only if they have over 1,000 followers.
     */
    users: {
      (params?: Octokit.RequestOptions & Octokit.SearchUsersParams): Promise<
        Octokit.Response<Octokit.SearchUsersResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  teams: {
    /**
     * The "Add team member" API (described below) is deprecated.
     *
     * We recommend using the [Add team membership API](https://developer.github.com/v3/teams/members/#add-or-update-team-membership) instead. It allows you to invite new organization members to your teams.
     *
     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
     *
     * To add someone to a team, the authenticated user must be a team maintainer in the team they're changing or be an owner of the organization that the team is associated with. The person being added to the team must be a member of the team's organization.
     *
     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
     *
     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
     * @deprecated octokit.teams.addMember() is deprecated, see https://developer.github.com/v3/teams/members/#add-team-member
     */
    addMember: {
      (params?: Octokit.RequestOptions & Octokit.TeamsAddMemberParams): Promise<
        Octokit.Response<Octokit.TeamsAddMemberResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
     *
     * If the user is already a member of the team's organization, this endpoint will add the user to the team. To add a membership between an organization member and a team, the authenticated user must be an organization owner or a maintainer of the team.
     *
     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
     *
     * If the user is unaffiliated with the team's organization, this endpoint will send an invitation to the user via email. This newly-created membership will be in the "pending" state until the user accepts the invitation, at which point the membership will transition to the "active" state and the user will be added as a member of the team. To add a membership between an unaffiliated user and a team, the authenticated user must be an organization owner.
     *
     * If the user is already a member of the team, this endpoint will update the role of the team member's role. To update the membership of a team member, the authenticated user must be an organization owner or a maintainer of the team.
     */
    addOrUpdateMembership: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsAddOrUpdateMembershipParams
      ): Promise<Octokit.Response<Octokit.TeamsAddOrUpdateMembershipResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Adds an organization project to a team. To add a project to a team or update the team's permission on a project, the authenticated user must have `admin` permissions for the project. The project and team must be part of the same organization.
     */
    addOrUpdateProject: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsAddOrUpdateProjectParams
      ): Promise<Octokit.Response<Octokit.TeamsAddOrUpdateProjectResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * 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.
     *
     * If you pass the `hellcat-preview` media type, you can modify repository permissions of child teams.
     *
     * 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 verbs](https://developer.github.com/v3/#http-verbs)."
     */
    addOrUpdateRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsAddOrUpdateRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: If you pass the `hellcat-preview` media type, repositories inherited through a parent team will 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://developer.github.com/v3/media/) via the `Accept` header:
     */
    checkManagesRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsCheckManagesRepoParams
      ): Promise<Octokit.Response<Octokit.TeamsCheckManagesRepoResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * 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://help.github.com/en/articles/setting-team-creation-permissions-in-your-organization)."
     */
    create: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsCreateParamsDeprecatedPermission
      ): Promise<Octokit.Response<Octokit.TeamsCreateResponse>>;
      (params?: Octokit.RequestOptions & Octokit.TeamsCreateParams): Promise<
        Octokit.Response<Octokit.TeamsCreateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new discussion post on a team's page. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createDiscussion: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsCreateDiscussionParams
      ): Promise<Octokit.Response<Octokit.TeamsCreateDiscussionResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Creates a new comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     *
     * This endpoint triggers [notifications](https://help.github.com/articles/about-notifications/). Creating content too quickly using this endpoint may result in abuse rate limiting. See "[Abuse rate limits](https://developer.github.com/v3/#abuse-rate-limits)" and "[Dealing with abuse rate limits](https://developer.github.com/v3/guides/best-practices-for-integrators/#dealing-with-abuse-rate-limits)" for details.
     */
    createDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsCreateDiscussionCommentParams
      ): Promise<
        Octokit.Response<Octokit.TeamsCreateDiscussionCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * To delete a team, the authenticated user must be a team maintainer or an owner of the org associated with the team.
     *
     * If you are an organization owner and you pass the `hellcat-preview` media type, deleting a parent team will delete all of its child teams as well.
     */
    delete: {
      (params?: Octokit.RequestOptions & Octokit.TeamsDeleteParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Delete a discussion from a team's page. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    deleteDiscussion: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsDeleteDiscussionParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Deletes a comment on a team discussion. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    deleteDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsDeleteDiscussionCommentParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    get: {
      (params?: Octokit.RequestOptions & Octokit.TeamsGetParams): Promise<
        Octokit.Response<Octokit.TeamsGetResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Gets a team using the team's `slug`. GitHub generates the `slug` from the team `name`.
     */
    getByName: {
      (params?: Octokit.RequestOptions & Octokit.TeamsGetByNameParams): Promise<
        Octokit.Response<Octokit.TeamsGetByNameResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get a specific discussion on a team's page. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    getDiscussion: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsGetDiscussionParams
      ): Promise<Octokit.Response<Octokit.TeamsGetDiscussionResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Get a specific comment on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    getDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsGetDiscussionCommentParams
      ): Promise<Octokit.Response<Octokit.TeamsGetDiscussionCommentResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The "Get team member" API (described below) is deprecated.
     *
     * We recommend using the [Get team membership API](https://developer.github.com/v3/teams/members/#get-team-membership) instead. It allows you to get both active and pending memberships.
     *
     * To list members in a team, the team must be visible to the authenticated user.
     * @deprecated octokit.teams.getMember() is deprecated, see https://developer.github.com/v3/teams/members/#get-team-member
     */
    getMember: {
      (params?: Octokit.RequestOptions & Octokit.TeamsGetMemberParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
     *
     * To get a user's membership with a team, the team must be visible to the authenticated user.
     *
     * **Note:** The `role` for organization owners returns as `maintainer`. For more information about `maintainer` roles, see [Create team](https://developer.github.com/v3/teams#create-team).
     */
    getMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsGetMembershipParams
      ): Promise<Octokit.Response<Octokit.TeamsGetMembershipResponse>>;

      endpoint: Octokit.Endpoint;
    };

    list: {
      (params?: Octokit.RequestOptions & Octokit.TeamsListParams): Promise<
        Octokit.Response<Octokit.TeamsListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * At this time, the `hellcat-preview` media type is required to use this endpoint.
     */
    listChild: {
      (params?: Octokit.RequestOptions & Octokit.TeamsListChildParams): Promise<
        Octokit.Response<Octokit.TeamsListChildResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all comments on a team discussion. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listDiscussionComments: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsListDiscussionCommentsParams
      ): Promise<Octokit.Response<Octokit.TeamsListDiscussionCommentsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all discussions on a team's page. OAuth access tokens require the `read:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listDiscussions: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsListDiscussionsParams
      ): Promise<Octokit.Response<Octokit.TeamsListDiscussionsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List all of the teams across all of the organizations to which the authenticated user belongs. This method requires `user`, `repo`, or `read:org` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/) when authenticating via [OAuth](https://developer.github.com/apps/building-oauth-apps/).
     */
    listForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsListForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.TeamsListForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If you pass the `hellcat-preview` media type, team members will include the members of child teams.
     */
    listMembers: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsListMembersParams
      ): Promise<Octokit.Response<Octokit.TeamsListMembersResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The return hash contains a `role` field which refers to the Organization Invitation role and will be one of the following values: `direct_member`, `admin`, `billing_manager`, `hiring_manager`, or `reinstate`. If the invitee is not a GitHub member, the `login` field in the return hash will be `null`.
     */
    listPendingInvitations: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsListPendingInvitationsParams
      ): Promise<Octokit.Response<Octokit.TeamsListPendingInvitationsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the organization projects for a team. If you pass the `hellcat-preview` media type, the response will include projects inherited from a parent team.
     */
    listProjects: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsListProjectsParams
      ): Promise<Octokit.Response<Octokit.TeamsListProjectsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note**: If you pass the `hellcat-preview` media type, the response will include any repositories inherited through a parent team.
     */
    listRepos: {
      (params?: Octokit.RequestOptions & Octokit.TeamsListReposParams): Promise<
        Octokit.Response<Octokit.TeamsListReposResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * The "Remove team member" API (described below) is deprecated.
     *
     * We recommend using the [Remove team membership endpoint](https://developer.github.com/v3/teams/members/#remove-team-membership) instead. It allows you to remove both active and pending memberships.
     *
     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
     *
     * To remove a team member, the authenticated user must have 'admin' permissions to the team or be an owner of the org that the team is associated with. Removing a team member does not delete the user, it just removes them from the team.
     *
     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
     * @deprecated octokit.teams.removeMember() is deprecated, see https://developer.github.com/v3/teams/members/#remove-team-member
     */
    removeMember: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsRemoveMemberParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Team synchronization is available for organizations using GitHub Enterprise Cloud. For more information, see [GitHub's products](https://help.github.com/articles/github-s-products) in the GitHub Help documentation.
     *
     * To remove a membership between a user and a team, the authenticated user must have 'admin' permissions to the team or be an owner of the organization that the team is associated with. Removing team membership does not delete the user, it just removes their membership from the team.
     *
     * **Note:** When you have team synchronization set up for a team with your organization's identity provider (IdP), you will see an error if you attempt to use the API for making changes to the team's membership. If you have access to manage group membership in your IdP, you can manage GitHub team membership through your identity provider, which automatically adds and removes team members in an organization. For more information, see "[Synchronizing teams between your identity provider and GitHub](https://help.github.com/articles/synchronizing-teams-between-your-identity-provider-and-github/)."
     */
    removeMembership: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsRemoveMembershipParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes an organization project from a team. An organization owner or a team maintainer can remove any project from the team. To remove a project from a team as an organization member, the authenticated user must have `read` access to both the team and project, or `admin` access to the team or project. **Note:** This endpoint removes the project from the team, but does not delete it.
     */
    removeProject: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsRemoveProjectParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * 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. NOTE: This does not delete the repository, it just removes it from the team.
     */
    removeRepo: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsRemoveRepoParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Checks whether a team has `read`, `write`, or `admin` permissions for an organization project. If you pass the `hellcat-preview` media type, the response will include projects inherited from a parent team.
     */
    reviewProject: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsReviewProjectParams
      ): Promise<Octokit.Response<Octokit.TeamsReviewProjectResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * To edit a team, the authenticated user must either be an owner of the org that the team is associated with, or a maintainer of the team.
     *
     * **Note:** With nested teams, the `privacy` for parent teams cannot be `secret`.
     */
    update: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsUpdateParamsDeprecatedPermission
      ): Promise<Octokit.Response<Octokit.TeamsUpdateResponse>>;
      (params?: Octokit.RequestOptions & Octokit.TeamsUpdateParams): Promise<
        Octokit.Response<Octokit.TeamsUpdateResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Edits the title and body text of a discussion post. Only the parameters you provide are updated. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    updateDiscussion: {
      (
        params?: Octokit.RequestOptions & Octokit.TeamsUpdateDiscussionParams
      ): Promise<Octokit.Response<Octokit.TeamsUpdateDiscussionResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Edits the body text of a discussion comment. OAuth access tokens require the `write:discussion` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    updateDiscussionComment: {
      (
        params?: Octokit.RequestOptions &
          Octokit.TeamsUpdateDiscussionCommentParams
      ): Promise<
        Octokit.Response<Octokit.TeamsUpdateDiscussionCommentResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
  };
  users: {
    /**
     * This endpoint is accessible with the `user` scope.
     */
    addEmails: {
      (params?: Octokit.RequestOptions & Octokit.UsersAddEmailsParams): Promise<
        Octokit.Response<Octokit.UsersAddEmailsResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    block: {
      (params?: Octokit.RequestOptions & Octokit.UsersBlockParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * If the user is blocked:
     *
     * If the user is not blocked:
     */
    checkBlocked: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersCheckBlockedParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    checkFollowing: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersCheckFollowingParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };

    checkFollowingForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersCheckFollowingForUserParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Adds a GPG key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    createGpgKey: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersCreateGpgKeyParams
      ): Promise<Octokit.Response<Octokit.UsersCreateGpgKeyResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Adds a public SSH key to the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth, or OAuth with at least `write:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    createPublicKey: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersCreatePublicKeyParams
      ): Promise<Octokit.Response<Octokit.UsersCreatePublicKeyResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * This endpoint is accessible with the `user` scope.
     */
    deleteEmails: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersDeleteEmailsParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes a GPG key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    deleteGpgKey: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersDeleteGpgKeyParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Removes a public SSH key from the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `admin:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    deletePublicKey: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersDeletePublicKeyParams
      ): Promise<Octokit.AnyResponse>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Note that you'll need to set `Content-Length` to zero when calling out to this endpoint. For more information, see "[HTTP verbs](https://developer.github.com/v3/#http-verbs)."
     *
     * Following a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
     */
    follow: {
      (params?: Octokit.RequestOptions & Octokit.UsersFollowParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists public and private profile information when authenticated through basic auth or OAuth with the `user` scope.
     *
     * Lists public profile information when authenticated through OAuth without the `user` scope.
     */
    getAuthenticated: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.UsersGetAuthenticatedResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Provides publicly available information about someone with a GitHub account.
     *
     * GitHub Apps with the `Plan` user permission can use this endpoint to retrieve information about a user's GitHub plan. The GitHub App must be authenticated as a user. See "[Identifying and authorizing users for GitHub Apps](https://developer.github.com/apps/building-github-apps/identifying-and-authorizing-users-for-github-apps/)" for details about authentication. For an example response, see "[Response with GitHub plan information](https://developer.github.com/v3/users/#response-with-github-plan-information)."
     *
     * The `email` key in the following response is the publicly visible email address from your GitHub [profile page](https://github.com/settings/profile). When setting up your profile, you can select a primary email address to be “public” which provides an email entry for this endpoint. If you do not set a public email address for `email`, then it will have a value of `null`. You only see publicly visible email addresses when authenticated with GitHub. For more information, see [Authentication](https://developer.github.com/v3/#authentication).
     *
     * The Emails API enables you to list all of your email addresses, and toggle a primary email to be visible publicly. For more information, see "[Emails API](https://developer.github.com/v3/users/emails/)".
     */
    getByUsername: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersGetByUsernameParams
      ): Promise<Octokit.Response<Octokit.UsersGetByUsernameResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Provides hovercard information when authenticated through basic auth or OAuth with the `repo` scope. You can find out more about someone in relation to their pull requests, issues, repositories, and organizations.
     *
     * The `subject_type` and `subject_id` parameters provide context for the person's hovercard, which returns more information than without the parameters. For example, if you wanted to find out more about `octocat` who owns the `Spoon-Knife` repository via cURL, it would look like this:
     */
    getContextForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersGetContextForUserParams
      ): Promise<Octokit.Response<Octokit.UsersGetContextForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * View extended details for a single GPG key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    getGpgKey: {
      (params?: Octokit.RequestOptions & Octokit.UsersGetGpgKeyParams): Promise<
        Octokit.Response<Octokit.UsersGetGpgKeyResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * View extended details for a single public SSH key. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    getPublicKey: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersGetPublicKeyParams
      ): Promise<Octokit.Response<Octokit.UsersGetPublicKeyResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all users, in the order that they signed up on GitHub. This list includes personal user accounts and organization accounts.
     *
     * Note: Pagination is powered exclusively by the `since` parameter. Use the [Link header](https://developer.github.com/v3/#link-header) to get the URL for the next page of users.
     */
    list: {
      (params?: Octokit.RequestOptions & Octokit.UsersListParams): Promise<
        Octokit.Response<Octokit.UsersListResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * List the users you've blocked on your personal account.
     */
    listBlocked: {
      (params?: Octokit.RequestOptions & Octokit.EmptyParams): Promise<
        Octokit.Response<Octokit.UsersListBlockedResponse>
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists all of your email addresses, and specifies which one is visible to the public. This endpoint is accessible with the `user:email` scope.
     */
    listEmails: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersListEmailsParams
      ): Promise<Octokit.Response<Octokit.UsersListEmailsResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listFollowersForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersListFollowersForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.UsersListFollowersForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listFollowersForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersListFollowersForUserParams
      ): Promise<Octokit.Response<Octokit.UsersListFollowersForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };

    listFollowingForAuthenticatedUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersListFollowingForAuthenticatedUserParams
      ): Promise<
        Octokit.Response<Octokit.UsersListFollowingForAuthenticatedUserResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    listFollowingForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersListFollowingForUserParams
      ): Promise<Octokit.Response<Octokit.UsersListFollowingForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the current user's GPG keys. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:gpg_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listGpgKeys: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersListGpgKeysParams
      ): Promise<Octokit.Response<Octokit.UsersListGpgKeysResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the GPG keys for a user. This information is accessible by anyone.
     */
    listGpgKeysForUser: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersListGpgKeysForUserParams
      ): Promise<Octokit.Response<Octokit.UsersListGpgKeysForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists your publicly visible email address, which you can set with the [Toggle primary email visibility](https://developer.github.com/v3/users/emails/#toggle-primary-email-visibility) endpoint. This endpoint is accessible with the `user:email` scope.
     */
    listPublicEmails: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersListPublicEmailsParams
      ): Promise<Octokit.Response<Octokit.UsersListPublicEmailsResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the public SSH keys for the authenticated user's GitHub account. Requires that you are authenticated via Basic Auth or via OAuth with at least `read:public_key` [scope](https://developer.github.com/apps/building-oauth-apps/understanding-scopes-for-oauth-apps/).
     */
    listPublicKeys: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersListPublicKeysParams
      ): Promise<Octokit.Response<Octokit.UsersListPublicKeysResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Lists the _verified_ public SSH keys for a user. This is accessible by anyone.
     */
    listPublicKeysForUser: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersListPublicKeysForUserParams
      ): Promise<Octokit.Response<Octokit.UsersListPublicKeysForUserResponse>>;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Sets the visibility for your primary email addresses.
     */
    togglePrimaryEmailVisibility: {
      (
        params?: Octokit.RequestOptions &
          Octokit.UsersTogglePrimaryEmailVisibilityParams
      ): Promise<
        Octokit.Response<Octokit.UsersTogglePrimaryEmailVisibilityResponse>
      >;

      endpoint: Octokit.Endpoint;
    };

    unblock: {
      (params?: Octokit.RequestOptions & Octokit.UsersUnblockParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * Unfollowing a user requires the user to be logged in and authenticated with basic auth or OAuth with the `user:follow` scope.
     */
    unfollow: {
      (params?: Octokit.RequestOptions & Octokit.UsersUnfollowParams): Promise<
        Octokit.AnyResponse
      >;

      endpoint: Octokit.Endpoint;
    };
    /**
     * **Note:** If your email is set to private and you send an `email` parameter as part of this request to update your profile, your privacy settings are still enforced: the email address will not be displayed on your public profile or via the API.
     */
    updateAuthenticated: {
      (
        params?: Octokit.RequestOptions & Octokit.UsersUpdateAuthenticatedParams
      ): Promise<Octokit.Response<Octokit.UsersUpdateAuthenticatedResponse>>;

      endpoint: Octokit.Endpoint;
    };
  };
}

export = Octokit;
