import * as core from "@terrascript/core";
export interface PolicyDetailsParametersArgs extends core.SchemaArgs {
    excludeBootVolume?: boolean | core.BooleanOut;
    noReboot?: boolean | core.BooleanOut;
}
export declare class PolicyDetailsParameters extends core.Schema<PolicyDetailsParametersArgs> {
    excludeBootVolume?: boolean | core.BooleanOut;
    noReboot?: boolean | core.BooleanOut;
}
export interface FastRestoreRuleArgs extends core.SchemaArgs {
    availabilityZones: core.Array<string> | core.ArrayOut<core.StringOut>;
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export declare class FastRestoreRule extends core.Schema<FastRestoreRuleArgs> {
    availabilityZones: core.Array<string> | core.ArrayOut<core.StringOut>;
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export interface ScheduleRetainRuleArgs extends core.SchemaArgs {
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export declare class ScheduleRetainRule extends core.Schema<ScheduleRetainRuleArgs> {
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export interface ShareRuleArgs extends core.SchemaArgs {
    targetAccounts: core.Array<string> | core.ArrayOut<core.StringOut>;
    unshareInterval?: number | core.NumberOut;
    unshareIntervalUnit?: string | core.StringOut;
}
export declare class ShareRule extends core.Schema<ShareRuleArgs> {
    targetAccounts: core.Array<string> | core.ArrayOut<core.StringOut>;
    unshareInterval?: number | core.NumberOut;
    unshareIntervalUnit?: string | core.StringOut;
}
export interface CreateRuleArgs extends core.SchemaArgs {
    cronExpression?: string | core.StringOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
    location?: string | core.StringOut;
    times?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class CreateRule extends core.Schema<CreateRuleArgs> {
    cronExpression?: string | core.StringOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
    location?: string | core.StringOut;
    times?: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface ScheduleDeprecateRuleArgs extends core.SchemaArgs {
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export declare class ScheduleDeprecateRule extends core.Schema<ScheduleDeprecateRuleArgs> {
    count?: number | core.NumberOut;
    interval?: number | core.NumberOut;
    intervalUnit?: string | core.StringOut;
}
export interface CrossRegionCopyRuleDeprecateRuleArgs extends core.SchemaArgs {
    interval: number | core.NumberOut;
    intervalUnit: string | core.StringOut;
}
export declare class CrossRegionCopyRuleDeprecateRule extends core.Schema<CrossRegionCopyRuleDeprecateRuleArgs> {
    interval: number | core.NumberOut;
    intervalUnit: string | core.StringOut;
}
export interface CrossRegionCopyRuleRetainRuleArgs extends core.SchemaArgs {
    interval: number | core.NumberOut;
    intervalUnit: string | core.StringOut;
}
export declare class CrossRegionCopyRuleRetainRule extends core.Schema<CrossRegionCopyRuleRetainRuleArgs> {
    interval: number | core.NumberOut;
    intervalUnit: string | core.StringOut;
}
export interface CrossRegionCopyRuleArgs extends core.SchemaArgs {
    cmkArn?: string | core.StringOut;
    copyTags?: boolean | core.BooleanOut;
    deprecateRule?: CrossRegionCopyRuleDeprecateRule;
    encrypted: boolean | core.BooleanOut;
    retainRule?: CrossRegionCopyRuleRetainRule;
    target: string | core.StringOut;
}
export declare class CrossRegionCopyRule extends core.Schema<CrossRegionCopyRuleArgs> {
    cmkArn?: string | core.StringOut;
    copyTags?: boolean | core.BooleanOut;
    deprecateRule?: CrossRegionCopyRuleDeprecateRule;
    encrypted: boolean | core.BooleanOut;
    retainRule?: CrossRegionCopyRuleRetainRule;
    target: string | core.StringOut;
}
export interface ScheduleArgs extends core.SchemaArgs {
    copyTags?: boolean | core.BooleanOut;
    createRule: CreateRule;
    crossRegionCopyRule?: core.Array<CrossRegionCopyRule> | core.ArrayOut<CrossRegionCopyRule>;
    deprecateRule?: ScheduleDeprecateRule;
    fastRestoreRule?: FastRestoreRule;
    name: string | core.StringOut;
    retainRule: ScheduleRetainRule;
    shareRule?: ShareRule;
    tagsToAdd?: core.Map<string, string> | core.MapOut<core.StringOut>;
    variableTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class Schedule extends core.Schema<ScheduleArgs> {
    copyTags?: boolean | core.BooleanOut;
    createRule: CreateRule;
    crossRegionCopyRule?: core.Array<CrossRegionCopyRule> | core.ArrayOut<CrossRegionCopyRule>;
    deprecateRule?: ScheduleDeprecateRule;
    fastRestoreRule?: FastRestoreRule;
    name: string | core.StringOut;
    retainRule: ScheduleRetainRule;
    shareRule?: ShareRule;
    tagsToAdd?: core.Map<string, string> | core.MapOut<core.StringOut>;
    variableTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface EncryptionConfigurationArgs extends core.SchemaArgs {
    cmkArn?: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
}
export declare class EncryptionConfiguration extends core.Schema<EncryptionConfigurationArgs> {
    cmkArn?: string | core.StringOut;
    encrypted?: boolean | core.BooleanOut;
}
export interface CrossRegionCopyArgs extends core.SchemaArgs {
    encryptionConfiguration: EncryptionConfiguration;
    retainRule?: CrossRegionCopyRuleRetainRule;
    target: string | core.StringOut;
}
export declare class CrossRegionCopy extends core.Schema<CrossRegionCopyArgs> {
    encryptionConfiguration: EncryptionConfiguration;
    retainRule?: CrossRegionCopyRuleRetainRule;
    target: string | core.StringOut;
}
export interface ActionArgs extends core.SchemaArgs {
    crossRegionCopy: core.Array<CrossRegionCopy> | core.ArrayOut<CrossRegionCopy>;
    name: string | core.StringOut;
}
export declare class Action extends core.Schema<ActionArgs> {
    crossRegionCopy: core.Array<CrossRegionCopy> | core.ArrayOut<CrossRegionCopy>;
    name: string | core.StringOut;
}
export interface EventSourceParametersArgs extends core.SchemaArgs {
    descriptionRegex: string | core.StringOut;
    eventType: string | core.StringOut;
    snapshotOwner: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export declare class EventSourceParameters extends core.Schema<EventSourceParametersArgs> {
    descriptionRegex: string | core.StringOut;
    eventType: string | core.StringOut;
    snapshotOwner: core.Array<string> | core.ArrayOut<core.StringOut>;
}
export interface EventSourceArgs extends core.SchemaArgs {
    parameters: EventSourceParameters;
    type: string | core.StringOut;
}
export declare class EventSource extends core.Schema<EventSourceArgs> {
    parameters: EventSourceParameters;
    type: string | core.StringOut;
}
export interface PolicyDetailsArgs extends core.SchemaArgs {
    action?: Action;
    eventSource?: EventSource;
    parameters?: PolicyDetailsParameters;
    policyType?: string | core.StringOut;
    resourceLocations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    resourceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    schedule?: core.Array<Schedule> | core.ArrayOut<Schedule>;
    targetTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class PolicyDetails extends core.Schema<PolicyDetailsArgs> {
    action?: Action;
    eventSource?: EventSource;
    parameters?: PolicyDetailsParameters;
    policyType?: string | core.StringOut;
    resourceLocations?: core.Array<string> | core.ArrayOut<core.StringOut>;
    resourceTypes?: core.Array<string> | core.ArrayOut<core.StringOut>;
    schedule?: core.Array<Schedule> | core.ArrayOut<Schedule>;
    targetTags?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export interface LifecyclePolicyArgs extends core.ResourceArgs {
    /**
     * (Required) A description for the DLM lifecycle policy.
     */
    description: string | core.StringOut;
    /**
     * (Required) The ARN of an IAM role that is able to be assumed by the DLM service.
     */
    executionRoleArn: string | core.StringOut;
    /**
     * (Required) See the [`policy_details` configuration](#policy-details-arguments) block. Max of 1.
     */
    policyDetails: PolicyDetails;
    /**
     * (Optional) Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are v
     * alid values. Defaults to `ENABLED`.
     */
    state?: string | core.StringOut;
    /**
     * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati
     * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati
     * on-block) present, tags with matching keys will overwrite those defined at the provider-level.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
}
export declare class LifecyclePolicy extends core.Resource<LifecyclePolicyArgs> {
    /**
     * Amazon Resource Name (ARN) of the DLM Lifecycle Policy.
     */
    arn: string | core.StringOut;
    /**
     * (Required) A description for the DLM lifecycle policy.
     */
    description: string | core.StringOut;
    /**
     * (Required) The ARN of an IAM role that is able to be assumed by the DLM service.
     */
    executionRoleArn: string | core.StringOut;
    /**
     * Identifier of the DLM Lifecycle Policy.
     */
    id: string | core.StringOut;
    /**
     * (Required) See the [`policy_details` configuration](#policy-details-arguments) block. Max of 1.
     */
    policyDetails: PolicyDetails;
    /**
     * (Optional) Whether the lifecycle policy should be enabled or disabled. `ENABLED` or `DISABLED` are v
     * alid values. Defaults to `ENABLED`.
     */
    state?: string | core.StringOut;
    /**
     * (Optional) Key-value map of resource tags. If configured with a provider [`default_tags` configurati
     * on block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-configurati
     * on-block) present, tags with matching keys will overwrite those defined at the provider-level.
     */
    tags?: core.Map<string, string> | core.MapOut<core.StringOut>;
    /**
     * A map of tags assigned to the resource, including those inherited from the provider [`default_tags`
     * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags-
     * configuration-block).
     */
    tagsAll?: core.Map<string, string> | core.MapOut<core.StringOut>;
    constructor(name: string, args?: LifecyclePolicyArgs);
    getNamespace(): string;
}
//# sourceMappingURL=lifecycle_policy.d.ts.map