import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Stream Pool resource in Oracle Cloud Infrastructure Streaming service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/streaming
 *
 * Starts the provisioning of a new stream pool.
 * To track the progress of the provisioning, you can periodically call GetStreamPool.
 * In the response, the `lifecycleState` parameter of the object tells you its current state.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testStreamPool = new oci.streaming.StreamPool("test_stream_pool", {
 *     compartmentId: compartmentId,
 *     name: streamPoolName,
 *     customEncryptionKey: {
 *         kmsKeyId: testKey.id,
 *     },
 *     definedTags: streamPoolDefinedTags,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     kafkaSettings: {
 *         autoCreateTopicsEnable: streamPoolKafkaSettingsAutoCreateTopicsEnable === "true",
 *         bootstrapServers: streamPoolKafkaSettingsBootstrapServers,
 *         logRetentionHours: Number(streamPoolKafkaSettingsLogRetentionHours),
 *         numPartitions: Number(streamPoolKafkaSettingsNumPartitions),
 *     },
 *     privateEndpointSettings: {
 *         nsgIds: streamPoolPrivateEndpointSettingsNsgIds,
 *         privateEndpointIp: streamPoolPrivateEndpointSettingsPrivateEndpointIp,
 *         subnetId: testSubnet.id,
 *     },
 *     securityAttributes: streamPoolSecurityAttributes,
 * });
 * ```
 *
 * ## Import
 *
 * StreamPools can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Streaming/streamPool:StreamPool test_stream_pool "id"
 * ```
 */
export declare class StreamPool extends pulumi.CustomResource {
    /**
     * Get an existing StreamPool 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?: StreamPoolState, opts?: pulumi.CustomResourceOptions): StreamPool;
    /**
     * Returns true if the given object is an instance of StreamPool.  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 StreamPool;
    /**
     * (Updatable) The OCID of the compartment that contains the stream.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the custom encryption key to be used or deleted if currently being used.
     */
    readonly customEncryptionKey: pulumi.Output<outputs.Streaming.StreamPoolCustomEncryptionKey>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The FQDN used to access the streams inside the stream pool (same FQDN as the messagesEndpoint attribute of a [Stream](https://docs.cloud.oracle.com/iaas/api/#/en/streaming/20180418/Stream) object). If the stream pool is private, the FQDN is customized and can only be accessed from inside the associated subnetId, otherwise the FQDN is publicly resolvable. Depending on which protocol you attempt to use, you need to either prepend https or append the Kafka port.
     */
    readonly endpointFqdn: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair that is applied with no predefined name, type, or namespace. Exists for cross-compatibility only. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * True if the stream pool is private, false otherwise. The associated endpoint and subnetId of a private stream pool can be retrieved through the [GetStreamPool](https://docs.cloud.oracle.com/iaas/api/#/en/streaming/20180418/StreamPool/GetStreamPool) API.
     */
    readonly isPrivate: pulumi.Output<boolean>;
    /**
     * (Updatable) Settings for the Kafka compatibility layer.
     */
    readonly kafkaSettings: pulumi.Output<outputs.Streaming.StreamPoolKafkaSettings>;
    /**
     * Any additional details about the current state of the stream.
     */
    readonly lifecycleStateDetails: pulumi.Output<string>;
    /**
     * (Updatable) The name of the stream pool. Avoid entering confidential information.  Example: `MyStreamPool`
     */
    readonly name: pulumi.Output<string>;
    /**
     * Optional parameters if a private stream pool is requested.
     */
    readonly privateEndpointSettings: pulumi.Output<outputs.Streaming.StreamPoolPrivateEndpointSettings>;
    /**
     * (Updatable) Security attributes for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value": "42", "mode": "enforce"}}}`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly securityAttributes: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The current state of the stream pool.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The date and time the stream pool was created, expressed in in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2018-04-20T00:00:07.405Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Create a StreamPool 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: StreamPoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering StreamPool resources.
 */
export interface StreamPoolState {
    /**
     * (Updatable) The OCID of the compartment that contains the stream.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the custom encryption key to be used or deleted if currently being used.
     */
    customEncryptionKey?: pulumi.Input<inputs.Streaming.StreamPoolCustomEncryptionKey | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The FQDN used to access the streams inside the stream pool (same FQDN as the messagesEndpoint attribute of a [Stream](https://docs.cloud.oracle.com/iaas/api/#/en/streaming/20180418/Stream) object). If the stream pool is private, the FQDN is customized and can only be accessed from inside the associated subnetId, otherwise the FQDN is publicly resolvable. Depending on which protocol you attempt to use, you need to either prepend https or append the Kafka port.
     */
    endpointFqdn?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair that is applied with no predefined name, type, or namespace. Exists for cross-compatibility only. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * True if the stream pool is private, false otherwise. The associated endpoint and subnetId of a private stream pool can be retrieved through the [GetStreamPool](https://docs.cloud.oracle.com/iaas/api/#/en/streaming/20180418/StreamPool/GetStreamPool) API.
     */
    isPrivate?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Settings for the Kafka compatibility layer.
     */
    kafkaSettings?: pulumi.Input<inputs.Streaming.StreamPoolKafkaSettings | undefined>;
    /**
     * Any additional details about the current state of the stream.
     */
    lifecycleStateDetails?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The name of the stream pool. Avoid entering confidential information.  Example: `MyStreamPool`
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Optional parameters if a private stream pool is requested.
     */
    privateEndpointSettings?: pulumi.Input<inputs.Streaming.StreamPoolPrivateEndpointSettings | undefined>;
    /**
     * (Updatable) Security attributes for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value": "42", "mode": "enforce"}}}`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    securityAttributes?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The current state of the stream pool.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The date and time the stream pool was created, expressed in in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2018-04-20T00:00:07.405Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a StreamPool resource.
 */
export interface StreamPoolArgs {
    /**
     * (Updatable) The OCID of the compartment that contains the stream.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) The OCID of the custom encryption key to be used or deleted if currently being used.
     */
    customEncryptionKey?: pulumi.Input<inputs.Streaming.StreamPoolCustomEncryptionKey | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair that is applied with no predefined name, type, or namespace. Exists for cross-compatibility only. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Settings for the Kafka compatibility layer.
     */
    kafkaSettings?: pulumi.Input<inputs.Streaming.StreamPoolKafkaSettings | undefined>;
    /**
     * (Updatable) The name of the stream pool. Avoid entering confidential information.  Example: `MyStreamPool`
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * Optional parameters if a private stream pool is requested.
     */
    privateEndpointSettings?: pulumi.Input<inputs.Streaming.StreamPoolPrivateEndpointSettings | undefined>;
    /**
     * (Updatable) Security attributes for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value": "42", "mode": "enforce"}}}`
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    securityAttributes?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
}
//# sourceMappingURL=streamPool.d.ts.map