/**
 * GitHub Releases schema
 *
 * @see https://docs.github.com/en/rest/releases/releases
 */
interface GitHubRelease {
    assets: GitHubAsset[];
    author: GitHubUser;
    body: string;
    created_at: string;
    id: number;
    draft: boolean;
    prelease: boolean;
    name: string;
    published_at: string;
    tag_name: string;
    tarball_url: string;
    target_commitish: string;
    html_url: string;
    upload_url: string;
    url: string;
    zipball_url: string;
}
interface GitHubAsset {
    id: number;
}
interface GitHubUser {
    id: number;
    login: string;
}
/**
 * Changelog generator
 */
declare type Generator = (release: GitHubRelease) => Promise<string>;
/**
 * Github releases fetcher
 */
declare type Fetcher = (tag: string) => Promise<GitHubRelease>;
/**
 * Fetcher options
 */
interface FetcherOptions {
    /**
     * GitHub info, format: `owner/repo`
     */
    github?: string;
    /**
     * GitHub Token
     */
    token?: string;
}
interface Plugin {
    fetcher?: Fetcher;
    generator?: Generator;
}

export { Fetcher, FetcherOptions, Generator, GitHubAsset, GitHubRelease, GitHubUser, Plugin };
