export interface RuleConfig {
    /** Logical negation of the rule. If the rule would usually evaluate true, it's evaluated as false, and vice versa. */
    Inverted: boolean;
    /** The value of N, when you specify an ATLEAST rule type. That is, Threshold is the number of controls that must be set when you specify an ATLEAST type. */
    Threshold: number;
    /** A rule can be one of the following: ATLEAST, AND, or OR. */
    Type: 'ATLEAST' | 'AND' | 'OR';
}
export interface NewAssertionRule {
    /** The routing controls that are part of transactions that are evaluated to determine if a request to change a routing control state is allowed. For example, you might include three routing controls, one */
    AssertedControls: string[];
    /** The Amazon Resource Name (ARN) for the control panel. */
    ControlPanelArn: string;
    /** The name of the assertion rule. You can use any non-white space character in the name. */
    Name: string;
    /** The criteria that you set for specific assertion controls (routing controls) that designate how many control states must be ON as the result of a transaction. For example, if you have three assertion  */
    RuleConfig: RuleConfig;
    /** An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent "flapping" of state. The wait period is 5000 ms by default, but y */
    WaitPeriodMs: number;
}
export interface NewGatingRule {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
    /** The gating controls for the new gating rule. That is, routing controls that are evaluated by the rule configuration that you specify. */
    GatingControls: string[];
    /** The name for the new gating rule. */
    Name: string;
    /** The criteria that you set for specific gating controls (routing controls) that designate how many control states must be ON to allow you to change (set or unset) the target control states. */
    RuleConfig: RuleConfig;
    /** Routing controls that can only be set or unset if the specified RuleConfig evaluates to true for the specified GatingControls. For example, say you have three gating controls, one for each of three Am */
    TargetControls: string[];
    /** An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent "flapping" of state. The wait period is 5000 ms by default, but y */
    WaitPeriodMs: number;
}
export interface AssertionRuleUpdate {
    /** The name of the assertion rule. You can use any non-white space character in the name. */
    Name: string;
    /** The Amazon Resource Name (ARN) of the assertion rule. */
    SafetyRuleArn: string;
    /** An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent "flapping" of state. The wait period is 5000 ms by default, but y */
    WaitPeriodMs: number;
}
export interface GatingRuleUpdate {
    /** The name for the gating rule. You can use any non-white space character in the name. */
    Name: string;
    /** The Amazon Resource Name (ARN) of the gating rule. */
    SafetyRuleArn: string;
    /** An evaluation period, in milliseconds (ms), during which any request against the target routing controls will fail. This helps prevent "flapping" of state. The wait period is 5000 ms by default, but y */
    WaitPeriodMs: number;
}
/** Creates a cluster. */
export interface CreateClusterInput {
    /** The name of the cluster. */
    ClusterName: string;
    /** A unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request with an action, specify a client token in the request. */
    ClientToken?: string;
    /** The network type of the cluster. NetworkType can be one of the following: IPV4, DUALSTACK. */
    NetworkType?: 'IPV4' | 'DUALSTACK';
    /** The tags associated with the cluster. */
    Tags?: Record<string, string>;
}
/** The details of the control panel that you're creating. */
export interface CreateControlPanelInput {
    /** The Amazon Resource Name (ARN) of the cluster for the control panel. */
    ClusterArn: string;
    /** The name of the control panel. */
    ControlPanelName: string;
    /** A unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request with an action, specify a client token in the request. */
    ClientToken?: string;
    /** The tags associated with the control panel. */
    Tags?: Record<string, string>;
}
/** The details of the routing control that you're creating. */
export interface CreateRoutingControlInput {
    /** The Amazon Resource Name (ARN) of the cluster that includes the routing control. */
    ClusterArn: string;
    /** The name of the routing control. */
    RoutingControlName: string;
    /** A unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request with an action, specify a client token in the request. */
    ClientToken?: string;
    /** The Amazon Resource Name (ARN) of the control panel that includes the routing control. */
    ControlPanelArn?: string;
}
/** The request body that you include when you create a safety rule. */
export interface CreateSafetyRuleInput {
    /** The assertion rule requested. */
    AssertionRule?: NewAssertionRule;
    /** A unique, case-sensitive string of up to 64 ASCII characters. To make an idempotent API request with an action, specify a client token in the request. */
    ClientToken?: string;
    /** The gating rule requested. */
    GatingRule?: NewGatingRule;
    /** The tags associated with the safety rule. */
    Tags?: Record<string, string>;
}
export interface DeleteClusterInput {
    /** The Amazon Resource Name (ARN) of the cluster that you're deleting. */
    ClusterArn: string;
}
export interface DeleteControlPanelInput {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
}
export interface DeleteRoutingControlInput {
    /** The Amazon Resource Name (ARN) of the routing control that you're deleting. */
    RoutingControlArn: string;
}
export interface DeleteSafetyRuleInput {
    /** The ARN of the safety rule. */
    SafetyRuleArn: string;
}
export interface DescribeClusterInput {
    /** The Amazon Resource Name (ARN) of the cluster. */
    ClusterArn: string;
}
export interface DescribeControlPanelInput {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
}
export interface DescribeRoutingControlInput {
    /** The Amazon Resource Name (ARN) of the routing control. */
    RoutingControlArn: string;
}
export interface DescribeSafetyRuleInput {
    /** The ARN of the safety rule. */
    SafetyRuleArn: string;
}
export interface GetResourcePolicyInput {
    /** The Amazon Resource Name (ARN) of the resource. */
    ResourceArn: string;
}
export interface ListAssociatedRoute53HealthChecksInput {
    /** The Amazon Resource Name (ARN) of the routing control. */
    RoutingControlArn: string;
    /** The number of objects that you want to return with this call. */
    MaxResults?: number;
    /** The token that identifies which batch of results you want to see. */
    NextToken?: string;
}
export interface ListClustersInput {
    /** The number of objects that you want to return with this call. */
    MaxResults?: number;
    /** The token that identifies which batch of results you want to see. */
    NextToken?: string;
}
export interface ListControlPanelsInput {
    /** The Amazon Resource Name (ARN) of a cluster. */
    ClusterArn?: string;
    /** The number of objects that you want to return with this call. */
    MaxResults?: number;
    /** The token that identifies which batch of results you want to see. */
    NextToken?: string;
}
export interface ListRoutingControlsInput {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
    /** The number of objects that you want to return with this call. */
    MaxResults?: number;
    /** The token that identifies which batch of results you want to see. */
    NextToken?: string;
}
export interface ListSafetyRulesInput {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
    /** The number of objects that you want to return with this call. */
    MaxResults?: number;
    /** The token that identifies which batch of results you want to see. */
    NextToken?: string;
}
export interface ListTagsForResourceInput {
    /** The Amazon Resource Name (ARN) for the resource that's tagged. */
    ResourceArn: string;
}
/** Request of adding tag to the resource */
export interface TagResourceInput {
    /** The Amazon Resource Name (ARN) for the resource that's tagged. */
    ResourceArn: string;
    /** The tags associated with the resource. */
    Tags: Record<string, string>;
}
export interface UntagResourceInput {
    /** The Amazon Resource Name (ARN) for the resource that's tagged. */
    ResourceArn: string;
    /** Keys for the tags to be removed. */
    TagKeys: string[];
}
/** The details of the cluster that you're updating. */
export interface UpdateClusterInput {
    /** The Amazon Resource Name (ARN) of the cluster. */
    ClusterArn: string;
    /** The network type of the cluster. NetworkType can be one of the following: IPV4, DUALSTACK. */
    NetworkType: 'IPV4' | 'DUALSTACK';
}
/** The details of the control panel that you're updating. */
export interface UpdateControlPanelInput {
    /** The Amazon Resource Name (ARN) of the control panel. */
    ControlPanelArn: string;
    /** The name of the control panel. */
    ControlPanelName: string;
}
/** The details of the routing control that you're updating. */
export interface UpdateRoutingControlInput {
    /** The Amazon Resource Name (ARN) of the routing control. */
    RoutingControlArn: string;
    /** The name of the routing control. */
    RoutingControlName: string;
}
/** A rule that you add to Application Recovery Controller to ensure that recovery actions don't accidentally impair your application's availability. */
export interface UpdateSafetyRuleInput {
    /** The assertion rule to update. */
    AssertionRuleUpdate?: AssertionRuleUpdate;
    /** The gating rule to update. */
    GatingRuleUpdate?: GatingRuleUpdate;
}
/** Route53 Recovery Control Config service binding for Step Functions SDK integrations. */
export declare class Route53RecoveryControlConfig {
    constructor();
    createCluster<T>(params: CreateClusterInput): Promise<T>;
    createControlPanel<T>(params: CreateControlPanelInput): Promise<T>;
    createRoutingControl<T>(params: CreateRoutingControlInput): Promise<T>;
    createSafetyRule<T>(params: CreateSafetyRuleInput): Promise<T>;
    deleteCluster<T>(params: DeleteClusterInput): Promise<T>;
    deleteControlPanel<T>(params: DeleteControlPanelInput): Promise<T>;
    deleteRoutingControl<T>(params: DeleteRoutingControlInput): Promise<T>;
    deleteSafetyRule<T>(params: DeleteSafetyRuleInput): Promise<T>;
    describeCluster<T>(params: DescribeClusterInput): Promise<T>;
    describeControlPanel<T>(params: DescribeControlPanelInput): Promise<T>;
    describeRoutingControl<T>(params: DescribeRoutingControlInput): Promise<T>;
    describeSafetyRule<T>(params: DescribeSafetyRuleInput): Promise<T>;
    getResourcePolicy<T>(params: GetResourcePolicyInput): Promise<T>;
    listAssociatedRoute53HealthChecks<T>(params: ListAssociatedRoute53HealthChecksInput): Promise<T>;
    listClusters<T>(params: ListClustersInput): Promise<T>;
    listControlPanels<T>(params: ListControlPanelsInput): Promise<T>;
    listRoutingControls<T>(params: ListRoutingControlsInput): Promise<T>;
    listSafetyRules<T>(params: ListSafetyRulesInput): Promise<T>;
    listTagsForResource<T>(params: ListTagsForResourceInput): Promise<T>;
    tagResource<T>(params: TagResourceInput): Promise<T>;
    untagResource<T>(params: UntagResourceInput): Promise<T>;
    updateCluster<T>(params: UpdateClusterInput): Promise<T>;
    updateControlPanel<T>(params: UpdateControlPanelInput): Promise<T>;
    updateRoutingControl<T>(params: UpdateRoutingControlInput): Promise<T>;
    updateSafetyRule<T>(params: UpdateSafetyRuleInput): Promise<T>;
}
//# sourceMappingURL=Route53RecoveryControlConfig.d.ts.map