import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Masking Policies Masking Column resource in Oracle Cloud Infrastructure Data Safe service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/data-safe/latest/MaskingPoliciesMaskingColumn
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/datasafe
 *
 * Creates a new masking column in the specified masking policy. Use this operation
 * to add parent columns only. It automatically adds the child columns from the
 * associated sensitive data model or target database. If you provide the
 * sensitiveTypeId attribute but not the maskingFormats attribute, it automatically
 * assigns the default masking format associated with the specified sensitive type.
 * Alternatively, if you provide the maskingFormats attribute, the specified masking
 * formats are assigned to the column.
 *
 * Using the maskingFormats attribute, you can assign one or more masking formats
 * to a column. You need to specify a condition as part of each masking format. It
 * enables you to do <a href="https://docs.oracle.com/en/cloud/paas/data-safe/udscs/conditional-masking.html">conditional masking</a>
 * so that you can mask the column data values differently using different
 * masking conditions. A masking format can have one or more format entries. The
 * combined output of all the format entries is used for masking. It provides the
 * flexibility to define a masking format that can generate different parts of a data
 * value separately and then combine them to get the final data value for masking.
 *
 * You can use the maskingColumnGroup attribute to group the columns that you would
 * like to mask together. It enables you to do <a href="https://docs.oracle.com/en/cloud/paas/data-safe/udscs/group-masking1.html#GUID-755056B9-9540-48C0-9491-262A44A85037">group or compound masking</a> that ensures that the
 * masked data across the columns in a group continue to retain the same logical relationship.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testMaskingPoliciesMaskingColumn = new oci.datasafe.MaskingPoliciesMaskingColumn("test_masking_policies_masking_column", {
 *     columnName: maskingPoliciesMaskingColumnColumnName,
 *     maskingPolicyId: testMaskingPolicy.id,
 *     object: maskingPoliciesMaskingColumnObject,
 *     schemaName: maskingPoliciesMaskingColumnSchemaName,
 *     isMaskingEnabled: maskingPoliciesMaskingColumnIsMaskingEnabled === "true",
 *     maskingColumnGroup: maskingPoliciesMaskingColumnMaskingColumnGroup,
 *     maskingFormats: [{
 *         formatEntries: [{
 *             type: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesType,
 *             columnName: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesColumnName,
 *             description: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesDescription,
 *             endDate: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesEndDate,
 *             endLength: Number(maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesEndLength),
 *             endValue: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesEndValue,
 *             fixedNumber: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesFixedNumber,
 *             fixedString: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesFixedString,
 *             groupingColumns: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesGroupingColumns,
 *             length: Number(maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesLength),
 *             libraryMaskingFormatId: testLibraryMaskingFormat.id,
 *             pattern: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesPattern,
 *             postProcessingFunction: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesPostProcessingFunction,
 *             randomLists: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesRandomList,
 *             regularExpression: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesRegularExpression,
 *             replaceWith: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesReplaceWith,
 *             schemaName: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesSchemaName,
 *             sqlExpression: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesSqlExpression,
 *             startDate: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesStartDate,
 *             startLength: Number(maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesStartLength),
 *             startPosition: Number(maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesStartPosition),
 *             startValue: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesStartValue,
 *             tableName: testTable.name,
 *             userDefinedFunction: maskingPoliciesMaskingColumnMaskingFormatsFormatEntriesUserDefinedFunction,
 *         }],
 *         condition: maskingPoliciesMaskingColumnMaskingFormatsCondition,
 *         description: maskingPoliciesMaskingColumnMaskingFormatsDescription,
 *     }],
 *     objectType: maskingPoliciesMaskingColumnObjectType,
 *     sensitiveTypeId: testSensitiveType.id,
 * });
 * ```
 *
 * ## Import
 *
 * MaskingPoliciesMaskingColumns can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:DataSafe/maskingPoliciesMaskingColumn:MaskingPoliciesMaskingColumn test_masking_policies_masking_column "maskingPolicies/{maskingPolicyId}/maskingColumns/{maskingColumnKey}"
 * ```
 */
export declare class MaskingPoliciesMaskingColumn extends pulumi.CustomResource {
    /**
     * Get an existing MaskingPoliciesMaskingColumn 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?: MaskingPoliciesMaskingColumnState, opts?: pulumi.CustomResourceOptions): MaskingPoliciesMaskingColumn;
    /**
     * Returns true if the given object is an instance of MaskingPoliciesMaskingColumn.  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 MaskingPoliciesMaskingColumn;
    /**
     * An array of child columns that are in referential relationship with the masking column.
     */
    readonly childColumns: pulumi.Output<string[]>;
    /**
     * The name of the database column. This attribute cannot be updated for an existing  masking column. Note that the same name is used for the masking column. There  is no separate displayName attribute for the masking column.
     */
    readonly columnName: pulumi.Output<string>;
    /**
     * The data type of the masking column.
     */
    readonly dataType: pulumi.Output<string>;
    /**
     * (Updatable) Indicates whether data masking is enabled for the masking column. Set it to false if  you don't want to mask the column.
     */
    readonly isMaskingEnabled: pulumi.Output<boolean>;
    /**
     * The unique key that identifies the masking column. It's numeric and unique within a masking policy.
     */
    readonly key: pulumi.Output<string>;
    /**
     * Details about the current state of the masking column.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * (Updatable) The group of the masking column. It's a masking group identifier and can be any string  of acceptable length. All the columns in a group are masked together to ensure that  the masked data across these columns continue to retain the same logical relationship.  For more details, check  <a href=https://docs.oracle.com/en/cloud/paas/data-safe/udscs/group-masking1.html#GUID-755056B9-9540-48C0-9491-262A44A85037>Group Masking in the Data Safe documentation.</a>
     */
    readonly maskingColumnGroup: pulumi.Output<string>;
    /**
     * (Updatable) The masking formats to be assigned to the masking column. You can specify a condition  as part of each masking format. It enables you to do  <a href="https://docs.oracle.com/en/cloud/paas/data-safe/udscs/conditional-masking.html">conditional masking</a>  so that you can mask the column data values differently using different masking  formats and the associated conditions. A masking format can have one or more format  entries. The combined output of all the format entries is used for masking. It  provides the flexibility to define a masking format that can generate different parts  of a data value separately and then combine them to get the final data value for masking.
     */
    readonly maskingFormats: pulumi.Output<outputs.DataSafe.MaskingPoliciesMaskingColumnMaskingFormat[]>;
    /**
     * The OCID of the masking policy.
     */
    readonly maskingPolicyId: pulumi.Output<string>;
    /**
     * The name of the object (table or editioning view) that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    readonly object: pulumi.Output<string>;
    /**
     * (Updatable) The type of the object that contains the database column.
     */
    readonly objectType: pulumi.Output<string>;
    /**
     * The name of the schema that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    readonly schemaName: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the sensitive type to be associated with the masking column. Note that  if the maskingFormats attribute isn't provided while creating a masking column,   the default masking format associated with the specified sensitive type is assigned  to the masking column.
     *
     *
     * ** 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 sensitiveTypeId: pulumi.Output<string>;
    /**
     * The current state of the masking column.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The date and time the masking column was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The date and time the masking column was last updated, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * Create a MaskingPoliciesMaskingColumn 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: MaskingPoliciesMaskingColumnArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering MaskingPoliciesMaskingColumn resources.
 */
export interface MaskingPoliciesMaskingColumnState {
    /**
     * An array of child columns that are in referential relationship with the masking column.
     */
    childColumns?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The name of the database column. This attribute cannot be updated for an existing  masking column. Note that the same name is used for the masking column. There  is no separate displayName attribute for the masking column.
     */
    columnName?: pulumi.Input<string | undefined>;
    /**
     * The data type of the masking column.
     */
    dataType?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Indicates whether data masking is enabled for the masking column. Set it to false if  you don't want to mask the column.
     */
    isMaskingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The unique key that identifies the masking column. It's numeric and unique within a masking policy.
     */
    key?: pulumi.Input<string | undefined>;
    /**
     * Details about the current state of the masking column.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The group of the masking column. It's a masking group identifier and can be any string  of acceptable length. All the columns in a group are masked together to ensure that  the masked data across these columns continue to retain the same logical relationship.  For more details, check  <a href=https://docs.oracle.com/en/cloud/paas/data-safe/udscs/group-masking1.html#GUID-755056B9-9540-48C0-9491-262A44A85037>Group Masking in the Data Safe documentation.</a>
     */
    maskingColumnGroup?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The masking formats to be assigned to the masking column. You can specify a condition  as part of each masking format. It enables you to do  <a href="https://docs.oracle.com/en/cloud/paas/data-safe/udscs/conditional-masking.html">conditional masking</a>  so that you can mask the column data values differently using different masking  formats and the associated conditions. A masking format can have one or more format  entries. The combined output of all the format entries is used for masking. It  provides the flexibility to define a masking format that can generate different parts  of a data value separately and then combine them to get the final data value for masking.
     */
    maskingFormats?: pulumi.Input<pulumi.Input<inputs.DataSafe.MaskingPoliciesMaskingColumnMaskingFormat>[] | undefined>;
    /**
     * The OCID of the masking policy.
     */
    maskingPolicyId?: pulumi.Input<string | undefined>;
    /**
     * The name of the object (table or editioning view) that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    object?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The type of the object that contains the database column.
     */
    objectType?: pulumi.Input<string | undefined>;
    /**
     * The name of the schema that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    schemaName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the sensitive type to be associated with the masking column. Note that  if the maskingFormats attribute isn't provided while creating a masking column,   the default masking format associated with the specified sensitive type is assigned  to the masking column.
     *
     *
     * ** 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
     */
    sensitiveTypeId?: pulumi.Input<string | undefined>;
    /**
     * The current state of the masking column.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The date and time the masking column was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The date and time the masking column was last updated, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    timeUpdated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a MaskingPoliciesMaskingColumn resource.
 */
export interface MaskingPoliciesMaskingColumnArgs {
    /**
     * The name of the database column. This attribute cannot be updated for an existing  masking column. Note that the same name is used for the masking column. There  is no separate displayName attribute for the masking column.
     */
    columnName: pulumi.Input<string>;
    /**
     * (Updatable) Indicates whether data masking is enabled for the masking column. Set it to false if  you don't want to mask the column.
     */
    isMaskingEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The group of the masking column. It's a masking group identifier and can be any string  of acceptable length. All the columns in a group are masked together to ensure that  the masked data across these columns continue to retain the same logical relationship.  For more details, check  <a href=https://docs.oracle.com/en/cloud/paas/data-safe/udscs/group-masking1.html#GUID-755056B9-9540-48C0-9491-262A44A85037>Group Masking in the Data Safe documentation.</a>
     */
    maskingColumnGroup?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The masking formats to be assigned to the masking column. You can specify a condition  as part of each masking format. It enables you to do  <a href="https://docs.oracle.com/en/cloud/paas/data-safe/udscs/conditional-masking.html">conditional masking</a>  so that you can mask the column data values differently using different masking  formats and the associated conditions. A masking format can have one or more format  entries. The combined output of all the format entries is used for masking. It  provides the flexibility to define a masking format that can generate different parts  of a data value separately and then combine them to get the final data value for masking.
     */
    maskingFormats?: pulumi.Input<pulumi.Input<inputs.DataSafe.MaskingPoliciesMaskingColumnMaskingFormat>[] | undefined>;
    /**
     * The OCID of the masking policy.
     */
    maskingPolicyId: pulumi.Input<string>;
    /**
     * The name of the object (table or editioning view) that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    object: pulumi.Input<string>;
    /**
     * (Updatable) The type of the object that contains the database column.
     */
    objectType?: pulumi.Input<string | undefined>;
    /**
     * The name of the schema that contains the database column. This attribute cannot be updated for an existing masking column.
     */
    schemaName: pulumi.Input<string>;
    /**
     * (Updatable) The OCID of the sensitive type to be associated with the masking column. Note that  if the maskingFormats attribute isn't provided while creating a masking column,   the default masking format associated with the specified sensitive type is assigned  to the masking column.
     *
     *
     * ** 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
     */
    sensitiveTypeId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=maskingPoliciesMaskingColumn.d.ts.map