import * as pulumi from "@pulumi/pulumi";
import { input as inputs, output as outputs } from "../types";
/**
 * Manages a recording template within HuaweiCloud Live.
 *
 * ## Example Usage
 * ### Create a recording template for an ingest domain name
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as pulumi from "@huaweicloudos/pulumi";
 *
 * const config = new pulumi.Config();
 * const ingestDomainName = config.requireObject("ingestDomainName");
 * const bucketRegion = config.requireObject("bucketRegion");
 * const bucketName = config.requireObject("bucketName");
 * const ingestDomain = new huaweicloud.live.Domain("ingestDomain", {type: "push"});
 * const recording = new huaweicloud.live.Recording("recording", {
 *     domainName: ingestDomain.name,
 *     appName: "live",
 *     streamName: "stream_name",
 *     type: "CONTINUOUS_RECORD",
 *     obs: {
 *         region: bucketRegion,
 *         bucket: bucketName,
 *     },
 *     hls: {
 *         recordingLength: 15,
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Recording templates can be imported using the `id`, e.g. bash
 *
 * ```sh
 *  $ pulumi import huaweicloud:Live/recording:Recording test <id>
 * ```
 */
export declare class Recording extends pulumi.CustomResource {
    /**
     * Get an existing Recording resource's state with the given name, ID, and optional extra
     * properties used to qualify the lookup.
     *
     * @param name The _unique_ name of the resulting resource.
     * @param id The _unique_ provider ID of the resource to lookup.
     * @param state Any extra arguments used during the lookup.
     * @param opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, state?: RecordingState, opts?: pulumi.CustomResourceOptions): Recording;
    /**
     * Returns true if the given object is an instance of Recording.  This is designed to work even
     * when multiple copies of the Pulumi SDK have been loaded into the same process.
     */
    static isInstance(obj: any): obj is Recording;
    /**
     * Specifies the application name. To match all names, use an asterisk (*).
     */
    readonly appName: pulumi.Output<string>;
    /**
     * Specifies the ingest domain name.
     */
    readonly domainName: pulumi.Output<string>;
    /**
     * Specifies the FLV configuration rule for storing recording as FLV.
     * The flv structure is documented below.
     */
    readonly flv: pulumi.Output<outputs.Live.RecordingFlv | undefined>;
    /**
     * Specifies the HLS configuration rule for storing recording as HLS.
     * The hls structure is documented below.
     */
    readonly hls: pulumi.Output<outputs.Live.RecordingHls | undefined>;
    /**
     * Specifies the MP4 configuration rule for storing recording as MP4.
     * The mp4 structure is documented below.
     */
    readonly mp4: pulumi.Output<outputs.Live.RecordingMp4 | undefined>;
    /**
     * Specifies the obs for storing recordings.
     * The obs structure is documented below.
     */
    readonly obs: pulumi.Output<outputs.Live.RecordingObs>;
    /**
     * Specifies the region of OBS.
     */
    readonly region: pulumi.Output<string>;
    /**
     * Specifies the stream name. To match all names, use an asterisk (*).
     */
    readonly streamName: pulumi.Output<string>;
    /**
     * Specifies the types of recording notifications. The options are as follows:
     * + **CONTINUOUS_RECORD**: continuous recording. Recording is triggered once streams are pushed to the recording system.
     * + **COMMAND_RECORD**: command-based recording. Tenants need to run commands to start and stop recording after streams
     * are pushed to the recording system.
     */
    readonly type: pulumi.Output<string>;
    /**
     * Create a Recording resource with the given unique name, arguments, and options.
     *
     * @param name The _unique_ name of the resource.
     * @param args The arguments to use to populate this resource's properties.
     * @param opts A bag of options that control this resource's behavior.
     */
    constructor(name: string, args: RecordingArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Recording resources.
 */
export interface RecordingState {
    /**
     * Specifies the application name. To match all names, use an asterisk (*).
     */
    appName?: pulumi.Input<string>;
    /**
     * Specifies the ingest domain name.
     */
    domainName?: pulumi.Input<string>;
    /**
     * Specifies the FLV configuration rule for storing recording as FLV.
     * The flv structure is documented below.
     */
    flv?: pulumi.Input<inputs.Live.RecordingFlv>;
    /**
     * Specifies the HLS configuration rule for storing recording as HLS.
     * The hls structure is documented below.
     */
    hls?: pulumi.Input<inputs.Live.RecordingHls>;
    /**
     * Specifies the MP4 configuration rule for storing recording as MP4.
     * The mp4 structure is documented below.
     */
    mp4?: pulumi.Input<inputs.Live.RecordingMp4>;
    /**
     * Specifies the obs for storing recordings.
     * The obs structure is documented below.
     */
    obs?: pulumi.Input<inputs.Live.RecordingObs>;
    /**
     * Specifies the region of OBS.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the stream name. To match all names, use an asterisk (*).
     */
    streamName?: pulumi.Input<string>;
    /**
     * Specifies the types of recording notifications. The options are as follows:
     * + **CONTINUOUS_RECORD**: continuous recording. Recording is triggered once streams are pushed to the recording system.
     * + **COMMAND_RECORD**: command-based recording. Tenants need to run commands to start and stop recording after streams
     * are pushed to the recording system.
     */
    type?: pulumi.Input<string>;
}
/**
 * The set of arguments for constructing a Recording resource.
 */
export interface RecordingArgs {
    /**
     * Specifies the application name. To match all names, use an asterisk (*).
     */
    appName: pulumi.Input<string>;
    /**
     * Specifies the ingest domain name.
     */
    domainName: pulumi.Input<string>;
    /**
     * Specifies the FLV configuration rule for storing recording as FLV.
     * The flv structure is documented below.
     */
    flv?: pulumi.Input<inputs.Live.RecordingFlv>;
    /**
     * Specifies the HLS configuration rule for storing recording as HLS.
     * The hls structure is documented below.
     */
    hls?: pulumi.Input<inputs.Live.RecordingHls>;
    /**
     * Specifies the MP4 configuration rule for storing recording as MP4.
     * The mp4 structure is documented below.
     */
    mp4?: pulumi.Input<inputs.Live.RecordingMp4>;
    /**
     * Specifies the obs for storing recordings.
     * The obs structure is documented below.
     */
    obs: pulumi.Input<inputs.Live.RecordingObs>;
    /**
     * Specifies the region of OBS.
     */
    region?: pulumi.Input<string>;
    /**
     * Specifies the stream name. To match all names, use an asterisk (*).
     */
    streamName: pulumi.Input<string>;
    /**
     * Specifies the types of recording notifications. The options are as follows:
     * + **CONTINUOUS_RECORD**: continuous recording. Recording is triggered once streams are pushed to the recording system.
     * + **COMMAND_RECORD**: command-based recording. Tenants need to run commands to start and stop recording after streams
     * are pushed to the recording system.
     */
    type?: pulumi.Input<string>;
}
