import { APIResource } from "../../core/resource.mjs";
import { APIPromise } from "../../core/api-promise.mjs";
import { RequestOptions } from "../../internal/request-options.mjs";
export declare class BaseDownloads extends APIResource {
    static readonly _key: readonly ['stream', 'downloads'];
    /**
     * Creates a download for a video when a video is ready to view. Use
     * `/downloads/{download_type}` instead for type-specific downloads. Available
     * types are `default` and `audio`.
     *
     * @example
     * ```ts
     * const download = await client.stream.downloads.create(
     *   'ea95132c15732412d22c1476fa83f27a',
     *   { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    create(identifier: string, params: DownloadCreateParams, options?: RequestOptions): APIPromise<DownloadCreateResponse>;
    /**
     * Delete the downloads for a video. Use `/downloads/{download_type}` instead for
     * type-specific downloads. Available types are `default` and `audio`.
     *
     * @example
     * ```ts
     * const download = await client.stream.downloads.delete(
     *   'ea95132c15732412d22c1476fa83f27a',
     *   { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    delete(identifier: string, params: DownloadDeleteParams, options?: RequestOptions): APIPromise<DownloadDeleteResponse>;
    /**
     * Lists the downloads created for a video.
     *
     * @example
     * ```ts
     * const download = await client.stream.downloads.get(
     *   'ea95132c15732412d22c1476fa83f27a',
     *   { account_id: '023e105f4ecef8ad9ca31a8372d0c353' },
     * );
     * ```
     */
    get(identifier: string, params: DownloadGetParams, options?: RequestOptions): APIPromise<DownloadGetResponse>;
}
export declare class Downloads extends BaseDownloads {
}
/**
 * An object with download type keys. Each key is optional and only present if that
 * download type has been created.
 */
export interface DownloadCreateResponse {
    /**
     * The audio-only download. Only present if this download type has been created.
     */
    audio?: DownloadCreateResponse.Audio;
    /**
     * The default video download. Only present if this download type has been created.
     */
    default?: DownloadCreateResponse.Default;
}
export declare namespace DownloadCreateResponse {
    /**
     * The audio-only download. Only present if this download type has been created.
     */
    interface Audio {
        /**
         * Indicates the progress as a percentage between 0 and 100.
         */
        percentComplete: number;
        /**
         * The status of a generated download.
         */
        status: 'ready' | 'inprogress' | 'error';
        /**
         * The URL to access the generated download.
         */
        url?: string;
    }
    /**
     * The default video download. Only present if this download type has been created.
     */
    interface Default {
        /**
         * Indicates the progress as a percentage between 0 and 100.
         */
        percentComplete: number;
        /**
         * The status of a generated download.
         */
        status: 'ready' | 'inprogress' | 'error';
        /**
         * The URL to access the generated download.
         */
        url?: string;
    }
}
export type DownloadDeleteResponse = string;
/**
 * An object with download type keys. Each key is optional and only present if that
 * download type has been created.
 */
export interface DownloadGetResponse {
    /**
     * The audio-only download. Only present if this download type has been created.
     */
    audio?: DownloadGetResponse.Audio;
    /**
     * The default video download. Only present if this download type has been created.
     */
    default?: DownloadGetResponse.Default;
}
export declare namespace DownloadGetResponse {
    /**
     * The audio-only download. Only present if this download type has been created.
     */
    interface Audio {
        /**
         * Indicates the progress as a percentage between 0 and 100.
         */
        percentComplete: number;
        /**
         * The status of a generated download.
         */
        status: 'ready' | 'inprogress' | 'error';
        /**
         * The URL to access the generated download.
         */
        url?: string;
    }
    /**
     * The default video download. Only present if this download type has been created.
     */
    interface Default {
        /**
         * Indicates the progress as a percentage between 0 and 100.
         */
        percentComplete: number;
        /**
         * The status of a generated download.
         */
        status: 'ready' | 'inprogress' | 'error';
        /**
         * The URL to access the generated download.
         */
        url?: string;
    }
}
export interface DownloadCreateParams {
    /**
     * Identifier.
     */
    account_id: string;
}
export interface DownloadDeleteParams {
    /**
     * Identifier.
     */
    account_id: string;
}
export interface DownloadGetParams {
    /**
     * Identifier.
     */
    account_id: string;
}
export declare namespace Downloads {
    export { type DownloadCreateResponse as DownloadCreateResponse, type DownloadDeleteResponse as DownloadDeleteResponse, type DownloadGetResponse as DownloadGetResponse, type DownloadCreateParams as DownloadCreateParams, type DownloadDeleteParams as DownloadDeleteParams, type DownloadGetParams as DownloadGetParams, };
}
//# sourceMappingURL=downloads.d.mts.map