import * as pulumi from "@pulumi/pulumi";
/**
 * This resource provides the Delegation Control resource in Oracle Cloud Infrastructure Delegate Access Control service.
 *
 * Creates a Delegation Control.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testDelegationControl = new oci.delegateaccesscontrol.DelegationControl("test_delegation_control", {
 *     compartmentId: compartmentId,
 *     delegationSubscriptionIds: delegationControlDelegationSubscriptionIds,
 *     displayName: delegationControlDisplayName,
 *     notificationMessageFormat: delegationControlNotificationMessageFormat,
 *     notificationTopicId: testNotificationTopic.id,
 *     resourceIds: delegationControlResourceIds,
 *     resourceType: delegationControlResourceType,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     description: delegationControlDescription,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     isAutoApproveDuringMaintenance: delegationControlIsAutoApproveDuringMaintenance === "true",
 *     numApprovalsRequired: Number(delegationControlNumApprovalsRequired),
 *     preApprovedServiceProviderActionNames: delegationControlPreApprovedServiceProviderActionNames,
 *     vaultId: testVault.id,
 *     vaultKeyId: testKey.id,
 * });
 * ```
 *
 * ## Import
 *
 * DelegationControls can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:DelegateAccessControl/delegationControl:DelegationControl test_delegation_control "id"
 * ```
 */
export declare class DelegationControl extends pulumi.CustomResource {
    /**
     * Get an existing DelegationControl 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?: DelegationControlState, opts?: pulumi.CustomResourceOptions): DelegationControl;
    /**
     * Returns true if the given object is an instance of DelegationControl.  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 DelegationControl;
    /**
     * (Updatable) The OCID of the compartment that contains this Delegation Control.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (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;
    }>;
    /**
     * (Updatable) List of Delegation Subscription OCID that are allowed for this Delegation Control. The allowed subscriptions will determine the available Service Provider Actions. Only support operators for the allowed subscriptions are allowed to create Delegated Resource Access Request.
     */
    readonly delegationSubscriptionIds: pulumi.Output<string[]>;
    /**
     * (Updatable) Description of the Delegation Control.
     */
    readonly description: pulumi.Output<string>;
    /**
     * (Updatable) Name of the Delegation Control. The name does not need to be unique.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. 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;
    }>;
    /**
     * (Updatable) Set to true to allow all Delegated Resource Access Request to be approved automatically during maintenance.
     */
    readonly isAutoApproveDuringMaintenance: pulumi.Output<boolean>;
    /**
     * Description of the current lifecycle state in more detail.
     */
    readonly lifecycleStateDetails: pulumi.Output<string>;
    /**
     * (Updatable) The format of the Oracle Cloud Infrastructure Notification messages for this Delegation Control.
     */
    readonly notificationMessageFormat: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the Oracle Cloud Infrastructure Notification topic to publish messages related to this Delegation Control.
     */
    readonly notificationTopicId: pulumi.Output<string>;
    /**
     * (Updatable) number of approvals required.
     */
    readonly numApprovalsRequired: pulumi.Output<number>;
    /**
     * (Updatable) List of pre-approved Service Provider Action names. The list of pre-defined Service Provider Actions can be obtained from the ListServiceProviderActions API. Delegated Resource Access Requests associated with a resource governed by this Delegation Control will be automatically approved if the Delegated Resource Access Request only contain Service Provider Actions in the pre-approved list.
     */
    readonly preApprovedServiceProviderActionNames: pulumi.Output<string[]>;
    /**
     * (Updatable) The OCID of the selected resources that this Delegation Control is applicable to.
     */
    readonly resourceIds: pulumi.Output<string[]>;
    /**
     * Resource type for which the Delegation Control is applicable to.
     */
    readonly resourceType: pulumi.Output<string>;
    /**
     * The current lifecycle state of the Delegation Control.
     */
    readonly state: pulumi.Output<string>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Time when the Delegation Control was created expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format, e.g. '2020-05-22T21:10:29.600Z'
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Time when the Delegation Control was deleted expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339)timestamp format, e.g. '2020-05-22T21:10:29.600Z'. Note a deleted Delegation Control still stays in the system, so that you can still audit Service Provider Actions associated with Delegated Resource Access Requests raised on target resources governed by the deleted Delegation Control.
     */
    readonly timeDeleted: pulumi.Output<string>;
    /**
     * Time when the Delegation Control was last modified expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format, e.g. '2020-05-22T21:10:29.600Z'
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * The OCID of the Oracle Cloud Infrastructure Vault that will store the secrets containing the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER. Delegate Access Control Service will generate the SSH keys and store them as secrets in the Oracle Cloud Infrastructure Vault.
     */
    readonly vaultId: pulumi.Output<string>;
    /**
     * The OCID of the Master Encryption Key in the Oracle Cloud Infrastructure Vault specified by vaultId. This key will be used to encrypt the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER.
     *
     *
     * ** 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 vaultKeyId: pulumi.Output<string>;
    /**
     * Create a DelegationControl 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: DelegationControlArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering DelegationControl resources.
 */
export interface DelegationControlState {
    /**
     * (Updatable) The OCID of the compartment that contains this Delegation Control.
     */
    compartmentId?: pulumi.Input<string | 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) List of Delegation Subscription OCID that are allowed for this Delegation Control. The allowed subscriptions will determine the available Service Provider Actions. Only support operators for the allowed subscriptions are allowed to create Delegated Resource Access Request.
     */
    delegationSubscriptionIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) Description of the Delegation Control.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Name of the Delegation Control. The name does not need to be unique.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. 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) Set to true to allow all Delegated Resource Access Request to be approved automatically during maintenance.
     */
    isAutoApproveDuringMaintenance?: pulumi.Input<boolean | undefined>;
    /**
     * Description of the current lifecycle state in more detail.
     */
    lifecycleStateDetails?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The format of the Oracle Cloud Infrastructure Notification messages for this Delegation Control.
     */
    notificationMessageFormat?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the Oracle Cloud Infrastructure Notification topic to publish messages related to this Delegation Control.
     */
    notificationTopicId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) number of approvals required.
     */
    numApprovalsRequired?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) List of pre-approved Service Provider Action names. The list of pre-defined Service Provider Actions can be obtained from the ListServiceProviderActions API. Delegated Resource Access Requests associated with a resource governed by this Delegation Control will be automatically approved if the Delegated Resource Access Request only contain Service Provider Actions in the pre-approved list.
     */
    preApprovedServiceProviderActionNames?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) The OCID of the selected resources that this Delegation Control is applicable to.
     */
    resourceIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * Resource type for which the Delegation Control is applicable to.
     */
    resourceType?: pulumi.Input<string | undefined>;
    /**
     * The current lifecycle state of the Delegation Control.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * Time when the Delegation Control was created expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format, e.g. '2020-05-22T21:10:29.600Z'
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * Time when the Delegation Control was deleted expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339)timestamp format, e.g. '2020-05-22T21:10:29.600Z'. Note a deleted Delegation Control still stays in the system, so that you can still audit Service Provider Actions associated with Delegated Resource Access Requests raised on target resources governed by the deleted Delegation Control.
     */
    timeDeleted?: pulumi.Input<string | undefined>;
    /**
     * Time when the Delegation Control was last modified expressed in [RFC 3339](https://tools.ietf.org/html/rfc3339) timestamp format, e.g. '2020-05-22T21:10:29.600Z'
     */
    timeUpdated?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Oracle Cloud Infrastructure Vault that will store the secrets containing the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER. Delegate Access Control Service will generate the SSH keys and store them as secrets in the Oracle Cloud Infrastructure Vault.
     */
    vaultId?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Master Encryption Key in the Oracle Cloud Infrastructure Vault specified by vaultId. This key will be used to encrypt the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER.
     *
     *
     * ** 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
     */
    vaultKeyId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a DelegationControl resource.
 */
export interface DelegationControlArgs {
    /**
     * (Updatable) The OCID of the compartment that contains this Delegation Control.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (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) List of Delegation Subscription OCID that are allowed for this Delegation Control. The allowed subscriptions will determine the available Service Provider Actions. Only support operators for the allowed subscriptions are allowed to create Delegated Resource Access Request.
     */
    delegationSubscriptionIds: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * (Updatable) Description of the Delegation Control.
     */
    description?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Name of the Delegation Control. The name does not need to be unique.
     */
    displayName: pulumi.Input<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. 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) Set to true to allow all Delegated Resource Access Request to be approved automatically during maintenance.
     */
    isAutoApproveDuringMaintenance?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The format of the Oracle Cloud Infrastructure Notification messages for this Delegation Control.
     */
    notificationMessageFormat: pulumi.Input<string>;
    /**
     * (Updatable) The OCID of the Oracle Cloud Infrastructure Notification topic to publish messages related to this Delegation Control.
     */
    notificationTopicId: pulumi.Input<string>;
    /**
     * (Updatable) number of approvals required.
     */
    numApprovalsRequired?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) List of pre-approved Service Provider Action names. The list of pre-defined Service Provider Actions can be obtained from the ListServiceProviderActions API. Delegated Resource Access Requests associated with a resource governed by this Delegation Control will be automatically approved if the Delegated Resource Access Request only contain Service Provider Actions in the pre-approved list.
     */
    preApprovedServiceProviderActionNames?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) The OCID of the selected resources that this Delegation Control is applicable to.
     */
    resourceIds: pulumi.Input<pulumi.Input<string>[]>;
    /**
     * Resource type for which the Delegation Control is applicable to.
     */
    resourceType: pulumi.Input<string>;
    /**
     * The OCID of the Oracle Cloud Infrastructure Vault that will store the secrets containing the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER. Delegate Access Control Service will generate the SSH keys and store them as secrets in the Oracle Cloud Infrastructure Vault.
     */
    vaultId?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Master Encryption Key in the Oracle Cloud Infrastructure Vault specified by vaultId. This key will be used to encrypt the SSH keys to access the resource governed by this Delegation Control by Delegate Access Control Service. This property is required when resourceType is CLOUDVMCLUSTER.
     *
     *
     * ** 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
     */
    vaultKeyId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=delegationControl.d.ts.map