import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
import * as enums from "../types/enums";
/**
 * Resource type definition for AWS::AmazonMQ::Broker
 *
 * ## Example Usage
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const basicBroker = new aws_native.amazonmq.Broker("basicBroker", {
 *     autoMinorVersionUpgrade: false,
 *     brokerName: "MyBasicActiveBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "ActiveMQ",
 *     engineVersion: "5.15.0",
 *     hostInstanceType: "mq.t2.micro",
 *     publiclyAccessible: true,
 *     users: [{
 *         consoleAccess: true,
 *         groups: ["MyGroup"],
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const basicBroker = new aws_native.amazonmq.Broker("basicBroker", {
 *     autoMinorVersionUpgrade: false,
 *     brokerName: "MyBasicRabbitBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "RabbitMQ",
 *     engineVersion: "3.8.6",
 *     hostInstanceType: "mq.t3.micro",
 *     publiclyAccessible: true,
 *     users: [{
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const basicBroker = new aws_native.amazonmq.Broker("basicBroker", {
 *     autoMinorVersionUpgrade: false,
 *     brokerName: "MyBasicActiveBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "ActiveMQ",
 *     engineVersion: "5.15.0",
 *     hostInstanceType: "mq.t2.micro",
 *     publiclyAccessible: true,
 *     users: [{
 *         consoleAccess: true,
 *         groups: ["MyGroup"],
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const basicBroker = new aws_native.amazonmq.Broker("basicBroker", {
 *     autoMinorVersionUpgrade: false,
 *     brokerName: "MyBasicRabbitBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "RabbitMQ",
 *     engineVersion: "3.8.6",
 *     hostInstanceType: "mq.t3.micro",
 *     publiclyAccessible: true,
 *     users: [{
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const complexBroker = new aws_native.amazonmq.Broker("complexBroker", {
 *     autoMinorVersionUpgrade: true,
 *     brokerName: "MyComplexRabbitBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "RabbitMQ",
 *     engineVersion: "3.8.6",
 *     hostInstanceType: "mq.t3.micro",
 *     logs: {
 *         general: true,
 *     },
 *     maintenanceWindowStartTime: {
 *         dayOfWeek: "Monday",
 *         timeOfDay: "22:45",
 *         timeZone: "America/Los_Angeles",
 *     },
 *     publiclyAccessible: false,
 *     securityGroups: ["sg-1a234b5cd6efgh7i8"],
 *     subnetIds: ["subnet-123456b7891abcd1f"],
 *     users: [{
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 * ### Example
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws_native from "@pulumi/aws-native";
 *
 * const complexBroker = new aws_native.amazonmq.Broker("complexBroker", {
 *     autoMinorVersionUpgrade: false,
 *     brokerName: "MyComplexRabbitBroker",
 *     deploymentMode: aws_native.amazonmq.BrokerDeploymentMode.SingleInstance,
 *     engineType: "RabbitMQ",
 *     engineVersion: "3.8.6",
 *     hostInstanceType: "mq.t3.micro",
 *     logs: {
 *         general: true,
 *     },
 *     maintenanceWindowStartTime: {
 *         dayOfWeek: "Monday",
 *         timeOfDay: "22:45",
 *         timeZone: "America/Los_Angeles",
 *     },
 *     publiclyAccessible: false,
 *     securityGroups: ["sg-1a234b5cd6efgh7i8"],
 *     subnetIds: ["subnet-123456b7891abcd1f"],
 *     users: [{
 *         password: "AmazonMqPassword",
 *         username: "AmazonMqUsername",
 *     }],
 * });
 *
 * ```
 */
export declare class Broker extends pulumi.CustomResource {
    /**
     * Get an existing Broker 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 opts Optional settings to control the behavior of the CustomResource.
     */
    static get(name: string, id: pulumi.Input<pulumi.ID>, opts?: pulumi.CustomResourceOptions): Broker;
    /**
     * Returns true if the given object is an instance of Broker.  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 Broker;
    /**
     * The AMQP endpoints of each broker instance as a list of strings.
     *
     * `amqp+ssl://b-4aada85d-a80c-4be0-9d30-e344a01b921e-1.mq.eu-central-amazonaws.com:5671`
     */
    readonly amqpEndpoints: pulumi.Output<string[]>;
    /**
     * The Amazon Resource Name (ARN) of the Amazon MQ broker.
     *
     * `arn:aws:mq:us-east-2:123456789012:broker:MyBroker:b-1234a5b6-78cd-901e-2fgh-3i45j6k178l9`
     */
    readonly arn: pulumi.Output<string>;
    /**
     * Optional. The authentication strategy used to secure the broker. The default is `SIMPLE` .
     */
    readonly authenticationStrategy: pulumi.Output<string | undefined>;
    /**
     * Enables automatic upgrades to new patch versions for brokers as new versions are released and supported by Amazon MQ. Automatic upgrades occur during the scheduled maintenance window or after a manual broker reboot. Set to `true` by default, if no value is specified.
     *
     * > Must be set to `true` for ActiveMQ brokers version 5.18 and above and for RabbitMQ brokers version 3.13 and above.
     */
    readonly autoMinorVersionUpgrade: pulumi.Output<boolean | undefined>;
    readonly awsId: pulumi.Output<string>;
    /**
     * Required. The broker's name. This value must be unique in your AWS account , 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain white spaces, brackets, wildcard characters, or special characters.
     *
     * > Do not add personally identifiable information (PII) or other confidential or sensitive information in broker names. Broker names are accessible to other AWS services, including CloudWatch Logs . Broker names are not intended to be used for private or sensitive data.
     */
    readonly brokerName: pulumi.Output<string>;
    /**
     * The intended configuration (ID and revision) to be set when creating or updating.
     * This property is write-only so that applications of a ConfigurationAssociation do not cause drift.
     */
    readonly configuration: pulumi.Output<outputs.amazonmq.BrokerConfigurationId | undefined>;
    /**
     * The ID of the current actual configuration.
     */
    readonly configurationId: pulumi.Output<string>;
    /**
     * The revision of the current actual configuration.
     */
    readonly configurationRevision: pulumi.Output<string>;
    readonly consoleUrls: pulumi.Output<string[]>;
    /**
     * Defines whether this broker is a part of a data replication pair.
     */
    readonly dataReplicationMode: pulumi.Output<enums.amazonmq.BrokerDataReplicationMode | string | undefined>;
    /**
     * The ARN of the primary broker that is used to replicate data from in a data replication pair when creating a replica.
     * This field is only used at creation-time. Changes to it subsequently are ignored by CloudFormation.
     * Information on the current primary is available on the DataReplicationMetadata object returned by the API.
     */
    readonly dataReplicationPrimaryBrokerArn: pulumi.Output<string | undefined>;
    /**
     * Required. The broker's deployment mode.
     */
    readonly deploymentMode: pulumi.Output<enums.amazonmq.BrokerDeploymentMode | string>;
    /**
     * Encryption options for the broker.
     */
    readonly encryptionOptions: pulumi.Output<outputs.amazonmq.BrokerEncryptionOptions | undefined>;
    /**
     * Required. The type of broker engine. Currently, Amazon MQ supports `ACTIVEMQ` and `RABBITMQ` .
     */
    readonly engineType: pulumi.Output<enums.amazonmq.BrokerEngineType | string>;
    /**
     * The version specified to use. See also EngineVersionCurrent.
     */
    readonly engineVersion: pulumi.Output<string | undefined>;
    /**
     * The version in use. This may have more precision than the specified EngineVersion.
     */
    readonly engineVersionCurrent: pulumi.Output<string>;
    /**
     * Required. The broker's instance type.
     */
    readonly hostInstanceType: pulumi.Output<string>;
    /**
     * The IP addresses of each broker instance as a list of strings. Does not apply to RabbitMQ brokers.
     *
     * `['198.51.100.2', '203.0.113.9']`
     */
    readonly ipAddresses: pulumi.Output<string[]>;
    /**
     * Optional. The metadata of the LDAP server used to authenticate and authorize connections to the broker. Does not apply to RabbitMQ brokers.
     */
    readonly ldapServerMetadata: pulumi.Output<outputs.amazonmq.BrokerLdapServerMetadata | undefined>;
    /**
     * Enables Amazon CloudWatch logging for brokers.
     */
    readonly logs: pulumi.Output<outputs.amazonmq.BrokerLogList | undefined>;
    /**
     * The parameters that determine the WeeklyStartTime.
     */
    readonly maintenanceWindowStartTime: pulumi.Output<outputs.amazonmq.BrokerMaintenanceWindow | undefined>;
    /**
     * The MQTT endpoints of each broker instance as a list of strings.
     *
     * `mqtt+ssl://b-4aada85d-a80c-4be0-9d30-e344a01b921e-1.mq.eu-central-amazonaws.com:8883`
     */
    readonly mqttEndpoints: pulumi.Output<string[]>;
    /**
     * The OpenWire endpoints of each broker instance as a list of strings.
     *
     * `ssl://b-4aada85d-a80c-4be0-9d30-e344a01b921e-1.mq.eu-central-amazonaws.com:61617`
     */
    readonly openWireEndpoints: pulumi.Output<string[]>;
    /**
     * Enables connections from applications outside of the VPC that hosts the broker's subnets. Set to `false` by default, if no value is provided.
     */
    readonly publiclyAccessible: pulumi.Output<boolean>;
    /**
     * The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.
     */
    readonly securityGroups: pulumi.Output<string[] | undefined>;
    /**
     * The STOMP endpoints of each broker instance as a list of strings.
     *
     * `stomp+ssl://b-4aada85d-a80c-4be0-9d30-e344a01b921e-1.mq.eu-central-amazonaws.com:61614`
     */
    readonly stompEndpoints: pulumi.Output<string[]>;
    /**
     * The broker's storage type.
     */
    readonly storageType: pulumi.Output<enums.amazonmq.BrokerStorageType | string | undefined>;
    /**
     * The list of groups that define which subnets and IP ranges the broker can use from different Availability Zones. If you specify more than one subnet, the subnets must be in different Availability Zones. Amazon MQ will not be able to create VPC endpoints for your broker with multiple subnets in the same Availability Zone. A SINGLE_INSTANCE deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ Amazon MQ for ActiveMQ deployment requires two subnets. A CLUSTER_MULTI_AZ Amazon MQ for RabbitMQ deployment has no subnet requirements when deployed with public accessibility. Deployment without public accessibility requires at least one subnet.
     *
     * > If you specify subnets in a [shared VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html) for a RabbitMQ broker, the associated VPC to which the specified subnets belong must be owned by your AWS account . Amazon MQ will not be able to create VPC endpoints in VPCs that are not owned by your AWS account .
     */
    readonly subnetIds: pulumi.Output<string[] | undefined>;
    /**
     * Create tags when creating the broker.
     */
    readonly tags: pulumi.Output<outputs.Tag[] | undefined>;
    /**
     * Users to configure on the broker.
     * For RabbitMQ, this should be one user, created when the broker is created, and changes thereafter are ignored.
     * For ActiveMQ, changes to anything but Password are detected and will trigger an update,
     * but changes to Password cannot be detected so updates to Password may not take effect unless there is some other change.
     */
    readonly users: pulumi.Output<outputs.amazonmq.BrokerUser[] | undefined>;
    /**
     * The WSS endpoints of each broker instance as a list of strings.
     *
     * `wss://b-4aada85d-a80c-4be0-9d30-e344a01b921e-1.mq.eu-central-amazonaws.com:61619`
     */
    readonly wssEndpoints: pulumi.Output<string[]>;
    /**
     * Create a Broker 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: BrokerArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * The set of arguments for constructing a Broker resource.
 */
export interface BrokerArgs {
    /**
     * Optional. The authentication strategy used to secure the broker. The default is `SIMPLE` .
     */
    authenticationStrategy?: pulumi.Input<string>;
    /**
     * Enables automatic upgrades to new patch versions for brokers as new versions are released and supported by Amazon MQ. Automatic upgrades occur during the scheduled maintenance window or after a manual broker reboot. Set to `true` by default, if no value is specified.
     *
     * > Must be set to `true` for ActiveMQ brokers version 5.18 and above and for RabbitMQ brokers version 3.13 and above.
     */
    autoMinorVersionUpgrade?: pulumi.Input<boolean>;
    /**
     * Required. The broker's name. This value must be unique in your AWS account , 1-50 characters long, must contain only letters, numbers, dashes, and underscores, and must not contain white spaces, brackets, wildcard characters, or special characters.
     *
     * > Do not add personally identifiable information (PII) or other confidential or sensitive information in broker names. Broker names are accessible to other AWS services, including CloudWatch Logs . Broker names are not intended to be used for private or sensitive data.
     */
    brokerName?: pulumi.Input<string>;
    /**
     * The intended configuration (ID and revision) to be set when creating or updating.
     * This property is write-only so that applications of a ConfigurationAssociation do not cause drift.
     */
    configuration?: pulumi.Input<inputs.amazonmq.BrokerConfigurationIdArgs>;
    /**
     * Defines whether this broker is a part of a data replication pair.
     */
    dataReplicationMode?: pulumi.Input<enums.amazonmq.BrokerDataReplicationMode | string>;
    /**
     * The ARN of the primary broker that is used to replicate data from in a data replication pair when creating a replica.
     * This field is only used at creation-time. Changes to it subsequently are ignored by CloudFormation.
     * Information on the current primary is available on the DataReplicationMetadata object returned by the API.
     */
    dataReplicationPrimaryBrokerArn?: pulumi.Input<string>;
    /**
     * Required. The broker's deployment mode.
     */
    deploymentMode: pulumi.Input<enums.amazonmq.BrokerDeploymentMode | string>;
    /**
     * Encryption options for the broker.
     */
    encryptionOptions?: pulumi.Input<inputs.amazonmq.BrokerEncryptionOptionsArgs>;
    /**
     * Required. The type of broker engine. Currently, Amazon MQ supports `ACTIVEMQ` and `RABBITMQ` .
     */
    engineType: pulumi.Input<enums.amazonmq.BrokerEngineType | string>;
    /**
     * The version specified to use. See also EngineVersionCurrent.
     */
    engineVersion?: pulumi.Input<string>;
    /**
     * Required. The broker's instance type.
     */
    hostInstanceType: pulumi.Input<string>;
    /**
     * Optional. The metadata of the LDAP server used to authenticate and authorize connections to the broker. Does not apply to RabbitMQ brokers.
     */
    ldapServerMetadata?: pulumi.Input<inputs.amazonmq.BrokerLdapServerMetadataArgs>;
    /**
     * Enables Amazon CloudWatch logging for brokers.
     */
    logs?: pulumi.Input<inputs.amazonmq.BrokerLogListArgs>;
    /**
     * The parameters that determine the WeeklyStartTime.
     */
    maintenanceWindowStartTime?: pulumi.Input<inputs.amazonmq.BrokerMaintenanceWindowArgs>;
    /**
     * Enables connections from applications outside of the VPC that hosts the broker's subnets. Set to `false` by default, if no value is provided.
     */
    publiclyAccessible: pulumi.Input<boolean>;
    /**
     * The list of rules (1 minimum, 125 maximum) that authorize connections to brokers.
     */
    securityGroups?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * The broker's storage type.
     */
    storageType?: pulumi.Input<enums.amazonmq.BrokerStorageType | string>;
    /**
     * The list of groups that define which subnets and IP ranges the broker can use from different Availability Zones. If you specify more than one subnet, the subnets must be in different Availability Zones. Amazon MQ will not be able to create VPC endpoints for your broker with multiple subnets in the same Availability Zone. A SINGLE_INSTANCE deployment requires one subnet (for example, the default subnet). An ACTIVE_STANDBY_MULTI_AZ Amazon MQ for ActiveMQ deployment requires two subnets. A CLUSTER_MULTI_AZ Amazon MQ for RabbitMQ deployment has no subnet requirements when deployed with public accessibility. Deployment without public accessibility requires at least one subnet.
     *
     * > If you specify subnets in a [shared VPC](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-sharing.html) for a RabbitMQ broker, the associated VPC to which the specified subnets belong must be owned by your AWS account . Amazon MQ will not be able to create VPC endpoints in VPCs that are not owned by your AWS account .
     */
    subnetIds?: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Create tags when creating the broker.
     */
    tags?: pulumi.Input<pulumi.Input<inputs.TagArgs>[]>;
    /**
     * Users to configure on the broker.
     * For RabbitMQ, this should be one user, created when the broker is created, and changes thereafter are ignored.
     * For ActiveMQ, changes to anything but Password are detected and will trigger an update,
     * but changes to Password cannot be detected so updates to Password may not take effect unless there is some other change.
     */
    users?: pulumi.Input<pulumi.Input<inputs.amazonmq.BrokerUserArgs>[]>;
}
