import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Monitored Resource resource in Oracle Cloud Infrastructure Stack Monitoring service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/stack-monitoring/latest/MonitoredResource
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/stack_monitoring
 *
 * Creates a new monitored resource for the given resource type with the details and submits
 * a work request for promoting the resource to agent. Once the resource is successfully
 * added to agent, resource state will be marked active.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testMonitoredResource = new oci.stackmonitoring.MonitoredResource("test_monitored_resource", {
 *     compartmentId: compartmentId,
 *     name: monitoredResourceName,
 *     type: monitoredResourceType,
 *     additionalAliases: [{
 *         credential: {
 *             name: monitoredResourceAdditionalAliasesCredentialName,
 *             service: monitoredResourceAdditionalAliasesCredentialService,
 *             source: monitoredResourceAdditionalAliasesCredentialSource,
 *         },
 *         name: monitoredResourceAdditionalAliasesName,
 *         source: monitoredResourceAdditionalAliasesSource,
 *     }],
 *     additionalCredentials: [{
 *         credentialType: monitoredResourceAdditionalCredentialsCredentialType,
 *         description: monitoredResourceAdditionalCredentialsDescription,
 *         keyId: testKey.id,
 *         name: monitoredResourceAdditionalCredentialsName,
 *         properties: [{
 *             name: monitoredResourceAdditionalCredentialsPropertiesName,
 *             value: monitoredResourceAdditionalCredentialsPropertiesValue,
 *         }],
 *         source: monitoredResourceAdditionalCredentialsSource,
 *         type: monitoredResourceAdditionalCredentialsType,
 *     }],
 *     aliases: {
 *         credential: {
 *             name: monitoredResourceAliasesCredentialName,
 *             service: monitoredResourceAliasesCredentialService,
 *             source: monitoredResourceAliasesCredentialSource,
 *         },
 *         name: monitoredResourceAliasesName,
 *         source: monitoredResourceAliasesSource,
 *     },
 *     credentials: {
 *         credentialType: monitoredResourceCredentialsCredentialType,
 *         description: monitoredResourceCredentialsDescription,
 *         keyId: monitoredResourceCredentialsKeyId,
 *         name: monitoredResourceCredentialsName,
 *         properties: [{
 *             name: monitoredResourceCredentialsPropertiesName,
 *             value: monitoredResourceCredentialsPropertiesValue,
 *         }],
 *         source: monitoredResourceCredentialsSource,
 *         type: monitoredResourceCredentialsType,
 *     },
 *     databaseConnectionDetails: {
 *         port: Number(monitoredResourceDatabaseConnectionDetailsPort),
 *         protocol: monitoredResourceDatabaseConnectionDetailsProtocol,
 *         serviceName: monitoredResourceDatabaseServiceName,
 *         connectorId: monitoredResourceDatabaseConnectorId,
 *         dbId: monitoredResourceDatabaseId,
 *         dbUniqueName: monitoredResourceDatabaseConnectionDetailsDbUniqueName,
 *         sslSecretId: testSecret.id,
 *     },
 *     definedTags: {
 *         "foo-namespace.bar-key": "value",
 *     },
 *     displayName: monitoredResourceDisplayName,
 *     externalResourceId: monitoredResourceExternalResourceId,
 *     externalId: testExternal.id,
 *     freeformTags: {
 *         "bar-key": "value",
 *     },
 *     hostName: monitoredResourceHostName,
 *     license: monitoredResourceLicense,
 *     managementAgentId: testManagementAgent.id,
 *     properties: [{
 *         name: monitoredResourcePropertiesName,
 *         value: monitoredResourcePropertiesValue,
 *     }],
 *     resourceTimeZone: monitoredResourceResourceTimeZone,
 * });
 * ```
 *
 * ## Import
 *
 * MonitoredResources can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:StackMonitoring/monitoredResource:MonitoredResource test_monitored_resource "id"
 * ```
 */
export declare class MonitoredResource extends pulumi.CustomResource {
    /**
     * Get an existing MonitoredResource 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?: MonitoredResourceState, opts?: pulumi.CustomResourceOptions): MonitoredResource;
    /**
     * Returns true if the given object is an instance of MonitoredResource.  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 MonitoredResource;
    /**
     * (Updatable) List of MonitoredResourceAliasCredentials. This property complements the existing  "aliases" property by allowing user to specify more than one credential alias.  If both "aliases" and "additionalAliases" are specified, union of the  values is used as list of aliases applicable for this resource. If any duplicate found in the combined list of "alias" and "additionalAliases",  an error will be thrown.
     */
    readonly additionalAliases: pulumi.Output<outputs.StackMonitoring.MonitoredResourceAdditionalAlias[] | undefined>;
    /**
     * (Updatable) List of MonitoredResourceCredentials. This property complements the existing  "credentials" property by allowing user to specify more than one credential.  If both "credential" and "additionalCredentials" are specified, union of the  values is used as list of credentials applicable for this resource. If any duplicate found in the combined list of "credentials" and "additionalCredentials",  an error will be thrown.
     */
    readonly additionalCredentials: pulumi.Output<outputs.StackMonitoring.MonitoredResourceAdditionalCredential[] | undefined>;
    /**
     * (Updatable) Monitored Resource Alias Credential Details
     */
    readonly aliases: pulumi.Output<outputs.StackMonitoring.MonitoredResourceAliases | undefined>;
    /**
     * (Updatable) Compartment Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Monitored Resource Credential Details.
     */
    readonly credentials: pulumi.Output<outputs.StackMonitoring.MonitoredResourceCredentials | undefined>;
    /**
     * (Updatable) Connection details for the database.
     */
    readonly databaseConnectionDetails: pulumi.Output<outputs.StackMonitoring.MonitoredResourceDatabaseConnectionDetails | undefined>;
    /**
     * (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) Monitored resource display name.
     */
    readonly displayName: pulumi.Output<string | undefined>;
    /**
     * External resource is any Oracle Cloud Infrastructure resource identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) which is not a Stack Monitoring service resource. Currently supports only Oracle Cloud Infrastructure compute instance.
     */
    readonly externalId: pulumi.Output<string | undefined>;
    /**
     * Generally used by DBaaS to send the Database OCID stored on the DBaaS. The same will be passed to resource service to enable Stack Monitoring Service on DBM. This will be stored in Stack Monitoring Resource Service data store as identifier for monitored resource. If this header is not set as part of the request, then an id will be generated and stored for the resource.
     */
    readonly externalResourceId: pulumi.Output<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"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Host name of the monitored resource.
     */
    readonly hostName: pulumi.Output<string | undefined>;
    /**
     * (Updatable) License edition of the monitored resource. If not provided  the default license type for the compartment will be used.
     */
    readonly license: pulumi.Output<string>;
    /**
     * Management Agent Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    readonly managementAgentId: pulumi.Output<string | undefined>;
    /**
     * Monitored Resource Name.
     */
    readonly name: pulumi.Output<string>;
    /**
     * (Updatable) List of monitored resource properties.
     */
    readonly properties: pulumi.Output<outputs.StackMonitoring.MonitoredResourceProperty[] | undefined>;
    /**
     * Resource Category to indicate the kind of resource type.
     */
    readonly resourceCategory: pulumi.Output<string>;
    /**
     * (Updatable) Time zone in the form of tz database canonical zone ID. Specifies the preference with a value that uses the IANA Time Zone Database format (x-obmcs-time-zone). For example - America/Los_Angeles
     */
    readonly resourceTimeZone: pulumi.Output<string | undefined>;
    /**
     * Source type to indicate if the resource is stack monitoring discovered, Oracle Cloud Infrastructure native resource, etc.
     */
    readonly sourceType: pulumi.Output<string>;
    /**
     * Lifecycle state of the monitored resource.
     */
    readonly state: pulumi.Output<string>;
    /**
     * Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Tenancy Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    readonly tenantId: pulumi.Output<string>;
    /**
     * The date and time when the monitored resource was created, expressed in  [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format.
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The date and time when the monitored resource was last updated, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format.
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * Monitored Resource Type.
     *
     *
     * ** 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 type: pulumi.Output<string>;
    /**
     * Create a MonitoredResource 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: MonitoredResourceArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering MonitoredResource resources.
 */
export interface MonitoredResourceState {
    /**
     * (Updatable) List of MonitoredResourceAliasCredentials. This property complements the existing  "aliases" property by allowing user to specify more than one credential alias.  If both "aliases" and "additionalAliases" are specified, union of the  values is used as list of aliases applicable for this resource. If any duplicate found in the combined list of "alias" and "additionalAliases",  an error will be thrown.
     */
    additionalAliases?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceAdditionalAlias>[] | undefined>;
    /**
     * (Updatable) List of MonitoredResourceCredentials. This property complements the existing  "credentials" property by allowing user to specify more than one credential.  If both "credential" and "additionalCredentials" are specified, union of the  values is used as list of credentials applicable for this resource. If any duplicate found in the combined list of "credentials" and "additionalCredentials",  an error will be thrown.
     */
    additionalCredentials?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceAdditionalCredential>[] | undefined>;
    /**
     * (Updatable) Monitored Resource Alias Credential Details
     */
    aliases?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceAliases | undefined>;
    /**
     * (Updatable) Compartment Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Monitored Resource Credential Details.
     */
    credentials?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceCredentials | undefined>;
    /**
     * (Updatable) Connection details for the database.
     */
    databaseConnectionDetails?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceDatabaseConnectionDetails | 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) Monitored resource display name.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * External resource is any Oracle Cloud Infrastructure resource identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) which is not a Stack Monitoring service resource. Currently supports only Oracle Cloud Infrastructure compute instance.
     */
    externalId?: pulumi.Input<string | undefined>;
    /**
     * Generally used by DBaaS to send the Database OCID stored on the DBaaS. The same will be passed to resource service to enable Stack Monitoring Service on DBM. This will be stored in Stack Monitoring Resource Service data store as identifier for monitored resource. If this header is not set as part of the request, then an id will be generated and stored for the resource.
     */
    externalResourceId?: 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) Host name of the monitored resource.
     */
    hostName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) License edition of the monitored resource. If not provided  the default license type for the compartment will be used.
     */
    license?: pulumi.Input<string | undefined>;
    /**
     * Management Agent Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    managementAgentId?: pulumi.Input<string | undefined>;
    /**
     * Monitored Resource Name.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) List of monitored resource properties.
     */
    properties?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceProperty>[] | undefined>;
    /**
     * Resource Category to indicate the kind of resource type.
     */
    resourceCategory?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Time zone in the form of tz database canonical zone ID. Specifies the preference with a value that uses the IANA Time Zone Database format (x-obmcs-time-zone). For example - America/Los_Angeles
     */
    resourceTimeZone?: pulumi.Input<string | undefined>;
    /**
     * Source type to indicate if the resource is stack monitoring discovered, Oracle Cloud Infrastructure native resource, etc.
     */
    sourceType?: pulumi.Input<string | undefined>;
    /**
     * Lifecycle state of the monitored resource.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * Usage of system tag keys. These predefined keys are scoped to namespaces. Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Tenancy Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    tenantId?: pulumi.Input<string | undefined>;
    /**
     * The date and time when the monitored resource was created, expressed in  [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format.
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The date and time when the monitored resource was last updated, expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format.
     */
    timeUpdated?: pulumi.Input<string | undefined>;
    /**
     * Monitored Resource Type.
     *
     *
     * ** 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
     */
    type?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a MonitoredResource resource.
 */
export interface MonitoredResourceArgs {
    /**
     * (Updatable) List of MonitoredResourceAliasCredentials. This property complements the existing  "aliases" property by allowing user to specify more than one credential alias.  If both "aliases" and "additionalAliases" are specified, union of the  values is used as list of aliases applicable for this resource. If any duplicate found in the combined list of "alias" and "additionalAliases",  an error will be thrown.
     */
    additionalAliases?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceAdditionalAlias>[] | undefined>;
    /**
     * (Updatable) List of MonitoredResourceCredentials. This property complements the existing  "credentials" property by allowing user to specify more than one credential.  If both "credential" and "additionalCredentials" are specified, union of the  values is used as list of credentials applicable for this resource. If any duplicate found in the combined list of "credentials" and "additionalCredentials",  an error will be thrown.
     */
    additionalCredentials?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceAdditionalCredential>[] | undefined>;
    /**
     * (Updatable) Monitored Resource Alias Credential Details
     */
    aliases?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceAliases | undefined>;
    /**
     * (Updatable) Compartment Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Monitored Resource Credential Details.
     */
    credentials?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceCredentials | undefined>;
    /**
     * (Updatable) Connection details for the database.
     */
    databaseConnectionDetails?: pulumi.Input<inputs.StackMonitoring.MonitoredResourceDatabaseConnectionDetails | 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) Monitored resource display name.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * External resource is any Oracle Cloud Infrastructure resource identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) which is not a Stack Monitoring service resource. Currently supports only Oracle Cloud Infrastructure compute instance.
     */
    externalId?: pulumi.Input<string | undefined>;
    /**
     * Generally used by DBaaS to send the Database OCID stored on the DBaaS. The same will be passed to resource service to enable Stack Monitoring Service on DBM. This will be stored in Stack Monitoring Resource Service data store as identifier for monitored resource. If this header is not set as part of the request, then an id will be generated and stored for the resource.
     */
    externalResourceId?: 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) Host name of the monitored resource.
     */
    hostName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) License edition of the monitored resource. If not provided  the default license type for the compartment will be used.
     */
    license?: pulumi.Input<string | undefined>;
    /**
     * Management Agent Identifier [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm).
     */
    managementAgentId?: pulumi.Input<string | undefined>;
    /**
     * Monitored Resource Name.
     */
    name?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) List of monitored resource properties.
     */
    properties?: pulumi.Input<pulumi.Input<inputs.StackMonitoring.MonitoredResourceProperty>[] | undefined>;
    /**
     * (Updatable) Time zone in the form of tz database canonical zone ID. Specifies the preference with a value that uses the IANA Time Zone Database format (x-obmcs-time-zone). For example - America/Los_Angeles
     */
    resourceTimeZone?: pulumi.Input<string | undefined>;
    /**
     * Monitored Resource Type.
     *
     *
     * ** 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
     */
    type: pulumi.Input<string>;
}
//# sourceMappingURL=monitoredResource.d.ts.map