import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Replica resource in Oracle Cloud Infrastructure MySQL Database service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/mysql/latest/Replica
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/mysql
 *
 * Creates a DB System read replica.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testReplica = new oci.mysql.Replica("test_replica", {
 *     dbSystemId: testMysqlDbSystem.id,
 *     definedTags: {
 *         "foo-namespace.bar-key": "value",
 *     },
 *     description: replicaDescription,
 *     displayName: replicaDisplayName,
 *     freeformTags: {
 *         "bar-key": "value",
 *     },
 *     isDeleteProtected: replicaIsDeleteProtected === "true",
 *     replicaOverrides: {
 *         configurationId: testMysqlConfiguration.id,
 *         mysqlVersion: replicaReplicaOverridesMysqlVersion,
 *         nsgIds: replicaReplicaOverridesNsgIds,
 *         securityAttributes: replicaReplicaOverridesSecurityAttributes,
 *         shapeName: testShape.name,
 *         telemetryConfiguration: {
 *             logs: [{
 *                 destination: replicaReplicaOverridesTelemetryConfigurationLogsDestination,
 *                 destinationConfigurations: [{
 *                     key: replicaReplicaOverridesTelemetryConfigurationLogsDestinationConfigurationsKey,
 *                     value: replicaReplicaOverridesTelemetryConfigurationLogsDestinationConfigurationsValue,
 *                 }],
 *                 logTypes: replicaReplicaOverridesTelemetryConfigurationLogsLogTypes,
 *             }],
 *         },
 *     },
 * });
 * ```
 *
 * ## Import
 *
 * Replicas can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Mysql/replica:Replica test_replica "id"
 * ```
 */
export declare class Replica extends pulumi.CustomResource {
    /**
     * Get an existing Replica 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?: ReplicaState, opts?: pulumi.CustomResourceOptions): Replica;
    /**
     * Returns true if the given object is an instance of Replica.  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 Replica;
    /**
     * The name of the Availability Domain the read replica is located in.
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * The OCID of the compartment that contains the read replica.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * The OCID of the Configuration to be used by the read replica.
     */
    readonly configurationId: pulumi.Output<string>;
    /**
     * The OCID of the DB System the read replica is associated with.
     */
    readonly dbSystemId: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) User provided description of the read replica.
     */
    readonly description: pulumi.Output<string>;
    /**
     * (Updatable) The user-friendly name for the read replica. It does not have to be unique.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Encrypt data details.
     */
    readonly encryptDatas: pulumi.Output<outputs.Mysql.ReplicaEncryptData[]>;
    /**
     * The name of the Fault Domain the read replica is located in.
     */
    readonly faultDomain: pulumi.Output<string>;
    /**
     * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The IP address the read replica is configured to listen on.
     */
    readonly ipAddress: pulumi.Output<string>;
    /**
     * (Updatable) Specifies whether the read replica can be deleted. Set to true to prevent deletion, false (default) to allow. Note that if a read replica is delete protected it also prevents the entire DB System from being deleted. If the DB System is delete protected, read replicas can still be deleted individually if they are not delete  protected themselves.
     */
    readonly isDeleteProtected: pulumi.Output<boolean>;
    /**
     * A message describing the state of the read replica.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * The MySQL version to be used by the read replica.
     */
    readonly mysqlVersion: pulumi.Output<string>;
    /**
     * Network Security Group OCIDs used for the VNIC attachment.
     */
    readonly nsgIds: pulumi.Output<string[]>;
    /**
     * The port the read replica is configured to listen on.
     */
    readonly port: pulumi.Output<number>;
    /**
     * The TCP network port on which X Plugin listens for connections. This is the X Plugin equivalent of port.
     */
    readonly portX: pulumi.Output<number>;
    /**
     * (Updatable) By default a read replica inherits the MySQL version, shape, and configuration of the source DB system.  If you want to override any of these, provide values in the properties, mysqlVersion, shapeName,  and configurationId. If you set a property value to "", then the value is inherited from its  source DB system.
     */
    readonly replicaOverrides: pulumi.Output<outputs.Mysql.ReplicaReplicaOverrides>;
    /**
     * Secure connection configuration details.
     */
    readonly secureConnections: pulumi.Output<outputs.Mysql.ReplicaSecureConnection[]>;
    /**
     * Security Attributes for this resource. Each key is predefined and scoped to a namespace. For more information, see [ZPR Artifacts](https://docs.oracle.com/en-us/iaas/Content/zero-trust-packet-routing/zpr-artifacts.htm). Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value": "42", "mode": "audit"}}}`
     */
    readonly securityAttributes: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The shape currently in use by the read replica. The shape determines the resources allocated:  CPU cores and memory for VM shapes, CPU cores, memory and storage for non-VM (bare metal) shapes.  To get a list of shapes, use the [ListShapes](https://docs.cloud.oracle.com/iaas/api/#/en/mysql/20190415/ShapeSummary/ListShapes) operation.
     */
    readonly shapeName: pulumi.Output<string>;
    /**
     * The state of the read replica.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Telemetry configuration details of a DB System or a read replica.
     */
    readonly telemetryConfigurations: pulumi.Output<outputs.Mysql.ReplicaTelemetryConfiguration[]>;
    /**
     * The date and time the read replica was created, as described by [RFC 3339](https://tools.ietf.org/rfc/rfc3339).
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The time the read replica was last updated, as described by [RFC 3339](https://tools.ietf.org/rfc/rfc3339).
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * Create a Replica 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: ReplicaArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Replica resources.
 */
export interface ReplicaState {
    /**
     * The name of the Availability Domain the read replica is located in.
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the compartment that contains the read replica.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Configuration to be used by the read replica.
     */
    configurationId?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the DB System the read replica is associated with.
     */
    dbSystemId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) User provided description of the read replica.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The user-friendly name for the read replica. It does not have to be unique.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * Encrypt data details.
     */
    encryptDatas?: pulumi.Input<pulumi.Input<inputs.Mysql.ReplicaEncryptData>[] | undefined>;
    /**
     * The name of the Fault Domain the read replica is located in.
     */
    faultDomain?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The IP address the read replica is configured to listen on.
     */
    ipAddress?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Specifies whether the read replica can be deleted. Set to true to prevent deletion, false (default) to allow. Note that if a read replica is delete protected it also prevents the entire DB System from being deleted. If the DB System is delete protected, read replicas can still be deleted individually if they are not delete  protected themselves.
     */
    isDeleteProtected?: pulumi.Input<boolean | undefined>;
    /**
     * A message describing the state of the read replica.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * The MySQL version to be used by the read replica.
     */
    mysqlVersion?: pulumi.Input<string | undefined>;
    /**
     * Network Security Group OCIDs used for the VNIC attachment.
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The port the read replica is configured to listen on.
     */
    port?: pulumi.Input<number | undefined>;
    /**
     * The TCP network port on which X Plugin listens for connections. This is the X Plugin equivalent of port.
     */
    portX?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) By default a read replica inherits the MySQL version, shape, and configuration of the source DB system.  If you want to override any of these, provide values in the properties, mysqlVersion, shapeName,  and configurationId. If you set a property value to "", then the value is inherited from its  source DB system.
     */
    replicaOverrides?: pulumi.Input<inputs.Mysql.ReplicaReplicaOverrides | undefined>;
    /**
     * Secure connection configuration details.
     */
    secureConnections?: pulumi.Input<pulumi.Input<inputs.Mysql.ReplicaSecureConnection>[] | undefined>;
    /**
     * Security Attributes for this resource. Each key is predefined and scoped to a namespace. For more information, see [ZPR Artifacts](https://docs.oracle.com/en-us/iaas/Content/zero-trust-packet-routing/zpr-artifacts.htm). Example: `{"Oracle-ZPR": {"MaxEgressCount": {"value": "42", "mode": "audit"}}}`
     */
    securityAttributes?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The shape currently in use by the read replica. The shape determines the resources allocated:  CPU cores and memory for VM shapes, CPU cores, memory and storage for non-VM (bare metal) shapes.  To get a list of shapes, use the [ListShapes](https://docs.cloud.oracle.com/iaas/api/#/en/mysql/20190415/ShapeSummary/ListShapes) operation.
     */
    shapeName?: pulumi.Input<string | undefined>;
    /**
     * The state of the read replica.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Telemetry configuration details of a DB System or a read replica.
     */
    telemetryConfigurations?: pulumi.Input<pulumi.Input<inputs.Mysql.ReplicaTelemetryConfiguration>[] | undefined>;
    /**
     * The date and time the read replica was created, as described by [RFC 3339](https://tools.ietf.org/rfc/rfc3339).
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The time the read replica was last updated, as described by [RFC 3339](https://tools.ietf.org/rfc/rfc3339).
     */
    timeUpdated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Replica resource.
 */
export interface ReplicaArgs {
    /**
     * The OCID of the DB System the read replica is associated with.
     */
    dbSystemId: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) User provided description of the read replica.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The user-friendly name for the read replica. It does not have to be unique.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Simple key-value pair that is applied without any predefined name, type or scope. Exists for cross-compatibility only. Example: `{"bar-key": "value"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Specifies whether the read replica can be deleted. Set to true to prevent deletion, false (default) to allow. Note that if a read replica is delete protected it also prevents the entire DB System from being deleted. If the DB System is delete protected, read replicas can still be deleted individually if they are not delete  protected themselves.
     */
    isDeleteProtected?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) By default a read replica inherits the MySQL version, shape, and configuration of the source DB system.  If you want to override any of these, provide values in the properties, mysqlVersion, shapeName,  and configurationId. If you set a property value to "", then the value is inherited from its  source DB system.
     */
    replicaOverrides?: pulumi.Input<inputs.Mysql.ReplicaReplicaOverrides | undefined>;
}
//# sourceMappingURL=replica.d.ts.map