import * as pulumi from "@pulumi/pulumi";
import * as outputs from "./types/output";
/**
 * Use this data source to retrieve information about a GitHub release in a specific repository.
 *
 * ## Example Usage
 *
 * To retrieve the latest release that is present in a repository:
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as github from "@pulumi/github";
 *
 * const example = github.getRelease({
 *     repository: "example-repository",
 *     owner: "example-owner",
 *     retrieveBy: "latest",
 * });
 * ```
 *
 * To retrieve a specific release from a repository based on it's ID:
 */
export declare function getRelease(args: GetReleaseArgs, opts?: pulumi.InvokeOptions): Promise<GetReleaseResult>;
/**
 * A collection of arguments for invoking getRelease.
 */
export interface GetReleaseArgs {
    /**
     * Owner of the repository.
     */
    owner: string;
    /**
     * ID of the release to retrieve. Must be specified when `retrieveBy` = `id`.
     */
    releaseId?: number;
    /**
     * Tag of the release to retrieve. Must be specified when `retrieveBy` = `tag`.
     */
    releaseTag?: string;
    /**
     * Name of the repository to retrieve the release from.
     */
    repository: string;
    /**
     * Describes how to fetch the release. Valid values are `id`, `tag`, `latest`.
     */
    retrieveBy: string;
}
/**
 * A collection of values returned by getRelease.
 */
export interface GetReleaseResult {
    /**
     * **Deprecated**: Use `assetsUrl` resource instead
     *
     * @deprecated use assetsUrl instead
     */
    readonly assertsUrl: string;
    /**
     * Collection of assets for the release. Each asset conforms to the following schema:
     */
    readonly assets: outputs.GetReleaseAsset[];
    /**
     * URL of any associated assets with the release
     */
    readonly assetsUrl: string;
    /**
     * Contents of the description (body) of a release
     */
    readonly body: string;
    /**
     * Date the asset was created
     */
    readonly createdAt: string;
    /**
     * (`Boolean`) indicates whether the release is a draft
     */
    readonly draft: boolean;
    /**
     * URL directing to detailed information on the release
     */
    readonly htmlUrl: string;
    /**
     * The provider-assigned unique ID for this managed resource.
     */
    readonly id: string;
    /**
     * The file name of the asset
     */
    readonly name: string;
    readonly owner: string;
    /**
     * (`Boolean`) indicates whether the release is a prerelease
     */
    readonly prerelease: boolean;
    /**
     * Date of release publishing
     */
    readonly publishedAt: string;
    /**
     * ID of release
     */
    readonly releaseId?: number;
    /**
     * Tag of release
     */
    readonly releaseTag?: string;
    readonly repository: string;
    readonly retrieveBy: string;
    /**
     * Download URL of a specific release in `tar.gz` format
     */
    readonly tarballUrl: string;
    /**
     * Commitish value that determines where the Git release is created from
     */
    readonly targetCommitish: string;
    /**
     * URL that can be used to upload Assets to the release
     */
    readonly uploadUrl: string;
    /**
     * URL of the asset
     */
    readonly url: string;
    /**
     * Download URL of a specific release in `zip` format
     */
    readonly zipballUrl: string;
}
/**
 * Use this data source to retrieve information about a GitHub release in a specific repository.
 *
 * ## Example Usage
 *
 * To retrieve the latest release that is present in a repository:
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as github from "@pulumi/github";
 *
 * const example = github.getRelease({
 *     repository: "example-repository",
 *     owner: "example-owner",
 *     retrieveBy: "latest",
 * });
 * ```
 *
 * To retrieve a specific release from a repository based on it's ID:
 */
export declare function getReleaseOutput(args: GetReleaseOutputArgs, opts?: pulumi.InvokeOutputOptions): pulumi.Output<GetReleaseResult>;
/**
 * A collection of arguments for invoking getRelease.
 */
export interface GetReleaseOutputArgs {
    /**
     * Owner of the repository.
     */
    owner: pulumi.Input<string>;
    /**
     * ID of the release to retrieve. Must be specified when `retrieveBy` = `id`.
     */
    releaseId?: pulumi.Input<number>;
    /**
     * Tag of the release to retrieve. Must be specified when `retrieveBy` = `tag`.
     */
    releaseTag?: pulumi.Input<string>;
    /**
     * Name of the repository to retrieve the release from.
     */
    repository: pulumi.Input<string>;
    /**
     * Describes how to fetch the release. Valid values are `id`, `tag`, `latest`.
     */
    retrieveBy: pulumi.Input<string>;
}